Найти в Дзене

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

Мы с вами неоднократно возвращаемся к предмету программирования как аналитическому материалу, позволяющему расширить и углубить способности каждого, возможно, и заинтересовать для дальнейшего выбора специальности.

Современный человек не представляет себе жизнь без компьютера, редко вспоминая о том, что программное обеспечение было когда – то и кем – то написано, и мы с вами пользуемся плодами работы этих людей.

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

Цикл – это многократное повторение последовательности действий по некоторому условию. Любой цикл состоит из тела и заголовка. Тело цикла – это набор повторяющихся операторов, а условие – это логическое выражение, в зависимости от результата которого происходит повторное выполнение цикла.

Известны три типа циклических алгоритмических структур: цикл с предусловием, цикл с постусловием и цикл с параметром. Паскаль реализует все три типа циклов.

Цикл с предусловием (цикл – пока) – наиболее универсальная циклическая структура. Реализуется оператором While.

Формат оператора:

While <логическое выражение> do <тело цикла>

Пока значение логического выражения – true, выполняется тело цикла; как только условие становится false, выполнение цикла прекращается.

Если используем несколько операторов в коде, заключаем их в операторные скобки – begin и end.

Цикл с постусловием (цикл – до) имеет формат:

Repeat <тело цикла>

until <логическое выражение>

Выполняется тело цикла до тех пор, пока условие – false, как только логическое выражение принимает значение true, выполнение цикла прекращается.

Тело цикла с постусловием выполняется хотя бы один раз. Использования begin и end для ограничения составного тела цикла не требуется.

Цикл с параметром имеет два варианта записи:

1) For I:= In to Ikdo <тело цикла>;

2) For I:= In downto Ikdo <тело цикла>.

Здесь I – параметр цикла – простая переменная, как правило, целого типа;

In и Ik - выражения целого типа, определяющие начальное и конечное значение параметра.

<тело цикла> может быть простым или составным оператором.

Цикл повторяется, пока значение параметра лежит в интервале между In и Ik. Причём эти значения вычисляются только один раз в начале выполнения цикла.

Значение параметра увеличивается на единицу (первый вариант) и уменьшается на единицу (второй вариант) при каждой итерации.

Рассмотрим решение одной задачи тремя способами.

Задача1. Вычислить сумму чётных чисел натурального ряда от 1 до N.

А)

program Project1;

var a,s,n: integer;

begin

write('n = ');

readln(n);

a:= 2;

s:= 0;

while a<=n do

begin

s:=s + a;

a:= a+2

end;

writeln(s);

readln;

end.

Б)

program Project1;

var a,s,n: integer;

begin

write('n = ');

readln(n);

a:= 2;

s:= 0;

repeat

s:=s + a;

a:= a+2

until a>n;

writeln(s);

readln;

end.

В)

program Project1;

var a,s,n: integer;

begin

write('n = ');

readln(n);

s:= 0;

for a:= 1 to n

do

begin

if a mod 2 = 0 then

s:=s + a;

end;

writeln(s);

readln;

end.

Очевидно, все три результата будут одинаковыми.

Предлагаются следующие задачи:

1.Напечатать минимальное число, большее 200, которое нацело делится на 17.

2.Гражданин 1 марта открыл счёт в банке, вложив 1000 рублей. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Через сколько месяцев размер вклада превысит 1200 рублей?

3.Вычислить сумму натурального ряда от m до n.

program Project1;

var n: integer;

begin

n:=200;

while n mod 17<>0 do

n:=n+1;

writeln(n);

readln;

end.

program Project2;

var n,s: integer;

begin

s:=1000; n:=1;

while s<=1200 do

begin

s:=1000+20*n;

n:=n+1;

end;

writeln(n-1);

readln;

end.

или

program Project2;

var n,s: integer;

begin

s:=1000; n:=1;

repeat

s:=1000+20*n;

n:=n+1;

until s>=1200;

writeln(n);

readln;

end.

program Project3;

var i,m,n,s: integer;

begin

readln(m);

readln(n);

s:=0;

for i:=m to n do begin

s:=s+i;

end;

writeln(s);

readln;

end.