
Условия в паскале ( их также называют разветвлениями ) — одна из самых важных тем в языке программирования Паскаль. Данная конструкция будет использоваться почти в каждой задаче.
Так что следует уделить этой теме особое внимание , учитываю то , что она проста и легка для понимания. Рекомендую к прочтению статью о циклах (For, While, Repeat).
Начнем с того , что поясним что такое условие в принципе. Думаю нетрудно догадаться , что условие это некоторая развилка на два пути истинное ( true ) и ложное ( false ).
Истинное условие выполняется в том случае , когда условие истинно , то есть условие возвращает истинное значение ( позже будет понятнее ).
Ложное условие выполняется в том случае , когда условие ложно.
Рассмотрим эту конструкцию на примере .Например нам нужно узнать больше ли первое число второго . Проще говоря ввести два числа «а» и «b» и если а больше б , то вывести «а больше».
Делается это проще простого.
If ( если )
Условие записывается в скобках между словами if ( если ) и then ( тогда ).
В нашем случае нам понадобится такое условие if ( a > b ) then . Если условие «а больше б» возвращает истинный результат , то после слова then выполняется первая команда . Например :
После выполнения данной программы , если условие истинное и «а» больше «б» , на экран будет выведено сообщение A больше. Однако следует заметить , что если мы хотим в результате выполнения условия выполнять несколько команд , то их следует заключать в блок begin end.
Else ( иначе )
Допустим условие задачи такое — Ввести два числа с клавиатуры «a» и «b» , если «а» больше вывести число «а» , иначе вывести число «b».
Блок else ( иначе ) записывается после тела истинного значения . Запомните перед else ;никогда не ставится !
Если же в теле ложного значения мы хотим выполнить несколько команд ( больше одной ) , то в аналогии с телом истинного значения , эти команды заключаются в блок begin end
Сложные условия :
В аналогии с простыми существуют и сложные условия . Пример простого условия ( a = b ) . Пример сложного ( a > b ) and ( a <> b ). Дословно — если «а» больше «б» и «а» неравно «б» тогда … В данном случае блок then будет выполнятся тогда и только тогда , когда обе скобки возвращают истинный результат . Если хоть одна из скобок возвращает ложный , то будет выполнен блок else ( если он есть ). Разберем пример ещё одного условия ( сложного ). if ( (a > b) and ( a <> b ) ) or ( a = c ) then в этом случае блок then будет выполнятся в том случае , если «а» больше «б» и «а» неравно «б» или «а» равно «с».
Вложенные условия :
В одном условии могут находится ещё несколько условий , а в них ещё столько же условий. Проще говоря условия могут вкладываться в другие условия. Для того , чтобы вам было более понятно приведем такой пример. Например у нас есть массив из 10 элементов , заполненный случайными числами ,а нам нужно найти отрицательное число и вывести его на экран если индекс отрицательного элемента будет четным. Код данной программы выглядит вот так :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
program mypascal; uses crt; var a: array[1..10] of integer; i:integer; begin for i:= 1 to 10 do a[i]:= random(21)-10; for i:= 1 to 10 do if ( a[i] < ) then if ( i mod 2 = ) then writeln(a[i]); end. |
Однако данные вложенные условия можно было заменить одним : if ( a[i] <0 ) and ( i mod 2 = 0 ) then.
Вывод :
Выше на картинке показано как именно работают условия в языке программирования pascal. Если условие , которое указано в скобках , в данном случае это a > b , истинно , то будет выполнен код по ветки истинности. Если условие ложное , то будет выполнен код по ветке ложности.
- Условие записывается в скобках между словами if ( если ) и then ( тогда ).
- Если условие истинное , например ( 4 > 3 ) , то выполняется блок then , если условие ложное ( 3 > 4 ) выполняется блок else.
- Если мы хотим выполнить больше одной команды в условии их следует заключать в блок begin end.
- Перед else точка с запятой не ставится !
Разветвления
Разветвления — второй из типичных разновидностей алгоритмов. Разветвления начинается с определенного условия. Если это условие выполняется, происходит одно действие (или набор действий); если нет — другая. Примером такого алгоритма может служить, например, общение контроллера с пассажиром автобуса: если пассажир предъявил билет, надо поблагодарить пассажиру за оплаченный проезд, если нет — оштрафовать. Для программирования разветвления в языке Паскаль используется одна из конструкций if — then и if — then — else (англ. If — «если», then — «то», else — «иначе»).
1 |
if a=1 then writeln ( 'A равен 0'); |
Команда writeln будет выполнена только если будет выполнено условие.
1 2 |
if 2+2=5 then writeln ( 'Два и два будет п' пять! ") else writeln ( 'Два и два не пьет' пять ... '); |
Первую команду writeln будет выполнено, только если выполняется условие; поскольку очевидно, что она не выполняется, выполнена будет только вторая команда writeln. Обратите внимание на расстановку точек с запятой: единственное место, где в этих конструкции можно их ставить — это в конце. Так, точка с запятой после then перед writeln в первом примере
1 2 |
if a=1 then; writeln ( 'A равен 0'); |
приведет к тому, что writeln будет выполнено независимо от значения a; в другог примере лишний точка с запятой в else вызовет сообщение компилятора об ошибке — потому else не является самостоятельной конструкцией языка, а частью конструкции if-then-else.
Конструкции if-then могут быть вложенными друг в друга. Вот, например, переработка программы из предыдущего урока:
1 2 3 4 5 6 7 8 9 10 11 12 |
program LinearEquation; var a,b:real; begin writeln('Эта программа разв' 'связывает линейное уравнение ax=b'); write('a='); readln(a); write('b='); readln(b); if a<> then writeln('x=',b/a) else if b= then writeln('Любое действительное число удовлетворяет этому уравнению') else writeln('Уравнение не имеет действительных решений'); end. |
Теперь программа будет проверять, существуют решения в уравнение вообще не будет каких-либо число решением этого уравнения по математическим законам. Убедитесь, что программа работает, как предполагалось (запустите ее и введите значение a = 0, b = 0 и a = 0, b = 1). Попробуйте ввести эти значения в программу из предыдущего урока. Результат вышел? Как думаете, почему так?
Y = {sgnd fx + 5, x> 0Завдання ax sgn, x <_ 0