Pole v C++
C++ 11

image_printTisk

V tomto článku si vysvětlíme nový pojem jazyka C++, a to pole nějakých hodnot. Je to jazykový konstrukt, který slouží k uchování seznamu hodnot nějakého datového typu. Je důležité zmínit, že v současné době je to prvek jazyka, který by měl primárně sloužit pro nízkoúrovňové programování blíže hardwaru. Ve článku bude objasněna deklarace pole, jeho inicializace a způsob čtení a zápisu hodnot.

Definici význam pole jako prostředku pro uchování číselně indexovaného seznamu hodnot jsme si již vysvětlili. Nyní si na příkladu představme způsob jeho deklarace.

int main() {
    int poleInt[10];
    
    const int delka = 12;
    double poleDouble[delka];

    return 0;
}

Příklad ukazuje deklaraci dvou polí. První je pole pojmenované poleInt. Deklarace se skládá postupně z uvedení datového typu položek pole, pak následuje identifikátor a následně je uveden v hranatých závorkách počet položek, které pole obsahuje. Jelikož překladač alokuje místo pro pole v době překladu, je podmínkou, aby délka pole byl konstantní výraz, který lze vyhodnotit v době překladu. V případě pole poleInt je délka vyjádřena přímo číslem. Na deklaraci poleDouble ale můžeme vidět, že počet položek pole můžeme vyjádřit i konstantní proměnnou.

Nyní ale přistupme k ukázce, jak lze pole inicializovat nějakým seznamem hodnot. Uveďme zase vše napřed na příkladu.

int main() {
    int pole1[5] = {1, 2, 3, 4, 5};
    int pole2[] = {3, 2, 1};

    return 0;
}

Jak příklad ukazuje, pole lze inicializovat tak, že za jeho deklaraci uvedeme přiřazovací operátor a po té ve složených závorkách zapíšeme seznam hodnot oddělených čárkou. Pokud je v deklaraci uvedena délka pole, musí počet položek v inicializaci odpovídat jeho délce, jinak překladač oznámí syntaktickou chybu. Je ale také možnost délku pole neuvádět, jako je to v případě deklarace pole s identifikátorem pole2. V tomto případě překladač odvodí délku pole zcela automaticky z počtu položek jeho inicializace. Je snad samozřejmé, že pokud deklarované pole nemá svoji inicializaci, je nutné délku pole uvést, jinak se jedná o chybu, kterou překladač oznámí.

Na závěr článku je samozřejmé zmínit, jak se přistupuje k hodnotám položek pole, ať už pro čtení dané hodnoty, nebo pro její zápis. Slouží k tomu operátor indexace pole, kde se v hranatých závorkách uvede index položky, se kterou chceme pracovat. Je důležité podotknout, že položky pole jsou indexovány počínaje číslem 0, a ne 1. Ukažme si vše na příkladu.

int main() {
    int pole[10];

    // Provádíme zápis hodnot do výše deklarovaného pole
    pole[1] = 4;
    pole[5] = 7;

    // Inicializace proměnné "cislo" hodnotou pole s indexem 5 (číslováno od 0)
    int cislo = pole[5];

    return 0;
}

Po deklaraci pole jsou do něj zapsány na indexy 1 a 5 číselné hodnoty 4 a 7. Následně je pak inicializována proměnná cislo s hodnotou pole s indexem 5.

U indexace pole je třeba se mít ale trochu na pozoru. Překladač neprovádí žádnou syntaktickou kontrolu, ani kontrolu za běhu programu, že je do pole zapisována nebo čtena hodnota s validním indexem, tedy řečeno jinak, spadá-li index do rozsahu pole. Je nutné hlídat, zda index není záporný nebo zda nepřekračuje počet položek pole, ke kterému je přistupováno. Z důvodu tohoto rizika by se tento jazykový konstrukt neměl používat pro vysokoúrovňové programování a měl by se nahradit prvky, které poskytuje například knihovna STL. Použití polí má význam primárně při programování na úrovni “blíže hardwaru”. TODO ZJISTIT A OVĚŘIT DŮVODY.

 

image_printTisk
Pole v C++
C++ 11
Ohodnoťte tento článek

Související články

  • Vícerozměrná pole Tento článek pojednává o vícerozměrných polích v jazyce C++. Seznámíme se s jejich významem, deklarací, inicializací a způsobem zápisu a čtení jejich hodnot. Na závěr článku bude zmíněno, […]
  • Aritmetika ukazatelů a pole V tomto článku si vysvětlíme, co je aritmetika ukazatelů. Ukážeme si význam a aplikaci dalších operátorů vztahujících se k ukazatelům a popíšeme si jejich vzájemné vztahy k polím různých […]
  • Ukazatele V tomto článku si představíme nový pojem ukazatel jako proměnnou obsahující adresu na jinou oblast paměti. Seznámíme se dvěma operátory při související s adresací a na závěr si ukážeme, […]
  • Předávání a vracení polí z funkcí DO POKROČILÝCH TÉMAT Tento článek pojednává o práci s poli a funkcemi. Popisuje rozličné metody, jak předat pole jako argument funkci a také jak pole z funkce vrátit. Existují v […]
  • Metody vracení hodnot z funkce DO POKROČILÝCH ASI Tento článek pojednává o způsobech vracení hodnot z funkcí. Jsou to stejné způsoby, o kterých je psáno ve článku předchozím, tedy vracení hodnotou nebo vracení […]
  • Ukazatele na pole V tomto článku si probereme ukazatele na pole. Seznámíme se nejen s ukazateli na pole jednorozměrné, ale i na složitější případ, tedy pole vícerozměrná. Vše si zase samozřejmě uvedeme na […]