Логический тип Boolean

  • docx
  • 06.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

0.1. Логический тип Boolean
Иконка файла материала 74.docx

0.1. Логический тип Boolean

В операторах if, while, repeat мы привыкли писать выражения вида a>b, i<=0, c=’крот’3>2,   (a>b)AND(a>c)   и т.п. Про каждое из этих выражений можно сказать, истинно оно в данный момент или ложно. Например, выражение 3>2 истинно всегда, а выражение i<=0 ложно в тот момент, когда i равно, скажем, 2. Такие выражения называются логическими выражениями.

Говорят, что логическое выражение 3>2 имеет значение “истина” (по-английски true - “тру”), а логическое выражение i<=0 имеет значение “ложь” (по-английски false - “фолс”).

Внутренняя идеология построения языка Паскаль требует определить новый тип переменных - логический тип Boolean. Запись VAR a:Boolean означает, что переменная a может принимать всего два значения - true и false. Так, мы можем записать a:=false.

Слова true и false являются логическими константами и их можно употреблять в логических выражениях или вместо них. Например, if  a=true  then...  Конструкцию if (a>b)=false then... можно перевести “если неправда, что a больше b, то...”.

Значения true и false удобно применять для организации бесконечных циклов:

while true do .......

repeat ........... until false

Решим конкретный пример на этот тип.

Задача: В группе - 6 студентов. Сколько из них сдали зачет по физике?

Сначала напишем программу без использования типа Boolean. В ней единицей я обозначил зачет, нулем - незачет. Массив Zachet из 6 элементов хранит информацию о зачете.

CONST   Zachet    :array[1..6] of Integer = (1,1,0,1,1,1);
VAR       c,i           :Integer;
BEGIN
     c:=0;                                             {c - счетчик зачетов}
     for i:=1 to 6 do    if zachet[i] = 1      then c:=c+1;
     WriteLn(c)
END.

Теперь напишем программу с использованием типа Boolean. В ней через true я обозначил зачет, через false - незачет.

CONST   Zachet    :array[1..6] of Boolean = (true,true, false, true, true, true);
VAR       c,i           :Integer;
BEGIN
     c:=0;
     for i:=1 to 6 do     if zachet[i] = true     then c:=c+1;
     WriteLn(c)
END.

Отличие второй программы от первой в том, что выражение zachet[i] = true (зачет равен истина) выглядит естественнее и понятнее, чем zachet[i] = 1 (зачет равен единице, то есть колу?). В общем, чуть-чуть нагляднее.

Кстати, вполне правильно было бы написать и    if zachet[i] then ....  Ведь условием после слова if может стоять любое логическое выражение, имеющее значением true или false.


 

Скачано с www.znanio.ru