Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_k_lab_inf_ch2_PE_2011.doc
Скачиваний:
20
Добавлен:
11.04.2015
Размер:
806.91 Кб
Скачать

Лабораторная работа №4

Программирование с использованием записей и типизированных файлов

Продолжительность работы – 4 часа

Цель работы: освоение программирования программ, содержащих записи и типизированные файлы, и приобретение навыков отладки этих программ в инструментальной среде Delphi

Программа работы

  1. Составить программу индивидуального задания, используя записи, строковые типы, перечисляемые типы, типы–диапазон и типизированные файлы; предусмотреть процедуры для создания файла, заполнения его и обработки.

  2. Ознакомиться с отладкой программы с помощью точек прерывания.

  3. .Ввести текст составленной программы и отладить программу, используя контрольные точки отладчика

Контрольные вопросы

    1. Какова структура описания записи?

    2. Как производится обращение к полям записи?

    3. Для чего используется оператор присоединения With?

    4. Какие виды файлов используются в Паскале?

    5. Как описываются файловые переменные?

    6. Какие существуют способы доступа к компонентам файла?

    7. Как связать файловую переменную с файлом на диске?

    8. Как организовать прямой доступ к компонентам типизированных файлов?

    9. Как осуществляется открытие типизированного файла

    10. Как осуществляется закрытие типизированного файла ?

    11. Как осуществляется чтение типизированного файла?

    12. Как осуществляется запись типизированного файла ?

    13. Каково назначение процедуры AssignFile?

    14. Как можно использовать контрольные точки при отладке программы?

Методические указания

Кп.1.

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

  1. открытие ранее созданного файла

  2. cоздание нового файла;

  3. просмотр содержимого файла.

Структура программы должна соответствовать структуре, представленной на рисунке 1.

Program Lab5_Var-номер варианта;{Lab5_Var-номер варианта–рекомендуемое имя программы}

{$APPTYPE CONSOLE}

Uses SysUtils,AnsiToAscii..;{объявление используемых в программе стандартных модулей и разработанных модулей, в частности AnsiToAscii для вывода русского текста }

Type{описание типов}:

Spis=Record { переменная Spis –это тип запись}

{описание }

… {полей}

{записи}

End;

Var { описание переменных и процедур}

F_Name:String[8];{F_Name-строковая переменная для хранения имени файла}

F:File of Spis;{F-файловая переменная типа Spis, через которую происходит связывание программы с конкретным файлом}

<имя записи из таблицы 1>:Spis;{ переменая типа Spis, т.е. запись}

Begin

Writeln(Rus(‘Ввод имени файлаF_Name=’)) {для cоздания нового или открытия созданного файла’);Readln(F_Name);

…{вызов процедуры, создающий новый или открывающий старый файл с введенным с клавиатуры именем и проверкой его наличия на диске}

Writeln(Rus(‘Заполнение файла записями’));{первоначальное или дополнительное заполнение файла введенным в вызывающей процедуре количеством записей

:…{ вызов процедуры, первоначально или дополнительно записывает в файл то количество записей, которое вводится с клавиатуры }

Writeln (Rus(‘Просмотр содержимого файла’));Readln;

:…{ вызов процедуры,организующей просмотр содержимого файла }

Writeln (Rus(‘ Обработка файла’));Readln;

:…{ вызов процедуры, обрабатывающий файлcвыводом результатов обработки}

Writeln (Rus(‘ Выход из программы’));Readln;

CloseFile(F); Exit;{закрытие файла и завершение работы}

End.

Рисунок 1- Структура программы лабораторной работы №3

Заголовки этапов работы программы на рисунке 1 модифицируются студентом самостоятельно.

Составляемая программа любого задания должна иметь следующие исходные данные:

  • имя файла, которое вводится в основной программе;

  • количество записей в файле, которое вводится в процедуре создания файла; при этом это количество записей может вводиться впервые или дополнительно могут вводиться к уже существующим записям;

  • поля каждой записи, которые вводятся в процедуре заполнения файла.

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

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

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

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

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

Процедура просмотра содержимого файла программируется с использованием одного из предложенных ранее в примерах вариантов организации вывода содержимого файла.

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

ProcedureSozd; (описание процедурыSozdбез параметров}

Begin

assignfile(f,f_name);{связывание файловой переменной}fс файлом, имя

которого содержит переменная f_name}

