Смекни!
smekni.com

Модули, записи и файлы (стр. 2 из 4)

1.2. Компиляция модулей.

В среде Turbo PASCAL имеются средства, управляющие способом компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: COMPILE, MAKE и BUILD. Режимы отличаются только способами связи компилируемого модуля и основной программы с другими модулями, объявленными в приложении USES. При компиляции модуля или основной программы в режиме COMPILE компилируется только файл, находящийся в активном окне. По умолчанию предполагается, что используемые модули уже откомпилированы и результаты помещены в одноименные файлы с расширением .TPU; файл с расширением .TPU (от английского Turbo Pаscal Unit) создается в результате компиляции модуля. В режиме МАКЕ компилятор проверяет наличие TPU-файлов для каждого объявленного модуля. Если какой-либо из файлов не обнаружен, то система пытается отыскать одноименный файл с расширением .PAS, т.е. файл с исходным текстом модуля. Если PAS-файл найден, то происходит его компиляция. Кроме того, в этом режиме система следит за возможными изменениями исходного текста любого используемого модуля. Если в PAS-файл (исходный текст модуля) внесены какие-либо изменения, то независимо от того, есть ли уже в каталоге соответствующий TPU-файл или нет, система осуществляет его компиляцию перед компиляцией основной программы. Если изменения внесены в интерфейсную часть модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему. Режим МАКЕ существенно облегчает процесс разработки крупных программ с множеством модулей. В режиме BUILD существующие TPU-файлы игнорируются, и система пытается отыскать и компилировать соответствующий PAS-файл для каждого объявленного в предложении USES модуля. После компиляции в режиме BUILD программист может быть уверен в том, что учтены все сделанные им изменения в любом из модулей.

Подключение модуля к основной программе и их возможная компиляция осуществляется в порядке их объявления в предложении USES. При переходе к очередному модулю система предварительно отыскивает все модули, на которые он ссылается. Ссылки модулей друг на друга могут образовывать древовидную структуру любой сложности, однако запрещается явное или косвенное обращение модуля к самому себе. Дело в том, что Turbo PASCAL разрешает ссылки на частично откомпилированные модули, что приблизительно соответствует опережающему описанию подпрограммы. Если интерфейсные части любых двух модулей независимы, Turbo PASCAL сможет идентифицировать все глобальные идентификаторы в каждом из модулей, после чего откомпилирует тела модулей обычным способом.

Глава 2. Задание первой части курсовой работы

Разработать модуль (схемы алгоритмов и программы), содержащие процедуры и функции, решающие поставленную задачу :
Вариант № 21
Вычислить произведение элементов каждого столбца матрицы :
Определить максимальное значение произведения :
Разработать вызывающую программу (алгоритм и текст программы), предусмотрев процедуру очистки экрана и вывода информации на экран с текстовыми комментариями. Например :
Курсовую работу выполнил студент группы А – 61 Иванов Роман Борисович
Вариант № 21
Разработанный модуль содержит следующие программы :
1. Процедуру формирования элементов матрицы в интервале –1.0 до 1.0.
2. Функцию определения суммы элементов той строки, где находиться максимальный элемент.
3. Процедуру вывода элементов матрицы.
Результаты :
Сформированная матрица :
------------------------------
------------------------------

Сумма элементов строки, где находится максимальный элемент =…….

2.1. Вызывающая программа






2.2.Процедура формирования массива А


PROCEDURE FORM

2.3.Процедура ввывода массива А

PROCEDURE VIVOD



2.4.Процедура произведения элементов массива А

PROCEDURE PR



2.5.Функция поиска максимального элемента в векторном массиве С

FUNCTION MAX


Глава 3. Модуль основной программы

unit kurp1;

interface

const n=5;

type matr=array[1..n,1..n] of real;

vect=array[1..n] of real;

procedure form(var a:matr);

procedure vivod (var a:matr);

function max(c:vect):real;

procedure pr(a:matr;var c:vect);

implementation

procedure vivod (var a:matr);

var i,j:integer;

begin

for i:=1 to n do

begin

for j:=1 to n do

write (a[i,j]:6:2);

writeln;

end;

writeln;

end;

procedure form(var a:matr);

var i,j:integer;

begin

randomize;

for i:=1 to n do

for j:=1 to n do

a[i,j]:=random*2-1;

end;

function max( c:vect):real;

var i:integer;

m:real;

begin

m:=-2;

for i:=1 to n do

if c[i]>m then m:=c[i];

max:=m

end;

procedure pr(a:matr;var c:vect);

var i,j:integer;

begin

c[i]:=1;

for i:=1 to n do

begin

for j:=1 to n do

c[i]:=a[j,i]*c[i];

writeln('Произведение ',i,'-го столбца =',c[i]:6:4);

end;

writeln;

end;

end.

Глава 4. Основная программа

program kursovik;

uses crt,kurp1;

var a:matr;

c:vect;

begin

clrscr;

window (45,2,75,7) ;

writeln ('Курсовая работа по информатике') ;

writeln('Факультет АЭС группа А-92');

writeln ('студента: Грязина Дмитрия ');

window(1,1,80,25);

writeln('вариант 21');

window(10,8,80,20);

writeln('Разработанный модуль содержит следующие программы:');

writeln('1.Процедуру формирования элементов матрицы в интервале от 1.0 до 1.0.');

writeln('2.Процедуру вывода матрицы на экран.');

writeln('3.Процедуру определения произведения каждого столбца матрицы.');

writeln('4.Функцию определения максимального произвелдения.');

window(1,1,80,25);

gotoxy(10,24);

writeln('Для продолжения нажмите пробел');

clrscr;

form(a);

writeln('Сформированная матрица');

vivod(a);

pr(a,c);

writeln('Максимальное произведение =',max(c):6:4);

readln;

end.

Глава 5. Результаты первой части курсовой работы

Сформированная матрица

-0.68 0.22 0.58 -0.62 -0.14

0.25 -0.11 -0.90 0.41 -0.57

0.24 -0.69 -0.84 0.28 0.71

-0.46 -0.26 0.16 0.49 -0.73

0.60 0.17 0.28 -0.77 -0.61

Произведение 1-го столбца =0.0112