Компиляция: поиск модулей. Файл TURBO.TPL
При трансляции программы или модуля, использующего другие модули, компилятор последовательно отыскивает файлы, содержащие коды используемых модулей, с тем чтобы подключить их к компилируемой программе. При этом компилятор работает по следующей схеме:
1) Компилятор просматривает содержимое системного библиотечного файла модулей TURBO.TPL (Turbo Pascal Library). Этот файл будет кратко описан далее в этом разделе.
2) Если искомый модуль не найден в файле TURBO. TPL, то компилятор осуществляет поиск соответствующего TPU-файла в ТЕКУЩЕМ каталоге.
3) Если в текущем каталоге нужный файл не найден, то поиск продолжается в каталогах, заданных в альтернативе Options/ Directories/Unit Directories для интегрированной среды или в параметре /U вызова ТРС–компилятора.
4) Если на предыдущих шагах файл не найден, то компилятор прекращает работу и выдает диагностическое сообщение об ошибке.
5) Если компилятор активизирован посредством альтернатив Compile/Make или Compile/Build, то вышеуказанные шаги проводятся в поисках ИСХОДНЫХ ТЕКСТОВ используемых модулей, которые будут оттранслированы перед трансляцией самой программы. При этом подразумевается, что имя файла с текстом модуля совпадает с именем модуля и имеет расширение .PAS.
Как было указано, первый шаг компилятора при поиске используемых модулей состоит в анализе системного файла TURBO.TPL. Этот файл имеет специальную структуру и предназначен для компактного хранения и быстрого доступа к наиболее часто используемым модулям. Обычно в этом файле содержатся несколько системных (стандартных) модулей, однако с помощью специальной служебной программы TPUMOVER можно произвольным образом конструировать файл TURBO.TPL, включая в него нужные модули и удаляя неиспользуемые.
Понятие библиотеки модулей является потенциально удобным, но к сожалению, Turbo Pascal поддерживает только один библиотечный модуль; нельзя сформировать библиотеку модулей в некотором TPL-файле и обеспечить подключение к программе модулей из этой библиотеки.
Стандартные модули
Turbo Pascal имеет восемь стандартных модулей, в которых, собственно, и содержатся все упоминаемые в книге системные процедуры и функции. Имена этих модулей следующие:
SYSTEM
DOS
CRT
PRINTER
OVERLAY
GRAPH
TORBO3
GRAPHS
Программные ресурсы, сосредоточенные в стандартных модулях, образуют мощные пакеты системных средств, которые обеспечивают высокую эффективность и широкий спектр применений системы Turbo Pascal.
Каждый модуль хранится в одноименном TPU-файле в системном каталоге Turbo Pascal. Кроме того, обычно модули System, Dos, Crt, Printer и Overlay входят в состав системного библиотечного файла TURBO. TPL. Для того, чтобы воспользоваться ресурсами стандартного модуля, необходимо указать его имя в спецификации использования по обычным правилам. Исключение сделано для модуля System, имя которого можно не указывать, так как содержащиеся в нем ресурсы подключаются автоматически к любой программе.
Каждый стандартный модуль содержит логически связанную совокупность типов, констант, переменных и подпрограмм, относящихся к определенной области применений. Далее приводится общая характеристика стандартных модулей.
В модуль System входят все процедуры и функции авторской версии языка Pascal, подпрограммы стандартного Паскаля, а также много дополнительных подпрограмм общего характера, в частности, ориентированные на конкретную операционную среду.
Модуль Dos содержит средства доступа к операционной системе и по существу является программным представлением системного интерфейса MS-DOS.
Модуль Crt обеспечивает практически полный спектр возможностей для доступа к экрану дисплея в текстовом режиме. Кроме того, в данный модуль включены средства чтения информации с клавиатуры (включая расширенные коды клавиш) и простейшего управления звуком.
Модуль Printer содержит единственный интерфейсный элемент - переменную Lst стандартного типа text, системно связанную с логическим устройством PRN (то есть с печатающим устройством, если оно имеется в конфигурации). Использование этой переменной в стандартных процедурах Write и WriteLn приводит к выводу информации на печать.
Модуль Overlay предоставляет средства для организации так называемых оверлейных программ, позволяющих обеспечить достаточно эффективное выполнение больших программных систем, размер которых превышает объем доступной оперативной памяти.
Модуль Graph объединяет многочисленные программные средства управления графическим режимом работы дисплея. Данный модуль обеспечивает использование всех возможностей наиболее распространенных типов дисплейных адаптеров - CGA, EGA, VGA, Hercules и т.п. как для монохромных, так и для цветных дисплеев, и позволяет создавать разнообразные и эффективные графические программы.
Модули Turbo3 и Graph3 обеспечивают совместимость с данной версией системы Turbo Pascal тех программ, которые были разработаны для ранней версии 3.0.
Пример модуля
В данном разделе содержится законченный пример модуля, в котором сосредоточены средства работы с памятью типа "стек". Обратите внимание, что способ конкретной реализации стека скрыт в разделе implementation; поэтому переход к другой реализации стека (не в виде массива, а, например, в виде связанного списка) не повлечет за собой необходимость изменения программ, использующих этот модуль (эти программы "не узнают" о таком изменении).
unit StackOps; { Операции над стеком целых }
interface
procedure Push ( Elem:integer );
function Pop : integer;
function Empty : boolean;
function Full : boolean;
implementation
{ Стек реализован в виде линейного массива элементов;
переменная Тор отмечает текущую вершину стека }
const
Мах = 100;
var
Stack array[1..Max] of integer;
Top : integer;
procedure Push; { помещение элемента в вершину стека }
begin
if Top>Max then Exit;
Stack[Top] := Elem;
inc(Top)
end;
function Pop; { извлечение элемента из вершины стека }
begin
Рop := 0 ;
if Top=1 then Exit;
dec(Top);
Pop := Stack[Top]
end;
function Empty; { проверка на пустоту стека }
begin
Empty := (Top=1)
end;
function Full; { проверка на заполненность стека }
begin
Full := (Тор>Мах)
end;
begin
{ инициализация: первоначально стек пуст }
Тор := 1
end.
Синтаксические диаграммы
В данном заключительном разделе приводятся синтаксические диаграммы для конструкций, рассмотренных в этой главе. Кроме того, здесь показана полная синтаксическая диаграмма для программы (рисунок 5,6,7,8,9,10,11,12,13).
Рисунок 5 – программа
Рисунок 6 - модуль
Рисунок 7 – заголовок модуля
Рисунок 8 – интерфейс модуля
Рисунок 9 - спецификация использования
Рисунок 10 – элемент интерфейса
Рисунок 11 – реализация модуля
Рисунок 12 - Элемент рализации
Рисунок 13 – инициализация модуля
Практическая часть
3 Перемножение двух матриц
Задание:
Заданы двумерные матрицы размерностью 6x5 элементов, заполненные случайными числами из диапазона [1, 100]. Перемножить их элементы, имеющие одинаковые индексы, и вывести результаты на экран и записать в файл «output.txt».
Что бы выполнить данное задание мы будем использовать PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений.
Код программы будет таким
const
n = 6;
m = 5;
var
a: array[1..n, 1..m] of integer;
b: array[1..n,1..m] of integer;
c: array[1..n,1..m] of integer;
i, j: byte;
sum: integer;
t: text;
begin
assign(t, 'output.txt');
randomize;
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100);
b[i, j] := random(100);
end;
writeln
end;
for i := 1 to n do
begin
for j := 1 to m do
begin
write(a[i, j]:3);
end;
writeln
end;
writeln;
for i := 1 to n do
begin
for j := 1 to m do
begin
write(b[i, j]:3);
end;
writeln
end;
writeln;
for i := 1 to n do
begin
for j := 1 to m do
begin
c[i,j] := a[i, j]*b[i, j];
write(c[i, j]:8);
end;
writeln
end;
rewrite(t);
for i := 1 to n do
begin
for j := 1 to m do
begin
write(t,c[i,j]:8)
end;
writeln(t)
end;
close(t);
readln
end.
Описание программы :
const
n = 6;
m = 5;
var
a: array[1..n, 1..m] of integer;
b: array[1..n,1..m] of integer;
c: array[1..n,1..m] of integer;
i, j: byte;
sum: integer;
t: text;
определение переменных
begin
assign(t, 'output.txt'); открытие файла output для записи
randomize; включения рандома
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
a[i, j] := random(100); заполняется матрица а рандомно от 1 до 100
b[i, j] := random(100);
end;
writeln
end;
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(a[i, j]:3); выводим на экран матрицу а
end;
writeln
end;
writeln; вывели пустую строку для разделения двух матриц
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(b[i, j]:3); выводим на экран матрицу b
end;
writeln
end;
writeln; вывели пустую строку для разделения двух матриц
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
c[i,j] := a[i, j]*b[i, j]; матрица c заполняется перемножением элементов матриц a и b с одинаковыми элементами
write(c[i, j]:8);
end;
writeln
end;
rewrite(t); открываем файл output для перезаписи (удаляем все что было в нем написано ранее)
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(t,c[i,j]:8) заполняем файл output матрицой c
end;
writeln(t)
end;
close(t); закрываем файл output
readln
end.
В результате мы получаем в оке вывода(рисунок 14):
Рисунок 14
После чего программа записывает сама все в папку output.
Блок-схема программы будет выглядеть следующим образом (рисунок 15):
Начало |
a: array[1..n, 1..m] of integer; b: array[1..n,1..m] of integer; c: array[1..n,1..m] of integer; i, j: byte; |
a[i, j] := random(100); b[i, j] := random(100); |
i := 1 to n do begin for j := 1 to m do |
j := 1 to m do |
a[i, j]:3 |
i := 1 to n do begin for j := 1 to m do |
j := 1 to m do |
b[i, j]:3 |
i := 1 to n do begin for j := 1 to m do |
j := 1 to m do |
c[i, j]:8 |
i := 1 to n do begin for j := 1 to m do |
j := 1 to m do |
Запись в файл |
конец |
Рисунок 15 – Блок-схема перемножение матриц
Заключение
Информационная технология – это совокупность процессов, благодаря которым возможны сбор, хранение обработка и другие взаимодействия над информацией. Классификация ИТ необходимо для правильной оценки и применения информационных технологий в различных сферах жизни общества.
В первой главе было дано определение информационным технологиям, а так же их составных частей (информации и технологии), были охарактеризованы цели, методы и средства информационных технологий. Кроме того были определены факторы, влияющие на классификацию, как влияние режимом обработки данных, режимов эксплуатации и эффективности работы.
Во второй главе были охарактеризованы составляющие ИТ, определены виды обеспечений и охарактеризованы свойства информационных технологий.
В третьей главе были охарактеризованы различные классификации информационных технологий, как классификация по типу интерактивности, классификация по области применения и по степени использования компьютеров, классификация средств компьютерной техники, классификаций, используемые в Экономических Информационных Системах и другие.
Список использованной литературы
1. Бим-Бад Б.М. Педагогический энциклопедический словарь / Б.М. Бим-Бад .// Научное издание
«Большая российская энциклопедия». - 2002.
2. Ломов Б.Ф. Вопросы общей, педагогической, инженерной психологии / Б.Ф. Ломов
// Педагогика. - 1991.
3. Различные интернет-ресурсы: http://www.tspu.tula.ru/
4. http://ugned.ru/
5. http://examen.od.ua/
6. http://phys.adygnet.ru/
7. http://www.akdi.ru/
8. Турбо Паскаль 7.0 – К.: торгово – издательское бюро BHV, 1996 – 448с.: ил. Т. Рюттяна.
9. Игошев А.Д. Матинин Е.Г. Express Pascal. Учебное пособие для средних уч. Заведений.
10. Кузницов А.А. Патапова Н.В. Основы информатики. 8-9 кл.: Учеб. Для общеобразовательных учеб. Заведений 2001 176с.:ил.