Промышленная и специальная робототехника




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

Высшего образования – программы бакалавриата

по направлению подготовки

Мехатроника и робототехника

 

с направленностью (профилем)

Промышленная и специальная робототехника

 

Форма обучения: очная

 

 

Идентификационный номер образовательной программы: 150306-02-19

 

Тула 2019 год

 

Методические указания к лабораторным работам составлены профессором кафедры РТиАП, д.т.н. Котовым В.В. и обсуждены на заседании кафедры робототехники и автоматизации производства, протокол № 6 от «10» января 2019 г.

 

Зав. кафедрой ____________________ Е.В. Ларкин

 


 

Содержание:

 

 

Лабораторная работа №6. РАБОТА С ФАЙЛАМИ

 

Лабораторная работа №7. МОДУЛЬ SYSTEM

 

Лабораторная работа №8. ОСНОВНЫЕ ВОЗМОЖНОСТИ МОДУЛЯ GRAPH

 

Лабораторная работа №9. СТРУКТУРА МОДУЛЕЙ И ОСОБЕННОСТИ РАБОТЫС НИМИ

 

Лабораторная работа №10. ЛИНЕЙНЫЕ ОДНОНАПРАВЛЕННЫЕ СПИСКИ

 

Лабораторная работа №11. РАБОТА С ЭЛЕМЕНТАМИ ЛИНЕЙНОГО ОДНОНАПРАВЛЕННОГО СПИСКА

Приложение 1.

Приложение 2.

Приложение 3.

Приложение 4.


1. Лабораторная работа №6

РАБОТА С ФАЙЛАМИ.

1.ЦЕЛЬ РАБОТЫ:

Целью работы является изучение приемов работы с переменными файлового типа.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, гибкой дискеты, электронного "виртуального" диска), либо логическое устройство - потенциальный источник или приемник информации.

Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:

 

ASSIGN (<ф.п.>, <имя файла или л.у.>);

 

Здесь

<ф.п.> - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа);

<имя файла или л.у.> - текстовое выражение, содержащее имя файла или логическое устройство.

Если имя файла задается в виде пустой строки, например, ASSIGN(f,"), то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или OUTPUT.

 

Для чтения файл инициируется с помощью стандартной процедуры RESET:

 

RESET (<ф.п.>);

 

Здесь

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

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

Стандартная процедура

 

REWRITE (<ф.п.>)

 

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

Стандартная процедура

APPEND (<ф.п.>)

инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура APPEND применима только к текстовым файлам, т.е. их файловая переменная должна иметь тип TEXT. Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, использование процедуры APPEND приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.

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

Формат сообщения:

CLOSE(<ф.п.>)

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

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

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

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

 

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1. В какое место файла можно добавлять новые элементы:

- в начало,

- в середину,

- в конец,

- куда угодно,

- никуда?

2. Если не переписывать файл заново, то значения каких его элементов можно менять:

- только первого;

- только последнего;

- каких угодно;

- никаких.

3. Если не переписывать файл заново, то какие из его элементов можно удалять:

- только первый;

- только последний;

- какие угодно;

- никакие.

4. Определить содержимое файла f после выполнения следующих операторов:

rewrite(f);

for i:=1 to 3 do write(f,i*2);

close(f);

5. Определить содержимое файла f после выполнения следующих операторов:

rewrite(f);

for i:=3 downto 1 do write(f,i);

close(f);

i:=5;

append(f);

write(f,i);

close(f);

6. Определить содержимое файла f после выполнения следующих операторов:

i:=5;

rewrite(f);

write(f,i);

close(f);

rewrite(f);

if eof(f) then write(f,i) else write(f,i-5);

close(f);

 

6.ЗАДАНИЕ

№ задания                              
№ по журналу                              
                             

Состоит из двух частей:1-общая для всех, 2-по варианту.

1). Организовать процедуру, позволяющую записать в текстовый файл введенную с клавиатуры строку.

