Оператор безусловного перехода GoTo означает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор.
Формат :
GoTo <метка>;
Метка в Pascal – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В качестве метки можно использовать целое число без знака (исключение в правилах написания идентификаторов). Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появится в программе, метка должна быть описана (в разделе описания меток). За словом Label (метка) следуют имена меток, разделенные запятыми. За последним именем ставится точка с запятой. Максимальная длина метки ограничена 127 символами.
Формат : Label <имя1, имя2,... >;
<операторы>
lb2:<операторы>;
lb1: <операторы>;
<операторы>;
<операторы>
Действие оператора GoTo состоит в передаче управления соответствующему меченному оператору.
При использовании меток необходимо руководствоваться следующими правилами:
ü метка, на которую ссылается оператор GoTo, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;
ü метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.
Например, в результате выполнения программы:
label 1,2; //метки
2: if i<0 then goto 1; //условие перехода к метке 1
write(i); //выводим значение i
Dec(i); //увеличиваем i на 1
goto 2; //переходим к метке 2
1: //метка 1
будет выведено 6543210.
ТЕМА 7. Оператор выбора Case
Цель лабораторной работы: изучить оператор выбора, применять его в программировании для организации алгоритмов с ветвлениями наряду с условным оператором.
Оператор выбора Case часто используют для замены конструкций из вложенных условных операторов. Управляющая конструкция «выбор» является идеальным средством для обработки ситуаций со многими (более чем двумя) исходами, т.е. в случае, когда условие может принимать более двух значений. Оператор «выбор» имеет следующую структуру:
Case <параметр: порядковая переменная> OF
<значение 1>: <оператор 1>;
<значение 2>: <оператор 2>;
<значение N>: <оператор N>;
END; {для Case}
В этой структуре: < параметр: порядковая переменная> – порядковая переменная, значение которой проверяется; <значение *> – константы, с которыми сравнивается значение порядковой переменной; <оператор *> – операторы, из которых выполняется тот, с константой которого совпадает значение порядковой переменной.
Ветвь оператора else является необязательной. Если она отсутствует и значение порядковой переменной не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора If перед словом else точку с запятой можно ставить.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую, сопроводив их одним оператором. Существует возможность указать диапазон возможных значений. Например, диапазон от 1 до 100 включительно указывается так:
1 .. 100.
0, 2, 4, 6, 8: Writeln("Чётная цифра");
1, 3, 5, 7, 9: Writeln("Нечётная цифра");
10 .. 100: Writeln("Число от 10 до 100");
Writeln("Отрицательное число или больше 100");
В операторе выбор после двоеточия может указываться только один оператор. Для того, чтобы выполнить несколько операторов, так же как и в условном операторе, применяют составной оператор.
CASE <порядковая переменная> OF
<значение 1>:
<оператор 1_1>;
<оператор 1_n>
<значение 2>:
<оператор 2 _1>;
<оператор 2_n>
<значение N>:
<оператор N_1>;
<оператор N_n>
<оператор Е_1>;
<оператор Е_n>
Необходимо заметить, что из всех возможных ветвей операторов управляющей конструкции выбор , выполняется только одна ветвь, даже если значение порядковой переменной совпадает с несколькими возможными значениями, отвечающими за разные ветви операторов. Выполняется та ветвь, которая расположена раньше. Значение порядковой переменной сравнивается последовательно со всеми возможными значениями, и как только найдётся значение, которому равна порядковая переменная, выполняется ветвь операторов, сравнения прекращаются и управляющая конструкция прекращает свою работу. Поэтому при составлении программ с использованием управляющей конструкции выбор , раньше необходимо располагать более «строгие» последовательности операторов.
ТЕМА 8. Циклические программы
Цель лабораторной работы: закрепить практические навыки работы с системой PascaABC, научиться правильно использовать различные операторы циклов; научиться составлять программы решения задач с использование циклических структур.
Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же операторов. Число повторений этих операторов может быть задано в явной (цикл с известным числом повторений) или неявной (цикл с неизвестным заранее числом повторений) форме.
В практике программирования часто встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один или несколько параметров изменяются. Операторов цикла (повтора) в Паскале три: for, repeat, while.
Структурированными операторами называются такие операторы, которые включают в себя другие операторы и управляют последовательностью их выполнения. К ним относятся:
- составной оператор;
- условный оператор If ;
- условный оператор Case ;
- оператор цикла Repeat ;
- оператор цикла While ;
- оператор цикла For .
Составной оператор
Часто необходимо, чтобы по отношению к какому-то действию несколько операторов воспринимались в программе как один оператор. Такой оператор может быть получен, если необходимую последовательность операторов объединить операторными скобками. Служебные слова Begin и End называются операторными скобками.
Формат оператора:
оператор №1;
оператор №2;
оператор №3;
оператор № n-1;
оператор № n; End;
Слово Begin играет роль открывающей скобки, слово End – роль закрывающей скобки.
Составной оператор воспринимается как единый оператор. Его можно вставлять в любое место программы, где допускается только один оператор.
Операторы, входящие в составной оператор, как и всякие операторы, разделяются точкой с запятой, но перед end этот разделитель можно не ставить. После end точка с запятой необходима как разделитель между составным оператором и следующим оператором.
В последующих разделах смысл и назначение составного оператора будут проиллюстрированы на многочисленных примерах.
Условный оператор IF
Оператор If реализует алгоритмическую конструкцию «Решение» и позволяет изменить порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Формат оператора может быть записан в двух формах: полной и неполной форме.
Формат оператора в полной форме:
If<условие> Then<оператор 1> Else<оператор 2>
Формат оператора в неполной форме:
If<условие>Then<оператор 1>
If (если), Then (тогда), Else (иначе) – зарезервированные слова.
Блок-схемы оператора if представлены ниже:
Условный оператор работает следующим образом. Сначала вычисляется условное выражение < условие >. Если результат есть True (истина), то выполняется < оператор 1 > (после слова Then), а < оператор 2 > пропускается. Если результат есть False (ложь), то < оператор 1 > пропускается, а выполняется < оператор 2 > (после слова Else). Перед Else никогда не ставится точка с запятой, поскольку это еще не конец оператора If .
Часть Else <оператор 2> условного оператора If может быть опущена. Если < условие > оператора If принимает значение True , то выполняется <оператор 1> , в противном случае этот оператор пропускается. В этом случае формат условного оператора имеет неполную форму:
Сравним две конструкции:
If <условие>Then<оператор 1>;
If <условие>Then<оператор 1>; <оператор 2>;
В первой строке <оператор 1> или выполняется, или не выполняется в зависимости от выполнения <условия> . Во второй строке <оператор 2> выполняется всегда, поскольку после <оператора 1> стоит разделитель «;» и все что стоит поле разделителя считается другим оператором. Поэтому в соответствии с форматом оператора If после зарезервированных слов Then и Else может стоять всего лишь один оператор.
Пример:
If a > 0 Then b:=1;
If a > 0 Then b:=1; a:=b; {оператор a:=b; выполняется всегда}
Если же необходимо выполнить после Then и Else не один, а несколько операторов, то следует поставить операторные скобки, т.е. использовать составной оператор.
В этом случае оператор If будет иметь следующий вид:
If<условие>Then
оператор 11;
оператор 1n;
оператор 21;
оператор 2n;
Пример .
If a>0 Then begin b:=1; a:=b; end;
ЗАДАЧА 1. Вычислить значение функции, заданной неравенствами
y=x+1 при x<0; y=2∙x при x>0. program a5; var x,y:real; begin write(‘Введите значение x: ’); readln(x); if x writeln(‘Значение у равно: ’, y:6:2) end.
Результаты работы программы:
Введите значения x:0.5
Значение у равно: 1.00
ЗАДАЧА 2. Написать программу решения квадратного уравнения. Если дискриминант меньше нуля, то выводить соответствующее сообщение.
Program a6; var a,b,c:real; {коэффициенты уравнения} x1,x2:real; {корни уравнения} d:real; {дискриминант} begin Writeln(‘Решение квадратного уравнения’:50); Write(‘Введите значения коэффициентов a,b,c:’); Readln(a,b,c); {ввод коэффициентов} d:=b*b-4*a*c; if (d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.
Результаты работы программы:
Решение квадратного уравнения
Введите значения коэффициентов a,b,c:3 1 6
Уравнение не имеет корней.
В операторе If может быть использован не только составной оператор, но и любой структурированный оператор. В качестве такого оператора может использоваться и рассмотренный нами условный оператор If . В этом случае говорят о вложенных операторах If .
Пример.
if условие then | |||||
begin | Операторные скобки | ||||
оператор; | вложенный оператор IF , неполная форма |
||||
if условие then опеатор | |||||
else оператор; | |||||
end | |||||
else | |||||
begin | Операторные скобки | ||||
оператор; | вложенный оператор IF , неполная форма |
||||
if условие | |||||
then оператор; | |||||
end; |
При работе с вложенными операторами if следует учитывать следующие правила:
- перед зарезервированным словом else символ «;» никогда не ставится;
- зарезервированное слово else всегда связывается с ближайшим перед ним стоящим зарезервированным словом then .
ЗАДАЧА 3. Усовершенствуем программу решения квадратного уравнения (ЗАДАЧА 2). При значении коэффициента a=0 уравнение вырождается. В программе этот факт не учитывался, что вызовет фатальную ошибку при исполнении программы (деление на нуль). Для того чтобы исключить деление на нуль, выполним проверку значения коэффициента а после его ввода оператором Readln(a,b,c) .
Поскольку переменная a объявлена в программе как переменная вещественного типа, ее численное значение в машине представлено не точно, с некоторой погрешностью. Поэтому запись типа
Возможны несколько вариантов проведения корректного сравнения значений вещественной переменной с нулем:
ЗАДАЧА 4. Усовершенствованная программа решения квадратного уравнения.
Program a7;Var a,b,c:real; {коэффициенты уравнения} x1,x2:real; {корни уравнения} d:real; {дискриминант} begin Writeln(‘Решение квадратного уравнения’:50); Write(‘Введите значения коэффициентов a,b,c: ’); Readln(a,b,c); {ввод коэффициентов} if round(a)<>0 then begin d:=b*b-4*a*c; if d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.
Результаты работы программы:
Решение квадратного уравнения Введите значения коэффициентов a,b,c:0 1 6 Деление на нуль.
Условный оператор выбора Case
Оператор выбора является обобщением оператора If и используется в тех случаях, когда необходимо выполнить только один оператор из совокупности операторов в зависимости от значения ключа выбора.
В качестве ключа выбора используется выражение, которое располагается между зарезервированными словами Case и of. Выражение может быть целого, логического и символьного типов. Выражение не может иметь тип Real, String.
Формат оператора:
Case of "<ключ выбора>" константа1:оператор 1; константа2:оператор 2; константа3:оператор 3; ... константаN-1:оператор N-1; константаN:оператор Nn; Else оператор End;
Здесь Сase (в случае), of (из), Else (иначе), End (конец) являются зарезервированными словами.
Ключ выбора – это выражение любого типа кроме Real и String .
Константа1 – константа того же типа, что и выражение.
Оператор1 – произвольный оператор.
Оператор выбора действует следующим образом. Вначале вычисляется выражение <ключ выбора> , а затем в последовательности операторов отыскивается такой, которому предшествует константа, равная вычисленному значению <ключ выбора> . Найденный оператор выполняется, после чего оператор выбора завершает свою работу (управление передается на end). Если в списке констант не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается оператору, стоящему за словом Else .
Часть Else <оператора> можно опустить, тогда при отсутствии в списке констант нужной константы ничего не происходит, и оператор выбора просто завершает свою работу.
ЗАДАЧА 5. Написать программу простого калькулятора .
Program a8; var x,y:real; z:real; {результат} op:char; {ключ выбора} begin Write(‘Введите операнды x,y: ’); Readln(x,y); Write(‘Введите операцию(+,-,*,/): ’); Readln(op); case op of ‘+’:z:=x+y; ‘-‘:z:=x-y; ‘*‘:z:=x*y; ‘/‘:if y0 then z:=x/y Elsewriteln(‘Деление на нуль’); Else writeln(‘Действие не предусмотрено!’); end; {op} {так можно пометить, «чей» end} writeln(‘Результат равен=’,z:8:2); end.
Результаты работы программы:
Введите операнды x,y:4 2
Введите операцию (+,-,*,/):*
Результат равен= 8.00
В программе ключом выбора является переменная символьного типа. В зависимости от введенного значения символов (+, -, *, /) выполняется одно из арифметических действий: сложение, вычитание, умножение или деление. Если в качестве делителя будет введен нуль, то деление невозможно и выдается сообщение «Деление на нуль». Если будет введен какой-либо другой символ, то результатом будет сообщение «Действие не предусмотрено!». Если введены допустимые операции, то выдается результат.
ЗАДАЧА 6. Написать программу, которая запрашивает у пользователя номер дня недели, затем выводит название дня недели или сообщение об ошибке, если введены неверные данные.
Program a9; Var n: integer; {номер дня недели} Begin write(‘Введите номер дня недели:’); readln(n); case n of 1: writeln(‘Понедельник’); 2: writeln(‘Вторник’); 3: writeln(‘Среда’); 4: writeln(‘Четверг’); 5: writeln(‘Пятница’); 6: writeln(‘Суббота’); 7: writeln(‘Воскресенье’); else write(‘вы ошиблись!’) end; {n} end.
Результаты работы программы:
Введите номер дня недели:1
Понедельник
Ни одна константа не должна совпадать с другой. Если для нескольких констант необходимо выполнить один и тот же оператор, то их можно перечислить через запятую, например
case n of 1,3,5,7,9: writeln(‘Это нечетные цифры’); 2,4,6,8,10: writeln(‘Это четные цифры’); end;
Оператор условного перехода в Турбо Паскаль имеет вид:
If условие then оператор 1 else оператор 2 ;
условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1 , записанный после ключевого слова then. В противном случае будет выполнен оператор 2 , следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.
Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!
else - часть в операторе if может отсутствовать:
If условие then оператор 1 ;
Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.
Базовые операции и математические процедуры и функции
Математические выражения в алгоритмической записи состоят из операций и операндов. Большинство операций является бинарными, т.е. содержат два операнда (унарные операции содержат один операнд, например: -а, взятие адреса @В).
Арифметические операции:
+, -, /, *, div (целочисленное деление), mod (остаток от деления),
Логические: not, and, or, xor,
Операции отношения: >, <, >=, <=, <>, =.
Логические вычисления и операции отношения
Наличие типа Boolean и операций с ним позволяет программировать логические вычисления, в основу которых заложена Булева алгебра. Введены четыре логических операции, результат которых всегда имеет тип Boolean и может иметь только одно из двух значений (Trueº1 (истинно) или Falseº0 (ложно)).
Чтобы не было ошибок, при логических вычислениях лучше расставлять скобки самим. Так, например, запись Not A And B будет воспринята компилятором как (Not A)And B, а, может быть, необходимо было бы так: Not (A And B).
Математические процедуры и функции
Системная библиотека Turbo Pascal’я приведена в таблице:
Математические функции очень чувствительны к диапазону своих аргументов. Кроме того, возвращаемые значения целых типов должны в них умещаться, иначе возможны фатальные последствия
Большинство функций являются стандартными и не нуждаются в комментариях. Отдельно хотелось бы остановиться на специфических.
Функция PI генерирует число «Пи» с точностью, зависящей от наличия сопроцессора и содержит от 10 до 14 значащих цифр после запятой, она может использоваться в вычислениях как константа, но не может быть поставлена в вычислимые константы блока Const.
Набор тригонометрических функций ограничен, но дает возможность расширить математическую библиотеку путем введения своих собственных функций, определяющих стандартные математические
Типы данных
Лабораторная работа №2 (2 часа)
Вариант 5
При решении большинства задач вычислительные процессы разветвляются. Для определения дальнейшего направления исполнения программы используются выбирающие операторы. К этому классу относится условный оператор и оператор выбора .
Условный оператор, используемый для разветвления алгоритма на два направления, является одним из ключевых средств не только языка Паскаль , но и любого другого языка программирования.
Условный оператор может быть в двух формах: полной и краткой.
Полная форма условного оператора
Полная форма условного оператора в языке Паскаль имеет следующий вид:
- if выражение then
- оператор1
- оператор2
Элемент выражение является логическим выражением. Если выражение имеет значение true (истина), то выполняется оператор1 (ветвь then ), иначе – оператор2 (ветвь else ). Затем, управление передается оператору, следующему после условного.
Рассмотрим фрагмент кода программы, определяющей минимальное значение из двух чисел:
{Фрагмент кода программы}
- if (a > b) then
- minDig:= b
- minDig:= a;
- writeln (minDig);
Если значение переменной a окажется больше значения переменной b , то выполнится оператор присваивания по ветке then (minDig получит значение b ), иначе - по ветке else (minDig получит значение a ), затем будет выведено значение переменной minDig .
В условном операторе после then и после else может располагаться только один оператор. Поэтому, если требуется использовать не один, а несколько операторов, то применяется составной оператор.
Краткая форма условного оператора
Краткая форма условного оператора записывается в следующем виде:
- if выражение then
- оператор
Если выражение принимает значение true (истина), то выполняется оператор , в противном случае происходит переход к следующему оператору программы. Так, в ниже следующем фрагменте кода программы, если число х окажется нечетным, то его значение будет увеличено на 1 (т. е. станет четным), в противном случае происходит переход к выводу значения х на экран.
Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить. Основная часть программы на языке Турбо Паскаль представляет собой последовательность операторов. Разделителем операторов служит точка с запятой. Все операторы языка Турбо Паскаль можно разделить на две группы: простые и структурные.
Операторы, не содержащие никаких других операторов, называются простыми . К ним относятся операторы присваивания, безусловного перехода, вызова процедуры и пустой оператор.
Оператор присваивания
Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны быть совместимы по типу.
Оператор присваивания выполняется следующим образом: сначала вычисляется выражение в правой части присваивания, а затем его значение присваивается переменной, указанной в левой части оператора.
Например, для оператора
Rezult:=A div В;
сначала выполняется целочисленное деление значения переменной А на значение переменной В , а затем результат присваивается переменной Rezult .
Примеры применения оператора присваивания:
А := 8;
S:= A * В ;
Ostatok:= A mod B;
Ratio:= A / B;
Оператор безусловного перехода (go to)
Оператор безусловного перехода (go to) означает "перейти к" и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор.
Напомним, что метка объявляется в разделе описания меток и может содержать как цифровые, так и буквенные символы.
При использовании оператора go to необходимо помнить, что областью действия метки является только тот блок, в котором она описана. Передача управления в другой блок запрещена.
Правила использования оператора безусловного перехода. Использование безусловных передач управления в программе считается теоретически избыточным и подвергается серьезной критике, так как способствует созданию малопонятных и трудно модифицируемых программ, которые вызывают большие сложности при отладке и сопровождении. Поэтому рекомендуется минимальное использование оператора go to с соблюдением следующих правил:
Следует стремиться применять операторы перехода (если кажется невозможным обойтись без них) для передачи управления только вниз (вперед) по тексту программы; при необходимости передачи управления назад следует использовать операторы цикла;
Расстояние между меткой и оператором перехода на нее не должно превышать одной страницы текста (или высоты экрана дисплея).
Пример применения оператора безусловного перехода:
label Metka; {в раздале описания меток описали метку с именем Metka }
begin {основная программа}
{операторы основной программы}
{операторы основной программы помеченные меткой}
Порядок выполнения работы
Изучить теоретические сведения по теме: “Написание программы на Паскале с использованием операторов присваивания и безусловного перехода ”.
Получить индивидуальное задание у преподавателя и разработать программу в соответствии с поставленной задачей.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Основные элементы программирования.
Основные характеристики программы. Понятия языка, оверлеев, глобальных и локальных блоков.
Операторы языка программирования Паскаль. Оператор присваивания. Формат, примеры.
Оператор безусловного перехода. Формат, примеры. Основные правила использования
Лабораторная работа № 7
Написание программы на Паскале с использованием условных операторов и оператора выбора Case
Цель работы : формирование знаний и умений по работе с операторами языка. Приобретение навыков написания программ с использованием операторов присваивания и безусловного перехода.
Краткие теоретические сведения
Условные операторы
Условные операторы предназначены для выбора к исполнению одного из возможных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т. е. отсутствовать). В качестве условий выбора используется значение логического выражения.
В Турбо Паскале имеются два условных оператора: if и case.
Оператор условия if
Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы.
Он может принимать одну из следующих форм:
if <условие> then <оператор1>
else <оператор2>;
if <условие> then <оператор>;
В переводе с английского языка данные форматы можно определить как:
ЕСЛИ<условие> ТО<оператор1> ИНАЧЕ<оператор2>
ЕСЛИ<условие> ТО<оператор>
Оператор условия if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа.
В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then (в переводе –“то”). Если результат вычисления выражения в условии есть False (ложь), то выполняется <оператор2> .
Во втором случае, если результат выражения True , выполняется <оператор>, если False - оператор, следующий сразу за оператором if . Операторы if могут быть вложенными .
Пример фрагмента программы с оператором условия if:
if Ch="N" then Parol:= True
else Parol:= False;
if Parol = True then
if X = 100 then Write("Пароль и код правильные")
Writeln("Ошибка в коде");
В данном примере с клавиатуры считывается значение переменной символьного типа Ch . Затем проверяется условие С h =" N " . Если оно выполняется, то переменной Parol булевского типа присваивается значение True , если условие не выполняется, False . Затем с клавиатуры считывается значение кода X . Далее оператор if проверяет условие Parol = True. Если оно имеет значение True , то выполняется проверка введенного пароля оператором if X=100 . Если условие Х=100 имеет значение True , то выводится сообщение "Пароль и код правильные", и управление в программе передается на оператор, следующий за словом end , если оно имеет значение False , выполняется составной оператор, стоящий после, слова else , который выводит на экран видеомонитора сообщение "Ошибка в коде", и вызывает стандартную процедуру Halt(1) для остановки программы.
Особенность применения оператора if . При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, например:
if условие1 then if условие2 then <оператор1> else <оператор2>
Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else .
В связи с этим следует проявлять аккуратность при записи вложенных операторов условия.
Пример 1 . Составить программу, которая вычисляет частное двух целых чисел. В связи с тем, что делить на нуль нельзя, организовать контроль ввода данных.
Для контроля вводимых значений делителя используем оператор условного перехода if ... then ... else.
Текст программы может выглядеть следующим образом:
program Primer1;
А, В: integer;
Write("Введите значение делимого А: ");
Write("Введите значение делителя В: ");
if B=0 {Контроль ввода числа B }
then Writeln("Ha нуль делить нельзя") {Условие выполнено}
{Условие не выполнено}
Rezult:= А / В;
Writeln("Частное чисел ",А," и " ,В, " = ", Rezult);