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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

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

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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

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

«ВоенМех»

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

Отчет

к лабораторной работе по информатике №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). Произведенные тесты этой программы позволяют сделать вывод о правильности ее алгоритма и реализации этого алгоритма.

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

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

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.