2-1).Удвоить в данном файле каждую цифру.

2-2).Заменить в данном файле каждую цифру на следующую по величине.

2-3).Оставить в данном файле только первые вхождения каждой литеры.

2-4).Заменить в данном файле каждую литеру 'a' на две литеры 'b'.

2-5).Дописать в начало файла фразу 'Turbo Pascal'.


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

МОДУЛЬ SYSTEM.

1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

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

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Модуль System содержит все стандартные и встроенные процедуры и функции Turbo Pascal. Модуль System реализует низкоуровневые подпрограммы для операций ввода/вывода, обработки строк, управления оверлеями и динамическое распределение памяти. Модуль System используется автоматически любым модулем или программой и никогда не требуется указывать его в директиве uses.

 

Процедуры управления программой.

 

Процедура Описание
Exit Позволяет немедленно выйти из текущего блока
Halt Останавливает выполнение программы и возвращает в операционную систему
RunError Останавливает выполнение программы и генерирует ошибку времени выполнения

 

Функции преобразования.

Функция Описание
Chr Возвращает символ с заданным порядковым номером
Ord Возвращает порядковый номер, соответствующий символу
Round Округляет значение вещественного типа до значения типа LongInt
Trunc Усекает значение вещественного типа до значения типа LongInt

 

Арифметические функции.

 

Функция Описание
Abs Возвращает абсолютное значение аргумента
ArcTan Возвращает арктангенс аргумента
Cos Возвращает косинус аргумента
Exp Возвращает экспоненту аргумента
Frac Возвращает дробную часть аргумента
Int Возвращает целую часть аргумента
Ln Возвращает натуральный логарифм аргумента
Pi Возвращает значение числа Pi {3.1415926535897932385}
Sin Возвращает синус аргумента
Sqr Возвращает аргумент в квадрате
Sqrt Возвращает квадратный корень аргумента

 

Процедуры и функции для ординальных типов.

 

Процедура Описание
Dec Уменьшает значение переменной
Inc Увеличивает значение переменной

 

Функция Описание
Odd Проверяет, является ли аргумент нечетным числом
Pred Возвращает предшествующее значение аргумента
Succ Возвращает его последующее значение

 

Строковые процедуры.

 

Процедура Описание
Delete Удаляет подстроку из строки
Insert Вставляет подстроку в строку
Str Преобразует численное значение в его строковое представление
Val Преобразует строковое значение в его численное представление

 

Строковые функции.

 

Функция Описание
Concat Выполняет слияние последовательности строк
Copy Возвращает подстроку из строки
Length Возвращает динамическую длину строки
Pos Производит поиск подстроки в строке

 

Процедуры и функции для ввода/вывода.

 

Процедура Описание
Assign Присваивает имя внешнего файла файловой переменной
ChDir Меняет текущую директорию
Close Закрывает открытый файл
Erase Удаляет внешний файл
GetDir Возвращает текущую директорию на заданном диске
MkDir Создает директорию
Rename Переименовывает внешний файл
Reset Открывает существующий файл
Rewrite Создает и открывает новый файл
RmDir Удаляет пустую директорию
Seek Передвигает текущую позицию файла на указанную компоненту (не используется с текстовыми файлами)
Truncate Усекает размер файла до текущей позиции в файле. (Не используется с текстовыми файлами)

 

Функция Описание
Eof Возвращает для файла состояние end-of-file (конец Файла)
FilePos Возвращает текущую позицию в файле. (Не используется с текстовыми файлами)
FileSize Возвращает текущий размер файла. (Не используется с текстовыми файлами)
IOResult Возвращает целое значение, являющееся состоянием последней выполненной операции ввода/вывода.

 

Процедуры и функции для текстовых файлов.

 

