|
Операторы передачи управленияНазначение операторов передачи управления заключается в организации ветвлений в программе: условных или безусловных. С помощью этих операторов вычислительный процесс передается в указанную оператором точку программы по указанному в операторе условию либо без условия. Оператор безусловного перехода Действие оператора GOTO состоит в передаче управления соответствующему оператору. Структура оператора: GOTO метка; Метка в Турбо Паскале – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Перед тем как появиться в программе, метка должна быть задана в разделе описания. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток. Пример: LABEL 1; {в разделе описания}; goto 1; {в разделе операторов} {перейти на метку 1} 1: read(x,y); {строка с меткой 1 в разделе операторов} При исполнении меток необходимо руководствоваться следующими правилами: 1) метка, на которую ссылается оператор GOTO, должна быть задана в разделе описаний и она обязательно должна встретиться где-нибудь в разделе операторов программы; 2) метки, описанные в процедуре (функции), локализуется в ней, поэтому передача управления извне процедуры (функции) на метку внутри неё невозможна. Однако в программировании не рекомендуется использование оператора GOTO, т.к. это затрудняет понимание программ, делает ее запутанной и сложной в отладке. Современная технология структурного программирования основана на принципе программирования без GOTO. Операторы условного перехода Структура условного оператора имеет следующий вид: IF <условие> THEN <оператор 1> ELSE <оператор 2>; где: IF, THEN, ELSE – зарезервированные слова (если, то, иначе); <условие> – произвольное выражение логического типа; <оператор 1>, <оператор 2> – любые операторы языка Турбо Паскаль. Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор 1>, а <оператор 2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор 1> пропускается, а выполняется <оператор 2>. Поскольку любой из операторов <оператор 1> и <оператор 2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <оператор 2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Условный оператор позволяет проверить некоторое условие и в зависимости от результатов поверки выполнить то или иное действие. Таким образом, условный оператор – это средство ветвления вычислительного процесса. Операторы условного перехода подразделяются на: простые и составные, короткие и полные. Простой, короткий IF (если) Структура оператора имеет вид: IF (условие) THEN (оператор или метка); Пример: Написать программу алгоритма ветвления. Вычислить y: = ln x, если x > 0. Решение: Программа алгоритма ветвления имеет вид: Program PR2; var y, x: real; begin writeln(‘ввести x’); Readln (x); IF x > 0 THEN y: = ln(x); {простой, короткий IF} writeln (‘x=’, x: 7:2, ‘y=’, y:7:2); end. Простой, полный IF Пример: Написать программу алгоритма ветвления. Вычислить y = ln x, если X>0, иначе y=cos x. В примере рассматривается не только вариант «тогда», но и «иначе».
Решение: Программа алгоритма ветвления имеет вид: Program PR3; var x, y: real; begin writeln(‘ввести X’); Readln (X); if x>0 THEN y:= ln (x) ELSE y:=cos(x); {простой, полный IF} Writeln (`x = `, x:6:2, `y = `, y:7:2) end. Если Х > 0, тогда выполняется оператор за словом THEN (тогда), иначе выполняется оператор, следующий за словом ELSE (иначе). Cоставной, короткий IF Составной оператор – это последовательность произвольных операторов программ, заключенная в операторные скобки – зарезервированные слова BEGIN…END. Составные операторы – важный инструмент Турбо Паскаля, дающий возможность писать программы по современной технологии структурного программирования (без перехода GOTO). Язык Турбо Паскаль не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Пример: Вычислить y=ln x, z=y–5×x, если x > 0. Оператор условия запишется в виде: IF x>0 then Begin y:=Ln(x); z:=y–5*x; Writeln (‘y=’, y:7:2, ‘z=’, z:8:3);end; Составной, полный IF Пример: Вычислить y=ln x, z=y–5×x, если x > 0. Вывод производить для каждого условия. Решение: Оператор условия запишется в виде: IF x>0 then Begin Y:=ln (x); Writeln (`x = `, x:6:2,`y =`, y:7:2); End Else begin Y:=cos (x); Writeln (`x = `, x:6:2,`y =`, y:7:2); End; В примере оператор условия составной, так как после слов then, еlse операторы заключены в операторные скобки. Структурированный (вложенный) IF Среди условных операторов можно выделить структурированный, который предполагает проверку условий путём вложения. Структурированный, короткий, простой IF. В структурированном операторе содержится последовательная проверка вложенных условий. Пример: Вычислить r=ln(x+y+z), если x > 0, y > 0, z > 0. Решение: Структурированный оператор условия запишется в виде: IF x>0 then IF y>0 then IF z>0 then R:=LN(X+Y+Z); Пример: Можно этот пример записать иначе коротким, простым оператором IF с помощью логического выражения: IF (x>0) and (y>0) and (z>0) then R:=LN(X+Y+Z); Пример: Вычислить r=x+y+z, если выполняется хотя бы одно из условий x>0, y>0, z>0. Решение: Оператор условия запишется в виде: IF (x>0) or (y>0) or (z>0) then R:=(x+y +z); Структурированный, полный, простой IF. Пример: Вычислить: r=ln(x+y+z), если x>0, y>0, z>0; r=ln (x+y)+ z, если x>0, y>0; r=ln (x)+y+ z, если x>0, иначе r = x+y+z. Решение: Оператор условия для трёх строк задачи запишется в виде: IF x>0 then IF y>0 then IF z>0 then r:=ln (x+y+z) else r:= ln (x+y)+z else r:= ln (x)+y+z else r:= x+y+z; Вначале проверяются три условия. Если они выполняются, то вычисляется r=ln(x+y+z). Иначе выполняются первые два условия, а последнее не выполняется и z ≤ 0 (первое слово else относится к последнему условию). В этом случае вычисляется r=ln(x+y)+z. Если из двух условий выполняется только первое, то вычисляется r=ln x+y+z (второе слово else относится ко второму условию) и в этом случае y ≤ 0. Последнее слово else относится к первому условию и в этом случае х ≤ 0. В этом случае вычисляется r=x+y+z. Пример: Написать программу разветвляющегося алгоритма рис.9. При выполнении условия x>0 вычисляется функция: z=ln x+ y, иначе, а именно, когда х=0 или x<0 вычисляется функция: z=x+y2. Решение: Программа алгоритма ветвления имеет вид: PROGRAM PR4; VAR x, y, z:real; BEGIN Writeln (‘ввести x, y’); {На экран выводится подсказка-текст в скобках} Read (x, y); {Ввод с клавиатуры переменных x, y } if x>0 then z:=ln (x)+ y else z=x+y*y; Writeln (’z=’, z: 7: 3); {Вывод результата} END. Пример: Написать программу разветвляющегося алгоритма рис.10. Найти максимальное число из трех разных целых чисел. Решение: Программа алгоритма ветвления, поиск максимального из трех разных целых чисел, имеет вид: program max; var x, y, z: integer; begin writeln (’введите x, y, z’); readln (x, y, z); if x> y then if x> z then max:=x else max:=z Else if y>z then max:=y else max:=z; writeln (’max=’, max); readln; end. Оператор условия выделен курсивом. Программирование. Циклы ![]() ![]() Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... ![]() ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... ![]() ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... ![]() Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|