Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Программирование на CF Pascal.docx
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
54 Кб
Скачать
☆

2.3.1. Скачка Paul Rever

Шаг 1. Составляем набросок нашей программы:

PROGRAM PaulRevere(INPUT,OUTPUT);

{Выводит соответствующие сообщения, в зависимости от значения INPUT: ‘By land’ в случае 1; 'By sea’ в случае 2.}

VAR

Lanterns: CHAR;

BEGIN {PaulRevere}

{cчитываем Lanterns}

{выводим сообщение Paul Rever'а}

END. {PaulRevere}

Шаг 2. Дополним нашу программу вводом и эхом ввода:

PROGRAM PaulRevere(INPUT,OUTPUT);

{Выводит соответствующие сообщения, в зависимости от значения INPUT: ‘By land’ в случае 1; 'By sea’ в случае 2.}

VAR

Lanterns: CHAR;

BEGIN {PaulRevere}

{считываем Lanterns}

READ(Lanterns);

WRITELN('Lanterns is ', Lanterns); {тестовый оператор}

{выводим сообщение Paul Rever'а}

END. {PaulRevere}

Запустим ее на выполнение:

INPUT :1

OUTPUT:Lanterns is 1

INPUT :X

OUTPUT:Lanterns is X

Теперь усовершенствуем программу так, чтобы она выполняла действие в комментарии после WRITELN. После того, как значение Lanterns было задано оператором READ, его значение может быть проверено в операторе IF:

{выводим сообщение Paul Rever'а}

IF Lanterns = ‘1’

THEN

WRITELN(‘The British are coming by land.’)

ELSE

WRITELN(‘The British are coming by sea.’)

В данном случае в операторе IF подразумевается, что если Lanterns не равен 1, то он равен 2. Будет лучше, если мы будем более внимательны в данном случае:

{выводим сообщение Paul Rever'а}

IF Lanterns = ‘1’

THEN

WRITELN(‘The British are coming by land.’)

ELSE

IF Lanterns = ‘2’

THEN

WRITELN(‘The British are coming by sea.’)

ELSE

WRITELN(‘The North Church shows only ’’’, Lanterns, ’’’.’)

Теперь окончательный вариант нашей программы принял вид:

PROGRAM PaulRevere(INPUT,OUTPUT);

{Выводит соответствующие сообщения, в зависимости от значения INPUT: ‘By land’ в случае 1; 'By sea’ в случае 2.}

VAR

Lanterns: CHAR;

BEGIN {PaulRevere}

{считываем Lanterns}

READ(Lanterns);

{выводим сообщение Paul Rever'а}

IF Lanterns = ‘1’

THEN

WRITELN(‘The British are coming by land.’)

ELSE

IF Lanterns = ‘2’

THEN

WRITELN(‘The British are coming by sea.’)

ELSE

WRITELN(‘The North Church shows only ’’’, Lanterns, ’’’.’)

END. {PaulRevere}

INPUT :1

OUTPUT:The British are coming by land.

INPUT :A

OUTPUT:The North Church shows only ‘A’.

INPUT :2

OUTPUT:The British are coming by sea.

2.3.2. Разделы проекта и разработочные программы

В маленьких программах типа PaulRevere пошаговое совершенствование может быть выполнено естественно и непринужденно. Однако по мере того, как задачи и программы становятся более сложными, тщательное и систематический подход сохранит ваше время в конечном итоге.

В программировании существуют 2 различные фазы:

1. Проектирование – продумывание того, какой должна быть программа для надлежащего решения проблемы.

2. Разработка – ввод текста программы для использования Паскаль-машиной

При пошаговом совершенствовании текст программы, спроектированный, с целью решения задачи с большими деталями – называется разделом проекта. Каждый раздел проекта, в свою очередь может содержать более подробное описание задачи (в виде комментариев), что повлечет за собой написание дополнительный разделов. Результатом фазы проектирования будет иерархия разделов проекта, которые совместно решают проблему. Каждый раздел проекта при этом будет оператором Паскаля – обычно, это оператор BEGIN, IF или WHILE. Это операторы 5-15 строк длиной + 2-4 задачи, оставшиеся на следующем уровне.

После того, как программа целиком будет доведена до иерархии разделов проекта, можно приступать к трансляции в форму, понятную ЭВМ. На первый взгляд, это может покаазться простым шагом. Однако, если большая программа будет переведена в Паскаль машину даже с одной ошибкой, последствия могут быть катастрофическими. В самом лучшем случае эта ошибка будет обнаружена компилятором Паскаля. Это даст программисту второй шанс на трансляцию программы. Если программа будет запущена на исполнение, то она может выдавать неправильные результаты, однако программист может не подозревать об этом и потратитm время изучая проект на наличие ошибок. Результаты могут быть настолько причудливыми и странными, что будет трудно связать их с исходным текстом. Например, неверное условие, например, < вместо >, может завести во время выполнения в неожиданное место программы, в общем, ошибки будут расти как снежный ком. В самом худшем случае будет казаться, что программа работает корректно, поскольку тестирование не выявило ошибку во время трансляции.

Последовательность исполняемых программ, каждая и которых отражает бОльший раздел проекта, может содействовать правильной и систематической трансляции в код для Паскаль-машины. Каждая программа из такой последовательности будет называться разработочной программой. Разработочные программы – являются накоплением разделов проекта, которая растет в размере до тех пор, пока весь проект не будет преобразован в Паскаль-программу. Каждая разработочная программа определяется таким образом, чтоб она может быть выполнена и оттестирована для поверки корректной трансляции на каждом этапе разработки.

На практике, трансляция проекта в Паскаль-программу может быть выполнена при помощи блоков больших, чем один шаг проекта, обычно 15-50 строк за один раз. Таким образом успешная разработочная программа создается при помощи комбинации нескольких частей проекта в окончательно оттестированную разработочную программу. Для проверки корректного исполнения может быть необходимо добавить временные операторы WRITE для создания видимого вывода.