Читаем Песни о Паскале (СИ) полностью

Что за окном? нет ли дождя? ЕСЛИ дождь идет, ТО прихватите зонтик. В этом кратком рассуждении нет отрицательной ветви, поскольку в ней никаких действий не предусмотрено. В таких случаях отрицательную ветвь отбрасывают и получают неполный условный оператор.

IF <условие> THEN <Оператор>

Блок-схема такого оператора показана на рис. 24.




Рис.24 – Блок-схема неполного условного оператора


Пост номер два

Применим неполный условный оператор ко второй версии электронного часового – программе «P_10_2».


var S, R : string;

begin

Writeln(’Пароль?’); Readln(S);

R:= ’Стойте!’;

if S = ’pascal’

      then R:= ’Проходите!’;

Writeln(R);

Writeln(’Нажмите Enter’); Readln;

end.


Здесь для хранения решения введена переменная R, в которую изначально помещается суровое «Стойте!». После успешной проверки пароля значение переменной меняется на благосклонное «Проходите!», а затем решение выводится на экран.

Откомпилируйте и проверьте оба варианта часового. «Поиграйте» с ошибками компиляции. Если компиляция прошла гладко, внесите ошибки сознательно и исследуйте реакцию компилятора.

Теперь вы познакомились с двумя вариантами условного оператора. Ни один серьезный алгоритм не обходится без них. Скоро вам доведется изобретать весьма хитрые алгоритмы и рисовать блок-схемы для них. Значит, надо привыкать к блок-схемам; на рис. 25 представлены схемы наших программ.




Рис.25 – Блок-схемы программ с полным и неполным условными операторами


Итоги

• Условный оператор изменяет порядок действий в зависимости от некоторого условия; оператор может быть полным или неполным.

• Полный условный оператор состоит из условия IF и двух ветвей: положительной – THEN, и отрицательной – ELSE. В каждую из ветвей можно поместить по одному вложенному оператору.

• Неполный условный оператор состоит из условия IF и положительной ветви THEN.


А слабо?

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

Б) Напишите программу, которая спрашивает, идет ли дождь, и на ответ «да» выводит сообщение «А зонта-то у тебя нет!». Воспользуйтесь неполным условным оператором.

Глава 11


Операторный блок




Электронный часовой из 10-й главы пропускает только знающих пароль. Расширим круг его обязанностей. Пусть часовой, приняв верный пароль, отдаст ещё несколько команд, как то: «Распахнуть ворота! Оркестр, музыку!». А для нарушителей команды будут такими: «Тревога! Задержать его!». Разумеется, что команды будут выводиться на экран, причем каждая – в отдельной строке. Усеченная блок-схема программы показана на рис. 26.




Рис.26 – Блок схема часового, подающего дополнительные команды


Операторные скобки

На первый взгляд все ясно, как белый день: если пароль верный, то отдаем команды, что показаны на блок-схеме слева, а иначе те, что справа. Каждую команду выводим отдельным оператором, – так они окажутся в отдельных строках.


if S = ’pascal’

      then Writeln(’Распахнуть ворота!’);

      Writeln(’Оркестр, музыку!’);

      Writeln(’Проходите!’);

      else Writeln(’Тревога!’);

      Writeln(’Задержать его!’);


Добавьте в программу часового все это и откомпилируйте. Что, не вышло? Тут обнажилась проблема с подряд идущими операторами печати. По правилам языка, они разделяются точками с запятой, не так ли? Но разделители «порежут» на части и условный оператор IF-THEN-ELSE, а это недопустимо! Наткнувшись на показанную выше конструкцию, компилятор заявит вам прямо в глаза о синтаксической ошибке. Ведь в каждой ветви условного оператора допускается лишь по одному вложенному оператору, где выход?

«Вероятно, в Паскале что-то предусмотрено на сей счет» – заподозрите вы. Конечно! Здесь выручит операторный блок, который превращает группу операторов в один, скрывая внутри себя разделители – точки с запятой. Блок организуют знакомой вам парой ключевых слов BEGIN и END. В нашей программе эти слова надо втиснуть в ветви условного оператора так:


if S = ’pascal’

      then begin

      Writeln(’Распахнуть ворота!’);

      Writeln(’Оркестр, музыку!’);

      Writeln(’Проходите!’)

      end

      else begin

      Writeln(’Тревога!’);

      Writeln(’Задержать его!’)

      end;


Как видите, внутри блока BEGIN-END разделители ставят как обычно – для разграничения операторов.

А сколько операторов вместится в блок BEGIN-END? Да сколько угодно! Блок может быть и пустым, – иногда это оправдано. Предположим, вы ещё точно не решили, что будет внутри ветви: один оператор или больше. Тогда вставьте здесь пустой блок BEGIN-END, а затем думайте дальше. Вставка лишних блоков не влияет на программу, но может уберечь от синтаксических и логических ошибок.

И последний вопрос: почему после END нет точки? Ведь мы ставим её в конце программы! Да, но окончание программы – это единственный случай, когда после END ставится точка.


Красиво жить не запретишь

Перейти на страницу:

Похожие книги

Букварь сценариста. Как написать интересное кино и сериал
Букварь сценариста. Как написать интересное кино и сериал

Александр Молчанов создал абсолютно честный и увлекательный «букварь» для сценаристов, делающих первые шаги в этой профессии. Но это не обычный скучный учебник, а увлекательная беседа с профессионалом, которая поможет вам написать свой первый, достойный сценарий! Книга поделена на уроки, из которых вы узнаете, с чего начать свою работу, как сделать героев живыми и интересными, а сюжет — захватывающим и волнующим. Первая часть книги посвящена написанию сценариев для больших экранов, вторая — созданию сценариев для телесериалов.Как развить и улучшить навыки сценариста? Где искать вдохновение? Почему одни идеи выстреливают, а от других клонит в сон? И как вообще правильно оформлять заявки и составлять договоры? Ответы на эти и многие другие вопросы вы найдете внутри! Помимо рассказов из своей практики и теоретической части, Александр Молчанов приводит множество примеров из отечественной и западной киноиндустрии и даже делится списком шедевров, которые обязательно нужно посмотреть каждому сценаристу, мечтающему добиться успеха.

Александр Владимирович Молчанов

Драматургия / Прочее / Культура и искусство