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

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

  1. Составить программу, состоящей из 2-х частей - основной программы и модуля пользователя, используя фрагменты программы лабораторной работы №2.

  2. Создать программу новой структуры в среде Delphi в двух окнах редактора - основной программы и модуля, и освоить компиляцию модуля.

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

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

  1. Что такое модуль и для чего он используется?

  2. Из каких частей состоит модуль пользователя?

  3. Чем отличается модуль от основной программы?

  4. Какова структура модуля?

  5. Как производится подключение уже существующих модулей?

  6. Назначение и содержание секции Interface?

  7. Назначение и содержание секции Implementation?

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

  9. Каким образом сделать доступными некоторые переменные и константы для нескольких модулей?

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

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

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

К п.1. Модули пользователя. Применение модулей пользователя структурирует программу, сокращает время компиляции и повышает эффективность разработки всей программы.

Модуль должен иметь заголовок с указанием имени. Модуль должен иметь следующую структуру:

Unit <имя модуля> ; { заголовок модуля }

Interface { интерфейсная часть }

Uses . . . ; { список имен модулей, доступных для основной программы }

. . . { внешние объявления, включая заголовки подпрограмм }

Implementation { исполняемая часть }

Uses . . . ; { список имен модулей, доступных только для данного модуля }

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

Begin { инициирующая часть }

. . . { исполняемые операторы }

    1. End.

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

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

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

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

Кп.1. Выполнение задания. Задание состоит в изменении структуры программы лабораторной работы №2.

Структура новой программы должна соответствовать структуре, представленной на рисунке 1, и содержать две части – основную (вызывающую) программы и модуль пользователя.

Модулю пользователя следует дать имя: Mod_Var_<номер задания>(например, для задания №15, Mod_Var_15), которое указывается в заголовке модуля следующим образом

Unit Mod_Var_15

Модуль пользователя связывается с основной программой конструкцией Uses <имя модуля>, программируемой в основной программе (см. рисунок 1).

Текст программы лабораторной работы №2 должен быть переработан в соответствии с новой структурой следующим образом:

  • из блока Var раздела описаний программы. лабораторной работы №2 следует перенести все подпрограммы (процедуры и функции) в исполняемую часть модуля (Implementation).

  • также из блока Var основной программы следует перенести в блок Var интерфейсной части (Interface) модуля объявления всех тех глобальных переменных, которые использовались в основной программе и в подпрограммах.

  • из блока Type программы перенести в блок Type модуля описания типов.

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

Затем в интерфейсной части модуля (Interface) согласно структуре модуля (см. рисунок 1) необходимо разместить заголовки подпрограмм со списком передаваемых параметров. В исполнимой части (Implementation), в заголовках список формальных параметров можно не указывать.

Program Var_номер варианта ; Unit Mod_Var_номер варианта ;

Uses SysUtils,AnsiToAscii,

Mod_Var_ номер варианта, …; Interface

Var Type

…Spis=Record {переменная }

… { типа списка}

End;

Begin Var

{организация } file of Spis;{файловая переменная}

{вызова подпрограмм, } f_name: string[10]; {переменная }

{находящихся в модуле} … {для имени файла}

{возможна организация Procedure имя1( ); {заголовки}

{ циклаRepeat-Until} Procedure имя2(); {всех процедур}

Procedure имя3( );

Function имя( ):…;{и функций}

End.

Implementation

Procedure имя1;

Begin

End;{конец проц. имя1}

{ и т. д. все процедуры}

{и функций}

End.

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

К п.2. В среде Turbo Delphi загрузить отлаженную в консольном режиме программу лабораторной работы №2, используя команду

File \ Open Project \ путь к файлу проекта

После загрузки в окно редактора указанного проекта, содержащего отлаженную программу (Program) следует загрузить окно редактора шаблона модуля с именем Unit1 командой

File/ New / Unit

Далее следует внести изменения в имена основной программы и модуля в соответствии с заданием (см. рисунок 1).

Изменить имя основной программы и модуля можно несколькими способами: можно сохранить соответствующий файл в другом файле (File / Save As…), можно в менеджере проектов (справа) выделить имя программы или модуля, правой кнопкой вызвать контекстное меню и выбрать команду переименования Rename.

Затем необходимо произвести указанные в п.1. переносы фрагментов основной программы в модуль и сохранить модуль с именем заголовка. Т.е. файл, содержащий модуль, должен называться Mod_Var_ номер варианта.pas.

Обратить внимание на то, что в основном файле проекта (вызывающая программа) в разделе Uses добавилась строчка для подключения модуля:

При использовании команды

Project \ Compile имя проекта

компилируется автоматически как вызывающая программа, так и модуль. Результатом компиляции модуля является файл с расширением .dcu(Delphi Compiled Unit). Скомпилированный файл используется для получения исполняемого файла проекта с именем вызывающей программы и расширением .exe, который и является результатом компиляции проекта

В пункте меню Project проект можно скомпилировать (Сompile) или перестроить (Build). Если применять команды Compile или Run \ Run, то Delphi перекомпилирует только те модули, которые изменились со времени последней компиляции. Build, с другой стороны, перекомпилирует все модули, исходные тексты которых доступны. Команда Project \ Syntax Check проверяет правильность синтаксиса операторов программы,

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

Кп.3. Если местоположение ошибки при отладке составленных вызывающей программы и модуля предположительно известно, то в поисках ошибки добираться до нужного места пошагово не рационально. В таком случае просто следует поместить курсор на нужную строку программы в окне редактирования и использовать команду Run to Cursor. Эти действия эквивалентны временному помещению точки останова в необходимую строку программы, и после выполнения предшествующего строке кода работа программы приостанавливается. Если строка, в который находится курсор, не содержит отладочной информации, то будет выдано сообщение об ошибке.

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

Рекомендуется применять при отладке следующие полезные команды меню Run:

  • Show Execution Point. Эта команда заставляет среду разработки открыть окно редактора и показать выполняемую в настоящее время строку программы. Она полезна в случаях, когда, например, закрыто или свернуто окно редактора во время отладки (обычно при нормальном состоянии окна отладчик делает это автоматически).

  • Program Pause. Выбор этой команды немедленно останавливает выполнение программы. Она особенно полезна при зацикливании программы.

  • Program Reset. Если необходимо отказаться немедленно от отладки и завершить работу своей программы или запустить ее заново, следует использовать эту команду. Она немедленно прекратит выполнение программы и вернет вас в среду разработчика.

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

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

Файлы результатов компиляции главного файла проекта (.exe), модуля(.dcu), файлы их исходных кодов (.dpr,.pas), файл конфигурации с настройками компилятора для данного проекта (.cfg), файл, содержащий информацию о состоянии рабочего пространства, файлы с настройками среды разработки для данного проекта(.bdsproj, bdsproj.local)

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