Билет 23. Вопрос 1 Операторы повторения в языке ПАСКАЛЬ.
В языке Паскаль существуют 3 оператора цикла.
Этот оператор имеет вид: while условие do оператор; While и do - служебные слова, условие - булево выражение (простое или составное), оператор - тело цикла, состоящее из (только одного любого) оператора языка Pascal. Eсли в операторе while...do используются несколько операторов, то они заключаются в операторные скобки begin и end. Выполняется след. образом: сначала вычисляется значение булева выражения, если оно истинно (TRUE), то выполняется оператор, следующий за служебным словом do (операторы могут быть заключены в операторные скобки begin...end), снова происходит возврат к вычислению значения булева выражения. Так повторяется, пока значение булева выражения не станет ложным (FALSE). если условие сразу ложно, то тело цикла ни разу не выполняется.
ПРИМЕРЫ:
1. Вычислить произведение: 1*2*3*4*5*6*7*8*9*10*11*12*13*14*15*16 program proizv; uses crt; var i,p: integer; begin clrscr; p:=1; i:=1; while i<=16 do begin p:=p*i; i:=i+1; end; writeln(' Произведение равно :', p); readln end. 2. Вычислить сумму : 1+3+5+7+9+11+13+15+17+19+21+23+25+27+29 program proizv; uses crt; var i,s: integer; begin clrscr; s:=0; i:=1; while i<=29 do begin s:=s+i; i:=i+2; end; writeln(' Сумма равна :', s); readln end. 2.ОПЕРАТОР ЦИКЛА С ПОСТ. УСЛОВИЕМ. ОПЕРАТОР REPEAT. Cтруктура оператора: repeat операторы until условие;
Этот оператор ВЫПОЛНЯЕТСЯ следующим образом: сначала выполняется операторы, следующие за служебным словом repeat, вычисляется значение булева выражения, образующего условие. Если значение булева выражения ложно, то происходит возврат к выполнению операторов, следующего за служебным словом repeat, и снова вычисляется булево выражение. Так повторяется, пока значение булева выражения остается ложным. Как только оно станет истинным, выполнение оператора цикла прекращается. В ОТЛИЧИЕ от оператора while...do операторы, следующие за служебным словом repeat будут обязательно выполнен хотя бы один раз независимо от значения булева выражения. Eсли в операторе while...do используются несколько операторов, то они заключаются в операторные скобки begin и end. Если такой же составной оператор используется в операторе repeat, то в его записи служебные слова begin и end могут быть опущены.
repeat read (b); if b<>0 then m:=m+b until b=0;
Чтобы операторы цикла выполнялись конечное число раз и не произошло зацикливания при построении цикла, необходимо предусмотреть, чтобы среди выполняемых операторов обязательно был оператор, выполнение которого влияло бы на значение булева выражения.
Пример 1. Найти наибольшее натуральное число , которое меньше В. В - натуральное число. program nax;
uses crt; var a,b: integer; begin clrscr; writeln(' Введите число В '); read(b); a:=1; repeat a:=a+1; until a>b; writeln('Наибольшее число, меньшее чем В, равно ',(a-1):5) end.
Пример 2. В переменную х по очереди вводятся числа до тех пор, пока не будет введен 0. Определить среди них количество чисел, больших 100.
program pp; uses crt; var x:real; k:integer; begin clrscr; k:=0; writeln(' Вводите любые числа '); repeat read(x); if x>100 then k:=k+1 until x=0; writeln('Количество чисел больших 100 равно ',k:5) end. ОПЕРАТОР ЦИКЛА С ПАРАМЕТРОМ. ОПЕРАТОР FOR.
Используется для организации цикла с известным числом повторений цикла (оператор для). Структура оператора:
FOR <имя переменной>:=выр-ние 1 TO выр-ние 2 DO begin оператор 1; оператор 2; end; Пример for i:=1 to 4 do s:=s+i;
В этом цикле присутствует управляющая переменная. Она всегда должна быть целого типа. Для нее указывают начальное и конечное значение. В ходе цикла она должна пробежать все промежуточные значения. Шаг изменения равен 1. Если начальное значение больше конечного , то тело цикла ни разу не выполняется. Если начальное значение равно конечному, то цикл выполнится ровно 1 раз. Нельзя изменять значение управляющей переменной внутри тела цикла. Иногда цикл FOR можно использовать по-другому:
for i:=a1 downto a2 do оператор ; for i:=4 downto 1 do s:=s+i;
В этом случае значение управляющей переменной изменяется с шагом - 1. Для досрочного выхода из цикла, определяемого одним из операторов while, repeat, for, может быть использован оператор exit.
Пример 1. Найти сумму S=1+2+3+...+n
program summa; uses crt; var s,n,i:integer; begin clrscr; writeln('Введите количество слагаемых'); read(n); for i:=1 to n do s:=s+i; writeln(' Значение суммы равно ,s:5) end.
Пример 2. Напечатайте все целые числа по убыванию на промежутке [15;29]
program proizv; uses crt; var i : integer; begin clrscr; writeln; for i:=29 downto 15 do write(i:3); end. |