циклических операторах, – это логическое выражение. А раз так, то результат сравнения можно присвоить булевой переменной. В приведенном выше примере вместо условного оператора можно записать выражение:

      B := S=’1’;       { равносильно if S=’1’ then B:= true else B:= false }

Здесь справа от знака присваивания стоит логическое выражение S=’1’, и в переменную B попадет TRUE, если S будет содержать строку «1» и FALSE – в любом другом случае.

Булевы переменные и выражения применяют везде, где требуется проверка условия, например, в условном и циклическом операторах:

if B

      then... { выполняется, если B=true }

      else... { выполняется, если B=false }

repeat

      { цикл выполняется, пока B=false }

until B

Замечу здесь, что «if B then…» равносильно «if B=TRUE then…».

К чему ещё годны булевы данные? С ними производят логические операции, но к операциям обратимся чуть позже, – пора вернуться к нашей автомобильной задаче.

С высоты птичьего полета

Напомню, что мы работаем над программой для навигатора автомобиля, принимающего сигналы от спутников системы ГЛОНАСС. Из космоса прекрасно видны все улицы и пробки города. Пусть все возможные маршруты от дома до школы известны заранее, а спутник сообщает лишь о том, открыта ли для движения та или иная улица. Если улица открыта, спутник сообщает об этом значением TRUE, а иначе – значением FALSE. Увы, к настоящему спутнику мы пока не подключены, и вводить данные о пробках придется вручную. Результатом работы нашей программы будет сообщение о том, можно ли проехать в школу (TRUE), или нет (FALSE).

Вот первый маршрут. Предположим, путь от дома до школы пролегает по двум улицам так, как показано на рис. 31.

Рис.31 – – Схема первого маршрута

Очевидно, что отразить состояние двух улиц можно двумя булевыми переменными, назовем их A и B. Объявим переменные и введем данные в них.

var A, B : Boolean; S: string;

begin

      Write(’Улица A открыта? ’); Readln(S); A:= S=’1’;

      Write(’Улица B открыта? ’); Readln(S); B:= S=’1’;

Здесь, как мы условились раньше, значение TRUE вводится цифрой «1».

Обратите внимание на новую для вас процедуру Write, – это «младшая сестра» процедуры Writeln. В отличие от «старшей сестры», после вывода сообщения она не переводит курсор на следующую строчку, – это удобно при запросе данных.

Ну-с, данные со спутника введены, и можно заняться их обработкой. Ясно, что для проезда в школу обе улицы должны быть открыты. Условными операторами это нехитрое рассуждение можно выразить так:

      S:=’Топай пешком’;

      if A then

      if B then S:=’Поезжай на машине!’;

Исходное значение – «Топай пешком» – заносим в переменную S заранее. Оно изменится тогда, когда обе булевы переменные станут равны TRUE. Согласитесь, это решение из двух условных операторов оказалось несложным. Но до поры до времени. Что, если маршрутов станет много, и каждый будет

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату