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

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

Související informace naleznete také v článku Skok (informatika).

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

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ů

Javascript

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

Reference

V tomto článku byl použit překlad textu z článku Label (computer science) na anglické Wikipedii.

  1. C Standard section 6.8.6.1 The goto statement [online]. Dostupné online.
  2. GOTO Statement QuickSCREEN [online]. Microsoft, 1988 [cit. 2020-07-06]. Dostupné v archivu pořízeném dne 2009-07-25.
  3. O. Lawlor. nasm x86 Assembly [online]. [cit. 2020-07-06]. Dostupné online.
  4. Differences Between GW-BASIC and QBasic [online]. Dostupné online.

Související články

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.