Разработочная программа 1А
PROGRAM SarahRevere(INPUT,OUPUT)
{выводит сообщение о том, как наступают британцы, в зависимости от того, найдено ‘land’ или ‘sea’}
VAR
W1, W2, W3, W4, Looking: CHAR;
BEGIN {SarahRevere}
BEGIN {инициализируем переменные W1, W2, W3, W4, Looking}
W1:= ‘ ‘;
W2:= ‘ ‘;
W3:= ‘ ‘;
W4:= ‘ ‘;
Looking:= ‘Y‘;
END;
WHILE Looking = ‘Y’
DO
BEGIN
BEGIN {сдвигаем окно, проверяем на конец данных}
W1:= W2;
W2:= W3;
W3:= W4;
READ(W4);
IF W4 = ‘#’
THEN {конец данных}
Looking:= ‘N’
END;
WRITE(W1,W2,W3,W4,‘,’); {тестовый оператор}
{проверка на ‘land’}
{проверка на 'sea'}
END
{Создаем письмо Сары}
END. {SarahRevere}
Результаты выполнения программы:
INPUT:#
OUTPUT: #,
INPUT:D#
OUTPUT: D, D#,
INPUT:De#
OUTPUT: D, De, De#,
INPUT:Dea#
OUTPUT: D, De, Dea,Dea#
INPUT:Dear Pau#
OUTPUT: D, De, Dea,Dear, ear,ar P,r Pa, Pau,Pau#,
Разработочная программа 1B
PROGRAM SarahRevere(INPUT,OUPUT)
{выводит сообщение о том, как наступают британцы, в зависимости от того, найдено ‘land’ или ‘sea’}
VAR
W1, W2, W3, W4, Looking: CHAR;
BEGIN {SarahRevere}
BEGIN {инициализируем переменные W1, W2, W3, W4, Looking}
W1:= ‘ ‘;
W2:= ‘ ‘;
W3:= ‘ ‘;
W4:= ‘ ‘;
Looking:= ‘Y‘;
END;
WHILE Looking = ‘Y’
DO
BEGIN
BEGIN {сдвигаем окно, проверяем на конец данных}
|
|
W1:= W2;
W2:= W3;
W3:= W4;
READ(W4);
IF W4 = ‘#’
THEN {конец данных}
Looking:= ‘N’
END;
BEGIN {Проверка на ‘land’}
IF W1 = ‘l’
THEN
IF W2 = ‘a’
THEN
IF W3 = ‘n’
THEN
IF W4 = ‘d’
THEN {‘land’ было найдено}
Looking:= ‘L’
END;
BEGIN {Проверка на ‘sea}
IF W2 = ‘s’
THEN
IF W3 = ‘e’
THEN
IF W4 = ‘a’
THEN {‘sea’ было найдено}
Looking:= ‘S’
END
END;
WRITELN(‘Looking is ’, Looking); {тестовый оператор}
{Создаем письмо Сары}
END. {SarahRevere}
Результаты:
INPUT:Dear Paul: I have been #
OUTPUT:Looking is N
INPUT:Dear Paul: I have been to Chelsea #
OUTPUT:Looking is S
INPUT:Dear Paul: My land lies along the sea #
OUTPUT:Looking is L
Разработочная программа 1C
PROGRAM SarahRevere(INPUT,OUPUT)
{выводит сообщение о том, как наступают британцы, в зависимости от того, найдено ‘land’ или ‘sea’}
VAR
W1, W2, W3, W4, Looking: CHAR;
BEGIN {SarahRevere}
BEGIN {инициализируем переменные W1, W2, W3, W4, Looking}
W1:= ‘ ‘;
W2:= ‘ ‘;
W3:= ‘ ‘;
W4:= ‘ ‘;
Looking:= ‘Y‘;
END;
WHILE Looking = ‘Y’
DO
BEGIN
BEGIN {сдвигаем окно, проверяем на конец данных}
W1:= W2;
W2:= W3;
W3:= W4;
READ(W4);
IF W4 = ‘#’
THEN {конец данных}
Looking:= ‘N’
END;
BEGIN {Проверка на ‘land’}
IF W1 = ‘l’
THEN
IF W2 = ‘a’
THEN
IF W3 = ‘n’
THEN
IF W4 = ‘d’
THEN {‘land’ было найдено}
Looking:= ‘L’
END;
BEGIN {Проверка на ‘sea}
IF W2 = ‘s’
THEN
IF W3 = ‘e’
THEN
IF W4 = ‘a’
THEN {‘sea’ было найдено}
Looking:= ‘S’
END
END;
BEGIN {Создаем письмо Сары}
IF Looking = ‘L’
THEN
WRITELN(‘The British are coming by land.’)
ELSE
IF Looking = ‘S’
THEN
WRITELN(‘The British are coming by sea.’)
ELSE
WRITELN(‘Sarah didn’’t say’)
END
END. {SarahRevere}
Принципы проектирования и разработки программ
Фаза проектирования.
Решение задачи (выполняется совместно с проектированием программы)
1. Поймите дачу. В случае необходимости, напишите краткое изложение задачи и корректируйте его по мере обнаруживать путей решения проблемы.
|
|
2. Разработайте стратегию решения. Наметьте в общих чертах решение на русском языке с одним или несколькими уровнями детализации. Корректируйте стратегию решения по мере создания окончательного проекта программы.
3. Анализируйте и осуждайте свою стратегию решения. На каждом уровне детализации ищите простейшие пути решения задачи. Не является ли оно более сложным, нежели требуется?
4. Организуйте свое решение путем написания улучшенного проекта. Не требуется ли реорганизация отдельных разделов проекта для лучшей понятности? Могут ли быть обнаружены подобные операции и организованы в общих разделах проекта?
Проектирование программы (выполняется совместно с решением задачи)
1. Разработайте план написания путем преобразования вашей стратегии решения в иерархию разделов придуманного текста программы и комментариев. Эти описания задачи должны, в свою очередь, служить в качестве имен разделов проекта на следующем уровне детализации.
2. Как правило, разделы проекта не должны быть не более 15 строк, и должны иметь вразумительные и легко понимаемые комментарии. Удержание разделов проекта в таких маленьких размерах и тщательное комментирование требует дисциплинированности, но это впоследствии будет вознаграждено легкостью чтения исходных текстов.
3. Храните разделы вашего проекта физически отдельно для того, чтобы обеспечить гибкость их написания и переписывания, однако думайте об их иерархической структуре во время анализа и упрощения своей программы.
4. Пишите и переписывайте разделы вашего проекта и вашу стратегию решения. Решите задачу, отложите ее решение, и попытайтесь его улучшить.