Návěstí
Návěstí v programovacím jazyce je identifikátor nebo celočíselná konstanta označující nějaké místo (příkaz) ve zdrojovém kódu. Návěstí mají ve většině jazyků formu identifikátoru, v místě své definice obvykle následovaného interpunkčním znakem (zpravidla dvojtečkou). V mnoha vyšších programovacích jazycích návěstí slouží jako cíl příkazu skoku (GOTO
).[1][2] V jazyce symbolických adres lze návěstí používat kdekoli může být adresa (například jako operand instrukce JMP
nebo MOV
).[3] Návěstí se používají také v Pascalu a v jazycích z něj odvozených. V některých jazycích, např. ve Fortranu a BASICu, lze používat číselná návěstí.[4] Návěstí se také používají pro identifikaci vstupních bodů do přeložených posloupností příkazů (například při ladění programu).
Jazyk C
[editovat | editovat zdroj]Návěstí v jazyce C identifikuje příkaz v kódu. Jeden příkaz může mít více návěstí. Návěstí pouze definuje místo v kódu; jeho dosažení nemá žádný vliv na provádění programu.
Návěstí ve funkcích
[editovat | editovat zdroj]Návěstí ve funkcích jsou tvořena identifikátorem následovaným dvojtečkou. Každá návěstí ukazuje na příkaz v funkci a jeho identifikátor musí být jednoznačný v rámci funkce. V jiných funkcích mohou být použita návěstí se stejným jménem. Identifikátory návěstí mají vlastní jmenný prostor – mohou existovat proměnné a funkce se stejným jménem jako má nějaké návěstí.
void foo(int number)
{
if (number < 0)
goto error;
bar(number);
return;
error:
fprintf(stderr, "Číslo nesmí být záporné!\n");
}
V tomto kusu kódu je error návěstí. Příkaz goto lze použít pro skok na označený příkaz v kódu. Po provedení příkazu goto
provádění programu pokračuje příkazem za návěstím.
Návěstí v příkazu switch
[editovat | editovat zdroj]V příkazu switch lze používat dva typy návěstí. Jeden typ sestává z klíčového slova case
následovaného výrazem, který lze vyhodnotit na celočíselnou konstantu, a dvojtečkou. Druhý typ je implicitní návěstí, které sestává z klíčového slova default
následovaného dvojtečkou. Návěstí se používají pro vyznačení příkazu v kódu, na který se přejde po vyhodnocení výrazu v příkazu switch. Po vyhodnocení výrazu za klíčovým slovem switch
bude provádění programu pokračovat příkazem po návěstí s hodnotou, které se rovná hodnotě výrazu. Pokud příkaz switch žádné takové návěstí neobsahuje, ale existuje větev default, bude provádění programu pokračovat za návěstím default. Pokud příkaz switch neobsahuje žádná návěstí default, provádění programu bude pokračovat za konstrukcí switch.
switch (die)
{
default:
printf("chyba\n");
break;
case 1:
case 3:
case 5:
printf("liché\n");
break;
case 2:
case 4:
case 6:
printf("sudé\n");
break;
}
V rámci jednoho příkazu switch musí být celočíselné konstanty přiřazené k jednotlivým návěstím jednoznačné. Příkaz switch může obsahovat větev default:
. Na pořadí návěstí v rámci přepínače nejsou kladena žádná omezení. Požadavek, aby hodnota návěstí byla celé číslo, dává překladači větší prostor pro optimalizaci.
Návěstí pro rozlišení cyklů
[editovat | editovat zdroj]Javascript
[editovat | editovat zdroj]V JavaScriptu a některých dalších programovacích jazycích lze použít návěstí pro rozlišení smyček:
top: // Návěstí před vnější smyčkou
for (var i = 0; i < 4; i++) {
for (var j = 0; j < 4; j++) {
if (j === 3 && i === 2) {
alert("i=" + i + ", j=" + j); //i=2, j=3
break top;
}
}
}
alert("i=" + i + ", j=" + j); //i=2, j=3
Příkazy pro opuštění cyklu (jako break
v tomto příkladě) nebo zahájení dalšího průchodu cyklem (continue
) mohou mít parametr jméno návěstí, které udává, ke které smyčce se příkaz vztahuje; bez uvedení parametru se vztahuje k nejvnitřnější smyčce.
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku Label (computer science) na anglické Wikipedii.
- ↑ C Standard section 6.8.6.1 The goto statement [online]. [cit. 2020-01-23]. Dostupné v archivu pořízeném dne 2007-12-24.
- ↑ GOTO Statement QuickSCREEN [online]. Microsoft, 1988 [cit. 2020-07-06]. Dostupné v archivu pořízeném dne 2009-07-25.
- ↑ O. Lawlor. nasm x86 Assembly [online]. [cit. 2020-07-06]. Dostupné online.
- ↑ Differences Between GW-BASIC and QBasic [online]. [cit. 2020-07-06]. Dostupné v archivu pořízeném z originálu dne 2010-02-10.