Модули раздельной трансляции. Установление сквозной адресации и внутренних ссылок

Страницы работы

8 страниц (Word-файл)

Содержание работы

Балтийский государственный технический университет «ВОЕНМЕХ» им. Д. Ф. Устинова

Кафедра информационных систем и технологий

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

«Модули раздельной трансляции.»

Преподаватель: Шеляпин Ю. П.

Выполнил: Королев М. Ю.

Группа: И-351

Санкт-Петербург

2006 год.

Задание

В массиве А[1..8] отрицательные элементы заменить положительными элементами масива B[1..10]. Если элементов не хватает – заменять последним найденным.


Блок-схема алгоритма

Вв. mas1,mas2,max1,max2

 

Вы. mas1

 
Овал: lb2-CMin

false

 



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»после которого идет имя подключаемого модуля.

Похожие материалы

Информация о работе