КАТЕГОРИИ:


Астрономия- (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) П Архитектура- (3434) Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Война- (14632) Високи технологии- (1363) География- (913) Геология- (1438) 1065) House- (47672) Журналистика и масови медии- (912) Изобретения- (14524) Чужди езици- (4268) Компютри- (17799) Изкуство- (1338) История- (13644) Компютри- (11121 ) Художествена литература (373) Култура- (8427) Лингвистика- (374 ) Медицина- (12668 ) Naukovedenie- (506) Образование- (11852) Защита на труда- ( 3308) Педагогика- (5571) P Политика- (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) Олимпиада- (1312) Политика- (7869) Право- (5454) Инструменти- ( 1369) Програмиране- (2801) Производство- (97182) Промишленост- (8706) Психология- (18388) Земеделие- (299) Социология- (6455) Спорт- (42831) Строителство- (4793) Търговия- (5050) Транспорт- (2929) Туризъм- (1568) Физика- (3942) ) Химия- (22929 ) Екология- (12095) Икономика- (9961) Електроника- (8441) Електротехника- (4623) Енергетика- (12629 )

Подаване на аргументи

Вижте също:
  1. В бизнес разговор е обичайно да се отделят 5 етапа (фази): началото, предаването на информация, аргументацията, обобщаването, вземането на решения.
  2. Видове аргументи
  3. ВЪПРОС 44. ТРАНСФЕР НА СВЕТЛИНА. ПРЕДИМСТВА ПРЕДИ ПЛАТЕН ТРАНСФЕР. ОПРЕДЕЛЯНЕ НА СИЛАТА НА ФИКСИРАНЕ.
  4. ВЪПРОС 50. ТРАНСМИСИЯ "СТЪКЛО". ОСНОВНИ ПАРАМЕТРИ И ХАРАКТЕРИСТИКА НА ИЗЧИСЛЯВАНЕТО.
  5. Възпроизвеждане на единици физически величини и прехвърляне на техните размери.
  6. Основен трансфер на средния мост на автомобила Камаз
  7. Основно предаване, диференциал
  8. ПРОБЛЕМИ НА GRAMMATIC TRANSFER. ТРАНСФЕРНИ ИЗКУСТВА
  9. Здравни проблеми, технологична област, прехвърляне на редица документи.
  10. Завършване на производствения процес, прехвърлянето на готовите продукти в склада и продажбата му.
  11. Използване на аргументи с #define
  12. Спирачна предавка

Един аспект от нотацията изисква изясняване: какво се случва с ценностите, предавани като аргументи на подпрограмата?

Помислете за обаждане във формуляра

r (a1, a2, ..., an)

подходящи за програмата

r (х1: Т1, х2: Т2, ..., хн: Тп) е ...

където r може да бъде както функция, така и процедура и обаждането може да бъде квалифицирано, както в br (...) . Изразите a1, a2, ..., a се наричат ​​действителни аргументи и xi се наричат ​​формални. (Не забравяйте, че за параметрите на типа общ, остава терминът "параметър".)

Появяват се важни въпроси: каква е съответствието между фактическите и формалните аргументи? Какви операции се допускат на официалните аргументи? Какъв е техният ефект върху релевантните фактически аргументи?

Отговорът на първия въпрос: ефектът от обвързването на реалните - формални аргументи е същият като съответното задание. И двете операции се наричат привързаност . При предишното повикване можем да приемем, че стартирането на програма започва с изпълнението на команди, неофициално еквивалентни на задания:

x1: = a1; x2: = a2; ... xn: = an

Отговорът на втория въпрос: вътре в тялото на програмата, всеки формален аргумент x е защитен. Програмата не може да прилага директни модификации, като например:

[X]. Присвояване на x стойности във формата x: = ...

[X]. Процедури за създаване, където x е целта: създайте x.make (...)

Читателите, запознати с механизма за прехвърляне, познат като повикване по стойност, ще разберат, че ограниченията са по-строги: когато се наричат ​​по стойност, официалните аргументи се инициализират с действителни стойности, но те могат да бъдат целта на всяка операция. аргументи? - произтича от факта, че привързаността се използва за уточняване на семантиката на обвързването на формални и фактически аргументи. Прикачването (виж лекция 8) означава копиране на връзка или на обект. Зависи от това дали съответните типове са разширени:

