Program имя;
Procedure
Init;
var f:text;a:integer;
begin
assign(f,’input.txt’);
reset(f);
while not seekeof(f) do begin ...
read(f,a);
...
end;
close(f);
{инициализация всех глобальных
переменных}
end;
Procedure Solve; {или
Rec}
begin
...
end;
Procedure
Print;
var f:text;
begin
assign(f,’output.txt’);
rewrite(f);
close(f);
end;
begin
Init;
Solve;
Print;
end.
Программа работает, и она должна
оставаться работающей в течение всего времени решения задачи.
Приведем ряд
практических рекомендаций для дальнейшей работы с программой.
·
Оценить идею решения задачи, временную сложность
метода. «Прокрутить» логику решения на конкретном примере. В том случае, если
Вы видите, что для данной размерности задачи у Вас нет разумных идей, то
сделайте задачу для меньшей размерности. В процессе экспериментов с работающей
программой Вы можете найти новые идеи решения, разумные эвристики.
·
Если есть идея решения, то выбрать структуры
данных и после неоднократного чтения условия задачи согласовать с ними
процедуры Init и Print.
·
Дальнейшие Ваши действия должны соответствовать
технологии нисходящего проектирования (глава 1). Не пишите, по возможности,
полный текст программы (это дурной тон). Делайте это поэтапно. На каждом этапе
у Вас должна быть компилируемая и работающая программа (не забывайте сохранять
ее!!!).
·
При написании программы у Вас должен
формироваться список контрольных точек. В каждой из них Вы должны полностью
представлять значения всех переменных программы. Контроль - пошаговый режим
работы программы в контрольных
точках. Процесс разработки программы - это подключение к работающей версии
вновь написанных процедур и функций. Если состояние данных не соответствует
Вашим представлениям, то ни в коем случае не откладывайте выяснение причины «на
потом». Ошибки имеют свойство накапливаться. А это приводит к трагическим
последствиям - программа написана, но Вы не можете ее отладить. Если бы было
время, то это не очень страшно (забросить программу на недельку - стандартный
прием), однако обычно его нет.
·
У Вас есть полностью работающая (на Ваш взгляд)
версия программы. Обычная история, когда на этом процесс работы с программой
заканчивают, а он только начинается. Необходимо создать достаточно полную
систему тестов и проверить программу. Особо следует обратить внимание на
«граничные тесты», ибо программа может работать на «средних» примерах, но
давать неверный результат, когда ряд параметров задачи принимают граничные
значения.