Vytvoření pole

V minulé lekci, o cyklech, jste se naučili opakovat kód. V této lekci se naučíte uložit mnoho hodnot pod jeden název.

Představte si, že si chcete zapamatovat body z pěti testů. S tím, co zatím znáte, byste potřebovali pět proměnných:

int body1 = 80;
int body2 = 92;
int body3 = 75;
int body4 = 60;
int body5 = 88;

To je spousta psaní a třicet testů by potřebovalo třicet proměnných. Horší je, že je cyklus nemůže projít: body1 a body2 jsou prostě dva názvy, které spolu nijak nesouvisejí. Právě k tomu slouží pole (anglicky array). Pole uloží více hodnot stejného typu pod jeden název:

int body[5] = {80, 92, 75, 60, 88};

Hodnotám v poli se říká prvky pole. Toto pole má pět prvků v pevném pořadí: 80 je první prvek, 88 poslední.

Projděte si řádek zleva doprava:

  • int je datový typ prvků. Všechny prvky pole mají stejný datový typ, takže v tomto poli jsou jen celá čísla.
  • body je název pole. Platí pro něj stejná pravidla jako pro názvy proměnných.
  • [5] v hranatých závorkách je velikost pole, tedy počet jeho prvků.
  • Ve složených závorkách { } jsou prvky oddělené čárkami.

Velikost nemusíte psát sami. Když hranaté závorky necháte prázdné, překladač hodnoty ve složených závorkách spočítá a vytvoří přesně tak velké pole:

int body[] = {80, 92, 75, 60, 88};

Je to stejné pole s pěti prvky. Pole jiných datových typů se vytvářejí stejně, třeba ceny v obchodě nebo odpovědi v kvízu:

double ceny[] = {29.90, 149.00, 99.50};
char odpovedi[] = {'a', 'c', 'b'};

Do pole typu int patří jen celá čísla. Když do něj napíšete desetinné číslo 92.5, prvek dostane jen 92. Desetinná část se usekne a žádná chybová hláška vás na to neupozorní.

Velikost pole je pevná. Určí se při vytvoření pole a později se změnit nedá: do pole body šestý prvek nepřidáte. I když hodnoty ještě neznáte, musíte říct, kolik prvků pole bude mít. Když nenapíšete velikost ani hodnoty, tedy jen int body[];, program nepůjde přeložit:

main.c:4:9: error: definition of variable with array type needs an explicit size or an initializer

Hláška říká, že proměnná typu pole potřebuje uvedenou velikost (explicit size) nebo počáteční hodnoty (initializer). Překladač musí vědět, kolik místa má pro pole vyhradit v paměti počítače.

Jeden prvek vypíšete tak, že za název pole napíšete do hranatých závorek jeho číslo. body[0] je první prvek pole body:

int body[] = {80, 92, 75, 60, 88};
printf("%d\n", body[0]);

Program vypíše:

80

Proč má první prvek číslo 0, se dozvíte v dalším cvičení. Stejně vypisuje góly z prvního zápasu i program v editoru.

Pokyny

Pod komentář vytvořte pole celých čísel s názvem body, velikostí 4 a prvky 85, 92, 78 a 90 v tomto pořadí.

Pod pole vypište s popiskem body z prvního testu, podobně jako program vypisuje góly z prvního zápasu. Ve výpisu by se měl objevit řádek První test: 85 bodů.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

1/12