Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pascal.pdf
Скачиваний:
114
Добавлен:
20.04.2015
Размер:
980.04 Кб
Скачать

 

25

Программирование на языке Pascal

Логический тип данных

Порой бывает необходимо запоминать значение какого-нибудь логического выражения, чтобы несколько раз его не вычислять. Для этого в Pascal предусмотреть особый, логический тип данных – Boolean.

Использование переменных такого типа данных аналогично обычным переменным. В качестве примера использования приведем модифицированную программу нахождения корней квадратного уравнения, в которой уже проверяется условие отрицательности дискриминанта (поскольку нельзя вычислять квадратный корень из отрицательного числа)

и равенство нулю коэффициента a перед x2 (поскольку при этом квадратное уравнение вырождается и превращается в линейное, что приводит к делению на нуль, в случае использования формул (2) и (3)):

Var flag:Boolean;

a, b, c, D : Real; x1, x2 : Real;

begin

WriteLn('Введите коэффициенты квадратного уравнения '); ReadLn(a, b, c);

D:= b*b-4*a*c; flag:=(D>=0) and (a<>0);

If flag=True then

Begin x1:=(-b+sqrt(D))/(2*a); x2:=(-b-sqrt(D))/(2*a);

WriteLn('Первый корень уравнения =', x1); WriteLn('Второй корень уравнения =', x2);

End

Else

WriteLn('Корней нет или уравнение вырожденное');

End.

В этом примере, логичеcкой переменной flag присваивается результат логического выражения (D>=0) and (a<>0), определяющее возможность вычисления корней квадратного уравнения. Если это выражение истинно (а таковым оно будет являться только в случае неотрицательности дискриминанта и неравенства нулю коэффициента a), то и значение переменной flag также будет истинным, т.е. TRUE.

Особо также отметим, что строчка

If flag=True then

может быть записана в более коротком виде

If flag then

т.е. проверка на истинность является в Pascal проверкой по-умолчанию (хотя если бы мы хотели проверить значение на ложность, мы бы уже должны были бы записать условие целиком, т.е.: If flag=False then или воспользовать оператором Not для

отрицания истинности: If Not flag then)

25

 

26

Программирование на языке Pascal

Вложенный условный оператор

Поскольку блок операторов между Begin и End условного оператора (как в истинной части, так и в части ELSE) может быть произвольный, то допускается вкладывать произвольное количество условных операторов друг в друга (как матрешку), например,

так, как показано на приведенном ниже фрагменте кода:

If (Condition_one=True) then

Begin

If (Sub_condition=true) then

Begin

End

Else

Begin

End;

End

Else

Begin

If (Sub_condition_two=true) then

Begin

End

Else

Begin

End;

End;

Так, в примере 2 мы не учли возможность вывода сообщения о том, что вес нормальный. Модифицируем исходный текст, добавив такую функциональность:

Var Length, Weight: Integer;

Begin

WriteLn('Введите рост и вес человека '); ReadLn(Length, Weight);

If (Length-110>Weight) Then

WriteLn('Вес недостаточен! ')

Else

If (Length-110<Weight) Then

Begin

WriteLn('Вес избыточен');

End

Else

Begin

WriteLn('Вес нормальный');

End;

End.

Обратите внимание, что в блоке Else внешнего условного оператора, опущены Begin и End. Это сделано не случайно: дело в том, что весь вложенный If рассматривается как один большой оператор, поэтому операторные скобки (begin и end) можно не писать.

По этой же причине опущены операторные скобки в самом первом блоке If.

26

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]