- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Розділ оголошень і угод
- •Розділ текстів процедур і функцій
- •Розділ основного блоку програми
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •1. Оператор if.
- •2. Оператор вибору (case)
- •Оператори циклів у Паскалі
- •1. Цикл із післяумовою (Repeat)
- •2. Цикл із предумовою (While)
- •3. Цикл із лічильником або параметром (For)
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •If підходить тнеn
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •1. Оголошення файлової змінної і прив'язка до файлу на диску
- •2. Читання даних з файлу
- •3. Запис даних у файл
- •Двійкові файли
- •1. Типізовані файли
- •2. Нетипізовані файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •1. Масив
- •2. Список
- •3. Дерево
- •2. Алгоритми
- •1. Лінійний пошук у масиві
- •2. Двійковий пошук
- •3. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
Параметри - значення
Це найбільш поширений і найпростіший спосіб передачі параметрів. У даному випадку параметр вважається звичайною локальною змінною у межах підпрограми, з тією особливістю, що при виклику підпрограми початкове значення параметра автоматично встановлюється рівним значенню відповідного фактичного параметра, заданого при виклику підпрограми. Цей фактичний параметр може бути довільним виразом того ж типу, що і формальний параметр.
Усередині підпрограми можливі довільні дії з даним формальним параметром, але будь-які зміни його значення НІЯК НЕ ВІДБИВАЮТЬСЯ на значеннях змінних поза підпрограмою.
Нижче приводиться приклад процедури, що використовує передачу параметрів за значенням.
procedure SumSquare ( X, У : real ) ;
begin
x := x*x;
Y := Y*Y;
Writeln('Сума квадратів = ',X+Y) end;
Виклик цієї процедури може відбуватись так:
var
А, у : real;
begin
write(‘a=>’); readln(a);
write(‘b=>’);writeln(b);
SumSquare(А,У) ;
При виклику цієї процедури з фактичними параметрами А і В значення цих параметрів (один раз) копіюються у відповідні формальні параметри X і У, і подальші маніпуляції з формальними параметрами усередині процедури "SumSquare ніяк не впливають на значення змінних А і В
Параметри-змінні
Параметри, передані по посиланню (параметри - змінні), вказуються завданням службового слова var перед їхніми ідентифікаторами в списку параметрів. Цей спосіб передачі параметрів використовується в тих випадках, коли необхідно передати деяке значення в точку виклику підпрограми.
Пояснимо це на прикладі. Нехай необхідно обчислити суму і різницю квадратів двох чисел, причому реалізувати ці обчислення у виді процедури. Phj,bvj чорновий начерк такої процедури:
procedure Drafti ( X, Y : real ) ;
var
Sum, Sub : real;
begin
Sum := X*X+Y*Y;
Sub := X*X-Y*Y end;
Обчислення суми і різниці квадратів очевидні, однак приведений приклад не вирішує поставленої задачі, тому що локальні перемінні Sum і Sub, що містять обчислені значення, по визначенню відомі тільки в межах поточного блоку, існують тільки в процесі роботи підпрограми і при закінченні її роботи зникають.
Отже, необхідно використовувати механізм передачі параметрів і передбачити в списку формальних параметрів ще два параметри для суми і різниці квадратів:
procedure Draft2 ( X, Y : real; Sum, Sub : real ) ;
begin
Sum := X*X+Y*Y;
Sub := X*X-Y*Y end;
Що відбудеться при виклику даної процедури, наприклад, у наступному фрагменті?
var
А, У : real;
SumAB, SubAB : real;
begin
A := 1.7;
В:= 8.09;
Draft2(А,У,SumAB,SubAB) ;
Відповідно до правил мови параметри Sum і Sub у процедурі Draft2, передані за значенням, є локальними в межах цієї процедури, тому присвоювання їм будь-яких значень НЕ ПРИВЕДЕ до одержання цих значень змінними SumAB і SubAB.
Для того, щоб зміна в тілі процедури значення формального параметра ПРИВОДИЛА ДО АНАЛОГІЧНОЇ ЗМІНИ відповідного фактичного параметра, необхідно використовувати передачу параметра по посиланню:
procedure SumSub ( X, Y : real; var Sum, Sub : real ) ;
begin
Sum := X*X+Y*Y;
Sub := X*X-Y*Y end;
У цьому випадку формальні параметри Sum і Sub вважаються синонімами відповідних фактичних параметрів у межах процедури. При цьому фактичні параметри повинні бути змінними (не виразами) того ж типу, що і формальні параметри.
Якщо виклик процедури SumSub матиме такий вигляд:
var
А, У : real;
SumAB, SubAB : real;
begin
А:= 1.7;
В:= 8.09;
SumSub(А,У,SumAB,SubAB) ;
то присвоювання параметрам Sum і Sub усередині тіла процедури будуть означати відповідні присвоювання змінним SumAB і SubAB, переданими процедурі як параметрі-змінні. Після завершення процедури ці змінні будуть містити шукані значення.
Приведемо ще один приклад передачі параметрів-змінних. Часто буває необхідно зробити обмін значень між двома змінними. Ці дії можна оформити у виді наступної процедури:
procedure Swap ( var X, У : real ) ;
var
Т: real;
begin
Т:= X;
X := У;
У:= Т
end;
Такий обмін реалізується за допомогою проміжної змінної Т. При виклику цієї процедури, наприклад:
Swap(А,У)
присвоювання параметрам-змінним Х и У в тілі процедури означають присвоювання відповідним фактичним параметрам А і В.
Варто мати на увазі, що змінні файлових типів можуть передаватися в підпрограми тільки як параметри-змінні.