Náplní dnešního dílu budou pole, která nás následně budou provázet po několik dalších dílů. Postupně si ukážeme, co to je pole, k čemu se hodí a samozřejmě si jejich použití budeme demonstrovat na vývojových diagramech.
Co to je pole a k čemu je dobré? Řekněme, že chceme řešit náš oblíbený problém s průměrem známek studenta. Tentokráte ovšem změněný o to, že si chceme nejprve všechny známky uložit a pak teprve zpracovávat. Tak to je přece jednoduché, vytvoříme si proměnné znamka1, znamka2, znamka3, znamka4... No jo, ale kolik jich vlastně bude? Kolik potřebujeme proměnných? Co když vytvoříme proměnné jenom pro 20 známek a bude jich potřeba 25? Jak vidno zříti, tudy cesta nevede. K tomuto účelu se právě používá pole - k uložení více dat pod jednu proměnnou a jejich rozlišení indexy (bude vysvětleno dále). Místo proměnných znamka1, znamka2, znamka3, znamka4... tak budeme mít pouze jednu proměnnou znamka.
Co je to vlastně proměnná? Proměnná je námi zvolený název, kterému se v průběhu překladu nebo běhu programu přidělí paměť. Je to tedy tak, že námi zvolený název proměnné je jakýsi alias na adresu v paměti. Vytvoříme-li proměnnou A, tak vlastně máme takový šuplíček, na kterém je napsáno "A" a který obsahuje hodnotu proměnné A. Přiřazením hodnoty 5 do proměnné A vlastně provedeme to, že otevřeme daný šuplíček a vložíme do něj hodnotu 5.
Pole je skupina takových šuplíčků v jednom rámu, který je drží všechny pohromadě a nese název proměnné (tj. na rámu je napsáno "A"). Pokud chceme pracovat s polem jako celkem, tak se na něj odkazujeme jménem pole (A). Pokud chceme pracovat s jednotlivými položkami pole (šuplíčky), tak musíme tzv. indexovat - přistupovat k jednotlivým šuplíčkům. To znamená, že pokud chceme vložit hodnotu do jednoho z šuplíčků pole, tak se na něj musíme odkázat - musíme ho zaindexovat.
Index je vlastně pořadové číslo šuplíčku v daném poli. Každý šuplíček má svůj index na sobě napsaný. Indexace se zapisuje jako číslo v hranatých závorkách za jménem proměnné. V případě našeho pole jménem A, které má 5 šuplíčků, se k jednotlivým položkám (šuplíčkům) přistupuje A[1], A[2], A[3], A[4], A[5]. Chceme-li do 3. šuplíčku pole A zapsat hodnotu 100, tak napíšeme A[3] = 100.
Poznámka: jak to tak bývá, tak ani zde není vše jednoznačné. My budeme používat indexování od 1. Některé programovací jazyky ho také používají, jiné mají indexování od 0, v jiných lze rozmezí indexů definovat. Pro začátek je nejjednodušší používat indexování od 1, které je asi i lidsky nejpřirozenější.
K procházení pole budeme používat cykly (většinou) s daným počtem opakování. Jsou na to jak dělané :). Využijeme k tomu index, který v tomto cyklu používáme. Cyklus tak bude (vždy) od 1 do velikosti pole. A v jednotlivých průchodech budeme přistupovat k jednotlivým šuplíčkům pole. Fragment vývojového diagramu, tak jak jej budeme teď často vídat, je na obrázku.
Pole může být samozřejmě libovolného typu, takže můžeme mít pole 4bajtových celých čísel, pole desetinných čísel atd. Datový typ budeme zapisovat stejně jako u jiných proměnných. Rozlišení, že jde o pole provedeme zápisem hranatých závorek za název proměnné. Pokud budeme vědět, s jak velkým polem budeme pracovat, tak do hranatých závorek zapíšeme tuto velikost. V případě, že neznáme, jak velké bude výsledné pole, tak necháme hranaté závorky prázdné. První typ (se známou velikostí pole) je staticky definované pole - velikost známe v době tvorby programu. Druhý typ je pole s dynamickou velikostí pole - velikost pole se mění dle aktuálních potřeb v programu.
Nyní již máme dostatečný teoretický základ, abychom si mohli udělat jednoduchý příklad, ve kterém si ukážeme práci s polem. Nebudeme na začátek dělat nic složitého, prostě si do pole načteme několik čísel a následně je vypíšeme.
Zadání by mohlo znít následovně: vytvořte algoritmus, ve kterém nejprve uživatel zadá 20 čísel a tato čísla následně v opačném pořadí vypíše na obrazovku. Program se bude skládat ze dvou částí: v první bude uživatel zadávat čísla, která se budou ukládat do pole. V druhé části se tato uložená čísla vypíšou v obráceném pořadí.
Výsledný vývojový diagram vidíte na obrázku. Máme definované pole celých čísel X o délce 20 (int X[20]). V prvním cyklu provedeme načtení 20 čísel do pomocné proměnné A, jejichž hodnotu následně uložíme do pole (do příslušného šuplíčku na aktuálním indexu). V druhém cyklu provedeme výpis. Mohli bychom tam mít rozsah od 20 do 1, ale abychom to trochu pozměnili, tak budeme mít jeho rozsah opět od 1 do 20 a výpis v obráceném pořadí vyřešíme matematickou úpravou, tj. odečtením od velikosti pole a protože indexujeme od 1, tak ještě přičteme 1, neboli 20 - I + 1, což je 21 - I, a proto můžeme zapsat X[21 - I].
V příštím díle budeme pokračovat dalšími příklady, kde bude mít pole jednu z hlavních úloh.