TURBO PASCAL |
Новости |
1. 7. 7.
Оператор перехода к метке
Оператор перехода служит для передачи
управления помеченному оператору и имеет
вид:
Goto "метка";
Меткой может быть целое положительное
число или идентификатор.
Меткой помечается оператор,
которому передается управление,
например:
M1:
Write('Введите x>=0'); Readln(x);
If x<0 Then Goto M1;
Метки описываются в разделе описания,
например:
Label M1;
Метка не может стоять перед оператором
Begin. . . end;
Следует избегать переходов внутрь
операторов цикла.
Оператор перехода часто применяется
для "досрочного" выхода из операторов
цикла. Приведем
пример операторов для расчета конечной
суммы вклада через 10 месяцев (pr - процентная ставка), при условии досрочного снятия
вклада, если начальная сумма "S1"
возрасла более чем в два раза: S:= S1; For i:= 1 to 10
do begin
S:= S*(1 + pr/100);
If S > 2*S1
Then Goto M1 end; M1: Writeln(S);
Приведем пример программы
расчета наибольшего общего делителя двух
натуральных чисел по алгоритму Евклида:
наибольший обший делитель натуральных
чисел "а" и "в" равен наибольшему
общему делителю меньшего из чисел ("a"
или "b") и остатка от деления большего
числа на меньшее. PROGRAM del; label M1,
M2, M3; var b, a: longint; Begin M3:
Writeln('Введите два натуральных числа');
readln(a, b);
Writeln; if (a <=
0) or (b <= 0) then goto M3; {------------------------------------------------
алгоритм
-1 -------------------------------------------------} M1: if a = b then
Writeln('наибольший делитель =', a) else
begin if a > b then
a:= a-b else
b:= b-a;
goto M1 end;
Writeln; {
---------------------------------------------- алгоритм -2 ------------------------------------------------} M2: if a > b then a:=
a mod b else b:= b mod a; if (a= 0)
or (b= 0) then Writeln('наибольший делитель =',a+b) else
goto M2; Writeln('Нажмите Enter');
readln; end. |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |