Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

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

Параметри, що вказуються при опису підпрограми, називають формальними. Параметри, що вказуються при виклику підпрограми, називають фактичними. Якщо формальний параметр описаний за допомогою службового слова 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 – за посиланням).

 

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

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

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.

 

<== предыдущая лекция | следующая лекция ==>
Загальні відомості про підпрограми | Приемники АМ сигналов
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 3523; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.