Три начина за записване на повтарящи се команди

Има3 начина за писане на команди, които се повтарятв програма: цикли, макроси (макроси)(макроси)(отворени подпрограми) и обикновени подпрограми (затворени подпрограми).

Ако повтарящите се команди са разположени в тялото на програмата на едно място,компактно(една след друга), тогава е възможно (необходимо) да се свият повтарящите се действия вцикъл(ако е намерен обобщен запис за повтарящите се действия).

s:=s+x3; за i:=1 до n направи

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

Подпрограмите са два типа:

- затворен (процедури и функции);

В случай наотворена подпрограма, когато се извика (макро извикване), текстът на макроса (макро заместване) се копира в извикващата точка (вместо извикването) и това се прави (от така наречения препроцесор в C) преди стартирането на компилатора.

Нека, например, е необходимо да добавите 3 числа на различни места в програмата3 пъти. За да добавите всяка тройка от числа, можете да направите прост макрос като този (на C препроцесора):

име на макросаофициални параметри на извикване (какво ви позволява да конфигурирате макроса за работа с

L AQItABQABgAIAAAAIQD/FrNIBQMAAHoGAAAOAAAAAAAAAAAAAAAC4CAABkcnMvZTJvRG9jLnht bFBLAQItABQABgIAAAAAAIQDmviZJ3wAAAAkBAAAPAAAAAAAAAAAAAAAAAF8FAABkcnMvZG93bnJl di54bWxQSwUGAAAAAAAQAB ADzAAAAawYAAAAAA "/>#define sum(x,y,z) ((x)+(y)+(z))

B Ai0AFAAGAAgAAAAhAABzHeEFAwAAegYAAA4AAAAAAAAAAAAAAAAALgIAAGRycy9lMm9Eb2MueG1s UEsBAi0AFAAGAAgAAAAhAIwPElfeAAAACAEAAA8AAAAAAAAAAAAAAAAAXwUAAGRycy9kb3ducmV2 LnhtbFBLBQYAAAAABAAEAPMAAABq Bg AAAAA="/>

какво да променякъм какво да променя

като се вземат предвид параметрите, посочени при повикване

Използвайки такъв макрос, добавянето на различни места в програмата на три тройки - (1,2,3), (4,5,6), (7,8,9) - може да се организира по следния начин: x y z

.

. сума (1,2,3). -->Оригиналнияткодще бъде заменен в точката за повикване, като се направи 1+2+3

действителни параметри на повикване (съответстващи на формалните x,y,z)

. сума (4,5,6). -->Оригиналнияткодще бъде заменен в точката за повикване, като се направи 4+5+6

. сума (7,8,9). -->оригиналниякодще бъде заменен в точката за повикване, като се направи 7+8+9

Достойнствона използването на макрос - по-голямабързинана работа (в сравнение със затворените)

Недостатък– повтаряне на един и същи изходен текст (текст на макро дефиниция) в програмата след всяко заместване на макрос.

В случай назатворена подпрограма (процедура или функция), както и в случай на отворена подпрограма, трябва да опишете подпрограмата веднъж и след това да я извикате няколко пъти. Само за разлика от отворена подпрограма, когато се извика затворена подпрограма, текстът на макроса не се копира в точката за повикване, а вместо това се прехвърля управлението от точката за повикване към подпрограмата - подпрограмата се изпълнява и след завършването си връща управлението на програмната точка, следваща точката за повикване.

Описание на затворена подпрограма (функция) =заглавка + блок:

име формални параметри на подпрограмата

тип връщане

функция sum(x,y,z: real):real;

Всички действия в тялотоподпрограмите (на мястото на тяхното описание) се изпълняват по формални параметри.
започва тип подпрограма

Използвайки такава подпрограма, добавянето на три тройки на различни места в програмата - (1,2,3), (4,5,6), (7,8,9) - може да се организира по следния начин:

. s:=сума(1,2,3);. --> сумата ще бъде извикана истойносттана сумата 1+2+3 ще бъде заменена в извикващата точка

действителни параметри на разговора

. s:=сума(4,5,6);. --> сумата ще бъде извикана истойносттана сумата 4+5+6 ще бъде заменена в извикващата точка

. s:=сума(7,8,9);. --> сумата ще бъде извикана истойносттана сумата 7+8+9 ще бъде заменена в извикващата точка

Ето какво се случва с описаните извиквания на функции (затворена подпрограма) в програмната памет: прехвърляне на управление (от програма към подпрограма)

Функционален код SUM в паметта
.

. връщане на управление (и стойност)

. връщане на управление (и стойност)

. връщане на управление (и стойност)

Програмна подпрограма сума

Недостатъкпри използването на затворени подпрограми - по-нискаскоростна работа (в сравнение с макро) - времето се изразходва за прехвърляне на управление (първо към подпрограмата и след това обратно) и за прехвърляне на параметри към / от подпрограмата.

Предимства (предимства) от използването на подпрограми в програма:

- спестяване на място (в програмата) - --- описваме само 1 път в програмата;

- спестяване на време (програмист) --- еднократно отстраняване на грешки;

- програмата се отстранява по-лесно (по-лесно се намира къде е грешката) --- ако е разделена на части;

- може да се използва за разработване на програма от няколко програмиста.

Концепция за блок

Затворена подпрограма (докато говорим за процедура ) се състои отЗаглавкаиБлок.

Заглавиесъдържа описание на името на процедурата и формалните параметри (аргументи - тези, които са дадени - и резултати - тези, които трябва да бъдат получени и предадени на точката за повикване).

Блокна процедурата съдържа описание на така наречените локални променливи и действията на подпрограмата (нейното тяло).

Дефиниция:Блок- фрагмент от подпрограма или програма, която съдържа действия върху определени конкретни обекти и описания на тези обекти. Действията в блок са оградени между думитеbeginиend(Pascal).

В C конструкцията може да се използва самостоятелно почти навсякъде, където може да се появи нормален оператор:

В Pascal, за разлика от C, блоковетене се използват самостоятелно, а само като част от подпрограми и програми (блок се добавя със заглавка и описания на променливи, локални за блока).

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

Блоковете савъншни (обграждащи) ивътрешни (такова разделение е относително).

1Програма p1;блок1глобален