|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Оператор перехода к метке
Оператор перехода служит для передачи управления помеченному оператору и имеет вид: 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. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |