Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова
Кафедра информационных систем и технологий
Лабораторная работа №2
«Модули раздельной трансляции.»
Преподаватель: Шеляпин Ю. П.
Выполнил: Королев М. Ю.
Группа: И-351
Санкт-Петербург
2006 год.
Задание
В массиве А[1..8] отрицательные элементы заменить положительными элементами масива B[1..10]. Если элементов не хватает – заменять последним найденным.
|
||||||||||||
|
||||||||||||
|
||||||||||||
Lb2-main.pas
program Lab2;{Королев И351}
uses crt,lb2_opis,lb2_OMas,lb2_IMas,lb2_CMin;
begin
clrscr;
TextMode(259);
textColor(10);
WriteLn('Vvod massiva A: ');
EnterMassive(m,mas_a);
textColor(10);
WriteLn('Vvod massiva B: ');
EnterMassive(b,mas_b);
clrscr;
textcolor(10);
WriteLn('Isxodnbly massiv: ');
MassiveOnScreen(m,mas_a);
Change_minus(m,b,mas_a,mas_b);
textcolor(10);
WriteLn('Sformirovannbly massiv');
MassiveOnScreen(m,mas_a);
readkey;
end.
Lb2-opis.pas
unit lb2_opis;
interface
uses crt;
const
b=10; {big massive}
m=8; {small massive}
colls=6;
type
massiv=array[1..b] of real;
var
mas_a,mas_b:massiv;
k:integer;
implementation
end.
lb2-omas.pas
unit lb2_OMas;
interface
uses crt,lb2_opis;
procedure MassiveOnScreen(n:integer;a:massiv);
implementation
procedure MassiveOnScreen(n:integer;a:massiv);
var
i:integer;
begin
For i:=1 to n do
begin
TextColor(7); Write(i:2,': ');
TextColor(15); Write(a[i]:6:2,'; ');
if i mod colls = 0 then WriteLn;
end;
WriteLn;
end;
begin
end.
lb2-imas.pas
unit lb2_IMas;
interface
uses crt,lb2_opis;
procedure EnterMassive (n:integer;var a:massiv);
implementation
procedure EnterMassive (n:integer;var a:massiv);
var
i:integer;
begin
For i:=1 to n do
begin
textcolor(7);Write(i,': ');
textcolor(15);ReadLn(a[i]);
end;
end;
begin
end.
lb2-CMin.pas
unit lb2_CMin;
interface
uses crt,lb2_opis;
procedure Change_minus(max1,max2:integer;var mas1:massiv; mas2:massiv);
implementation
procedure Change_minus(max1,max2:integer;var mas1:massiv; mas2:massiv);
var
i,k,now_find:integer;{now_find - this is where I start searching plus}
now_plus:real; {now_plus - this is 3HA4EHUE last found plus}
begin
now_find:=1;
now_plus:=0;
For i:=1 to max1 do
if mas1[i]<0 then begin
For k:=now_find to max2 do
if mas2[k]>0 then begin
now_plus:=mas2[k];
now_find:=k+1;
break;
end;
mas1[i]:=now_plus;
end;
end;
begin
end.
Контрольные расчеты:
При исходных данных(A: 1, -2, 3, -4, 5, -6, 7, 8; B: 2, 4, -4, -2, -3, -4, -6, -8, -9, -10) программа выдала результаты:
Исходный массив А:
1: 1.00; 2: -2.00; 3: 3.00; 4: -4.00; 5: 5.00; 6: -6.00;
7: 7.00; 8: 8.00;
Исходный массив B:
1: 2.00; 2: 4.00; 3: -4.00; 4: -2.00; 5: -3.00; 6: -4.00;
7: -6.00; 8: -8.00; 9: -9.00; 10: -10.00;
Обработанный массив А:
1: 1.00; 2: 2.00; 3: 3.00; 4: 4.00; 5: 5.00; 6: 4.00;
7: 7.00; 8: 8.00;
Что нужно знать:
· раздельная трансляция модулей в операционной системе;
|
|||||||
· функции редактора связей:
§ подключение стандартных модулей
§ установление сквозной адресации и внутренних ссылок – Т. к. адресация объектного модуля начинается с 0, то при присоединении его к головному модулю, чтобы внутренние ссылки (goto) работали, нужно изменить адресацию на адрес последней команды головного модуля +
§ разрешение внешних ссылок – При трансляции для каждого модуля создается таблица внешних ссылок, в которых кодируется имя модуля. Если в модуле есть процедуры и функции, то создается таблица имен и адресов этих пр. ед.
· модуль раздельной трансляции в Турбо-паскале – состоит из 3х секций: интерфейса (открытые описания, заголовки процедур и ф-ций), реализации (закрытые описания, описания процедур и функций), инициализации (клды инициализации)
· секции (разделы) модуля – то же
· открытые и закрытые описания – Открытые описания – описания известные за пределами модуля (всем модулям использующим данный модуль); Закрытые описания – описания известные только в пределах самого модуля и не известны снаружи.
· подключение модулей – Подключение модулей раздельной трансляции в TP осуществляется через ключевое слово (оператор) «uses»после которого идет имя подключаемого модуля.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.