- •Основи програмування та алгоритмічні мови Програмування мовою borland Pаscаl v7.0 для пеом Процедурне та модульне програмування
- •2.2.1. Теоретичні відомості
- •1. Основи алгоритмізації та програмування
- •1.1. Послідовність рішення задачі з допомогою еом
- •1.2.Середовище turbo Pаscаl
- •1.3.Типи даних turbo Pаscаl
- •1.4.Основні поняття мови програмування turbo Pаscаl
- •1.4.1.Синтаксис мови Програмування turbo Pаscаl
- •1.4.2. Основні дії в мові програмування
- •1.4.3. Умовні оператори
- •1.4.4. Методи організації циклів
- •1.4.5. Оператор вибору
- •1.4.6. Масиви.
- •1.4.7. Робота з рядками, масиви символів
- •1.4.8. Робота з типом string
- •1.4.9. Тестові завдання
- •1.4.10. Варіанти завдань для самостійного розгляду
- •2. Програмування в мові Pascal
- •2.1 Процедурний підхід до програмування
- •2.1.1 Теоретичні відомості
- •2.1.2.Приклад програми
- •2.1.3. Варіанти завдань для лабораторної роботи
- •2.2. Записи з фіксованою частиною
- •2.2.1. Теоретичні відомості
- •2.2.2. Приклад програми
- •2.2.3. Варіанти завдань для лабораторної роботи
- •2.3. Записи з варіантами
- •2.3.1. Теоретичні відомості
- •2.3.2. Приклад програми
- •2.3.3. Варіанти завдань для лабораторної роботи
- •2.4. Типізовані файли
- •2.4.1. Теоретичні відомості
- •2.4.2. Приклад програми
- •2.4.3. Варіанти завдань лабораторної роботи
- •2.5. Текстові файли
- •2.5.1. Теоретичні відомості
- •2.5.2. Приклад програми
- •2.5.3. Варіанти завдань Лабораторної роботи
- •2.6. Множини
- •2.6.1. Теоретичні вказівки
- •2.6.2. Приклад програми
- •Алгоритм
- •2.6.3. Варіанти завдань лабораторної роботи
- •2.7. Черги та стеки
- •27.1. Теоретичні вказівки
- •Алгоритм побудови стека:
- •2.7.2. Приклад програми
- •2.7.3. Варіанти завдань лабораторної роботи
- •2.8. Дерева
- •2.8.1. Теоретичні вказівки
- •2.8.2. Приклад програми
- •2.8.3. Варіанти завдань лабораторної роботи
- •2.9. Графіка
- •2.9.1. Теоретичні вказівки
- •2.9.2 Приклад програми
- •2.9.3 Варіанти завдань
- •2.10.Програмування інтерфейсу користувача. Розробка меню
- •2.10.1. Теоретичні вказівки
- •2.10.2. Приклад програми
- •2.10.3. Варіанти завдань
- •4 Створити меню такої структури: Головне меню
- •3. Основні принципи модульного програмування
- •3.1. Приклад програми
3. Основні принципи модульного програмування
Якщо в деякій програмі використовуються власні процедури досить великого розміру, то ці процедури найкраще оформити в вигляді окремого модуля. Існує декілька причин для створення такого модуля. По-перше, модуль може зберігатися як в вихідному виді в PAS-файлі, так і в відкомпільованому файлі з розширенням TPU (Turbo Pascal Unit - модуль ТУРБО ПАСКАЛЬ). Усі процедури не компілюються щораз при перекомпіляції основної програми, а просто їхній код, що міститься в tpu-файлі, компонується з кодом основної програми. Це значно заощаджує час загальної компіляції задачі. По-друге, винесення множини процедур в окремий модуль розвантажує текст основної програми від зайвої захаращеності, робить його більш компактним і зрозумілим для сприйняття. По-третє, модулі з процедурами, що часто зустрічаються в різноманітних програмах, заощаджують час при написанні нових програм. Для цього достатньо помістити потрібний tpu-файл в каталог із новим проектом, в основній програмі підключити цей модуль в рядку uses і далі просто використовувати процедури з цього модуля в тексті основної програми. Будова модуля нагадує створення нової програми. в окремому pas-файлі записується заголовок модуля, константи, змінні, процедури і функції, які використовуються в цьому модулеві:
Unit ім'я_модуля; {це ж ім'я повинно бути іменем файла} Interface {розділ описів}
Const глобальні_константи;
Var глобальні_змінні;
Procedure Ім’я1 (параметри);
Procedure Ім’я2 (параметри); ..
.Procedure Ім’яM (параметри);
Function Ім’я11 (параметри): тип; ...
Function Имя1N (параметри): тип;
Implementation {розділ реалізації};
Const локальні_константи;
Var локальні_змінні;
Procedure Ім’я1; ...
Begin ...End;
Procedure Ім’я2; ...
Begin ...End; ...
Function Ім’я11; ...
Begin ...End; ...
End.
Модуль не виконується як звичайна програма, а компілюється в tpu-файл. Інтерфейсна частина модуля, яка фактично відображає його зміст, компілюється особливо, що дозволяє компілятору надалі дуже швидко переглядати tpu-файли і знаходити потрібні процедури. Завдання. Створити модуль з набором процедур, що реалізують різноманітні методи сортування числових масивів. Налагодити модуль для використання в наступній лабораторній роботі.
3.1. Приклад програми
unit mmm;
interface
procedure str(var a:array of integer);
procedure sts(var a:array of integer);
procedure bub(var a:array of integer);
procedure qui(var a:array of integer);
implementation
procedure str;
var
x,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n do
begin
x:=a[i];
j:=i-1;
while (j>=n1) and (a[j]>x) do
begin
a[j+1]:=a[j];
j:=j-1;
end;
a[j+1]:=x;
end;
end;
procedure sts;
var
x,k,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[k]>a[j] then k:=j;
if k<>i then
begin
x:=a[i];a[i]:=a[k];a[k]:=x;
end;
end;
end;
procedure bub;
var
x,i,j:integer;
n1,n:integer;
begin
n:=high(a);
n1:=low(a);
for i:=n1 to n-1 do
for j:=n downto i+1 do
if a[j-1]>a[j] then
begin
x:=a[j];a[j]:=a[j-1];
a[j-1]:=x;
end;
end;
procedure qui;
var n1,n:integer;
procedure sort(l,r:integer);
var
x,w,i,j:integer;
begin
i:=l;j:=r;
x:=a[(i+j) div 2];
repeat
while a[i]<x do i:=i+1;
while a[i]>x do j:=j-1;
if i<=j then
begin
w:=a[i];
a[i]:=a[j];
a[j]:=w;
i:=i+1;
j:=j-1;
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j)
end;
begin
n:=high(a);
n1:=low(a);
sort(n1,n);
end;
end.
program test;
uses mmm;
const n=100;
var a:array[1..n] of integer;
i:integer;
begin randomize;
for i:=1 to n do
a[i]:=random(100);
writeln('неупорядкований масив:');
for i:=1 to n do
write(a[i]:4);
writeln;
sts(a);
writeln('упорядкований масив :');
for i:=1 to n do
write(a[i]:4);
writeln;
end.
Список рекомендованої літератури
1. Сердюченко В.Я. Розробка алгоритмів та програмування мовою Turbo Pascal,- Харків: Паритет, 1995. - 352 с.
2. Фаронов В. В. Турбо Паскаль 7.0. Начальный курс. - М.: Нолидж,1997. - 616 с.
3. Марченко А.И. Программирование в среде Borland Pascal v 7.0.-К.: Век, 1997. - 480 с.
4. Епанешников AM, Епанешников В.А. Программирование в среде Turbo Pascal 7.0. - М.: Диалог -МИФИ , 1993. - 228 с.
5. Бородин Ю.С, Вальвачев А.Н. и др. Паскаль для персональных компьютеров.- Минск: Высш. шк„ 1991. - 364 с.
6. Поляков Д.Б. , Круглов И.Ю. Программирование в среде Турбо-Паскаль. -М.: МАИ , 1992. - 576 с.
7. Довгаль С.И. и др. Персональные ЭВМ: Турбо-Паскаль v 6.0. Объектное программирование и локальные сети,- К.: Информсистема сервис, 1993. - 440 с.
8. Абрамов С.А. и др. Задачи по программированию.-М.: Наука, 1988. - 280 с.
Додаток 1 Процедури та функції модуля GRAPH
Ініціалізація графіки |
||||
Initgraph |
ініціалізація графічного режиму |
lnitGraph(var GraphDriverlnteger; var GraphMode: Integer; PathToDriver: string); |
||
Graphresult |
помилки при ініціалізації графічного режиму |
function GraphResult: Integer; |
||
Detectgraph |
перевірка параметрів Hardware |
DetectGraph(var GraphDriver, GraphMode: Integer); |
||
Setgraphmode |
встановити графічний режим після текстового режиму |
SetGraphMode(Mode: Integer); |
||
Restorecrtmode |
відновити текстовий режим |
restorecrtmode; |
||
Closegraph |
закрити граф. режим |
closegraph; |
||
Графічні примітиви |
||||
Arc |
дуга кола |
АРС(х,у,початковий кут, кінцевий кут, радіус) |
||
bar (bar3d) |
заштрихован. прямокут. |
Ваг(х1, у1, х2, у2); |
||
Circle |
коло |
Circle(X,Y: Integer; Radius: Word); |
||
Drawpoly |
многокутник |
DrawPoly(NumPoints: Word; var PolyPoints); |
||
Fillellipse |
еліпс |
FillEllipse(X, Y: Integer; XRadius, YRadius: Word) |
||
Line |
лінія |
Line(X1,Y1, X2, Y2: Integer); |
||
Lineto |
лінія до курсора |
LINETO(x,y) |
||
Rectangle |
прямокутник |
Rectangle( XI, Y1, X2, Y2: Integer) |
||
Putpixel |
точка |
PutPixel(X, Y: Integer; Pixel: Word); |
||
Sector |
сектор |
Sector(x, y: Integer; StAngle, |
||
|
|
EndAngle, XRadius, YRadius: Word); |
||
Setlinestyle |
стиль лінії |
SetlineStyle(LineStyle: Word; Pattern: Word; Thickness: Word); |
||
Вікна перегляду |
||||
Setviewport |
встановити вікно перегляду |
SetViewPort(x1, у1, х2, у2: Integer; Clip: Boolean); |
||
Clearviewport |
очистити вікно |
clearviewport; |
||
Cleardevice |
очистити екран |
cleardevice; |
||
Кольорове забарвлення |
||||
Getbkcolor |
видати колір фона |
function getbkcolor; |
||
Getcolor |
видати колір ліній |
function getcolor; |
||
Getmaxcolor |
видати максим.колір |
function getmaxcolor; |
||
Floodfill |
заповнити фігуру кольором |
FloodFill(X, Y: Integer; Color: TColorRef); |
||
Setbkcolor |
встановити колір фону |
SetBkColor(; Color: TColorRef); |
||
Setcolor |
встановити колір ліній |
SetColor(; Color: TColorRef); |
||
Setfillstyle |
встановити стиль заповнювача |
SetFillStyle( Pattern: Word; Color: Word); |
||
Графічне зображення |
||||
Getimage |
розмістити в ОП зображення |
Getlmage(x1, у1, х2, yZ Integer; var BitMap); |
||
Putimage |
видати зображення на екран |
Putlmage(X, Y: Integer; var BitMap; BitBIt: Word); |
||
Imagesize |
визначити розмір зображення в оперативній пам'яті |
function lmageSize(x1, у1, х2, у2: Integer): Word; |
||
Обробка тексту |
||||
Settextstyle |
встановити стиль тексту |
SetTextStyle(Font, Direction: Word; CharSize: Word); |
||
settext justify |
вирівнювання тексту |
SetTextJustify(Horiz, Vert: Word); |
||
Textheight |
висота тексту |
function TextHeight(TextString: string): Word; |
||
Textwidth |
ширина текту |
function TextWidth(TextString: string): Word; |
||
Outtext |
видати текст на екран |
OutText(TextString: string); |
||
Outtextxy |
видати текст на екран в координатах |
OutTextXY(X,Y: Integer; TextString: string); |
||
Визначення положення курсора, координат вікна, переміщення курсора |
||||
getx ,gety |
видати координати курсора |
function GetX: Integer; function GetY; Integer; |
||
getmaxy getmaxx |
видати максимальні координати курсора |
function GetMaxX: Integer; function GetMaxY: Integer; |
||
Moveto |
перемістити курсор |
MoveTo(X, Y: Integer); |