Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лекція- 5.7. Підпрограми функції та процедури у мові Pscl BC

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

План-конспект проведення лекційного заняття з дисципліни «Інформатика»

Модуль 5. Структуровані типи даних (масиви, рядки, записи та файли), підпрограми

Лекція: 5.7. Підпрограми (функції та процедури) у мові Pascal ABC.

ВСТУП

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

  1.  Загальні відомості про підпрограми

Будь-яка процедура або функція повинна бути попередньо описана у описовому розділі. Опис підпрограми має вигляд:

procedure ім’я (список формальних параметрів);

описовий розділ

begin

оператори

end;

Опис функції має вигляд:

function ім’я (список формальних параметрів): тип значення, що повертається;

описовий розділ

begin

оператори

end;

Оператори підпрограми, разом з операторними дужками, називають тілом підпрограми. Список формальних параметрів разом із дужками може бути відсутнім. Він складається з одної або декількох секцій, розділених символом ";". Кожна секція складається із списку змінних, перелічених через кому, після якого слідують двокрапка і тип. Кожна секція може починатися із службового слова var, що вказує на передавання параметрів за посиланням.

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

Приклад опису процедури:

procedure Reverse(var a: array [1..100] of integer; n: integer);
var i,v: integer;
begin
  for i:=1 to n div 2 do
  begin
    v:=a[i];
    a[i]:=a[n-i+1];
    a[n-i+1]:=v;   
  end;
end;

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

function Add(a,b: real): real;
begin
  Add:=a+b;
end;

Ім’я функції може використовуватися з метою повернення значення тільки у левій частині оператора присвоювання. Якщо ім’я функції використовується у виразі, це трактується як рекурсивний виклик цієї функції. Замість імені функції усередині тіла функції можна використовувати спеціальну змінну з ім’ям Result. На відміну від імені функції, змінну Result можна використовувати у виразах:

function MinElement(var a: array [1..100] of real; n: integer): real;
var i: integer;
begin
  Result:=a[1];
  for i:=1 to n do
    if a[i]<Result then Result:=a[i];
end;

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

  1.  Параметри процедур та функцій

Параметри, що вказуються при опису підпрограми, називають формальними. Параметри, що вказуються при виклику підпрограми, називають фактичними. Якщо формальний параметр описаний за допомогою службового слова var, то його називають параметром – змінній та говорять, що він передається за посиланням. Якщо параметр описаний без слова var, то його називають параметром – значенням та говорять, що він передається за значенням.

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

procedure PrintSquare(i: integer);
begin
  writeln(i*i);
end;

Тоді при виклику PrintSquare(5*a-b) значення 5*a-b буде обчислено і присвоєно змінній i, після чого виконується тіло процедури. Якщо параметр передається за посиланням, то при виклику підпрограми фактичний параметр заміняє собою відповідний йому формальний параметр. У результаті, будь-яки зміни формального параметра – змінної усередині процедури приводять до відповідних змін фактичного параметра. Наприклад, якщо описана процедура:

procedure Mult2(var a: integer);
begin
  a:=a*2;
end;

то після виклику Mult2(d) значення d збільшується у 2 рази.

У якості фактичного параметра – значення можна вказувати будь-який вираз, тип якого співпадає з типом формального параметра або неявно до нього приводиться. Як фактичний параметр – змінну можна вказувати тільки змінну, тип якої точно співпадає з типом формального параметра.

При передаванні параметра за посиланням у підпрограму передається адреса фактичного параметра. Тому, якщо параметр займає багато пам’яті (масив або запис), звичайно він передається за посиланням. У результаті, у процедуру передається не сам параметр, а його адреса, що зменшує необхідний обсяг пам’яті та збільшує швидкість виконання програми. Наприклад:

procedure Print(var a: array [1..10] of integer; n: integer);
var i: integer;
begin
  for i:=1 to n do
    write(a[i],' ');
  writeln;
end;

Параметр також може описаний за допомогою службового слова const. Це означає, що змінювати його у підпрограмі заборонено. Наприклад:

procedure PrintSquare1(i: integer);
begin
  i:=i*i; // верно
  writeln(i);
end;
procedure PrintSquare2(const i: integer);
begin
  i:=i*i; // помилка!!!
  writeln(i);
end;

В Pascal ABC константний параметр передається за значенням (в Delphi – за посиланням).

  1.  Локальні та глобальні змінні

Змінні, що описані у описовому розділі підпрограми, називають її локальними змінними. Змінні, що описані зовні підпрограми, називають глобальними відносно підпрограми. Параметри підпрограми вважають її локальними змінними.

Якщо ім’я локальної змінної співпадає з ім’ям глобальної змінної, то локальна змінна приховує глобальну так, що до глобальної змінної неможливо звернутися усередині підпрограми. Наприклад:

var i: real;

procedure p;

var i: integer;

begin

  

 i:=5; // присвоювання локальній змінній;

end;

Література

  1.  Попов В.Б. Паскаль и Дельфи. Самоучитель – СПб.: Питер, 2004. – 544 с.
  2.  Глушаков С.В., Зорянский В.Н., Хоменко С.Н. Программирование на Turbo Pascal 7.0 (TP 7) – Харьков: Фолио, 2005. – 501 с.
  3.  Справочная система Pascal ABC.




1. Почему в воровском мире был культ Есенина
2. правовых отношений с точки зрения вариативности поведения сторон диспозитивный метод метод заперта м.html
3. ЗАДАНИЕ 1 По данным бухгалтерского баланса представленного в методических указаниях проанализируем и о
4. Хочу обнять поцеловать И никогда не отпускать Ты в крик души моей поверь Я не отдам ТЕБЯ теперь
5. Задачи и методы прогнозирования НТП на различных стадиях его развития
6. Тема- Культура как исторический процесс
7. Оценка готовности детей дошкольного возраста к обучению в школе
8. Особливості функціонування партійних систем
9. на тему- ldquo;Гіпотезаrdquo; Дніпропетровськ 2000 Гіпотезою
10. Некоторые аспекты борьбы с внутрибольничными инфекциями
11. Тема- основні пристрої ПК
12. Состояние финансов сельского хозяйства и методы его оздоровления
13. Главная особенность работы- На основание нельзя передавать большие динамические нагрузки так как не
14. записка
15. Банковский комерческий товарный кредит общее и особенное
16. РЕФЕРАТ дисертації на здобуття наукового ступеня доктора економічних наук Київ~ Ди
17. тематика басен Горе от ума А
18. Знакомство С самого детства ты мечтала о прекрасной жизни так как было в дорамах которые ты частенько см
19. тематического расположения материала
20. Слуцкае паўстаньне