Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2.DOC
Скачиваний:
0
Добавлен:
09.11.2018
Размер:
52.74 Кб
Скачать

2.6. Булевский тип

Данные булевского типа могут принимать два значения:

- FALSE - ложь,

- TRUE - истина.

Для данных булевского типа определены следующие операции:

- NOT - отрицание;

- AND - конъюнкция (логическое умножение);

- OR - дизъюнкция (логическое сложение);

- XOR - исключающее "или" (отрицание равнозначности) - в Турбо Паскале.

Старшинство операций: NOT - AND - (OR ,XOR).

Операция NOT - унарная, т.е. определяет действие над одним операндом: изменяет его значение на противоположное.

Результатом операции AND является TRUE только в том случае, если оба операнда имеют значение TRUE , и FALSE - в противном случае.

Операция OR дает значение TRUE, если хотя бы один операнд имеет значение TRUE .

Операция XOR дает значение TRUE , если операнды различны, а если одинаковы - то значение FALSE.

Результат булевского типа дают операции отношения (табл.2.3):

Таблица 2.3

Список операций отношения

обозначение в Паскале

<

<=

=

<>

>=

>

математический смысл

<

£

=

¹

³

>

В табл. 3.1 приведен полный список операций языка Паскаль и их старшинство.

Результат булевского типа дает функция Odd(x).

Пример 2.6.1. Пусть имеется следующее описание:

VAR b : Boolean; c,x,a : integer;

Тогда синтаксически корректны следующие присваивания:

b:=1 > 2; b:=NOT(a>=5); b:=(a>1) AND b .

Пример 2.6.2. Ввести целое. Определить, является ли оно кратным 7.

PROGRAM Krat;

VAR kr : Boolean;

x : integer;

BEGIN

Write('Ввести целое: '); ReadLn(x);

kr:=x MOD 7 = 0;

WriteLn('Число кратно 7 - ',kr)

END.

Решение задачи предусматривает присваивание булевской переменной kr значений TRUE или FALSE в зависимости от того, равен ли нулю остаток от деления числа x на 7.

Пример 2.6.3. Ввести два целых числа. Определить, есть ли среди них хотя бы одно, оканчивающееся цифрой 6.

PROGRAM c6;

VAR a,b : integer;

c : Boolean;

BEGIN

Write('2 целых = '); ReadLn(a,b);

c:=(a MOD 10 = 6) OR (b MOD 10 = 6);

WriteLn('Есть оканчивающиеся на 6 - ', c);

END.

Пример 2.6.4. Ввести три числа: a,b,x и выяснить, выполняется ли условие:

PROGRAM Diap;

VAR a,b,x,y : real;

usl : Boolean;

BEGIN

Write('a,b,x = ? '); ReadLn(a,b,x);

y:=x*x+1;

y:=(Sin(x)+Sqrt(y))/y;

usl:=(y>=a) AND (y<b);

WriteLn('Условие выполняется - ', usl)

END. Обратим внимание на то, что в данном случае нельзя записать оператор usl := a <= y < b , поскольку сначала выполнится сравнение a<=y, в результате чего получится булевская величина, которая уже не сможет сравниться с вещественным b.

.

Задачи

2.6.1. Ввести 3 целых. Выяснить, есть ли среди них хотя бы одно, оканчивающееся цифрой 7.

2.6.2. Ввести 3 целых. Выяснить, являются ли все они одинаковыми.

2.6.3. Ввести 3 целых. Определить, есть ли среди них хотя бы два одинаковых.

2.6.4. Ввести два целых. Определить, есть ли среди них хотя бы одно четное отрицательное.

2.6.5. Определить, пересекаются ли две окружности, заданные коор-динатами центров и радиусами.

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