[X]. За връзки (обикновен случай) при преминаване на аргументи, връзката се копира, - не се използва или е прикрепена към обекта.

[X]. За разширените типове (включително основните типове INTEGER , REAL и т.н.) обектът се копира при преминаване на аргументи.

В първия случай забраната на операциите за директно модифициране означава, че справката не може да бъде променена чрез повторно прикачване или създаване. Но ако връзката не е празна, то е позволено да се модифицира прикачения обект .

Фиг. 13.1. Валидни операции по аргумента на връзката

Ако xi е един от официалните аргументи r , тогава тялото на програмата може да съдържа повикване:



xi.p (...)

където p е процедура, приложима към xi (декларирана в базовия клас на типа Ti на аргумента xi ). Процедурата може да променя полетата на обект, прикачен към xi по време на изпълнение, т.е. обект, прикачен към съответния действителен аргумент ai .

Извикването q (a) никога не може да промени стойността на a, ако a е от разширения тип и е обект. Ако a е връзка, връзката не се променя, но обектът към него може да се промени в резултат на обаждането.

Има много причини, поради които програмите не бива да позволяват директна промяна на аргументите им. Един от най-убедителните е противоречивите задачи . Да предположим, че езикът позволява присвояване на аргументите и процедурата [23]

dont_I_look_innocuous (a, b: INTEGER) е - изглеждам

- безобидни, но не ми вярвайте.

правя

а: = 0; b: = 1

край

Сега помислете за обаждането dont_I_look_innocuous (x, x) . Каква е стойността на x след връщане: 0 или 1 ? Отговорът зависи от начина, по който компилаторът изпълнява промените на формално-действителните аргументи, когато програмата излезе. Това отразява не само Fortran програмистите.

Разрешаването на програмата да променя аргументите води до ограничения на действителните аргументи. В този случай трябва да е елемент, способен да промени стойността си, което е допустимо за променливи, но не за постоянни атрибути (вж. Глава 18). Невалиден аргумент е същността на текущите , изрази като a + b . Премахването на модификацията на аргументите ви позволява да избегнете такива ограничения и да използвате каквито и да е изрази като действителни аргументи.

Последствието от тези правила е признанието, че само три начина позволяват модифициране на стойността на референцията x : процедурата за създаване на създаване на x ... ; задание х: = y ; и опита за задаване xa = y , обсъден по-долу. Преминаването на x като действителен аргумент никога не променя х .

Това също означава, че процедурата не връща нито един резултат, функцията е официален резултат, представен от обекта на резултата . За да получите няколко резултата, е необходимо едно от следните две неща:

[X]. Използвайте функция, която връща обект с няколко полета (обикновено се връща препратка към такъв обект).

[X]. Използвайте процедура, която променя полетата на обектите със съответните атрибути. След това клиентът може да потърси тези полета.

Първият подход е подходящ, когато става въпрос за комбинирания резултат. Например, една функция не може да върне две стойности, съответстващи на заглавието и годината на публикуване на книгата, но тя може да върне единична стойност от типа BOOK , с атрибутите title и publication_year . В по-общи ситуации се прилагат процедури. Тази техника ще бъде обсъдена с въпроса за страничните ефекти в раздела за принципите на модулното проектиране [24].

<== предишна лекция | следващата лекция ==>
| Подаване на аргументи

; Дата на добавяне: 2014-01-07 ; ; Прегледи: 106 ; Нарушение на авторски права? ;


Вашето мнение е важно за нас! Дали публикуваният материал е полезен? Да | не



ТЪРСЕНЕ ПО САЙТА:


Препоръчителни страници:

Вижте също:



ailback.ru - Edu Doc (2013 - 2018) година. Всички материали, представени на сайта само с цел запознаване с читателите и не извършват търговски цели или нарушаване на авторски права! Последно добавяне на IP: 11.45.9.158
Повторно генериране на страницата: 0.003 сек.