Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Программирование циклических алгоритмов с заданным




Числом повторений

Первая форма счетного оператора цикла позволяет наращивать пара­метр цикла на единицу (+1):

FOR <параметр цикла>:= <min значение> TO <max значение> DO <оператор>;

(Для)                                                     (увеличивая к)          (выполнять)

где <параметр цикла> - это переменная целого либо любого порядкового типа; <min, max значения> - это начальное и конечное значения пара­метра цикла (выражения того же типа, что и параметр цикла).

Вторая форма позволяет уменьшать значение параметра цикла на еди­ницу (-1):

FOR <параметр цикла>:= <max знач.> DOWNTO <min знач.> DO <оператор>;    (Для)                                                         (уменьшая к)           (делать)

Пример 1. Вычислить сумму элементов s=1+1/4+1/9+1/16+... .

На основе анализа изменения параметра знаменателя определим алгоритм решения за­дачи  и напишем программу:

PROGRAM suma;

VAR s, r: REAL;

i, N: INTEGER;

BEGIN

s:=0;

WRITELN('введите N');

READ(N);                                        

FOR I:=1 TO N DO

  begin

r:=1/sqr(i);                      

s:=s+r;

end;              

WRITELN('Сумма=',s:6:2);      

END.

Пример 2. Вычислить значения  двух функций F1(x)=tg(x) и

F2(x)=sin(x) в n точках, рав­номерно распределенных на интервале a ≤ x ≤ b, где a=-π/4, b=π.

 

Для реализации данной задачи разработана следующая программа:

 

Program Lab3;

Const а = -pi/4; b = pi;

Var F1, F2, x, dx: real; {dx - шаг изменения х}

  i, n: integer;       {i - пеpеменная цикла}

Begin

writeln ('введите число точек N');

read(n);

dx: = abs(b-a)/(n-1);

x:=a;

writeln (' _____________________________');

writeln ('| I |      X |   F1 |   F2 |');

writeln ('|---|--------------|------------|------------|');

for i:=1 to n do         {опеpатоp цикла}

begin

F2:=sin(x);

F1:=F2/cos(x);  {вычисление: tg x}

      writeln('|', i:3,' |', x:8:3,'|', f1:8:4,' |', f2:8:4,' |');

x:=x+dx;

end;

writeln('|________________________|);

End.

                                                                           

Задание 2 (программа 3_2)

Вычислить значения двух функций в n равномерно распределенных в диапазо-

№ п/п  a  b  n F1(х) F2(х)
1 2 3 4 5 6 7 8 9 10 11 12   0 1 -1 -2 0 - -1 -4 1 1 0 -   2 2 5 5 3 4 3 4 2   10 12 15 14 16 12 10 12 15 10 15 18 sin x cos x 1+2x+5 4e-|x|-1 | x+10|5 2 sin 2x +1 2-cos x 2-x/100 x3e2x 1/(1+ ) 5-3 cos x |sinx|+|cosx|   sin x + cos x -1 (x-1)3 cos x e-(x+5) (x+5)3(1+sin2x)                          20/(1+x2) ex sin x x ln2 x 2x/(1-4x) |sin x| - |cos x|  

не а≤x≤b точках. Результаты оформить в виде таблицы.

 

 

Лабораторная работа 4

Программирование циклических алгоритмов с предусловием

Цель работы: научиться разрабатывать и отлаживать программы с неразветвленными и разветвленными циклами, управляемыми условиями.

Структура оператора цикла с предусловием (с предварительной про­веркой условия):

               WHILE <условие_выполнения> DO <оператор>;

                   пока                                           делать

где <условие> - это любое логическое выражение, <оператор> - это про­извольный оператор Турбо Паскаля, в том числе и составной.

Пример. Для трех значений а = 0.1, 0.2,0.3 протабулировать функцию y=a.tg(x/4) при изменении аргумента x на интервале [0.5,0.9] с шагом, равным a.   

Program a4_1;

var

 

a,x,y:real;

Begin

           writeln('-------------------------');

           writeln(' a |  x |     y |');

           writeln('-------------------------');

a:=0.1;

while a<=0.31 do

   begin

         writeln(a:5:2);

         x:=0.5;

         while x<=0.91 do                                                           

               begin

y:=a*sin(x/4)/cos(x/4);

writeln(x:12:2,' | ', y:10:2);                                   

x:=x+a;

           end;                                                                                     

writeln('-------------------------');

a:=a+0.1                                                        

   end;

End.

Задание 2 (программа 4_2)

Модифицировать (изменить) программу 3_2 для вычисления функций F1(x) и F2(x) с применением вместо счетного цикла оператора цикла с предусловием. Выполнить ее и сравнить результаты с полученными в пре­дыдущей работе.

 

 

Лабораторная работа 5

Программирование циклических алгоритмов

С постусловием

 

Стpуктуpа оператора цикла с постусловием

REPEAT <оператор 1>;

(повторять)

<оператор 2>;

...

<оператор N>

  UNTIL <условие окончания цикла>;

 (до тех поp, пока)

Пример.  Вычислить 15 значений функций

 y1(x) = tg(x) ; и y2(x) = ctg(x) при a ≤ x ≤ b,  

 a=0.6*Pi, b=0.7*Pi. 

    Для вычислений разработана следующая программа:

Program Lab5;

Const n = 14;

        a = 0.6*Pi;                                                                                                               

b = 0.7*Pi;

Var x, y1, y2, dx: real;

Begin

       dx:=abs((a-b)/n);

       x:=a;

       Repeat

y1:=sin(x)/cos(x);                                                

y2:=1/y1;                                                                              

writeln('x=', x:6:4,' y1= ', y1:7:4,' y2=', y2:7:4); 

x:=x+dx

 Until x>b;                                                                         

End.

Пример 2. Вычислить сумму элементов s = 1+1/4+1/9+1/16+... c точностью до                

 E = 0.00001

 

PROGRAM sum;

CONST

E=0.00001;                       {точность}

VAR

s,r: REAL;       {s - сумма, r – слагаемое}

i:INTEGER;    {i - счетчик слагаемых}                         

BEGIN

s:=0;

i:=1;

REPEAT

r:=1/sqr(i);       {вычисление слагаемого}                          

s:=s+r;

i:=i+1                     {счет слагаемых}

UNTIL r<E;      {сравнение слагаемого с Е}

WRITELN ('Сумма=',s:9:5);    {вывод суммы}

END.

                                                                                                          

Задание 1 (программа 5_1)

Модифицировать программу 3_2 для вычис­ления функций F1(x) и F2 (x) с применением опе­ратора цикла с постусловием. Выполнить ее и сравнить результа-ты с полученными ранее.

 

 

Лабораторная работа 6










Последнее изменение этой страницы: 2018-05-29; просмотров: 195.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...