Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1003.00.01;1.doc
Скачиваний:
19
Добавлен:
07.07.2019
Размер:
375 Кб
Скачать
☆

3.3.3.2 Описание алгоритма

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

На следующем этапе каждый модуль детализируется. Выделяются укрупненные команды, реализуемые по вспомогательным алгоритмам. Тот же подход применяется при разработке вспомогательных алгоритмов.

Пример

В программе решаются три независимые друг от друга подзадачи.

1. Перемещение по лабиринту.

2. Запись на диск плана помещений здания.

3. Запись на диск файла подсказки.

Задача “Перемещение по лабиринту” решается в два этапа: 1) формирование списка помещений; 2) выбор направления движения и переход из одного помещения в другое.

Обобщенная схема алгоритма приведена на рисунке 5.

Рисунок 5. Обобщенная схема алгоритма

При формировании списка плана помещений сначала производится считывание номеров комнат из текстового файла и построение связанного списка, затем построение многосвязанного списка, содержащего в себе план помещений здания (рисунок 6).

Рисунок 6. Формирование списка плана помещений

Перемещение по лабиринту начинается с выбора номера помещения для начала путешествия. Если такого помещения нет, то игра заканчивается. Если такое помещение в лабиринте есть, то игроку предоставляется возможность выбрать направление движения или воспользоваться файлом подсказки. Укрупненная схема алгоритма приведена на рисунке 7.

Рисунок 7. Схема алгоритма этапа “Перемещение по лабиринту”

Блок “Выбор направления движения” может быть детализирован на этапе разработки программы.

Аналогично детализируются все составляющие алгоритма.

На этапе разработки технического проекта детализация на уровне операторов программы необязательна.

3.3.3.3 Организация входных и выходных данных

Данный раздел содержит описание и обоснование выбора метода организации входных и выходных данных.

Файл, содержащий план лабиринта, может быть организован непосредственно в приложении. Для этого разрабатывается отдельный фрагмент программы. Структура файла приведена на рисунке 2. В текстовом файле в одной строке записаны номер комнаты и номера комнат смежных помещений. Смежные помещения располагаются в порядке: норд, ост, зюйд, вест. Если смежное помещение отсутствует, то вводится значение 0. Номера комнат в файле могут располагаться в произвольном порядке. Важным является то, что информация о комнате должна быть расположена в отдельной строке.

Разрабатываемое приложение предусматривает использование файлов прямого доступа. В файлах прямого доступа хранится информация подсказки. Подсказкой является правильный ответ тестового задания, который соответствует двери, ведущей к выходу из лабиринта. Файл–помощь может быть сформирован непосредственно в приложении. Для этого разрабатывается отдельный фрагмент программы. Количество компонентов файла равно количеству помещений в здании-лабиринте. Номер компоненты файла соответствует номеру помещения. Правильный ответ расположен в положении, определяющем верное направление. Компонент типизированного файла имеет тип “запись”, где отводится поле для хранения вопроса по теме курса и поле – массив предлагаемых ответов.

Структура файла подсказки:

Запись:

Поле вопроса

Поле 4–х ответов

Файл подсказки для структуры помещений, приведенной на рисунке 1, может содержать, например, следующие тестовые задания:

Что является стандартной файловой переменной?

Con

Prn

F

Input

Правильно описана файловая переменная текстового типа

F4: text80;

F1: File of String;

F: File of String[80];

F2: Text;

Какая процедура предназначена для связи файловой переменной с физическим файлом на диске?

Reset

Rewrite

Assign

Read

Какая процедура предназначена для чтения данных из типизированного файла?

Readln

ReadBlock

Input

Read

Если Var a, b: ^Real; то для a и b справедливо

New(a^)

a:= a/b

a^:= a^ mod b^

a^:= sin(b^)

В результате выполнения New(p) p приобретает значение, соответствующее

значению ноль

типу переменной р

адресу, начиная с которого можно разместить данные

значению Nil

и т.д.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]