Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_ лекций по Паскалю_ИиКТ.doc
Скачиваний:
12
Добавлен:
24.09.2019
Размер:
2.85 Mб
Скачать

Оператор цикла repeat

Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора:

Repeat

P1 ;

P2 ;

. . .

PN

until S ;

В этой структуре:

P1, P2, . . . , PN  выполняемые операторы, составляющие тело цикла;

S  логическое выражение, истинность которого проверяется в конце каждой итерации.

Так как слова repeat и until являются своеобразными операторными скобками, точке с запятой перед словом until ставить необязательно.

Пример 5. Вычислить значения функции

при

Рис.15. Блок-схема примера 5.

Программа:

Program Example_5 ;

Var

x , y , a , b ,h : real ;

Begin

a := 0.9 ; b := 1.4 ; h := 0.1 ; x := a ;

repeat

y := x*x * exp(-x) * sin(x) ;

WriteLn(‘x=‘,x:7:1,’ y=‘,y:10:5) ;

x := x + h ;

until x > b ;

End.

Оператор цикла while

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

Структура оператора WHILE имеет вид:

WHILE S do Instruction ;

В этой структуре:

S  логическое выражение, истинность которого проверяется в начале каждой итерации;

Instruction  выполняемый оператор цикла.

Пример 6. Элементы последовательности вычисляются рекуррентно по формуле . Составить программу для вычисления и печати числа элементов последовательности, удовлетворяющих неравенству ai>0,7 , если ao = 27, a значения i изменяются от 1 до 10.

Расчётные формулы:

Пусть n - число вычисляемых элементов последовательности,

k - число элементов, удовлетворяющих условию ai > 0,7.

Тогда

ko =0 - начальное значение k.

Рис.16. Блок-схема примера 6.

Программа:

Program Example_6 ;

Var

a0, a : real ;

i, n, k : integer ;

Begin

WriteLn ;

WriteLn(' Введите n,a0');

ReadLn(n,a0) ;

WriteLn ;

WriteLn('Введено число выполняемых элементов последовательности:' ,n:4);

WriteLn(' Начальное значение :',a0:6:1) ;

k :=0 ;

i :=1 ;

a :=a0 ;

while i <= n do

begin a := a / 3.0 ;

if a > 0.7 then k := k + 1 ;

i := i + 1

end ;

WriteLn ;

WriteLn(' k=',k:4) ;

End.

Оператор безусловного перехода goto

Инструкции IF и CASE изменяют ход программы в зависимости от некоторого условия. Поэтому эти инструкции иногда называют инструкциями условного перехода. Существует еще одна  инструкция безусловного перехода GOTO.

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

Общий вид оператора GOTO:

GOTO < Метка >

Метка  это идентификатор с двоеточием, стоящий перед оператором, который должен быть выполнен после оператора GOTO.

Использовать оператор GOTO следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора, т. к. он может дать неправильный результат и т. д.

Пример 7. Найти частное от деления целых чисел.

Program Example_7 ;

Label

Out ;

Var

x, y, Rez : Integer ;

Begin

WriteLn(‘Введите делимое’) ;

ReadLn( x ) ;

WriteLn(‘Введите делитель’) ;

ReadLn( y ) ;

If y = 0 Then

begin

WriteLn(‘Деление на ноль’) ;

Goto Out ;

end ;

Rez := x div y ;

WriteLn(‘Частное равно:’,Rez) ;

Out : { метка “пустого” оператора }

End.