Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Циклические вычислительные процессы
Оператор цикла с параметром Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются циклическими. При организации циклов необходимо:
for i:=N to K do P ; (для) (до) (выполнять) где i - параметр цикла; N, K - его начальное и конечное значение; P - простой или составной оператор; i,N,K - переменные или константы целого типа. Шаг изменения i - равен 1. Если K<N, т.е. имеем дело с циклом с отрицательным шагом: (-1)
for i:=N downto K do P; Оператор цикла с параметром автоматически устанавливает начальное значение параметра цикла, изменяет значение параметра на шаг (+1 или -1), организовывает проверку на выход из цикла. Задача. Вычислить сумму ряда S= 1+1/2+1/3+ … +1/50 Выделим переменную для накапливания суммы - sum. Значение этой переменной необходимо предварительно обнулить. program cikl; var i: integer; sum: real; begin sum: =0; for i: = 1 to 50 do sum: = sum + 1/i; Writeln (' сумма = ', sum); end. Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с шагом +1, -1. Оператор цикла с постусловием
repeat p1;p2 ;…pn ; until <условие>;
где p1; p2 ; … pn ; - любые операторы, образующие тело цикла. По этому оператору выполняется «тело цикла», а затем проверяется <условие>, если оно не выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено. Необходимо помнить: если <условие> выполнилось c первого раза, цикл будет пройден один раз.
Задача. Вычислить значение функции: y = a sin (x ) , При x = , с шагом =0.2
program cikl_1; var y,a,x:real; begin writeln(‘Введите а’); read(a); x:=0; repeat y:=a*sin (x); writeln (‘y=’,y:8:3,’ x=’,x:8:3); x:=x+0.2; until x>1; end. Действия, которые подчеркнуты, необходимы для организации цикла. Для организации цикла необходимо выполнить три действия:
В операторе for … to … do перечисленные действия выполняются автоматически. В остальных операторах цикла эти действия необходимо организовать составителю программы.
Оператор цикла с предусловием
while <условие> do P;
Где P - простой или составной оператор. По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д. Итак, P выполняется до тех пор, пока выполняется <условие>. Если условие ни разу не выполнилось, P игнорируется, управление передается следующему оператору.
Задача. Вычислить сумму ряда: где n! = 1*2*…*n
Значение аргумента х и количество итераций n ввести с клавиатуры. Введем дополнительную переменную для вычисления n! – f.
program cikl_2; uses crt; var x,y : real; i,n,f : integer; begin writeln (' введите x, n '); read (x, n); y: =0; f: =1; i:=1; while i<=n do { составной оператор } begin f:=f*I; y:=y+sin(i*x)/f; i:=i+1; end; writeln (' y = ', y:8:3); readln; end.
Вложенные циклы
В теле любого оператора цикла могут находиться другие операторы цикла. При этом цикл, содержащий в себе другой, называется внешним, а цикл, находящийся в теле первого, - называется внутренним (вложенным). Правила организации внешнего и внутреннего циклов такие же, как и для простых циклов. Рассмотрим задачу вывода на экран таблицы умножения, решение которой предполагает использование вложенных циклов.
var i,j : byte; begin writeln(‘ Таблица умножения ’); for i:=1 to 9 do begin for j:=1 to 9 do writeln( i , ‘ * ‘ , j ,‘ = ’, i*j ); writeln; end; readln; end.
При организации вложенных циклов необходимо помнить, что параметр внешнего цикла меняется медленнее, чем параметр внутреннего. При одном значении параметра внешнего цикла параметр внутреннего – пробегает все свои возможные значения.
Оператор прерывания цикла
Для досрочного прерывания цикла можно использовать оператор goto или стандартную процедуру break. Рассмотрим фрагмент: … for i:=1 to n do begin p:=p* i; if p>100 then break ; writeln(‘p=’, p); end; … Цикл будет прерван при достижении условия p>100 по процедуре break.
Пример программы циклической структуры
Задача.
Составить программу расчета таблицы значений функции f(x) на интервале a<=x<=b в n равностоящих точках. Границы интервала a,b и количество точек n ввести с клавиатуры. Результаты вывести на печать. Найти сумму положительных значений функции f(x) на заданном интервале. Формула для расчета шага изменения аргумента: dx = (b-a)/(n-1)
program cikl_3; uses ctr; var y,x,a,b,dx,s : real; I,n : integer; begin clrscr; writeln(‘Введите a,b,n’); readln(a,b,n); { шаг изменения аргумента} dx:=(b-a)/(n-1); s:=0; x:=a; for i:=1 to n do begin y:=(1-exp(-x)) * sin(4*pi*x); writeln(‘y=’,y:8:3); x:=x+dx; if y>0 then s:=s+y; end; writeln(‘Сумма положительных значений s=’,s:8:3); readln; end.
Вопросы для самоконтроля
10.6. Методические указания для выполнения практического задания №6. «Циклы» Цель работы: Ознакомиться с алгоритмами циклической структуры, операторами цикла с параметром, с предусловием, с постусловием. Задание: 1. В приложении 7 выбрать вариант задания. 2. Выполнить практическое задание, используя пример программы циклической структуры. 3. Составить блок-схему алгоритма. 4. Написать программу и отладить ее по заранее подготовленному тесту. 5. Оформить задание в тетради для практических заданий. 6. Результат выполнения программы предъявить преподавателю. 7. Ответить на вопросы самоконтроля. 8. Защитить выполненную работу у преподавателя. Приложение 7. Таблица вариантов заданий
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-09-14 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |