Данная структура используется также в неполной форме. В этом случае она реализуется следующим образом.
Бейсик | SELECT CASE <выражение> CASE <условиe1> <оператор1> … CASE<условиeN> <операторN> ENDSELECT | IF<условие1>THEN <оператор1> ELSEIF<условие2>THEN <оператор2> … ELSEIF<условиеN>THEN <операторN> END IF |
Паскаль | сase <выражение> of <список констант1> : <оператор1> ; . . . <список константN> : <операторN> ; end ; | |
Си | switch (<выражение>) case<константа1> : <оператор1> ; break; . . . case<константаN> : <операторN> ; break; |
Структура «цикл с предусловием»
Структура «цикл с предусловием» имеет вид:
где Р – логическое выражение (условие), S – оператор или группа операторов (тело цикла).
На языках программирования для ее реализации имеется оператор цикла с предусловием:
Бейсик | Паскаль | Си |
DOWHILE<условие> <оператор> LOOP | while<условие> do<оператор>; | while (<условие>) <оператор>; |
Пример 4.4
Задача: Вводить целые числа, до тех пор, пока не будет введено отрицательное число. Определить сумму и количество введенных чисел.
programchisla;
usescrt;
var k,s,n:integer;
Begin
clrscr;
k:=0;
s:=0;
write('Введитечисло - ');
readln(n);
while n>0 do
Begin
k:=k+1;
s:=s+n;
write(' Введитечисло - ');
readln(n);
end;
writeln('Сумма введенных чисел =',s);
writeln('Количество введенных чисел =',k);
readln;
end.
Структура «цикл с постусловием»
Структура цикла с постусловием имеет вид:
где Р – логическое выражение (условие), S – оператор или группа операторов (тело цикла).
Структура цикла с постусловием является дополнительной. Поэтому на некоторых языках программирования для ее реализации нет соответствующего оператора. В частности, нет оператора, реализующего данную структуру на языке Си.
На Бейсике и Паскале структура реализуется так:
Бейсик | Паскаль |
DO <оператор> LOOPUNTIL<выражение> | repeat< оператор > until< выражение > ; |
Пример 4.5
Задача: Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12, … , 24 часа.
program amebs;
uses crt;
var k,v:integer;
Begin
clrscr;
k:=1;
v:=0;
writeln('ВремяКоличество');
Repeat
k:=k*2;
v:=v+3;
writeln(v:4,k:6)
until v=24;
readln;
end.
Структура «цикл с параметром»
Структуру «цикл с параметром» рекомендуется использовать, когда заранее известно число повторений тела цикла. Она имеет вид:
где М — заголовок цикла, S — оператор или группа операторов (тело цикла).
В заголовке цикла инициализируется параметр цикла, т.е. ему присваивается начальное значение, указывается конечное значение параметра цикла, до достижения которого тело цикла будет повторяться, и шаг, который показывает, на сколько изменится параметр цикла после каждого выполнения тела цикла. На языках программирования данная структура реализуется следующим образом:
Бейсик | FOR<параметр цикла> = <начальное значение параметра цикла>TO<конечное значение параметра цикла> [STEP<шаг>] <оператор> NEXT [<параметр цикла>] |
Паскаль | for<параметр цикла> := <начальное значение параметра цикла>to<конечное значение параметра цикла> do<оператор>; или for<параметр цикла> := <начальное значение параметра цикла>downto<конечное значение параметра цикла> do<оператор>; |
Си | for (<параметр цикла> = <начальное значение параметра цикла>; <условие выполнения цикла>; [<параметр цикла> = <параметр цикла>+<шаг>] ) <оператор>; |
Сравнив операторы, которые реализуют данные алгоритмические структуры, можно сделать вывод о том, что на известных языках программирования написание этих операторов почти одинаково.
Пример 4.6
Задача: Вывести квадраты чисел от 1 до 10.
program kvadrat;
uses crt;
var i, k:integer;
Begin
clrscr;
for i:=1 to 10 do
Begin
k:=i*i;
writeln('Kvadrat ',i:2,' = ',k )
end;
readln;
end.