Blok (programování)
Bloková struktura je v informatice označení pro zdrojový kód programu, který je rozčleněn do samostatných bloků (úseků) používaných ve strukturovaném programování. Bloky rozčleňují kód na souvislé logické části (řídící struktury pro podmínku if, cyklus while-do, cyklus for a podobně) nebo samostatné funkční části u funkcí a procedur. Strukturované programování umožňuje vzájemné zanořování bloků, což umožňuje používat lokální proměnné a funkce.
Historie
Myšlenka blokové struktury se poprvé objevila v 50. letech 20. století, kdy byla formalizována ve zprávách Algol 58 a Algol 60. Algol 58 zavedl pojem „složený příkaz“. Upravená zpráva Algol 60 popisuje syntaxi a sémantiku. Algol 60 zavedl pojem blok, skládající se z posloupnosti deklarací následovaných posloupností příkazů uzavřené mezi symboly začátku a konce bloku. Proměnné deklarované v bloku jsou platné pouze uvnitř bloku.
Princip blokového programování
Blok umožňuje v programování specifikovat část kódu programu, která se vůči okolí chová tak, jako by byla jedním příkazem. Označuje se proto také jako programátorské závorky. Bloky tímto způsobem zjednodušují syntaktická pravidla zápisu zdrojového kódu programu programovacího jazyka, protože je možné předepsat, že na daném místě zápisu může být pouze jediný příkaz (je-li příkazů více, musí být uzavřeny do programátorských závorek a stanou se tak z vnějšího pohledu jediným příkazem).
Druhou funkcí bloku je možnost zúžit rozsah platnosti proměnné, procedury nebo funkce tak, že jsou deklarovány v určitém bloku. Označujeme pak jako lokální proměnné nebo vnořené funkce. Lexikální analýza díky tomu může zajistit, že objekty deklarované v určitém bloku nekolidují s objekty deklarovanými mimo tento blok. Lokální proměnné pak mohou mít stejné názvy, jako proměnné v nadřízených (nebo sousedních) blocích, avšak nedojde k jejich ovlivnění. Stejné pravidlo platí pro funkce a procedury.
Některé programovací jazyky, které podporují bloky s deklarací proměnných, nepodporují plně všechny deklarace. Například mnoho jazyků odvozených od programovacího jazyka C neumožňuje definici funkce v rámci bloku na rozdíl od jeho předchůdce Algolu. Pascal nepodporuje použití bloků s jejich vlastní deklarací uvnitř začátku a konce stávajícího bloku, složené příkazy podporuje pouze při seskupení v řídících strukturách if, cyklus while-do a repeat, cyklus for.
Bloková struktura
Bloková struktura programu se hojně využívá v moderních technikách programování označovaných strukturované jazyky. Tyto jazyky nám umožňují efektivní kontrolu použití objektů. Bloková struktura programu rozlišuje globální a lokální objekty, kdy přístup do lokálních objektů je omezený. Pokud má lokální objekt stejné jméno jako objekt globální tak neovlivní objekt globální.
Dalo by se říci že základním prvkem programu je blok. Každý blok se skládá z hlavičky, deklarační a příkazové části. Jednotlivé bloky mohou obsahovat další podbloky neboli vnořené bloky, které si můžeme představit jako podprogramy. Ovšem každý podblok takto vytvořený opět musí obsahovat všechny náležitosti bloku tedy hlavičku, deklarační a příkazovou část. Skládání celého programu z jednotlivých bloků nám vznikne jakási hierarchická struktura, neboli bloková struktura programu.
Stromová struktura
Jednotlivé bloky vytvářejí stromovou strukturu. Vnořené bloky jsou vždy podřízeny blokům nadřazeným. Objekty jsou dosažitelné jen z bloků podřízených a každý blok má svoji tabulku přístupných objektů.
Literatura
- PERLIS, Alan; SAMELSON, Klaus. Preliminary Report: International Algebraic Language. [s.l.]: [s.n.], 1958. (anglicky)
- BACKUS, John, aj. Report on the Algorithmic Language ALGOL 60. Copenhagen: [s.n.], 1960. (anglicky)
Reference
V tomto článku byl použit překlad textu z článku Block (programming) na anglické Wikipedii.