- •1. О б щ и е з а м е ч а н и я
- •2. В в о д з а п и с е й
- •3. И с п о л ь з о в а н и е л и н е й н ы х с п и с к о в
- •4. К о н т р о л ь и с х о д н ы х д а н н ы х
- •5. Р а з р а б о т к а м н о г о м о д у л ь н о й п р о г р а м м ы
- •6. П р и м е р в ы п о л н е н и я з а д а н и я
- •7. Т е к с т п р о г р а м м ы k u r s r a b
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •8. Р е к о м е н д а ц и и п о в ы п о л н е н и ю
- •9. О с т и л е п р о г р а м м и р о в а н и я
8. Р е к о м е н д а ц и и п о в ы п о л н е н и ю
к у р с о в о й р а б о т ы
Для конкретизации текста приводимые ниже рекомендации ориентированы на разработку описанной выше программы Kursrab.
1. На первом этапе разработки программы целесообразно реализовать процедуры, предназначенные для чтения основного исходного файла FileInput и формирования архивного файла FileOut. Для этого требуется в минимальном объеме сформировать модули DesUnit, BasUnit, WorkUnit и основную программу Kursrab. Формирование модуля InpUnit, предназначенного для проверки корректности исходных данных, отложить на конечный этап разработки.
В модуле DesUnit записать объявления констант MaxKodif, Enter, PressKey, типа ProductType, переменных np, KeyRegime, Product, объявления файлов.
В модуле BasUnit разместить основные сервисные процедуры и функции: WaitEnter, PrintString, WritelnString, PrintKeyAndWaitEnter, Space, NotSpace, GetNumber.
В модуль WorkUnit записать процедуры ReadProduct и CreateArchive.
Основную программу Kursrab сформировать в полном виде, но в операторе Case записать обращение лишь к процедуре CreateArchive, для остальных констант селектора установить пустое значение.
В файле FileInput записать 3-4 строки информации, соответствующей типу ProductType.
В процедуру CreateArchive после обращения к процедуре ReadProduct временно вставить оператор Writeln для вывода на экран содержимого прочитанной записи. После проверки правильности чтения файла FileInput этот оператор удалить.
2. В модуль WorkUnit добавить процедуру печати архива PrintArhive, в основную программу - обращение к этой процедуре, в модуль BasUnit - используемую при этом процедуру UsesPrinter, в DesUnit - соответствующие объявления переменных.
В файл FileInput добавить 20-25 строк информации.
Проверить и отладить работу режима печати архива.
3. Выполнить аналогичные действия по отношению к кодификатору изделий.
4. В модуль DesUnit добавить объявления типов и переменных, необходимых для формирования очереди изделий, в модуль WorkUnit - процедуры CreateDynProduct, WriteFileProduct, SortArchive.
Выполнить отладку режима сортировки компонентов архива.
5. Последовательно реализовать режимы добавления компонентов в архив, удаления и изменения компонента архива, обработки архива.
6. Сформировать модуль InpUnit, последовательно выполнить все проверки, создавая в исходных файлах соответствующие ошибочные ситуации.
Здесь следует отметить, что из модуля InpUnit, описанного в программе Kursrab, свыше половины текста может быть использовано студентами при разработке других заданий. Это касается проверки наличия текстового файла, удаления пустых строк в файле, проверки форматов, диапазонов и пр..
Ранее уже отмечалось, что объявления констант, типов и переменных в программе должно быть содержательным и соответствовать условию задачи. Для этого целесообразно использовать английские слова, но не копировать не подходящие по смыслу имена из программы Kursrab. Например, было бы некорректно для типа записи варианта 1, в котором речь идет о расписании движения самолетов, использовать имя ProductType (Product - по-английски "изделие"). Здесь тип записи можно было бы объявить следующим образом:
Type
TimeType = record
Hour : 0..23; { часы }
Minute : 1..59; { минуты }
end;
PriceType = record
Griv : word; { гривни }
Kop : byte { копейки }
end;
TimeTableType = record
Trip : 1000..9999; { номер рейса }
EndPort : string[20]; { аэропорт назначения }
Distance : word; { расстояние }
AdultTicket, { цена взрослого билета }
ChildsTicket { цена детского билета }
: PriceType;
DepartureTime, { время отправления }
ArrivalTime { время прибытия }
: TimeType;
end;