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

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

Файл, содержащий план лабиринта, может быть организован непосредственно в приложении. Для этого разрабатывается отдельный фрагмент программы. Структура файла приведена на рисунке 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

и т.д.

 

 


Выбор состава технических и программных средств

 

На основании разработанного алгоритма делается вывод о необходимости использования того или иного языка программирования. Перечисляются достоинства выбранной среды программирования. Определяются технические средства, необходимые для оптимальной работы будущей программы. Следует помнить, что задание на курсовую работу сформулировано, как разработка приложения для Windows, поэтому использование среды разработки приложений Delphi предпочтительнее, но допускается разработка программы и в среде Турбо Паскаль.

В приведенном примере делается вывод о необходимости использования интегральной среды разработки программ Delphi. Среда Delphi позволяет достаточно быстро разрабатывать приложения для Windows. Далее указываются минимальные характеристики компьютера, необходимые для полноценной работы IDE Delphi и программ, созданных в этой среде.

 

 

Источники, использованные при разработке

Данный раздел должен присутствовать в пояснительной записке, если при разработке приложения использовались другие готовые программы.

 

 

Разработка рабочего проекта

 

Этап разработки рабочего проекта включает в себя разработку программы и программной документации, а также испытание программы.

Разработка программы

 

Современные программы разрабатываются для функционирования в среде Windows. Приложение для Windows студенты разрабатывают в среде визуального программирования. Визуальное программирование строится на тесном взаимодействии двух процессов:

· процесс конструирования Windows-окна;

· процесс написания кода, придающего элементам этого окна и программе в целом необходимую функциональность.

Проект Windows-окна должен быть представлен в виде графической схемы, на которой расположены все визуальные и невизуальные компоненты, разрабатываемого интерфейса. Компоненты на схеме должны быть пронумерованы. После схемы приводится расшифровка изображенных на схеме компонентов: название и имя компонента; назначение в программе; события, на которые данный компонент откликается. Для каждого компонента должны быть указаны свойства, измененные при проектировании окна.

Пример

Для разработки приложения игры “Лабиринт” используется среда визуального программирования Delphi. Проект программы содержит три окна:

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

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

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

Окно Form1 Перемещение по лабиринту (рисунок 8).

 

 

Рисунок 8. Главное окно программы – Form1

 

Компонент Form1

Свойства:

Сaption – Игра “Лабиринт”;

Border – bsSingle;

BiSystemMenu – false;

BiMinimaze – false;

BiHelp – False;

События: нет.

1 – компонент TМainMenu

Свойства:

Items

Игра (N1)      Настройка (N2)    Выход (N3)

                       Ввод плана помещения (N4)

                       Ввод файла помощи (N5)

 

События:

Для N1 – событие BitBtn1Click (приводится ниже).

N3Click – закончить работу с приложением.

N4Click – перейти к работе со второй формой.

N5Click – перейти к работе с третьей формой.

2 – компонент TLabel1

Свойства:

Font – сиреневый, размер 12.

3 – компонент TEdit1

Свойства:

Text – очистить.

События:

Edit1KeyPress – защита от ввода недопустимых символов.

4 – компонент TBitBtn1

Свойства:

Caption – Game;

Glyph – Picture.Bmp.

События:

BitBtn1Click – ввод плана помещений из файла и организация структуры “Связанный список”. Выводит сообщение в метку Label1 и делает видимыми: Buttun1, Label1, Edit1.

5 – компонент TBitBtn2

Свойства:

Kind – bkClose

6 – компонент TPanel1

Свойства:

Align – alClient;

Caption – очистить;

Visible – False.

7 – компонент TPanel2

Свойства:

Align – alClient;

Caption – очистить;

Visible – False.

Компонент Image1 (на схеме не пронумерован).

Свойства:

Picture – Arches.Bmp;

Stretch – True;

Компонент Button1 (закрыт компонентом BitBtn1);

Свойства:

Caption – продолжить.

События:

Button1Click –ввод номера помещения, ввод имени файла помощи, показывает Panel2, прячет Edit1, Label1, Button1.

 

Контейнер Panel1 (рисунок 9).

 

Рисунок 9. Компонент Panel1

 

Перечисляются компоненты, расположенные в контейнере Panel1, их свойства и события.

Далее приводятся графические изображения других панелей и окон, перечисляются компоненты и их свойства.

Написание программы

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

Кодирование должно быть простым. Изощренное программирование может обойтись слишком дорого при отладке и модификации программы. Необычное кодирование (например, использование скрытых возможностей машины) часто препятствует отладке программы и затрудняет ее использование другими программистами.

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

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

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

При написании программы следует применять операторы, позволяющие использовать основные алгоритмические структуры. Оператор Goto желательно не использовать.

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

Для облегчения чтения текста программы отдельные операторы программы записываются с отступом.

Пример

Обработчик BitBtn1Click.

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

Предлагается следующая структура элемента списка помещений:

Room = Record Num: Integer;

Door: Array [Trend] Of Uk;

Next: Uk;

End;

Поле Num хранит номер помещения; массив Door предназначен для хранения ссылок на смежные комнаты; поле Next содержит ссылку на следующий элемент списка. Trend – это перечисляемый тип данных, имеющий следующие значения: nord, ost, zued, west. Эти значения соответствуют направлениям дверей, которые могут быть расположены в каждом помещении. Указатель на начало списка помещений обозначим идентификатором Spi. Spi – глобальная переменная, которая описана в головной части программы.

Схема алгоритма построения связанного списка приведена на рисунке 10.

 

 

Рисунок 10. Построение связанного списка

 

Схема алгоритма построения многосвязанного списка приведена на рисунке 11.

 

 

Рисунок 11. Схема алгоритма построение многосвязанного списка,
содержащего в себе план помещений здания

Программа.

procedure TForm1. BitBtn1Click (Sender: TObject);

// Построение связанного списка помещений

Var FileName: TNameFile; f: TextFile;

p: Uk; i, nr: Integer;

begin

 FileName:= InputBox(‘План помещений’, ‘Введите имя файла ‘,’’);

 AssignFile(f, FileName);

 Reset(f);

//Считываем только номера помещений и составляем связанный список

Spi:= nil;

While not Eof(f) Do

Begin

New(p);

Readln(f, i);

p^.Num:= i;

For r:= nord To west Do p^.Door [r]:= nil;

p^.next:= Spi;

Spi:= p;

End;

//Еще раз считываем из файла, но уже с дверьми

Reset (f);

While not Eof(f) Do

Begin

Read(f, i);

p:= Nroom(Spi, i);

For r:= nord To west Do

Begin Read(f, nr);

       If nr = 0 Then p^.Door[r]:= nil

                 Else p^.Door[r]:= Nroom(Spi, nr);

End;

End;

// Подготовка формы для ввода номера начала помещения

 label1.Caption:= ‘Введите № комнаты, с которой хотите начать движение’;

 Edit1.Visible:= True;

 label1.Visible:= True;

 Button1.Visible:= True;

end;

 

Функция Nroom – поиск ссылки на помещение с заданным номером. В начинающемся в Spi списке помещений по номеру помещения N отыскивается нужное. Значение функции указывает на это помещение. Схема алгоритма приведена на рисунке 12.

 

 

Рисунок 12. Схема алгоритма функции Nroom

 

Программа

Function Nroom(Spi: Uk; n: Integer): Uk;

// В списке помещений находим указатель на n - oe

Var q: Uk;

Begin

q:= Spi;

While (q<>nil) and (q^.num<>n) Do q:= q^.next;

Nroom:= q;

End;

 

Аналогично уточняются все алгоритмы и разрабатываются обработчики событий.

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



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: