TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

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.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz