
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Практична робота №1
- •Організація вводу та виводу даних
- •Мета роботи: ознайомитись з конструкціями мови Turbo Pascal, структурою програм, стандартними типами даних і процедурами вводу та виводу.
- •Теоретичні відомості
- •1 Особливості мови Turbo Pascal
- •1.1 Спеціальні символи
- •1.2 Зарезервовані (ключові) слова
- •1.3 Ідентифікатори
- •1.5 Числа
- •1.6Рядки
- •1.7 Коментарі
- •2 Структура програми
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №2
- •Логічні та циклічні структури
- •Теоретичні відомості
- •1 Логічні структури
- •1.1 Команда розгалуження if (умовна команда)
- •1.2 Команда goto
- •1.3 Команда вибору (сase)
- •2 Циклічні структури
- •2.1 Команда циклу з параметром (for)
- •2.2 Команда циклу з передумовою (while)
- •2.3 Команда циклу з постумовою (repeat)
- •2.4 Порівняння роботи команд циклу while, repeat та for
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №3
- •Одновимірні масиви. Сортування
- •Мета роботи: ознайомитись з поняттям одновимірних масивів та діями над ними, навчитися застосовувати різні методи сортування для розв’язку математичних і технічних задач.
- •Теоретичні відомості
- •1 Одновимірні масиви
- •1.1 Додавання елементів масиву
- •1.2 Лічильник
- •1.3 Екстремуми
- •2 Методи сортування
- •2.1 Метод лінійного сортування
- •2.2 Сортування методом «бульбашки»
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №4
- •Багатовимірні масиви
- •Мета роботи: вивчити технологію роботи з багатовимірними масивами.
- •Теоретичні відомості
- •1 Опис багатовимірних масивів
- •2 Доступ до елементів масивів
- •3 Масиви ідентичного типу
- •4 Головна та побічна діагоналі
- •6 Ввід матриці
- •7 Виведення матриці
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №5
- •Підпрограми
- •Мета роботи: ознайомитись з правилами використання підпрограм, вивчити відмінності між процедурами та функціями.
- •Теоретичні відомості
- •1 Процедури та функції
- •1.1 Опис процедури
- •1.2 Опис функції
- •1.3 Формальні та фактичні параметри
- •1.3.1 Передача параметрів у підпрограмах
- •1.3.2 Виклик підпрограм
- •1.4 Глобальні та локальні змінні
- •1.5 Основні відмінності між функціями і процедурами
- •2 Рекурсивні функції
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №6
- •Символьні та рядкові змінні
- •Мета роботи: ознайомитись з прийомами роботи із символьними та рядковими змінними.
- •Теоретичні відомості
- •1 Символьні змінні
- •2 Множини
- •3 Рядкові змінні
- •3.1 Оголошення рядкових змінних
- •3.2 Доступ до окремих елементів рядка
- •3.3 Зміна поточної довжини рядка
- •3.4 Злиття рядків
- •3.5 Порівняння рядків
- •3.6 Порожній рядок
- •3.7 Рядки і символи
- •3.8 Масиви символів і рядка
- •3.9 Стандартні підпрограми для обробки рядків.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №7
- •Записи. Записи з варіантами
- •Мета роботи: навчитись створювати прості бази даних за допомогою записів та записів з варіантами.
- •Теоретичні відомості
- •1 Записи
- •2 Записи з варіантами.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №8
- •Файли: текстові, типізовані, нетипізовані
- •Мета роботи: ознайомитись з випадками використання файлів, типами файлів та методами обробки елементів файлів.
- •Теоретичні відомості
- •1 Текстові файли
- •2 Типізовані файли. Мітки
- •3 Нетипізовані файли
- •Приклад 4:
- •Приклад 5:
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №9
- •Мета роботи: вивчити структуру та особливості роботи з модулями в Turbo Pascal.
- •Теоретичні відомості
- •1 Структура модуля
- •1.1 Заголовок модуля
- •1.2 Інтерфейс модуля
- •1.3 Виконавча частина модуля
- •1.4 Розділ ініціалізації.
- •2 Етапи розробки модуля
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №10
- •Графіка
- •Мета роботи: ознайомитись з принципами побудови графіків функцій та інших графічних об’єктів за допомогою засобів TurboPascal.
- •Теоретичні відомості
- •1 Основні процедури і функції модуля Graph
- •2 Робота із зображеннями.
- •3 Побудова і масштабування графіків
- •Індивідуальні завдання
- •Контрольні питання
- •1 Дані динамічної структури
- •2 Вказівник
- •3 Списки
- •4 Стек. Черга
- •4.1 Алгоритм побудови стека
- •4.2 Алгоритм побудови черги
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №12
- •Об’єктно-орієнтоване програмування
- •Мета роботи: засвоїти матеріал щодо можливостей TurboPascal при створенні об’єктів.
- •Теоретичні відомості
- •1 Поняття «об'єкт»
- •2 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
1.6Рядки
Рядок символів – це послідовність символів з розширеного набору символів коду ASCII, яка береться в одинарні лапки. Якщо до складу рядка необхідно включити символ одинарних лапок, то цей символ повторюється двічі.
Керуючі символи у рядку представлені у вигляді цілого десяткового числа, безпосередньо перед яким ставиться символ #. Вказане десяткове число повинне бути кодом ASCII потрібного керуючого символу.
1.7 Коментарі
Коментар – фрагмент тексту програми, що обмежений зліва символом { або складеним символом (*, а справа – символом } або складеним символом *). Коментарі в програмі носять суто інформативний характер, вони ігноруються компілятором та не впливають на роботу програми.
Особливим випадком є коментар, у якому безпосередньо після відривної дужки, { або (*, пишуть символ $. Такий коментар є директивою компілятора.
2 Структура програми
Програма складається із заголовка
program <ім’я програми>;
розділів описової частини
uses – приєднання бібліотек (модулів);
label – визначення міток;
const – визначення констант;
type – опис типів;
var – визначення змінних;
procedure – визначення процедур користувача;
function – визначення функцій користувача
і частини, що виконується
begin
<розділ команд>
end.
Заголовок і всі інші розділи, окрім останнього є необов'язковими. Роздільник між командами – «;». В кінці програми повинна стояти крапка.
Розділ приєднання бібліотек (модулів) описується в тих випадках, коли в програмі використовуються константи, типи, змінні, процедури або функції, що визначені у стандартних модулях Turbo Pascal, крім модуля System, або в модулях, які створені користувачем.
Мітки можуть передувати будь-якому оператору програми та відокремлюються від нього двокрапкою. Мітки використовуються сумісно з оператором переходу goto, у якому мітка записується без двокрапки. Опис міток без звернення до них оператора goto безглуздий, однак помилкою не вважається.
Label 1, Quit;
…
Goto 1;
1: a:=1;
Goto Quit;
…
Quit: end.
Всі величини, які входять до програми повинні бути описані або в розділі констант, якщо вони не міняють своє значення, або в розділі змінних, якщо вони будуть обчислюватися. У Turbo Pascal розрізняють прості та типізовані константи.
Способи опису розділів:
const <константа 1>=<значення 1>;
<константа n>=<значення n>;
var <список змінних 1>: <тип змінних 1>;
<список змінних n>:<тип змінних n>;
Елементи списків записують через кому. Кутові дужки – це спосіб формалізованого опису конструкцій мови. У конкретних програмах їх не використовують.
Типізовані константи дозволяють відразу оголосити змінну і привласнити їй початкове значення. У їх описі вказують як значення константи, так і її тип:
const <ім'я константи 1>:<тип 1>=<значення 1>;
<ім'я константи n>:<тип n>=< значення n>;
На відміну від звичайних констант, значення типізованих констант в програмі можуть змінюватися.
1) Типізовані константи стандартних типів
const
Step:real = 0.001;
2) Типізовані константи вказівного типу
type
Ptr = ^integer;
const
IntPtr:Ptr = nil;
Int1:integer = 0;
Int1Ptr:Ptr = @Int1;
3) Типізовані константи структурованих типів
3.1) Типізовані константи типу «масив»
const
DigVector:array = [1..7]of real = (0.1, 5.89, 2.76,3.75);
3.2) Типізовані константи типу «множина»
type
Digits = set of 0..9;
const
DigSet:Digits = [0,2,4,6,8];
3.3) Типізовані константи типу «запис»
type
Rec = record
R:real;
B:Boolean;
C:char;
end;
const
RecElem:Rec = (R:3.1415; B:true; C:’*’);
3.4) Типізовані константи об’єктного типу
type
Point = object
X,Y:integer;
end;
const
ZeroPoint:Point = (X:0; Y:0);
4) Типізовані константи процедурного типу
type
FuncType = function(X:real);
function SH(X:real):real;far;
begin
SH := (exp(X)-exp(-X)/2;
end;
begin
CH := (exp(X)+exp(-X)/2;
end;
const
CurrentFunc:FuncType = SH;
Тип даних – це множина значень, які можуть приймати об'єкти програм, а також набір операцій, які можна виконати під цим значенням. Множину типів Turbo Pascal поділяють на дві групи:
стандартні (визначені) типи;
типи, що визначаються користувачем (тип користувача).
До стандартних типів належать:
група цілих типів (Byte, Shortint, Word, Integer, Longint);
група дійсних типів (Single, Real, Double, Extended, Comp);
група булевих типів (Boolean, ByteBool, WordBool, LongBool);
символьний тип (Char);
рядкові типи (String, Pchar);
вказівний тип (Pointer);
текстовий тип (Text).
Символьний, цілі та буле вий типи належать до порядкових типів, тобто для даних визначено наступне і попереднє значення.
1) Група цілих типів
В Turbo Pascal включені п’ять типів для опису змінних та констант, які представляють цілі числа.
Таблиця 2 – Характеристики цілих типів
Назва типу |
Ідентифікатор |
Діапазон значень |
Розмір пам’яті |
Коротке ціле без знака |
Byte |
0...255 |
1 байт |
Коротке ціле зі знаком |
Shortint |
-128...127 |
1 байт |
Ціле без знаку |
Word |
0...65535 |
2 байта |
Ціле зі знаком (основний тип) |
Integer |
-32768...32767 |
2 байта |
Довге ціле зі знаком |
Longint |
-2147483648...2147483647 |
4 байта |
2) Група дійсних типів
До групи дійсних типів входять п’ять типів. У цій групі необхідно виділити тип Comp, який є «гібридом» цілого та дійсного типів. З одного боку, змінні та константи цього типу можуть мати тільки цілі значення, з іншого, тип Comp не є порядковим. Відповідно до цього, типу Comp не притаманні властивості порядкових типів і тому його відносять до групи дійсних.
Дійсні
числа можна записати у форматі з
фіксованою крапкою, наприклад 5.04,
-12.109, або у форматі з плаваючою крапкою,
наприклад -5.2Е+2 (це -520.0), 16.1E-3 (0.0161). Тобто
.
Таблиця 3 – Характеристики дійсних типів
Назва типу |
Ідентифікатор |
Діапазон значень |
Розмір пам’яті |
Дійсне одинарної точності |
Single |
1.5*10-45 – 3.4*1038 |
4 байта |
Дійсне (основний тип) |
Real |
2.9*10-39 – 1.7*1038 |
6 байтів |
Дійсне подвійної точності |
Double |
5.0*10-324 – 1.7*10308 |
8 байтів |
Дійсне підвищеної точності |
Extended |
3.4*10-4932 – 1.1*104932 |
10 байтів |
Ціле у форматі дійсного |
Comp |
-9.2*1018 – 9.2*1018 |
8 байтів |
3) Група булевих типів
Усі реалізації мови Pascal, у тому числі і Turbo Pascal, до версії 6.0, містили лише один буле вий тип Вoolean, елементи якого можуть приймати лише два логічних значення: false (хибно) і true (істина).
Таблиця 4 – Характеристики булевих типів
Ідентифікатор типу |
Значенню false відповідає |
Значенню true відповідає |
Розмір пам’яті |
Вoolean |
число 0 |
довільне число, відмінне від 0 |
1 байт |
ByteBool |
число 0 |
1 байт |
|
WordBool |
число 0 в обох байтах |
2 байта |
|
LongBool |
число 0 у всіх байтах |
4 байта |
В Turbo Pascal 7.0 додано ще три булеві типи ByteBool, WordBool, LongBool. Нові булеві типи введено для забезпечення сумісності програми, що розроблюється, з оболонкою Windows, у якій значенню false відповідає число 0, а значенню true – довільне число, що відрізняється від 0. Результуючим типом операцій порівняння залишається тип Вoolean.
4) Символьний тип
Символьному типу відповідає стандартний ідентифікатор Сhar. Символьний тип – це безліч символів кодової таблиці комп'ютера ASCII. ASCII – American Standard Code for Information Interchange. Символьна константа – це символ взятий в лапки, наприклад «а».
5) Рядкові типи
З точки зору структур даних рядкові типи, на відміну від інших стандартних типів, є структурними. Однак, враховуючи широке застосування рядків у програмуванні, в Turbo Pascal для них введені стандартні типи String і Pchar. Рядки типу String реалізовані у всіх версіях Turbo Pascal і не мають відмінностей. Тип Pchar підтримує формат надання рядків, ознакою кінця яких є символ з кодом 0 та які мають назву рядків із завершальним нулем або ASCIIZ-рядками. Такі рядки використовуються у Windows.
Хоча тип Pchar введено для підтримки рядкових структур даних, фактично він є вказівним типом із описом
type Pchar=^Char;
Змінні ж цього типу обробляються як масив типу
array[0..K] of Char;
де К – кількість символів у рядку, не враховуючи символу – ознаки кінця рядка.
6) Вказівний тип
Стандартний вказівний тип має вказівник Pointer. Значеннями змінних та констант вказівного типу є адреси оперативної пам’яті, що складаються з адреси сегмента та зміщення. Елементи типу Pointer, на відміну від вказівних типів, які визначаються користувачем, можуть містити адресу змінної будь-якого типу.
7) Текстовий тип
Стандартний текстовий тип Техt використовується для опису текстових файлів.
До типів, що визначаються користувачем, належать:
перелічувальний тип;
інтервальний тип;
вказівний тип (крім стандартного типу Pointer);
структуровані типи;
процедурний тип.
Перелічувальний та інтервальний типи є порядковими.
1) Перелічувальний тип
Перелік дозволяє програмісту описувати нові типи даних, значення яких визначає сам програміст.
Опис перелічувального типу складається із списку його елементів, що беруться в круглі дужки. Кожен з елементів – унікальний ідентифікатор.
type
Season = (Spring, Summer, Autumn, Winter);
До значень цього типу не застосовуються ні арифметичні операції, ні стандартні процедури вводу-виводу.
2) Інтервальний тип
Інтервальний тип – діапазон значень будь-якого порядкового типу, що має назву базового. При описі інтервального типу вказують найменше та найбільше значення діапазону значень, які припустимі для цього типу. Мінімальне та максимальне значення інтервалу розділяють двома крапками.
Змінна інтервального типу має всі властивості змінних базового типу, але її значення на етапі виконання повинно належати вказаному діапазону.
3) Вказівний тип
Значеннями вказівних величин є адреси пам’яті. На відміну від стандартного вказівного типу Pointer, вказівний тип користувача визначає множину значень, які вказують на динамічні змінні визначеного типу, що має назву базового.
При описі вказівних типів вказівник на будь-який тип необхідно описати до об’яви самого типу. При роботі з вказівними типами використовується стандартна константа nil, що представляє значення вказівника, який ні на що не вказує.
type
PtrStack=^TStack;
TStack=record;
Inf:Real;
Link:PtrStack;
end;
4) Структуровані типи
До структурованих типів у Turbo Pascal належать:
тип-масив (array);
тип-множина (set);
тип-запис (record);
файловий тип (file);
об’єктний тип (object).
Структуровані типи слугують для опису даних, які можуть містити багато значень, а не одне, як дані стандартних типів.
type
Мatrix=array [ 1..3] of real;
var і:integer;
M:Matrix;
4) Процедурний тип
Процедурний тип дозволяє оголошувати змінні, яким допускається присвоювати імена процедур, функцій, методів, а також передавати такі змінні та імена як параметри. Опис процедурних типів має практично той самий синтаксис, що і оголошення процедур, функцій та методів. Відмінністю є відсутність ідентифікатора процедури/функції. Змінна процедурного типу є адресою пам’яті, де розташовано процедуру і, таким чином, фактично є вказівною змінною особливого виду.
type
TProc=procedure (var X,Y:real);
TFunc=function (X:integer):real;
Процедури та функції розглядаються у практичній роботі № 5.
Ввід та вивід з клавіатури здійснюється за допомогою стандартних операторів writeln, write, read, readln. Write відрізняється від writeln тим, що після виводу інформації за допомогою оператора write, курсор знаходиться в цьому ж рядку, а після використання writeln переходить до нового рядку. Аналогічно read і readln.
Readln (A,B,C); – це ввід чисел або символів (в залежності від типу кожної змінної) А,В,С із першого рядка. Оператор readln без змінних означає перехід до наступного рядку. Такі вирази як:
readln(a,b,c); і read(a); read(b); read(c); readln; – еквівалентні.
Приклад 1:
Ввід та вивід символів. За допомогою цієї програми можна ввести та вивести символ.
program simvol;
var a:char;
begin
writeln('Введи символ');
readln(a);
writeln(a);
end.
Приклад 2:
Ввід та вивід рядка. За допомогою цієї програми можна ввести та вивести набір символів.
program ryadok;
var a:string;
begin
writeln(Введи рядок ');
readln(a);
wnteln(a);
end.
Приклад 3:
Ввід та вивід масивів.
Ввід та вивід одномірних масивів.
program Mas1;
type
Мatrix=array [ 1..3] of real;
var і:integer;
M:Matrix;
begin
writeln('Введіть одновимірний масив в стовпчик');
for і:=1 to 3 do {циклічне введення масиву}
begin
writeln('Введіть m[‘,i,’]= '); {m[1]=3.14}
readln(m[i]); {m[2]=3.2 }
end;
for i:=l to 3 do {циклічне виведення одновимірного масиву}
begin
wnteln('m[‘,i,’]=',m[i]);
end;
end.
Ввід та вивід багатовимірних масивів:
по стовпчиках.
program mas2;
const n=5;
m=7;
var a:array [1..n,1..m] of real;
i,j:integer;
begin
for j:=l to m do {a[1,1]=1.3}
for і:=1 to n do {a[2,l]=4.5}
begin
write('а[',і,',',j,']=');
readln(a[i,j]);
end;
for j:=1 to m do
for i:=l to n do
begin
writeln('a[',і,',',j,']= ',a[i,j]);
end;
end.
по рядках.
program mas3,
const n=5;
m=7;
var a:array [l..n,l..m] of real;
і,j:integer;
begin
for i:=l to n do
for j:=l to m do
begin
writeln('a[',і,',',j,']=');
readln(a[i,j]);
end;
for i:=l to n do
for j:=l to m do
begin
writeln('a[',і,',',j,']=',a[i,j]);
end;
end.