Міністерство освіти і науки України
Національний університет „Львівська Політехніка”
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи № 9
з курсу „Основи алгоритмізації та програмування”
Тема: Робота з даними комбінованого типу.
Оголошення та використання модулів.
Виконано:
стдент групи КІ-14
Сорокевич М.І.
Перевірено:
Ногаль М.В.
Львів – 2003
МЕТА РОБОТИ: Навчитися використовувати у програмах структуровані данi та власні модулі.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Модулi
Директива uses. Директива uses iдентифiкує всi модулi, що використовуються програмою, включаючи модулi, що використовуються програмою безпосередньо, i модулi, що використовуються цими модулями. Модуль SysUtils завжди використовується автоматично. SysUtils реалiзує основний рiвень, пiдтримку програм часу виконання для пiдтримки таких засобiв, як файловий ввiд/вивiд, обробка рядкiв, операцiї з плавачою комою, динамiчний розподiл пам'ятi та ін. Порядок перерахування модулів в uses визначає порядок їх інiцiалiзацiї.
Cинтаксис модулiв. Модулi в Pascal є основою модульного програмування. Вони використовуються для створення бiблiотек, що можуть включатися в рiзноманiтнi програми, а бiльшi програми можуть подiлятися на логiчно зв'язанi модулi. Iм'я модуля використовується при посиланнi на модуль в uses. Це iм'я повинно бути унiкальним.
Інтерфейсний роздiл. В інтерфейсному роздiлi оголошуються тi константи, типи, змiннi, процедури i функцiї, що є глобальними, тобто є доступними основнiй програмi (програмi або модулю, що використовують даний модуль). Основна програма має доступ до цих елементiв, як якщо б вони були б оголошенi в блоку, що включає головну програму.
Роздiл реалiзацiї. В роздiлi реалiзацiї визначаються тіла всiх глобальних процедур i функцiй. В ньому також описуються константи, типи, змiннi, процедури i функцiї, що є локальними, тобто є недосяжними основнiй програмi. По механiзму чинностi оголошення процедур i функцiй в інтерфейсному роздiлi аналогiчнi forward оголошенню, хоча директива forward не вказується. Таким чином, цi процедури i функцiї можуть бути визначенi в роздiлi реалiзацiї. Заголовки процедур i функцiй можуть бути здубльованi з інтерфейсного роздiлу (список формальних параметрiв задавати необов’язково)
Роздiл iнiцiалiзацiї. Роздiл iнiцiалiзацiї може складатися або з зарезервованого слова end (без коду iнiцiалiзацiї), або з операторної частини, що повинна виконуватися для iнiцiалiзацiї модуля. Роздiли iнiцiалiзацiї модулiв, що використовуються програмою, виконуються в тому же порядку, в якому модулi вказанi в оголошенні.
ЗАВДАННЯ
Згідно із індивідуальним завданням, розробити алгоритм та програму на мові Pascal, в яких використовуються структуровані данi. Основні обчислення оформити у вигляді окремого модуля. Виконати ввід, виконання та відлагодження програми і модуля. Проаналізувати отримані результати та оформити звіт по роботі.
Варіант 7. Сформувати масив записiв з iнформацiєю про успiшнiсть студентiв по 5-ти предметах: знайти середнiй бал кожного студента;
program Lab9;
{$APPTYPE CONSOLE}
uses
SysUtils,
Serednij_Bal in 'Serednij_Bal.pas';
var
i: word;
begin
Vvid(a);
writeln('Seredni baly studentiv:');
SerBal(a);
for i:=1 to n do
writeln(i,') ',a[i].pip,' - ',a[i].sb);
readln
end.
unit Serednij_Bal;
interface
const
n=7;
type
baly=record
pip: string;
progr: byte;
dyskr: byte;
english: byte;
fizyka: byte;
matan: byte;
sb: byte;
end;
spysok=array[1..n] of baly;
var
a: spysok;
procedure Vvid(var a : spysok);
procedure SerBal(var a : spysok);
implementation
procedure Vvid;
var
i:word;
begin
for i:=1 to n do begin
writeln('Vvedit'' prizvyshche, imja ta pobat''kovi ',i,'-ogo studenta:');
write(' '); readln(a[i].pip);
write('Vvedit'' bal z programuvannia: ');
readln(a[i].progr);
write('Vvedit'' bal z dyskretnoji matematyky: ');
readln(a[i].dyskr);
write('Vvedit'' bal z inozemnoji movy: ');
readln(a[i].english);
write('Vvedit'' bal z fizyky: ');
readln(a[i].fizyka);
write('Vvedit'' bal z matematychnogo analizu: ');
readln(a[i].matan);
writeln
end;
end;
procedure SerBal;
var
i:word;
begin
for i:=1 to n do
a[i].sb:=(a[i].progr+a[i].dyskr+a[i].english+a[i].fizyka+a[i].matan) div 5;
end;
end.
Висновок: На цій лабораторній роботі я навчився використовувати у програмах структуровані данi та власні модулі; склав програму згідно з власним варіантом і включив до неї модуль.