ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Условные и составные операторыВычислительные процессы, алгоритм которых содержит хотя бы одну типовую ветвящуюся структуру, называются ветвящимися. Для организации ветвлений в программах используют операторы передачи управления (операторы перехода). Допускается запись условного оператора в двух формах - полной и краткой. Полная форма условного оператора if предназначена для программирования разветвлений и имеет вид: If Логическое выражение then оператор 1 else оператор 2; где оператор1, оператор2 – простые (в том числе и условные) или составные операторы. Здесь используются ключевые слова: if – если; then [зен] – тогда (то); else [элз] – иначе. В дальнейшем для удобства изложения оператор 1 будем называть then-ветвью, а оператор 2 - else-ветвью. Подчеркнем, что в каждой из ветвей может находиться только один оператор. Перед else символ ’; ’ не ставится никогда. Оператор if выполняется так: 1) вычисляется значение логического выражения, результат вычислений анализируется; 2) если результатом является true, выполняется оператор 1, если false – оператор 2. После выполнения любой из ветвей выполняется следующий по порядку оператор программы. Пример 3.8. Составить программу нахождения максимального из двух чисел. var a, b, max: real; Begin write ('введите числа a,b'); readln(a, b); if a > b then max:=a else max:=b; writeln (max:10:2) End. Если a > b, то выполняется оператор max:=a (ветвь then), в противном случае – оператор max:=b (ветвь else). После выполнения любой ветви следующим будет выполнен оператор вывода. Если в одной или в обеих ветвях оператора if необходимо разместить не один, а несколько операторов, то каждую такую группу следует представить в виде одного составного оператора. Составной оператор используется в тех случаях, когда в соответствии с правилами построения конструкций языка можно использовать один оператор, а выполнить нужно несколько действий. Составной оператор начинается служебным словом begin и заканчивается словом end. Между этими словами размещаются необходимые для вычислений операторы. Слова begin и end играют в составном операторе роль скобок и называются, поэтому операторными скобками. Например Begin c:=a; a:=b; b:=c End Пример 3.9. Решить уравнение ax2 + bx + c = 0 (a ¹ 0) Var a, b, c, x1, x2, d: real; Begin write ('введите a,b,c '); readln (a,b,c); d:= sqr(b) – 4*a*c; if (d < 0) then write ('корни комплексные ') Else Begin d:= sqrt (d); a:=2*a; x1:= (- b + d) / a; x2:= (- b – d) / a; writeln (x1:10:2, x2:10:2) End End. Если условие d < 0 истинно, выводится сообщение «корни комплексные», после чего работа программы заканчивается. В противном случае выполняется else-ветвь, содержащая составной оператор (четыре оператора присваивания и оператор вывода). Краткая форма условного оператора if. Эта форма используется при программировании ответвлений и имеет вид: if Логическое выражение then оператор 1;. Если логическое выражение есть tru e, то выполняется оператор 1, в противном случае выполняется следующий оператор программы. Пример 3.10. Даны два числа. Если второе число больше первого – уменьшить его в два раза. var a, b: real; Begin write ('введите a, b '); readln (a, b); if a < b then b:= b / 2; writeln (a:10:2, b:10:2) end.
В операторе if непосредственно за ключевыми словами then и else могут следовать любые операторы, в том числе и операторы if. В этом случае они называются вложенными. Ниже приведены примеры, в которых используются вложенные операторы if. Пример 3.11. Вычислить значение функции у по формуле при a > b.
Блок-схема алгоритма приведена на рис. 4.1. Здесь в линейную структуру вложена ветвящаяся, ветвь «нет» которой, в свою очередь, составляет еще одна ветвящаяся структура. Глубина вложения такой ветвящейся структуры равна 2.
Программа имеет следующий вид.
Var x, y, a, b: real; Begin writeln ('введите x, a, b '); Readln (x, a, b); if x <= a then y:= sqr (x) else if x > b then y:= sqr (sqr (x)) else y:= x * sqr (x); writeln (y:10:2) End. Пример 3.12. Составить программу решения следующей задачи
Схема алгоритма на рис 3.2.
Программа имеет следующий вид: var x, a, z: real; Begin write ('введите x,a'); readln (x, a); if (a = 2) and (x = 1) then z:= sqr (a * x) Else if (a = 3) or (x = 2) then z:= exp (1 / 3 * ln (x*a)) else z:= exp (1 / 5 * ln (x)); writeln (z:10:2) End. В отличие от предыдущих примеров, где в качестве условий в операторах if использовались выражения отношения, здесь условия представляют собой более сложные логические выражения, содержащие логические операции and и or. В большинстве случаев это делает программу более простой и понятной.
Не нашли, что искали? Воспользуйтесь поиском:
|