Розробка програм з використанням посилань.
Приклад 1.Знайти суму елементів квадратної матриці 3*3, розмістивши її в динамічній пам¢яті.
program suma;
type
TM= ^array[1..3,1..3] of real;
var
matr:TM;
i,k:word;
s:real;
begin
new (matr);
writeln (‘ Введiть матрицю у виглядi матриці’);
for i:=1 to 3 do
begin
for k:=1 to 3 do
read (matr^[I,k];
readln;
end;
s:=0;
for i:=1 to 3 do
for k:=1 to 3 do
s:=s+matr^[i,k];
writeln ('Сума елементів матриці=',s:6:2);
dispоse (matr);
end.
Завдання для самоперевірки.
1. Що таке статичні структури даних.
2. Що таке динамічні структури даних.
3. Яка різниця між статичними і динамічними структурами даних.
4. Який сенс в використанні динамічних структур?
5. Що міститься в змінній посилального типу.
6. Яку дію необхідно виконати щоб отримати значення, на яке вказує посилання.
7. Що є основним механізмом організації динамічних даних.
8. Описати посилальну змінну на дійсне значення.
9. Описати посилальну змінну на масив 10-ти цілих значень.
10. Маємо опис
VAR
i: ^integer;
Виконати всі необхідні дії для збереження значення 25.
11. Використовуючи динамічну структуру, побудувати масив даних про студентів групи і вивести відомості про одружених студентів.
Модулі Pascal
1) Визначення модуля
2) Структура модуля
3) Створення модуля.
4) Підключення модуля.
5) Модуль CRT
6) Модуль DOS
Модульність - це властивість системи, яка може бути поділена незалежні частини. Кожна з частин призначена для виконання конкретної дії.
Модуль не може самостійно виконуватись, він тільки підключається до програм для використання.
Модуль компілюється незалежно від програми. Модуль має розширення .tpu. Ім’я модуля завжди повинно співпадати з ім’ям файлу, в якому він знаходиться.
Щоб підключити модуль до програми використовується директива USES, в якій вказується ім’я модуля.
Структура модуля складається з 4 частин:
- заголовок модуля (UNIT <ім’я модуля>;).
- розділ оголошень (INTERFACE)
- розділ реалізацій (IMPLEMENTATION)
- розділ ініціалізації ([begin].....end.)
Заголовок модуля.
Визначає ім¢я по якому модуль буде підключатись до програм.
Формат заголовку
Unit <ім¢я модуля>;
<ім¢я модуля> обов¢язково повинно співпадати з ім¢ям фізичного файлу, в якому буде збережено текст модуля.
Розділ оголошень.
Розділ оголошень може включати модулі, що підключаються, опис типів, констант, змінних, які будуть привноситись в програму при підключенні модуля. Тут також, описуються заголовки підпрограм, що складають бібліотеку. Все, що описано в цьому розділі буде доступно програмам, що підключають модуль.
Формат розділу
INTERFACE
[Uses ...]
[Const ...]
[Type ...]
[Var ...]
procedure ...;
function ...;
...
Розділ реалізації.
Розділ реалізації складається з тіл процедур та функцій, що об’явлені в розділі оголошень. В розділі можуть бути оголошені модулі, свої типи, константи, змінні, які будуть глобальними тільки для підпрограм цього розділу.
Формат розділу
IMPLEMENTATION
[Uses ...]
[Const ...]
[Type ...]
[Var ...]
procedure ...;
begin ... end;
...
function ...;
begin ...end;
Розділ ініціалізації.
Розділ ініціалізації може включати діє, які потрібно виконати один раз при підключенні модуля. Якщо цей розділ відсутній - ставиться тільки слово – end..
Формат розділу
[begin
... ]
end.
Приклад .
unit mоd;
interface
type
tx = array [1...32500] оf byte;
procedure fr (a,d:real);
function fn (x:real):real;
implementation
uses crt, dos;
procedure pr;
begin
:
end;
function fn(x:real):real;
begin
:
end;
end.
Створення модуля.
1. Створити текстовий файл в середовищі Turbo Pascal, що вміщує текст модуля.
2. Зберегти його з тим же ім’ям, яке записано в заголовку модуля. Отримаємо текстовий файл з розширенням pas.
3. По умовчанню скомпільовані файли знаходяться в оперативній пам’яті. Файл модуля необхідно зберегти на диску. Для цього необхідно скористатись пунктом меню Options + Linker. В стопчику Link buffer відмітити Disk в необхідному рядку.
4. Скомпілювати модуль. (Alt+ F9). Отримаємо двійковий файл з розширенням tpu. Щоб знати де розміститься цей файл, необхідно відкрити вікно призначення каталогів. Для цього необхідно скористатись пунктом меню Options + Directory. Відкриється вікно в якому видно призначення каталогів. В першому рядку з назвою „EXE & TPU directory” повинно бути записано шлях до каталогу в якому зберігаються модулі. Якщо рядок пустий, то файл модуля збережеться в поточному каталозі. Файл модуля буде мати те ж ім’я, що і текстовий файл модуля і розширення tpu.
Підключення модуля.
1. Відкрити новий файл в середовищі Turbo Pascal для введення тексту програми яка буде використовувати створений модуль.
2. Записати заголовок програми.
3. В другому рядку за допомогою директиви USES підключити модуль.
4. В тексті програми можна використовувати звернення до підпрограм модуля в відповідності з їх об’явами.
Розробка програм з використанням власних бібліотек(модулів).
Приклад 1. Створити модуль, що містить процедуру вводу даних в масив дійсних чисел довільного розміру (але не більше 50 елементів), функцію визначення суми елементів масиву, функцію визначення найбільшого елементу масиву, процедуру виведення елементів масиву довільного розміру.
UNIT ObrMas;
INTERFACE
Type
TM=array [1..50] of real;
Procedure VVOD (var M:TM;var n:word);
Procedure VIVOD (var M:TM;n:word);
Function Summa (var M:TM;n:word):real;
Function max (var M:TM;n:word):real;
IMPLEMENTATION
Procedure VVOD;
var
i:word;
begin
repeat
writeln (‘Введіть розмір масиву (не більше 50)’);
readln (n);
until n<=50;
for i:1 to n do
begin
write (‘Введіть наступний елeмент’);
readln (M[i]);
end;
end;
procedure VIVOD;
var
i:word;
begin
writeln (‘Вміст масиву’);
for i:=1 to n do
write (M[i]:7:2);
writeln;
end;
Function Summa (var M:TM;n:word):real;
Var
i:word;
S:real;
Begin
S:=0;
For i:=1 to n do
S:=S+M[i];
Summa:=S;
End;
Function max (var M:TM;n:word):real;
Var
i:word;
mx:real;
Begin
mx:=M[1];
For i:=1 to n do
If M[i]> mx then
Mx:=M[i];
max:=mx;
End;
End.
Приклад 2. Розробити програму що формує масив 30 дійсних елементів, знаходить суму його елементів, мах елементі вивести вміст масиву.
Program PR;
Uses ObrMas;
Var
A:TM;
K:word;
Begin
VVOD (A,k);
Writeln (‘Сума елементів масиву =’,Summa(A,k):7:2 );
Writeln (‘Максимальний елемент масиву =’,max(A,k):7:2);
VIVOD (A,k);
End.
Завдання для самоперевірки.
1. Який сенс в використанні модулів.
2. Яким чином підключається модуль до програми.
3. Призначення розділу об¢яв.
4. Призначення розділу реалізацій.
5. Призначення розділу ініціалізації.
Модуль CRT
Модуль призначений для роботи з екраном і клавіатурою.
Робота з екраном.
Робота з екраном виконується в текстовому режимі. Екран розглядається як послідовність рядків. По умовчанню їх 25. Кожний рядок містить 80 позицій - колонок. Кожна позиція характеризується координатами <номер рядка, номер колонки>. Початок координат знаходиться в лівому верхньому куті екрану і має координати (1,1).
1,1
80,25
Поточні координати завжди можна взнати, використовуючи функції
WHEREX, WHEREY.
Для переміщення курсору в позицію використовується процедура
GOTOXY (<x>,<y>);
На екрані можна створювати вікна. Вікно - це прямокутна область екрану. Для створення вікна використовується процедура
WINDOW (<x1>,<y1>,<x2>,<y2>);, де
x1,y1 - координати лівого верхнього кута
x2,y2 - координати правого нижнього кута
Після виконання цієї процедури система координат переноситься в лівий верхній кут цього вікна, координати будуть відраховуватись в рамках цього вікна і всі дії будуть відноситись до цього вікна. Якщо координати задано некоректно, то ніяких дій не буде виконано.
Завжди можна взнати координати поточного вікна, використовуючи змінні WINDMAX і WINDMIN. В кожній змінній зберігається значення Х і У в молодшому і старшому файлі. Отримати ці значення можна використовуючи функції LO і HI.
x: = LO (WINDMIN) + 1; x2: = LO (WINDMAX) + 1;
y: = HI (WINDMIN) + 1; y2: = HI (WINDMAX) + 1;
Для очищення поточного вікна використовується процедура
CLRSCR;
. При цьому вікно заливається кольором поточного фону. Курсор встановлюється в позицію (1,1).
Робота з кольором.
Кольорова гама складається з двох кольорів: кольору фону і кольору символів.
Таблиця кольорів
Константа кольору | Числове значення кольору | Колір |
BLACK | чорний | |
BLUE | синій | |
GREEN | зелений | |
CYAN | голубий | |
RED | червоний | |
MAGENTA | фіолетовий | |
BROWN | коричньовий | |
LIGHTGRAY | яскраво-сірий | |
DARKGRAY | темно-сірий | |
LIGHBLUE | яскраво-синій | |
LIGHTGREEN | яскраво-зелений | |
LIGHTCYAN | яскраво-голубий | |
LIGHTRED | яскраво-червоний | |
LIGHTMAGENTA | яскраво-фіолетовий | |
YELLOW | жовтий | |
WHITE | білий | |
BLINK | Мерехтіння |
Для встановлення кольору символів використовується процедура
TEXTCOLOR (<колір>);
Для встановлення кольору фону використовується процедура
TEXTBACKGROUND (<колір>);
Для кольору фону використовуються тільки перші 8 кольорів (0 .. 7).
Задати кольори можна використовуючи системну константу TEXTATTR таким чином:
TEXTATTR: = <колір символів> + 16*<колір фону>[+128];
HIGHRIDEO; - включення яскравості кольору символів
LOWVIDEO; - виключення яскравості кольору символів
NORMVIDEO; - повернення кольорового режиму, що був на початок роботи програми
Дата добавления: 2015-12-10; просмотров: 537;