ПРОГРАММИРОВАНИЕ ЦИКЛОВУРОК 33
В процессе решения множества задач часто требуется повторять те или иные действия. При этом бывают разные ситуации. Например:количество повторений известно до выполнения тела цикла;до выполнения тела цикла количество повторений неизвестно;тело цикла должно выполниться хотя бы один раз.
Для разных ситуаций существуют различные циклические конструкции. В языке программирования Паскаль их три, в соответствии с пунктами, описанными выше.Самой универсальной и поэтому чаще других используемой конструкцией цикла является второй вариант (цикл while).
Цикл while является циклом с предусловием, while <логическое выражение> do begin группа операторов end;В заголовке цикла находится логическое выражение. Если оно истинно, то тело цикла выполняется, если ложно — то нет. Если тело цикла было выполнено, то ход программы снова возвращается в заголовок цикла. Условие выполнения тела снова проверяется (находится значение логического выражения).
Тело цикла выполнится столько раз, сколько раз логическое выражение вернет true. Поэтому очень важно в теле цикла предусмотреть изменение переменной, фигурирующей в заголовке цикла, таким образом, чтобы когда-нибудь обязательно наступала ситуация false. Иначе произойдет так называемое зацикливание.
Например, нужно распечатать n звездочек Решение: Var i, n: integer; beginwrite('Количество знаков: '); readln(n);i:=l;while i<=n do begin write('(*)'); i:=i+1; end; end.
Практическая работа
Задание 1. Найдите сумму всех натуральных чисел из промежутка [1, m] Решение: Program Summa; Var i, m: integer; x, S: real; Beginwrite('Сколько чисел для сложения?');readln(m); S:=l; i:=l;while i<=m do begin S:=S+i; i:=i+l; end;write('Cyммa равна ',s:5:2);End.
Задание 2. Найдите сумму n чисел, вводимых с клавиатуры Решение:Program Summa;Var i, N : integer; x, S : real;Beginwrite('Сколько чисел для сложения?'); readln(N); S:=0; i:=1;while i<=N do beginwrite('Введите ‘, i ,’-e число’); readln(x); S:=S+x; i:=i+l; end;write('Сумма введенных чисел равна ',s:5:2); End.
Задание 3. Выведите квадраты натуральных чисел, не превосходящих 50 Решение: var x, n: integer; beginwrite('n='); readln(n); x:=l;while sqr(x)<n do begin write(sqr(x),' '); x:=x+l end; end.
Задание 4. Возведите число в степень Решение:Var num, deg: integer; res: real; i: byte; beginwrite('Число'); readln(num);write('Cтепень'); readln(deg);res:=l; i:=0;while i<abs(deg) do begin res:=res*num; i:=i+1 end;if deg<0 then res:=l/res;writeln(res:10:5); end.
Как программируется цикл с предусловием на языке Паскаль?
Домашнее задание Вывести все четные числа, начиная с числа N и кончая числом М. Числа N и М задает пользователь.Вводятся 14 чисел. Определить, сколько среди них положительных (включая 0) и сколько отрицательных. (Числа вводятся в одну переменную в цикле.)
1. Program dz1; var х, n, m: integer;beginwrite('n='); readln(n); write('m='); readln(m);x:=n;while x<=m do beginif x mod2 =0 then write(x,' ');x:=x+lend;end.
2. Program dz2; Var i, N : integer; x, S : real;BeginS1:=0; S2:=0; i:=l;while i<=14 do beginwrite('Введите ‘,i,’-e число '); readln(x);if x>=0 then sl:=sl+l else s2:=s2+l; i:=i+l;end;write('пoлoжитeльныxчисел', sl:5, 'отрицательных чисел', s2:5);End.