|
Операторы ограничения и прерывания цикла
Данные операторы применяются внутри операторов цикла с параметром или условием. Операторы имеют вид: Continue; - ограничение цикла, Break; - прерывание цикла.
Операторы Continue; и Break; позволяют производить действия не для всех операторов внутри цикла. Действие оператора Continue; заключается в передаче управления на начало цикла, при этом контролируется условие выхода из цикла. Действие оператора Break; заключается в передаче управления оператору, следующему за последним оператором цикла, при этом не контролируется условие выхода из цикла. Во вложенных циклах операторы Continue; и Break; действуют только на цикл в котором они записаны. Приведем пример использования операторов для блокировки несанкционированного доступа в программу.
For i:= 1 to 3 do begin Write('Введите ПАРОЛЬ:'); Readln(S); {S и Parol - переменные одного типа} If S = Parol Then Break { прерывание цикла } else If i <> 3 Then Continue; { ограничение цикла } Writeln('Доступ к программе ЗАПРЕЩЕН'); Writeln('Нажмите Enter'); Readln; Halt { прерывание программы } end; { продолжение программы }
Оператор перехода к метке
Оператор перехода служит для передачи управления помеченному оператору и имеет вид: 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. Блок - схемы алгоритмов
При обучении программированию используется графическое описание алгоритма решения задачи в виде блок - схемы. Такое представление алгоритма достаточно удобно и наглядно показывает последовательность выполнения операторов прогаммы. Приведем основные обозначения, применяемые в блок - схемах.
Ввод, Вывод Выполнить Проверить Начало, конец данных оператор условие программы
Используя данные обозначения можно составить блок - схемы основных операторов программирования на алгоритмическом языке Паскаль.
N Î i1, i2,..., ik N: оператор Да с меткой N Оператор выбора: нет Оператор
Проверка оператор 1 условия да Условный оператор: нет оператор 2
да i:= N1 i > N2 Оператор цикла с параметром: нет (значение параметра возрастает) i:=i+1 оператор
Оператор цикла с постусловием: операторы Проверка да условия нет Оператор цикла с предусловием: Проверка нет Условия да оператор
В соответствии с используемыми в программе операторами различают следующие типы алгоритмов: линейный, ветвящийся, циклический, комбинированный. Приведем пример блок - схемы комбинированного алгоритма для расчнета суммы положительных S1 и отрицательных S2 чисел из N случайных чисел от -100 до 100. Begin Randomize; N S1:=0; S2:=0;
i:=1; i > N да S1, S2 End. нет
i:= i + 1; x:= Random(201) - 100; Да нет S2:= S2 + x; x < 0 S1:= S1 + x;
Соответствующие алгоритму операторы имеют вид: Begin Randomize; Writeln('Введите количество случайных чисел'); Readln(N); S1:=0; S2:=0; For i:=1 to N do begin x:=Random(201)-100; if x<0 Then S2:=S2+x else S1:=S1+x end; Writeln('S1= ', S1, ' S2= ', S2); Readln End.
Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|