Інформаціїні технології Неділя, 19.05.2024, 18:52
Вітаю Вас Гість | RSS
Головна | Паскаль | Реєстрація | Вхід
» Меню сайту

» Форма входу

» Категорії розділу
Процедури і Функції [1]
Множини [1]

Головна » Статті » Вищий рівень » Процедури і Функції

Процедури і Функції

—  Теоретичні відомості

Технологія програмування з використанням процедур та функцій, організованих користувачем, дає ряд переваг:

З'являється можливість організувати роботу кількох програмістів над однією програмою з наступним об'єднанням окремо відлагоджених блоків в єдине ціле.

Можна проводити відлагодження окремих блоків і лише після цього  програми в цілому.

Значно економитьcя оперативна пам’ять комп’ютера.

—  Функцii  користувача

Pascal надає користувачу можливiсть самому реалiзувати потрiбнi йому алгоритми в видi функцiй i звертатися до них з програми. Опис функції складається з заголовку та тіла функції.

Формат заголовку:

FUNCTION <iм'я> (формальнi параметри): <тип результату>;

  Iм’я функцiї – унiкальний в межах блоку iдентифiкатор. Результат обчислення функцii може мати довiльний скалярний тип, тип String i тип "вказiвник". Тiло функцii являe собою локальний блок, по структурi аналогiчний програмi:

FUNCTION <iм'я> (формальні парамутри) : <тип результату>;

 <роздiли описiв>;

Begin

     <роздiл операторiв>;

End;

В роздiлi операторiв повинен знаходитися як мiнiмум один оператор, що присвоює iдентифiкаторовi функцiї (iменi) її значення.

Звертання до функцiї здiйснюється по iменi з вказанням списку фактичних аргументiв.  Кожен аргумент повинен відповідати формальному параметру,  вказаному в заголовку функції, і мати той же тип. Наявність параметрів в функції є необов’язковим.

Приклад:

Скласти функцiю, що реалізує пiднесення до степенi. Перетворимо функцію Z=X^y до виду Ln(Z)=(LnX)*Y при x>0.

Function Pow(x, y: Real): Real;

Begin

      if x<0 then pow:=exp(y*Ln(x))

                 else  if x<0 then

                                          begin

                                                Writeln("Увага! Основа степеня вiд"ємна");

                                                 pow:= exp(y*Ln(asb(x)))

                                          end

                                    else if y=0 then pow:=1

                                                      else pow:=0

End;

Виклик функції: Z=pow(2, 1/3);

—  Параметри

Параметри процедур та функцій можуть мати довільний тип, включаючи структурований. Pascal використовує два різних види параметрів в процедурах і  функціях:  параметри-значення та параметри-змінні.

Коли параметри передаються як значення, він використовується в виді змінної, локальної в блоці, яким є процедура або функція. Для локальної змінної виділяється спеціальний фрагмент пам'яті, який має стекову організацію. При передачі в процедуру або функцію фактичні  параметри копіюються в відповідні їм локальні змінні. Основною перевагою передачі параметрів-значень є те, що зміна значень формальних параметрів в процедурах та функціях не призводить до зміри відповідніх їм фактічних змінних в основній програмі.

При передачі параметра-змінної фактичний параметр завди повинен бути змінною. На час виконання процедури або функції фактичний параметр  замінює формальний. Замість копіювання значень, в блок передаються адреси комірок памяті, де розміщуються фактичні параметри  (змінні).  Надалі  будь-яка  дія  над формальним параметром-змінною в дійсності виконується над відповідним фактичним параметром. Параметри-змінні використовуються при передачі в підпрограми великих масивів інформації, що дозволяє уникати обтяжливого копіювання, а також в тих випадках, коли необхідно передати результат з підпрограми в основну програму.

Тип в секції формальних параметрів повинен бути або стандартним, або попередньо означеним.

Приклад:

Запис Procedure Ost(i: Array[1..12] of Real); – помилковий.

Правильний запис: Type MAS = Array[1..12] of Real;

Procedure Ost(i: MAS);

Ознакою того, що параметр передається як змінна, є наявність службового слова VAR перед ідентифікатором.

Приклад:

Type MAS = array[1..12] of real;

Procedure Ost(Var i: MAS);

Область дії ідентифікаторів

Pascal - програма має модульну структуру і може складатися з ряду вкладених блоків. Основна програма – самий великий блок, що не входить в інші.  Об'єкти описані в цьому блоці є глобальними і можуть використовуватися в усіх локальних блоках. Локальні блоки – це процедури і функції користувача.  Описані в них об'єкти є локальними і недоступні в зовнішніх блоках.

Правила користування ідентифікаторами Pascal-програми:

      Кожний ідентифікатор повинен описуватися перед використанням.

Областю дії ідентифікатора є блок, в якому він описаний.

Всі ідентифікатори в блоці повинні бути унікальними, тобто не повторюватися.

Один і той же ідентифікатор може по різному бути визначеним в кожному окремому блоку.

Якщо ідентифікатор підпрограми користувача співпадає з іменем стандартної процедури  або функції, то вони ігноруються  а виконується  підпрограма користувача.

     Однією з поширених помилок програміста є випадкове використання глобальних змінних в процедурах і функціях, де вони змінюють своє значення. Це може призвести до прикрих несподіванок.

 

Категорія: Процедури і Функції | Додав: Cherry (17.04.2012)
Переглядів: 1952 | Коментарі: 1 | Рейтинг: 0.0/0
Всього коментарів: 1
0  
1 Dorel   (06.12.2014 00:24) [Материал]
Ljcbnm xsnrj dct dbrkfltyj

Додавати коментарі можуть лише зареєстровані користувачі.
[ Реєстрація | Вхід ]
» Друзі сайту

» Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0

» Пошук


Copyright MyCorp © 2024
Безкоштовний конструктор сайтів - uCoz