[ Скачать с сервера (36.7 Kb) ] | 2019-04-05, 8:51 PM |
В разветвляющихся программах последовательность выполнения операторов зависит от некоторого условия или условий. Для организации таких программ используют условный оператор и оператор выбора. Кроме них, возможно использование составного оператора, оператора перехода и пустого оператора. Рассмотрим структуру и назначение условного оператора, оператора перехода и составного оператора. Составной оператор представляет собой последовательность операторов, заключенную в операторные скобки Begin и End. Его назначение состоит в получении из нескольких операторов одного оператора. Это бывает необходимо для соблюдения синтаксических правил языка. Условный оператор позволяет выбрать для исполнения один из двух операторов в зависимости от выполнения условия. Он имеет две формы: 1) If <логическое выражение> Then <оператор> Else <оператор>; 2) If <логическое выражение> Then <оператор>; Первая форма называется полной, вторая – неполной. Выполнение: если логическое выражение истинно (имеет значение True), то выполняется оператор, находящийся после Then, иначе (когда выражение ложно, т.е. имеет значение False) – оператор, стоящий после Else (для полной формы), или вообще не выполняется никакого действия (для неполной формы). Обратите внимание, что в условном операторе в зависимости от условия возможно выполнение только одного оператора! Если необходимо выполнить более одного оператора, то применяют составной оператор. Логические выражения бывают простыми и сложными. Простое логическое выражение представляет собой либо условие, содержащее два операнда и одну операцию отношения, либо логическую переменную. Сложное выражение состоит из простых выражений и логических операций Not, And, Or. В этом случае значение логического выражения определяется согласно следующим таблицам истинности (L, L1, L2 – некоторые логические выражения): Оператор перехода позволяет нарушить естественный порядок выполнения операторов программы и передает управление оператору, помеченному меткой. Не следует увлекаться применением этого оператора, так как это приводит к нарушению понимания логики работы программы. Формат оператора: Goto <метка>; . В качестве метки можно использовать неотрицательное целое число, имеющее не более четырех знаков, или идентификатор. Метки предварительно описываются в разделе объявления меток программы (LABEL).
Пример 2. Даны целые числа. Если числа не равны, то заменить каждое из них одним и тем же числом, равным большему из исходных, а иначе – заменить числа нулями. Program Example_2; Var Num1, Num2: Integer; Begin Write(‘Введи два целых числа:’); Readln(Num1, Num2); {ввод двух целых чисел} If Num1<>Num2 Then {если числа не равны} If Num1>Num2 Then {если первое число больше второго} Num2:=Num1 {то второму числу даем значение первого} Else {иначе – первому числу даем значение второго} Num1:=Num2 Else {если числа равны, то заменяем из нулями} Begin {применяем составной оператор, так как надо выполнить 2 оператора} Num1:=0; Num2:=0 End; Writeln(‘Первое число=’,Num1,’ Второе число=’,Num2) {вывод результатов} End.
Пример 3. Вычислить кратчайшее расстояние от заданной точки с координатами (X,Y) до границы фигуры (см. рисунок), если: a) точка находится вне фигуры (Для точки, находящейся внутри фигуры, выдать соответствующее сообщение.); b) точка находится внутри фигуры (Для точки, находящейся вне фигуры, выдать соответствующее сообщение.). Program Example_3a; Var X, Y, R, S: Real; {X, Y – координаты точки, R - кратч. расстояние} Begin Write(‘Введи координаты точки’); Readln(X,Y); S:=X*X+Y*Y; {S – вспомогательная переменная} If (S>100) And Not ((X>0) And (Y>0)) Then R:=Sqrt(S)-10 {2, 3, 4 четверти и вне круга с радиусом 10 } Else If S<25 Then R:=5-Sqrt(S) {Внутри окружности с радиусом 5} Else If (X>10) Or (Y>10) Then {за пределами квадрата со стороной 10} If (Y<10) Then R:=X-10 Else If X>10 Then R:=Sqrt(Sqr(X-10)+Sqr(Y-10)) Else R:=Y-10 Else R:=0; {для точки внутри фигуры} If R>0 Then Writeln(‘Кратчайшее расстояние до фигуры равно ’, R:6:2) Else Writeln(‘Точка находится внутри фигуры’) End.
Program Example_3b; Label Metka; Var X, Y, R, S: Real; Begin Write(‘Введи координаты точки’); Readln(X,Y); S:=X*X+Y*Y; If (S>=25) And (S<=100) And ((X<0) Or (Y<0)) Then {В кольце, находящемся. в 2, 3 и 4 четвертях} If (10-Sqrt(S)) < (Sqrt(S)-5) Then R:=10-Sqrt(S) Else R:= Sqrt(S)-5 Else If (X>=0) And (Y>=0) And (X<=10) And (Y<=10) And (S>=25) Then {Остальная часть фигуры} Begin If (10-X) < (10-Y) Then R:=10-X Else R:=10-Y; If (Sqrt (S) - 5) < R Then R:=Sqrt (S) - 5 End Else Begin Writeln(‘Точка находится вне фигуры’); Goto Metka End; If R=0 Then Writeln(‘Точка находится на границе фигуры’) Else Writeln(‘Кратчайшее расстояние до границы фигуры=’,R:6:2); Metka: End. | |
| |
Просмотров: 340 | Загрузок: 3 | |
Всего комментариев: 0 | |