При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор. Его общий вид: ИФ (условие) ЗЕН (оператор_1) ЭЛС (оператор _2). Ветвление может быть не полным, тогда условный оператор выглядит так: ИФ (условие) ЗЕН (оператор_1) Перевод слов: If - если; then – то; else - иначе. Перед else знак «;» не ставится. В качестве условий используются логические выражения: простые – записанные с помощью операций отношения; сложные – записанные с помощью логических операций. |
Пример Сравним два числа, результат выведем в следующем виде ab. program P_1; var a,b:integer; begin writeln (‘Сравнение двух чисел a и b’); write(‘Введите a и b ’); readln(a,b); if ab then writeln(a,'b) {Если а меньше бэ, то вывести на экран а меньше бэ} else if a=b then writeln(a,'=',b) {Иначе, если а равно бэ, то вывести на экран а равно бэ} else writeln (a,'',b);{Иначе, вывести на экран а больше бэ} end. По примерам мы видим, что программа работает верно и выдает правильные значения. |
Проверим, как работает неполная форма записи условного оператора. Пример Если введенное число положительное, то увеличим его в 2 раза. program P_2; var a:integer; begin writeln ('Введите число а'); write (‘a= ‘); readln(a); if a0 then a:=a*2;{если а больше ноля, то а присвоить а умноженное на 2.} writeln(a); end. По примеру мы видим, что программа работает правильно, положительное число она умножает на 2, а отрицательное выводит без изменения. |
В условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условии требуется выполнить определенную последовательность операторов, то их объединяют в один составной оператор. Конструкция составного оператора имеет вид: Бегин (последовательность операторов) энд называется составным оператором. |
Пример Составим программу на языке Паскаль для решения квадратного уравнения. program P_3; var a, b, c:real; var d: real; var x, x1, x2: real; begin writeln ('Решение квадратного уравнения'); write (‘Введите коэффициенты a, b, c˃˃ ‘); readln(a, b, c); d:=b*b-4*a*c; if dthen writeln (‘Корней нет’);{если дискриминант меньше нуля, то выводим сообщение корней нет} if d=0 then {Если дискриминант равен нулю, то выполняем последовательность операторов сначала считаем х, а затем выводим на экран сообщение чему он равен} begin x:= -b/2/a; writeln (‘Корень уравнения x= ’, x) end; if d0 then { Если дискриминант больше ноля, то выполняем последовательность операторов, сначала считаем х1 и х2, а затем выводим на экран сообщение, чему они равны} begin x1:= (-b+sqrt(d))/2/a; x2:= (-b-sqrt(d))/2/a; writeln (‘Корень уравнения: ’); writeln (‘x1= ’, x1); writeln (‘x2= ’, x2); end end. Проверим. Для а=7, b=8, c=4. Ответ программы - корней нет. Все верно d= 8*8- 4*7*4= 64-112= -48. Дискриминант отрицательный, корней нет. Еще пример: Для а=2, b=7, c=3. Ответ программы х1= -0,5, х2= -3 Все верно d= 7*7- 4*2*3= 49-24= 25. d0, тогда х1= = , х2= |