Процедура Описание
Append Открывает существующий файл для добавления
Flush Выводит содержимое буфера файла в физический файл
Read Считывает одно или более значений из текстового файла в одну или более переменных
Readln Выполняет те же действия, что и Read, а потом делает пропуск до начала следующей строки файла
SetTextBuf Назначает буфер ввода/вывода для текстового файла
Write Записывает в текстовый файл одно или более значений
Write Выполняет те же действия, что и Write, а затем добавляет к файлу маркер конца строки

 

Функция Описание
Eoln Возвращает для файла состояние end-of-line (конец строки)
SeekEof Возвращает для файла состояние end-of-line (конец строки). Предварительно пропускает все пробелы, символы табуляции и признаки конца строки.
SeekEoln Возвращает для файла состояние end-of-line (конец строки). В отличии от Eoln предварительно пропускает все пробелы и символы табуляции.

 

Нетипизированные файлы.

 

Процедура Описание
BlockRead Считывает в переменную одну или более записей
BlockWrite Записывает одну или более записей из переменной

 

Функции для работы с указателями и адресами.

Процедуры и функции динамического распределения памяти.

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

Процедуры и функции разного назначения.

 

Процедура Описание
Randomize Инициализирует случайным значением встроенный генератор случайных чисел

 

Функция Описание
Hi Возвращает старший байт аргумента
Lo Возвращает младший байт аргумента
Random Возвращает случайное число
UpCase Преобразует символ в прописной

 

 

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания.

 

4. ОФОРМЛЕНИЕ ОТЧЕТА

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

 

5. контрольные вопросы

1. Следует ли указывать в директиве USES модуль SYSTEM?

2. В чем разница в процедурах Halt и Exit (своими словами)?

3. Какого типа может быть параметр-переменная используемая в функциях Round и Trunc, и в чем разница между этими функциями (разницу показать на примере)?

4. Какая процедура возвращает текущую длину строки?

5. Какая процедура позволяет создавать подкаталог?

 

6. ВАРИАНТЫЗАДАНИЙ

№ задания                              
№ по журналу                              
                             

 

Составить программу (по варианту), которая использует следующие процедуры и функции модуля System:

Exit, Chr, Abs, ArcTan, Dec,Random
Halt, Ord, Exp, Cos, Inc,Random
Exit, Round, Frac, Sin, Odd,Random
Halt, Trunc, Int, ArcTan, Pred,Random
Exit, Chr, Sqr, Cos, Succ,Random
Halt, Ord, Sqrt, Sin, Dec,Random
Exit, Round, Abs, ArcTa Inc n,,Random
Halt, Trunc, Exp, Cos, Odd,Random
Exit, Chr, Frac, Sin, Pred,Random
Halt, Ord, Int, ArcTan, Succ,Random
Exit, Round, Sqr, Cos, Dec,Random
Halt, Trunc, Sqrt, Sin, Inc,Random
Exit, Chr, Abs, ArcTan, Odd,Random
Halt, Ord, Exp, Cos, Pred,Random
Exit, Round, Frac, Sin, Succ,Random

 


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

ОСНОВНЫЕ ВОЗМОЖНОСТИ МОДУЛЯ GRAPH.

1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

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

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Модуль Graph представляет собой библиотеку из более чем 50 графических процедур и функций. В модуле поддерживаются несколько типов линий и стилей заполнения, существует несколько типов шрифтов, которые можно увеличивать, выравнивать и ориентировать вертикально или горизонтально. Для того чтобы выполнить программу, которая использует модуль Graph, необходимо иметь доступ к одному или более графических драйверов (файлы с расширением BGI), файлам TURBO.TPL, GRAPH.TPU и к файлам шрифтов с расширением CHR. Каждый драйвер содержит код и данные, хранящиеся в отдельном файле.

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

Процедура Close Graph выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.

Рассмотрим используемую в графическом режиме координатную систему.

