Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Циклические вычислительные процессы




 

Оператор цикла с параметром

Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются циклическими.

При организации циклов необходимо:

  • определить параметр цикла и его начальное значение;
  • изменять значение параметра цикла на каждом шаге итерации;
  • организовать проверку на выход из цикла.

 

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.

 

Пример программы циклической структуры

 

Задача.

  1. Формулировка задачи:

Составить программу расчета таблицы значений функции f(x) на интервале a<=x<=b в n равностоящих точках. Границы интервала a,b и количество точек n ввести с клавиатуры. Результаты вывести на печать.

Найти сумму положительных значений функции f(x) на заданном интервале. Формула для расчета шага изменения аргумента:

dx = (b-a)/(n-1)

  1. Таблица идентификаторов

 

Наименование переменной Обозначения в программе
Функция y
Аргумент x
Количество точек n
Начальное значение x a
Конечное значение x b
Шаг изменения аргумента dx
Сумма s

 

  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.

 

 

Вопросы для самоконтроля

  1. Что такое цикл?
  2. Какие циклы можно организовать на языке Паскаль?
  3. В каких случаях предпочтительней использовать оператор for …to … do для организации циклов?
  4. Какой тип должна иметь переменная, которая является параметром цикла в операторе for …to … do ?
  5. Сколько циклов будет пройдено, если в операторе while … do условие не выполнилось с первого раза?
  6. Сколько циклов будет пройдено, если в операторе repeat … until условие выполнилось с первого раза?
  7. Что такое вложенные циклы?
  8. Как можно досрочно прервать цикл?

 

10.6. Методические указания для выполнения практического задания №6. «Циклы»

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

Задание:

1. В приложении 7 выбрать вариант задания.

2. Выполнить практическое задание, используя пример программы циклической структуры.

3. Составить блок-схему алгоритма.

4. Написать программу и отладить ее по заранее подготовленному тесту.

5. Оформить задание в тетради для практических заданий.

6. Результат выполнения программы предъявить преподавателю.

7. Ответить на вопросы самоконтроля.

8. Защитить выполненную работу у преподавателя.

Приложение 7. Таблица вариантов заданий

 

Выбрать функцию по варианту из таблицы. Составить программу расчета таблицы значений функции f(x) на интервале a<=x<=b в n равностоящих точках. Границы интервала a, b и количество точек n ввести с клавиатуры. Результаты вывести на печать.
Вариант Функция
Найти сумму всех положительных значений функции f(x) в расчетных точках.
Найти сумму всех отрицательных значений функции f(x) в заданном интервале.
Найти произведение вычисленных значений функции f(x), целая часть которых кратна 2.
Найти среднее арифметическое положительных значений функции f(x).
Найти количество положительных значений функции f(x) на заданном интервале.  
Найти произведение всех отрицательных значений функции f(x) на заданном интервале.  
Найти произведение всех положительных значений функции f(x) на заданном интервале.
Найти сумму вычисленных значений функции f(x), целая часть которых кратна 2.
Найти среднее арифметическое отрицательных значений функции f(x).
Найти сумму вычисленных значений функции f(x), дробная часть которых > 0.5 .  
Найти количество положительных значений функции f(x).
Найти сумму вычисленных значений функции f(x), дробная часть которых < 0.5
Найти произведение вычисленных значений функции f(x), абсолютные значения которых > 1.
Найти сумму вычисленных значений функции f(x).
Найти произведение вычисленных значений функции f(x).
Найти произведение вычисленных значений функции f(x), дробная часть которых < 0.5
Найти сумму вычисленных значений функции f(x), дробная часть которых > 0.5
Найти количество положительных значений функции f(x), на заданном интервале.
Найти количество значений функции f(x), абсолютная величина целой части которых > 1.  
Найти наибольшее значение функции f(x), на заданном интервале.  
Найти среднее значение функции f(x).
Найти сумму значений функции f(x), абсолютная величина целой части которых < 1.
Найти произведение вычисленных значений функции f(x), абсолютные значения которых >1.
Найти произведение вычисленных значений функции f(x), целая часть которых кратна 2.
Найти наименьшее значений функции f(x) на заданном интервале.
Найти произведение значений функции в расчетных точках с четными номерами.
Найти сумму значений функции в расчетных точках с нечетными номерами.
Найти наименьшее значений функции f(x) на заданном интервале в расчетных точках с четными номерами.  
Подсчитать количество отрицательных значений функции на заданном интервале.
Вычислить произведение положительных значений функции в расчетных точках с нечетными номерами.

 

Последнее изменение этой страницы: 2017-09-14

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