Přeskočit na hlavní obsah

Pole

Pole je více hodnot stejného datového typu uložených za sebou. Používá se ve chvíli, kdy nechceme vytvářet zvláštní proměnnou pro každou hodnotu.

Místo toho, abychom psali:

int teplota1 = 21;
int teplota2 = 22;
int teplota3 = 20;

můžeme použít pole:

int teploty[3] = {21, 22, 20};

Máme jednu proměnnou teploty, ve které jsou tři hodnoty.

Takto si pole můžete představit:

index012
hodnota212220

Každá buňka má své číslo, kterému říkáme index. Hodnota je obsah buňky. Název pole teploty označuje celou řadu buněk najednou.

Pole `teploty`
Jak to vypadá v kódu
int teploty[4] = {21, 22, 20, 24};
teploty[0] = 21;

Kliknutím vyberete prvek pole. Změnou hodnoty se upraví obsah buňky i řádek kódu, který zapisuje na vybraný index.

Indexy

K jednotlivým prvkům pole se přistupuje přes index. V C a v mnoha dalších jazycích se počítá od nuly.

int prvni = teploty[0];
int druha = teploty[1];
int treti = teploty[2];

Pole se třemi prvky má indexy 0, 1, 2. Index 3 už je mimo pole.

Počítá se od nuly

Když má pole délku 3, poslední prvek není pole[3], ale pole[2]. Počítače to tak dělají schválně. Nedělají to proto, aby zkoušely vaši trpělivost, i když to tak někdy vypadá.

Proč jsou pole užitečná

Pole se hodí, když máme více podobných hodnot:

  • naměřené hodnoty ze senzoru,
  • stav několika tlačítek,
  • jas více LED,
  • přijaté bajty ze sériové linky,
  • tabulku předpočítaných hodnot.

Například v embedded programu:

uint16_t hodnoty_adc[8];

Tím říkáme, že máme osm hodnot z ADC. Každá hodnota je uint16_t.

Procházení pole

Pole se často používá společně s cyklem:

for (int i = 0; i < 8; i++) {
hodnoty_adc[i] = 0;
}

Tento kód projde všechny prvky pole hodnoty_adc a nastaví je na nulu.

Důležité je i < 8, ne i <= 8. Kdybychom použili i <= 8, program by se pokusil sáhnout na hodnoty_adc[8], který už neexistuje.

Pole není kouzelná taška

Pole má pevnou velikost. Když vytvoříte pole pro osm hodnot, nevejde se do něj devátá. V některých jazycích vás program zastaví chybou. V C se může stát něco mnohem horšího: program začne přepisovat paměť vedle pole.

To je jeden z důvodů, proč je práce s poli důležitá. Jsou jednoduchá, rychlá a velmi užitečná, ale chtějí přesnost.