Верхний левый угол графического экрана определен как (0,0). Значение Х или колонки увеличиваются направо. Значение Y или строки увеличиваются вниз. Так в режиме 640x480 на адаптере CGA экранные координаты каждого из четырех углов и точка в центре экрана будут представлены:

Для вывода графической информации в заданную позицию в Turbo Pascal

используется текущий указатель (CP - Current Pointer). CP подобен курсору в

текстовом режиме, но в отличие от курсора CP не виден. Следующие процедуры

перемещают CP: InitGraph, MoveTo, MoveRel, LineTo, LineRel, OutText,

SetGraphMode, GraphDefaults, ClearDevice, SetViewPort, ClearViewPort.

Причем последние 5 команд перемещают CP в позицию (0,0).

Графический модуль Turbo Pascal позволяет использовать большое число

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

окружностей, дуг, эллипсов, прямоугольников, многоугольников и т.д. Все

графические процедуры и функции с кратким описанием приведены ниже.

 

 

Процедуры модуля Graph
Arc Рисует дугу от начального угла к конечному, используя (X,Y) как центр
Bar Рисует полосу, используя текущий стиль и цвет.
Bar3D Рисует 3-х мерную полосу, используя текущий стиль и цвет.
Circle Рисует окружность, используя (X,Y) как центр.
ClearDevice Очищает экран и устанавливает текущий указатель (CP) в начало.
ClearViewPort Очищает окно.
CloseGraph Закрывает графическую систему.
DetectGraph Проверяет аппаратуру и определяет какой графический драйвер и в каком режиме используется.
DrawPoly Рисует многоугольник текущим цветом и типом линии.
Ellipse Рисует эллиптическую дугу от начального угла к конечному, используя (X,Y) как центр.
FillEllipse Рисует заполненный эллипс, используя (X,Y) как центр и XRadius и YRadius как горизонтальные и вертикальные оси.
FillPoly Заполняет многоугольник, используя сканирование.
FloodFill Заполняет ограниченную область, используя текущий шаблон и цвет заполнения.
GetArcCoords Позволяет запросить координаты команды Arc.
GetAspectRatio Возвращает разрешение экрана из которого может быть вычислен относительный аспект (Xasp/Yasp).
GetFillPattern Возвращает шаблон заполнения, установленный последним вызовом SetFillPattern.
GetFillSettings Позволяет запросить текущий шаблон и цвет, установленные SetFillStyle или SetFillPattern.
GetImage Сохраняет битовый образ указанной части экрана в буфере.
GetLineSettings Возвращает текущие стиль, шаблон и толщину линии, установленные SetLineStyle.
GetModeRange Возвращает минимальный и максимальный графические режимы для данного драйвера.
GetPalette Возвращает текущую палитру и ее размер.
GetTextSettings Возвращает текущий шрифт, направление, размер и выравнивание текста, установленные SetTextStyle и SetTextJustify.
GetViewSettings Позволяет запросить текущие параметры окна и отсечения.
GraphDefaults Устанавливает текущий указатель (CP) в начало и переустанавливает графическую систему.
InitGraph Инициализирует графическую систему и устанавливает устройство в графический режим.
Line Рисует линию от (X1,Y1) к (X2,Y2).
LineRel Рисует линию от текущего указателя (CP) к точке, лежащей на заданном растоянии.
LineTo Рисует линию от текущего указателя к (X,Y).
MoveRel Передвигает текущий указатель (CP) на заданное расстояние от его текущей позиции.
MoveTo Передвигает текущий указатель (CP) в (X,Y).
OutText Выводит текст на экран от текущего указателя.
OutTextXY Выводит текст на экран.
PieSlice Рисует и заполняет сектор, используя (X,Y) как центр и рисуя от начального угла к конечному.
PutImage Выводит битовый образ на экран.
PutPixel Рисует точку (пиксел) в (X,Y).
Rectangle Рисует прямоугольник, используя текущий цвет и тип линии.
RestoreCRTMode Восстанавливает видеорежим, который был до инициализации графики.
Sector Рисует и заполняет сектор эллипса.
SetActivePage Устанавливает активную страницу для графического вывода.
SetAllPalette Изменяет цвет палитры.
SetAspectRatio Изменяет значение относительного аспекта.
SetBkColor Устанавливает цвет фона.
SetColor Устанавливает основной цвет, которым будет осуществляться рисование.
SetFillPattern Выбирает шаблон заполнения, определенный пользователем.
SetFillStyle Устанавливает шаблон заполнения и цвет.
SetGraphBufSize Позволяет изменить размер буфера для функций заполнения.
SetGraphMode Переводит систему в графический режим и очищает экран.
SetLineStyle Устанавливает текущие толщину и стиль линии.
SetPalette Изменяет один цвет палитры, указанный через ColorNum и Color.
SetRGBPallete Позволяет модифицизовать палитру для IBM 8514 и VGA.
SetTextJustify Устанавливает выравнивание текста, используемое OutText и OutTextXY.
SetTextStyle Устанавливает текущий шрифт, стиль и размер текста.
SetUserCharSize Позволяет изменить ширину и высоту символа для штрихового шрифта.
SetViewPort Устанавливает текущее окно для графического вывода.
SetVisualPage Устанавливает номер видимой графической страницы.
SetWriteMode Устанавливает режим вывода (копирование или XOR) для линий, рисуемых с DrawPoly, Line, LineRel, LineTo, Rectangle.
Функции модуля Graph.
GetBkColor Возвращает текущий фоновый цвет.
GetColor Возвращает текущий цвет.
GetDefaultPalette Возвращает аппаратную палитру в записи PaletteType.
GetDriverName Вoзвращает строку с именем текущего драйвера.
GetGraphMode Возвращает текущий графический режим.
SetMaxColor Возвращает максимальный цвет, который можно задать в SetColor.
GetMaxMode Возвращает номер максимального режима текущего загруженного драйвера.
GetMaxX Возврашает максимальный Х (разрешение по горизонтали) для текущего графического драйвера и режима.
GetMaxY Возвращает максимальный Y (разрешение по вертикали) для текущего графического драйвера и режима.
GetModeName Возвращает строку с именем указанного графического режима.
GetPaletteSize Возвращает размер таблицы палитры.
GetPixel Возвращает цвет точки в (X,Y).
GetX Возвращает координату X текущей позиции (CP).
GetY Возвращает координату Y текущей позиции (СР).
GraphErrorMsg Возвращает строку сообщения об ошибке для заданного кода ErrorCode.
GraphResult Возвращает код ошибки для последней графической операции.
ImageSize Возвращает число байт, требуемое для заполнения прямоугольной области экрана.
InstallUserDriver Устанавливает пользовательский драйвер устройства в BGI таблицу драйверов устройств.
InstallUserFont Устанавливает новый шрифт, который не встроен в BGI систему.
RegisterBGIdriver Регистрирует драйвер BGI для графической системы.
RegisterBGIfont Регистрирует шрифт BGI для графической системы.
TextHeight Возвращает высоту строки в пикселах.
TextWidth Возвращает ширину строки в пикселах.

 

