UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75843
останнє поновлення: 2016-12-04
за 7 днів додано 10

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваПАСКАЛЬ: область дії, модулі, структури (реферат)
Автор
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1807
Скачало215
Опис
ЗАКАЧКА
Замовити оригінальну роботу

ПАСКАЛЬ: область дії, модулі, структури.

 

1. Область дії означень та побічний ефект

 

Програма може містити кілька підпрограм, і в них самих можуть бути

підпрограми тощо. Виникає питання, чи можна в одній підпрограмі

використовувати імена, означені в іншій? І зокрема, чи можна в

підпрограмах користуватися іменами з програми, і навпаки? У цьому

параграфі ми дамо відповіді на ці та деякі інші питання.

 

Означення імені задає позначення деякого об'єкта, наприклад, змінної або

підпрограми. Так, після означення

 

var aaa : integer;

 

ім'я aaa позначає змінну цілого типу, а не сталу або щось інше. Таке

завдання позначення об'єкта називається його іменуванням. Виникає

питання, чи можна різні об'єкти іменувати однаково, тобто давати їм те

саме ім'я? Виявляється, можна, але не завжди. Уточнимо це, увівши нове

поняття.

 

Область дії означення імені, або область дії іменування – це сукупність

місць у програмі, де ім'я позначає об'єкт, указаний саме в цьому

означенні. Область дії іменування часто називають "область дії імені",

що не зовсім точно.

 

За правилами мови Паскаль, означення імені діє від того місця програми

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

є підпрограми, то означення діє й у них. Але якщо вони містять своє

власне означення цього імені, то за тими самими правилами до кінця їх

блоків діють їх власні означення.

 

Можна сказати, що власне означення в підпрограмі "перекриває" означення,

записане вище.

 

Приклад 1. У програмі

 

program twovarst(input, output);

 

var t:integer; {1}

 

procedure plus; {1}

 

procedure minus; {1}

 

begin t:=t-1 end; {1}

 

var t:integer; {2}

 

begin t:=1; t:=t+1; minus end; {2}

 

begin t:=1; plus; writeln(t) end. {1}

 

коментарі {1} і {2} позначають перше й друге означення імені t й

відповідні рядки програми, у яких вони діють. При виконанні виклику

процедури minus зменшується значення змінної, означеної в програмі, а

при виконанні операторів процедури plus збільшується значення зовсім

іншої змінної – іменованої в означенні {2}. Означення {1} перекрите в

процедурі plus її власним означенням {2}. Тому при виконанні програми

друкується 0.

 

Таким чином, різні об'єкти можна іменувати однаково, але в різних

підпрограмах (однією з них вважається програма). В означеннях тієї самої

підпрограми усі імена повинні бути різними.

 

Тепер підійдемо з протилежного боку. Нехай у деякому місці програми

використовується ім'я. Як дізнатися, якому з означень, записаних вище,

воно відповідає?

 

Будемо говорити, що програма або підпрограма охоплює підпрограми,

записані в ній, і що вони вкладені в неї. Наприклад, програма twovars

охоплює процедури plus і minus (і вони обидві вкладені в неї), а

процедура plus охоплює minus. З правила, яким задається область дії

означення, випливає, що ім'я в підпрограмі відповідає найближчому з його

означень, записаних вище в підпрограмі або підпрограмах, що її

охоплюють, зокрема, в програмі.

 

Звідси одразу маємо відповіді на питання, поставлені спочатку: у

підпрограмі можна використовувати ім'я, означене в підпрограмі, що її

-----> Page:

0 [1] [2] [3] [4] [5] [6] [7] [8]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