Разклоняване (програмиране)

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

Съдържание

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

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

Условен оператор

Условният оператор изпълнява изпълнението на определени команди, при условие че някакъв логически израз (условие) приема стойността "true" true. В повечето езици за програмиране условният оператор започва с ключовата дума if (в превод от английски - "ако").

Има следните форми на условния оператор:

Условен оператор с един клон

Условен оператор с два клона

Условен оператор с множество условия

Изпълнение

Алгол, Паскал

Паскал наследи синтаксиса от Algol-60, според който само една команда може да бъде поставена в клоновете на условен оператор. Следователно, за да се настанят повече команди там, те се групират в съставен оператор, като се използва двойката ключови думи начало и край. Клонът else е по избор. начало и край се изискват само ако има няколко оператора (например поради съображения за еднаквост на кодовия дизайн). В примера операторът за избор в Pascal:

Алгол-68, Ада, Модула-2

Необходимостта от условния оператор в Алгол и Паскал е обект на критика от самото му създаване. Критиците казаха, че многобройни съставни изрази претрупват програмата, пречат на нормалното отстъп и провокират грешки (ако забравите съставния израз в последния клон на оператора if, където е необходим, компилаторът няма да забележи нищо, но когато програмата се изпълнява от групата изрази, които трябва да бъдат изпълнени в този клон, по условие, ще се изпълни само първият, всички останали - винаги). Следващите поколения езици - потомци на Алгол се опитаха да се отърват от този недостатък. Те включват три добре познати езика: Algol-68, Modula-2 и Ada. Конструкцията на оператора if в тях е почти еднаква, до отделни ключови думи:

Във всички случаи "командиX" са произволен брой изрази, разделени с точка и запетая. Във всички случаи всички клонове на условния оператор, с изключение на първия ("тогава" клон) са по избор и могат да бъдат пропуснати. Ако клонът "else" отсъства и никое от условията не е изпълнено, тогава управлението се прехвърля към командата, следваща ключовата дума за завършване на условното строителство (END, FI или END IF).

C, C ++ и техните потомци

C и C ++ (последвани от Java, C #, PHP и много други езици) имат условен оператор, който е структурно подобен на Pascal. Разликата е, че условието трябва да бъде записано в скоби и вместо ключовите думи за начало и край се използват фигурни скоби <>:

За разлика от повечето езици, където операторът if може да има един или два клона, в Nemerle операторът if (синтаксисът е напълно подобен на езика C) трябва да има два клона. Условният оператор с един клон започва с ключовата дума, когато освен това езикът има и друг условен оператор - освен ако това е „обратното когато“ - в него се изпълняват командите на условния клон, ако условието е невярно.

В Forth условният оператор има различна форма от формата на други езици поради нотификацията на постфикса и организацията на подреждане. Условното твърдение се състои от три думи АКО И ДРУГО ТОГА [1] .

Той просто премества стойността в горната част на стека, АКО анализира флага и ако:

  • не е равно на нула, тогава се изпълняват изрази преди ELSE или THEN;
  • ако е нула, тогава се изпълняват изрази между ELSE и THEN .

При липса на ELSE се получава селектор с един клон: изразите между IF и THEN се изпълняват само ако стойността на флага е ненулева.

Първоначално Fortran имаше само аритметичен IF, при който в зависимост от знака на израза беше направен преход към един от трите етикета. Например, част от кода на подпрограма за решаване на квадратно уравнение:

След това бяха добавени логически (булеви) изрази и логически IF с един оператор, изчислени чрез GOTO, по-късно - структуриран IF (с няколко условия), например:

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