Рассмотрим пример программы:

 

program GraphText;

uses

Graph;

var

GraphDriver,

GraphMode,

ErrorCode: Integer;

begin

{Автоматическое определение драйвера}

GraphDriver:=Detect;

{Последний параметр InitGraph указывает путь к драйверам}

InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

ErrorCode:=GraphResult;

if ErrorCode <> grOK then {ошибка }

begin

Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));

Writeln('Program aborted...');

Halt(1);

end;

Rectangle(0, 0, GetMaxX, GetMaxY); {рисовать прямоугольник на весь экран}

 

OutTextXY(GetMaxX div 2, GetMaxY div 2,

'Borland Graphics interface (BGI)');

Readln;

CloseGraph;

end. {GraphTest}

 

Программа начинается с вызова InitGraph, который автоматически определяет тип адаптера и загружает соответствующий графический драйвер. ВНИМАНИЕ: на разных компьютерах этот путь различается, поэтому в программе пишите СВОЙ путь. Если графическое устройство не распознано или во время инициализации произошла ошибка, выдается сообщение об ошибке и программа завершается. Иначе, чертится прямоугольник по краю экрана и в центре экрана выводится текст.

 

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания (см. Приложение 1).

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

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

 

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1) Что такое текущий указатель?

2) Какой вид имеет система координат в графическом режиме?

