Песни о Паскале | страница 44
> A:= true;
> B:= false;
> C:= B;
А вот грубые ошибки:
> A:= ’true’;
> B:= ’false’;
> C:= ’B’;
Повторяю: TRUE и FALSE – это зарезервированные слова, а не строковые константы, они пишутся без апострофов.
Ввод и вывод – это первое и последнее звено в цепочке обработки данных. Прежде, чем обрабатывать данные, надо освоить их ввод и вывод. Рассмотрим, как это делается с булевыми данными.
С выводом проблем нет, поскольку процедура Writeln напечатает их словами «TRUE» и «FALSE». Вот небольшая программа, испытайте её.
>var B : Boolean;
>begin
> B:= false; Writeln(B);
> B:= true; Writeln(B);
>end.
Вводить булевы данные чуть сложнее, поскольку процедура Readln, к сожалению, не умеет этого делать. Как быть? «Нормальные герои всегда идут в обход», – поется в песне. Осуществим хитрый манёвр: для ввода булевых значений воспользуемся переменной другого типа, например, строковой, а затем преобразуем введенную строку в булев тип.
Условимся, что значению TRUE будет соответствовать ввод в строковую переменную символа «1», а FALSE – любой другой строки. Тогда булево значение в переменную B можно ввести следующим манером.
>var S : String;
> B : Boolean;
>begin
> Writeln(’Введите “1” для TRUE и прочее – для FALSE’);
> Readln(S);
> if S=’1’ then B:= true else B:= false;
> Writeln(B); Readln
>end.
Просто? Но можно сделать ещё проще, прибегнув к логическому выражению.
Данные логического типа можно получать в результате не совсем обычных вычислений. В этих вычислениях порой не увидишь ни чисел, ни арифметических действий, – речь идет о логических выражениях. Например, сравнивая две строки, вы задаетесь вопросом, равны ли они? Ответом может быть либо «да», либо «нет», или, выражаясь на языке Паскаль, TRUE или FALSE. Следовательно, сравнение строк, которое мы применяли в условных и циклических операторах, – это логическое выражение. А раз так, то результат сравнения можно присвоить булевой переменной. В приведенном выше примере вместо условного оператора можно записать выражение:
> B := S=’1’; { равносильно if S=’1’ then B:= true else B:= false }
Здесь справа от знака присваивания стоит логическое выражение S=’1’, и в переменную B попадет TRUE, если S будет содержать строку «1» и FALSE – в любом другом случае.
Булевы переменные и выражения применяют везде, где требуется проверка условия, например, в условном и циклическом операторах: