Модули раздельной трансляции. Использование модульного принципа при решении задач на языке Pascal

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

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

Балтийский Государственный

Технический Университет

«ВоенМех»

имени Д.Ф. Устинова

Отчет

к лабораторной работе по информатике №2

На тему

“Модули раздельной трансляции”

Отчет выполнил студент

Факультета «И»

Суханов Александр

Группа И433

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

Лабораторная работа по информатике №2

Тема: Модули раздельной трансляции

Цель: Ознакомиться с понятием модуля. Научиться использовать модульный принцип при решении задач на языке Pascal.

Исходная задача: Дана вещественная матрица V10*15. Выполнить в каждом столбце матрицы следующую перестановку: поменять местами минимальный элемент столбца с первым элементом этого же столбца. Программу должна состоять из следующих модулей:

  1. Модуль структуры данных [Structur.pas]
  2. Модуль ввода-вывода данных [InOut.pas]
  3. Модуль преобразования [Counter.pas]
  4. Головной Модуль [Main.pas]

Структуры данных:

Matrix – Тип-Матрица

Nmax, Mmax – Максимально допустимые размеры матрицы V [Integer]

N, M – Размеры матрицы V [Integer]

V – Обрабатываемая матрица [Matrix]

Процедуры и функции:

Procedure Input (var n, m: Integer; var V: Matrix) – Ввод данных [Модуль InOut.pas]

Procedure Output (n, m: Integer; V: Matrix) – Вывод данных [Модуль InOut.pas]

Procedure Count (n, m: Integer; var V: Matrix) – Преобразование Матрицы [Модуль Counter.pas]

Листинг программы, решающей данную задачу:

{Файл Main.pas}

program lab2;

uses Structur, InOut, Counter, Crt;

begin

Input(n, m, V);

gotoXY(2, 2);

write('Исходная матрица V:');

Output(n, m, V);

Count(n, m, V);

gotoXY(2, 2);

write('Преобразованная матрица V:');

Output(n, m, V);

end.

{Файл Structur.pas}

unit Structur;

interface

const Nmax = 10;

Mmax = 9;

type Matrix = array [1..Nmax,1..Mmax] of real;

var V: Matrix;

n, m: integer;

implementation

begin

end.

{Файл InOut.pas}

unit InOut;

interface

uses Structur, Crt;

procedure Input (var n, m: Integer; var V: Matrix);

procedure Output (n, m: Integer; V: Matrix);

implementation

procedure Input (var n, m: Integer; var V: Matrix);

var zicl, zicl2: Integer;

begin

ClrScr;

write('Введите кол-во строк [Maximum ', Nmax,']: '); readln(n);

write('Введите кол-во столбцов [Maximum ', Mmax,']: '); readln(m);

if n>Nmax then n:=Nmax;

if m>Mmax then m:=Mmax;

for zicl:=1 to n do

begin

write(zicl,' строка[элементов: ', m, ']: ');

for zicl2:=1 to m do read(V[zicl, zicl2]);

end;

gotoXY(1, 25);

write('Ввод завершен. Нажмите любую клавишу...');

repeat

until Keypressed;

ClrScr;

end;

procedure Output (n, m: Integer; V: Matrix);

var zicl, zicl2: Integer;

c: Char;

begin

gotoXY(2, 3);

write('г');

for zicl:=1 to m*8 do write('=');

write('¬');

for zicl:=1 to n do

begin

gotoXY(2, zicl+3);

write('¦');

for zicl2:=1 to m do write(V[zicl, zicl2]:7:3,' ');

write('¦');

end;

gotoXY(2, WhereY+1);

write('L');

for zicl:=1 to m*8 do write('=');

write('-');

gotoXY(1, 25);

write('Нажмите любую клавишу...');

while keypressed do c:=readkey;

repeat

until Keypressed;

ClrScr;

end;

begin

end.

{Файл Counter.pas}

unit Counter;

interface

uses Structur;

procedure Count (n, m: Integer; var V: Matrix);

implementation

procedure Count (n, m: Integer; var V: Matrix);

var zicl, zicl2, poz: integer;

min: real;

begin

for zicl:=1 to m do

begin

min:=V[1, zicl];

poz:=1;

for zicl2:=2 to n do

if V[zicl2, zicl]<min then

begin

poz:=zicl2;

min:=V[zicl2, zicl];

end;

if poz<>1 then

begin

V[poz, zicl]:=V[1, zicl];

V[1, zicl]:=min;

        end;

    end;

end;

begin

end.

Тестовые данные:

1)  A4*5 = 1 2 3 4 5                            Ответ:    A4*5 = 0 0 0 0 5                                                                                                                                               

1 2 3 4 6                                                       1 2 3 4 6                                                          

0 0 0 0 5                                                       1 2 3 4 5

2 1 1 1 7                                                       2 1 1 1 7

2)  A4*5 = 3 9 3 0 5Ответ:    A4*5 = 1 1 3 0 2                                                                                                                                             

1 2 3 4 6                                                       3 2 3 4 6                                                      

6 8 4 6 2                                                       6 8 4 6 5                                                      

2 1 9 8 7                                                       2 9 9 8 7                                                      

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

начало,ввод m, n,false,min:=V[1,zicl],zicl 1, n,true,poz:=1,V[zicl2,zicl]<min ,poz:=zicl2,конец,ввод V,zicl2 1, m,min:=V[zicl2,zicl],V[poz,zicl]:=V[1,zicl],V[1,zicl]:=min,вывод V 



Вывод: Мною было изучено понятие модуля раздельной трансляции и правила работы программы, использующей модули. Для закрепления изученного материала была написана программа (lab2.pas). Произведенные тесты этой программы позволяют сделать вывод о правильности ее алгоритма и реализации этого алгоритма.

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

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