3) Следует ли указывать в директиве USES модуль GRAPH?

4) Какие действия производят процедуры InitGraph и CloseGraph?

5) Написать программу, которая в центре красного экрана пользователя рисует окружность, залитую желтым цветом.

 

6. ВАРИАНТЫЗАДАНИЙ

№ задания                    
№ по журналу                    
                   
                   

 

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

1) x=3t (1+t3), y=3t2 (1+t3) при -1<t 5;

2) x=t2/(1+t2), y=t3/(1+t2) при -10 t 10;

3) x=(t2-1)/(1+t2), y=t(t2-1)/(1+t2) при -10 t 10;

4) x=cos2 t+cost, y=cost sint+sint при 0 t<2 ;

5) x=cost (1+cost), y=sint (1+cost) при 0 t<2 ;

6) x=t-sint, y=1-cost при 0 t<2 ;

7) x=sint, y=t2-cost при 0 t<2 ;

8) x=t2*sint, y=t2-cost при - t. ;

9) x=sint, y=cost при - t ;

10) x=cos2t, y=sin2t при 0 t 2 .


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

СТРУКТУРА МОДУЛЕЙ И ОСОБЕННОСТИ РАБОТЫС НИМИ.

1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

Целью работы является изучение общей структуры модулей.

 

2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

Модуль состоит из следующих частей:

· заголовок модуля,

· интерфейс модуля,

· исполнительная часть модуля,

· секция инициализации.

 

Заголовок модуля состоит из зарезервированного слова unit и идентификатора. Идентификатор модуля должен быть уникальным.

Пример заголовка: Unit MyModule.

Модуль должен быть помещен в файл, имя которого совпадает с именем модуля, а его расширение должно быть.PAS

 

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

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

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

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

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

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

 

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

Begin

Assign(f, ‘file1.dat’);

End;

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

 

Исходный текст модуля должен быть откомпилирован с помощью директивы Make подменю Compile и записан на диск. Результатом компиляции модуля является файл с расширением.TPU (Turbo Pascal Unit). Для подключения модуля к программе необходимо указать его имя в разделе описания модулей, например:

uses CRT, Graph;

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

Например, пусть имеется модуль, в котором описана переменная К:

unit M;

interface

var K: Integer;

implementation

.................

end.

Пусть программа, использующая этот модуль, также содержит переменную К

Program P;

uses M;

var K: Char;

begin

.............

end.

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

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

Рекурсивное использование модулей запрещено.

 

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания (см. Приложение2).

 

4.ОФОРМЛЕНИЕ ОТЧЕТА

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

 

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Из каких частей состоит модуль? Какие из них являются обязательными?

2. С какого слова начинается заголовок модуля?

3. Для чего нужен интерфейс?

4. В чем отличие между интерфейсом и исполнительной частью модуля?

5. Как организовать подключение того или иного модуля?

 

6. ВАРИАНТЫЗАДАНИЙ

№ задания                    
№ по журналу                    
                   
                   

Программа, использующая модуль, который:

1) подсчитывает, сколько раз введенное с клавиатуры число встречается в массиве;

2) вычисляет сумму элементов матрицы, распложенных на главной диагонали;

3) проверяет, есть ли в матрице элементы с одина



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-11-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: