Складання програм з використанням модулів.
Теоретичні відомості.
прогресивним підходом у програмувонні вважається використання модулів або блоків. Набір процедур та функцій, об'єднаних в один блок (UNIT), може компілюватіся незалежно від головної програми. Завдяки цьому час компіляції для великих програм може на багато зменшуватися, а це має велике значення при відладці програм, які приходиться досить часто компілюваті.
МОДУЛЬ (UNIT) - це програмна одиниця, текст якої відкомпільовано незалежно. Вона включає в себе визначення констант, типів даних, змінних, процедур та функцій, доступних для використання в програмах, які викликають.
Внутрішня структура модуля прихована від користувача.
Структура модуля.
В модулі можна виділити декілька розділів: заголовок, інтерфейсна частина, реалізаційна частина і інілізаційна частина.
Заголовок модуля.
UNIT ім'я модуля;
Інтерфейсна частина.
INTERFACE початок розділу оголошень;
USES модулі, які використовуються;
LABEL оголошення доступних глобальних
міток;
CONST оголошення доступних глобальних
констант;
TYPE оголошення доступних глобальних
типів;
VAR оголошення доступних глобальних
змінних;
PROCEDURE (FUNCTION) заголовки доступних процедур (функцій);
реалізаційна частина.
IMPLEMENTATION початок розділу реалізації;
USES модулі, які використовуються при реалізації;
LABEL оголошення скритих глобальних міток;
CONST оголошення глобальних констант;
TYPE оголошення скритих глобальних типів;
VAR оголошення скритих глобальних змінних;
PROCEDURE (FUNCTION) тіла доступних та скритих процедур (функцій);
Інілізаційна частина.
BEGIN основний блок модуля.
END.
Індивідуальне завдання.
Варіант № 7.
Скласти програму на мові Pascal розв'язку даної задачі та виконання її на ЕОМ. Процедури та функції оформити у вигляді модуля.
Завдання 1.
Модуль:
unit gregory;
{---------------------------------------------- -----------}
interface
uses crt;
var
c, k: array [1 .. 5,1 .. 4] of real;
i, j: integer;
m: byte;
function facktorial (x: integer): real;
{---------------------------------------------- -----------}
implementation
function facktorial (x: integer): real;
var
i: integer;
facktorial1: real;
begin
facktorial1: = 1;
if i <= 1 then facktorial: = 1 else begin
for i: = 1 to x do facktorial1: = facktorial1 * i;
facktorial: = facktorial1;
end;
end;
{---------------------------------------------- -----------}
begin
end.
Запускна програма:
uses gregory;
begin
clrscr;
writeln ( 'Введiть елементи масива:');
writeln;
for i: = 1 to 5 do
for j: = 1 to 4 do begin
write ( 'Елемент [', i ,',', j ,']=');
readln (c [i, j]);
end;
m: = 0;
clrscr;
for i: = 1 to 5 do begin
for j: = 1 to 4 do begin
k [i, j]: = c [i, j]/facktorial (i + j);
if k [i, j] <1 then m: = m +1;
write (k [i, j]: 7:5, '');
end;
writeln;
end;
end.
Робота з файлами.
Теоретичні відомості
Файл - це сукупність даних однакового типу. Таке визначення збігається з визначенням масиву, але, на відміну від останнього, файл зберігають на диску, кількість даних у файлі при його опісуванні не вказується, елементи файла не мають індексів, що ускоаднює роботу з ними.
Опис файлового типу має вигляд:
Type <ім'я типу> = File of <тип компонент>;
Процедури і функції для роботи з файлами:
Assign - зв'язує деякий зовнішній файл на диску з файловою змінною.
Reset - відкриває уже раніше створений файл данних на диску, ім'я якого було перед цим пов'язане процедурою Assign.
Rewrite - створює новий файл і відкриває його. Якщо файл вже існує вміст знищується, а сам файл відкривається знову.
Close - закриває файл, який зв'язаний з файловою змінною.
Eof - набуває значення true, якщо досягнуто кінець файла, інакше набуває значення false.
IOResult - використовується для пошуку помилок, які виникають при роботі з файлами.
Індивідуальне завдання
Завдання 1.
Написати програму контролю знань студентів з літератури.
Оформити файл відповідей та файл питань.
Завдання 2.
Написати програму що виводить на екран студентів, що набрали прохідний бал не нижче 8.
Завдання 1:
program zavd1;
uses
crt;
const
qfile = 'quest.txt';
afile = 'ansver.txt';
var
f1, f2: text;
i, k: integer;
name, ansv: string;
begin
clrscr;
assign (f1, qfile);
assign (f2, afile);
rewrite (f2);
reset (f1);
write ( 'Введіть своє ім `я, групу:');
readln (name);
writeln (f2, name);
while not eof (f1) do begin
readln (f1, name);
writeln (name);
write ( 'Ваша відповідь:');
readln (name);
writeln (f2, name);
readln (f1, ansv);
if ansv = name then k: = k +1;
i: = i +1;
end;
writeln (f2, 'Всього питань:');
writeln (f2, i);
writeln (f2, 'Правильне харчування:');
writeln (f2, k);
close (f1);
close (f2);
end.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ:
Вміст файлу протоколу:
Брігіда e02
товстої
співає
так
Всього питань:
3
Правильне харчування:
2
Завдання 2:
program typefiles;
uses
crt;
const
kolocenok = 2;
type
abiturient = record
fio: string;
marks: array [1 .. kolocenok] of integer;
end;
var
ser, i, j, k: integer;
abit: array [1 .. 40] of abiturient;
temp: abiturient;
begin
clrscr;
write ( 'Введiть кiлькiсть абiтурiентiв:');
readln (k);
for i: = 1 to k do begin
writeln ( 'абiтурiент', i ,':');
write ( 'im `я:');
readln (temp.fio);
writeln ( 'Введiть оцiнки:');
for j: = 1 to kolocenok do readln (temp.marks [j]);
abit [i]: = temp;
end;
clrscr;
for i: = 1 to k do begin
writeln ( 'абiтурiент', i ,':');
write ( 'im `я:', abit [i]. fio);
write ( 'травні оцiнки:');
ser: = 0;
for j: = 1 to kolocenok do begin
write (abit [i]. marks [j], ',');
ser: = ser + abit [i]. marks [j];
end;
writeln;
if ser> 8 then writeln ( 'З А Ч И С Л Е Н И Й!');
writeln;
end;
end.
РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ:
абiтурiент 1:
im `я: Саша травні оцiнки: 4, 5,
ЗАРАХУВАННЯ!
абiтурiент 2:
im `я: Петро травні оцiнки: 3, 4,
абiтурiент 3:
im `я: Олег травні оцiнки: 4, 2,
абiтурiент 4:
im `я: Микола травні оцiнки: 2, 2,
Висновок: поглибив знання, вміння та навички розробки з використанням текстових та тіпізованіх файлів, закріпив свої знання в області записів та тіпізованіх файлів.