{$I-}{директива отключения автоматического контроля операций с файлами }

reset(f);{открытие файла }

{$I+}{включение отключенного контроля}

ifIoresult=0then{анализ значения встроенной функцииIoresultявляющегося

состоянием операции обращения к файлу - есть файл на диске

или нет, при этом значение“0”- файл на диске есть }

begin

n:=filesize(f);{определение размера уже существующего файла}

writeln('файл с именем',f_name,'существуети

имеет',n ,'записей')

end

else

begin

writeln('Файл’, f_name,’ создается впервые');

rewrite(f);{открытие файла для записи, использование этой процедуры

для уже созданного файла приведет к потере данных файла,

т.к. эта процедура производит удаление содержимого}

end;{else}

seek(f,filesize(f));{установка указателя файла для уже

существующего -в его конец, а

для нового - в начало, счет- с нуля.}

end;{proc}

Рисунок 2-Пример процедуры, создающей файл типа “запись”

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

Точка останова (Breakpoint) - своеобразный знак STOP для отладчика (на полосе слева в окне редактора она и выглядит как маленький красный значок). Когда программа выполняется и доходит до строки, в которой находится точка останова, она останавливается и ждет дальнейших действий. Такие точки могут быть условными и безусловными. Отладчик всегда останавливается на точке безусловного останова и может останавливаться в точке условного останова, когда выполнено условие.

Установить точки останова можно следующими способами:

  1. Поместить курсор на выбранную строку программы и нажать клавишу команды Toggle Breakpoint (по умолчанию это клавиша <F5>) для установки или удаления точки останова в этой строке. То же самое можно выполнить и с помощью контекстного меню.

  2. Выбрать команду Run/Add Breakpoint, откроется диалоговое окно Edit Breakpoint . Для установки простейшей точки останова просто щелкнуть на кнопке New. Также можно использовать поля Filename и Line Number для установки точек останова в другом файле или строке за пределами текущей позиции курсора. Поля Condition и Pass count используются для установки точки условного останова.

После установки одной или нескольких точек прерывания можно использовать окно Breakpoint List для управления ими. Для вызова окна Breakpoint List следует выберать команду View/Breakpoints. В этом окне щелкнуть на строке конкретной точки правой кнопкой мыши и в контекстном меню отключить точку останова с помощью команды Disable (вновь включить точку останова можно с помощью команды Enable) или удалить ее с помощью команды Delete.

Команды View Source и Edit Source активизируют окно с текущим файлом исходного текста, при этом команда Edit Source устанавливает курсор в строку с точкой останова. Команда Properties выводит диалоговое окно Edit Breakpoint, позволяя тем самым изменять параметры точки останова.

После щелчка правой кнопкой мыши в окне при невыбранной точке останова выводится контекстное меню, в котором команда Add служит для добавления новой точки, Delete All удаляет все точки останова, а команды Disable All и Enable All отключают или включают все точки останова в списке.

В точках прерывания следует узнать, что содержится в тех или иных переменных, которые вызывают сомнения в расчетах. Для этого следует использовать окно просмотра переменных Watch List, которое предоставляет возможность пассивно просматривать содержимое одной или нескольких переменных, или диалоговое окно Evaluate/Modify, позволяющее работать только с одной переменной (в нем можно не только просмотреть, но и изменить ее содержимое).

Для просмотра значения конкретной переменной следует использовать команду Run/AddWatch или установить указатель мыши на нужную переменную и щелкнуть правой кнопкой мыши. Затем выбрать из контекстного меню команду Add Watch at Cursor. После этого появится диалоговое окно Watch Properties. Введите имя переменной в поле Expression (если оно не появилось там автоматически).

Можно просматривать значения не только переменных, но и выражений типа х*(y+z). Единственное ограничение- выражение не может содержать вызовов функций, поскольку это может вызвать побочный эффект, связанный с незапланированным вызовом функции. Допускается также просмотр значений записей, массивов и других структурированных элементов.

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

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