|
||
PoleDoposud jsme se v tomto tutoriálu setkávali pouze s jednoduchými proměnnými, které nám sloužili k tomu, aby uchovávali jednu určitou hodnotu popřípadě řetězec. V této lekci si ukážeme, že je možné vytvořit proměnnou, která je schopná uchovávat více hodnot najednou (např.: 30). V takovém případě se však již nebude jednat o jednoduchou proměnnou, ale o proměnnou strukturovanou, konkrétně typu pole. Co je to pole?Jak už bylo řečeno, pole je tzv. strukturovanou proměnnou, která se používá pro zpracování více hodnot stejného typu. V praxi to znamená, že pokud chceme uchovat například 10 hodnot typu int, nemusíme deklarovat 10 různých proměnných, ale vytvoříme jednu proměnnou typu pole s rozměrem 10. Tím v operační paměti vznikne pomyslný "chlívek", který je rozdělen na 10 částí. Každá z částí má svůj index, což je vlastně identifikační číslo. Tyto čísla jsou udávány od 0 po n. V případě pole s rozměrem 10 budou jedntolivé části očíslovány od 0 pod 9. Deklarace polePři deklaraci jednoduché proměnné vždy uvádíme datový typ a identifikátor. Pole deklarujeme stejným způsobem, ovšem nově je třeba určit ještě rozměr pole. Ten se udává bezprostředně za identifikátor do hranatých závorek. Deklarace tedy vypadá následovně:
datový_typ identifikátor[rozměr_pole];
Například:
int adam[5];
Tímto zápisem deklarujeme pole adam, do kterého lze uložit 5 hodnot typu int. Nasledující obrázek demonstruje, co vznikne v operační paměti: Každý "chlíveček" reprezentuje místo pro uložení hodnoty typu int. V poli o rozměru 5 budeme mít pochopitelně takových "chlívečků" rovněž 5. Každý je označen indexem, který slouží jako jejich identifikátor. V tomto případě budou jednotlivé "chlívečky" pole označeny celými čísly od 0 po 4. Operace s hodnotami poleNyní když už víme, jak pole deklarovat, můžeme přistoupit k uložení hodnot do pole. Opět se vráťme k jednoduchým proměnným. V takových případech jsme promměnou naplnili hodnotou buď přímo při deklaraci nebo později pomocí přiřazovacího příkazu. Například:
int x = 5;
U polí máme stejné možnosti. Podívejme se nejprve na případ, kdy pole naplníme hodnotami již při deklaraci:
int adam[5] = {10, 20, 30, 40, 50};
Tímto zápisem dosáhneme toho, že nově vzniklé pole je již vyplněno hodnotami. V operační paměti nyní nastane tato situace: Pozor! Počet hodnot ve složených závorkách nesmí být větší než rozměr pole.Tento způsob deklarace pole nám umožňuje nechat hranaté závorky prázdné. Rozměrem pole pak bude počet hodnot ve složených závorkách. Například:
int adam[] = {10, 20, 30, 40, 50, 60, 70, 80};
Rozměrem tohoto pole je 8, jelikož ve složených závorkách je uvedeno 8 hodnot. Druhou možností jak naplnit pole hodnotami je použití přiřazovacího příkazu. U jednoduchých proměnných takový příkaz napíšeme ve tvaru:
x = 10;
U pole však tento zápis použít nemůžeme. Nyní je potřeba si uvědomit následující skutečnost: Jak můžete vidět na obrázku, každý "chlíveček" je reprezentován identifikátorem polea svým indexem. Pokud tedy budeme chtít například do "chlívečku"adam[3] přiřadit hodnotu 77, příkaz bude následující:
adam[3] = 77;
Dále je potřeba mít na vědomí fakt, že pole o rozměru 5 má 5 prvků, kde první je označen inedexem 0 a pátý indexem 4. Ke každé hodnotě pole tedy přistupujeme zvlášť, jakoby se jednalo o samostatné proměnné. Práci si však můžeme výrazně ulehčit pomocí cyklů. Příklad:
#include <iostream>
Výstup programu:
1.cislo je: 145
V programu jsme nejprve deklarovali pole adam o rozměru 5 a vyplnili jej číselnými hodnotami. Následně jsme tyto hodnoty pomocí cyklu postupně vypsali na obrazovku. Vícerozměrné polePole adam, se kterým jsme pracovali v předchozích ukázkách, bylo tzv. jednorozměrným polem. Nyní postoupíme dál a ukážeme si pole, které má rozměrů více. Bohatě si vystačíme s dvourozměrným polem, kterému se také říká "pole polí". Vytvořme tedy následující pole:
int pepe[3][5];
Touto deklarací v operační paměti vznikne: Oproti jednorozměrnému poli nyní vznikne n * m "chlívečků", kde n je první rozměr a m je druhý rozměr. Rozdíl je také v indexech. Nyní má každý "chlíveček"2 indexy. Například: Pokud Vám hlava více rozměrů nepobírá, nemusíte zoufat. Toto dvourozměrné pole lze jednoduše nahradit jednorozměrným polem:
int pepe[15];
Tím bych chtěl poukázat na to, že vícerozměrné pole jsou něčím bez čeho se snadno obejdeme. Pro ty které vícerozměrné pole však zajímají si ukážeme následující příklad:
#include <iostream>
V této ukázce tentokrát budeme hodnoty do pole vkládat. Opět si práci ulehčíme pomocí cyklů. V tomto případě však budeme potřebovat dva - jeden pro každý rozměr pole. Rozměry pole jsou 3 a 5, z toho vyplývá, že rozsah indexů bude od pepe[0][0] po pepe[2][4], viz předchozí obrázek. To zda nám program funguje, snadno ověříme tím, že se pokusíme vypsat nějakou hodnotu. Například:
cout << pepe[0][2];
Tento příkaz pochopitelně bude ve zdrojovém kódu až za oba cykly. Indexy [0][2] značí, že se jedná o třetí hodnotu. Vypsat by se tedy měla stejná hodnota, kterou jsme zadali jako třetí. Pole jako parametr funkceNakonec si v této lekci ukážeme, jak použít pole jako parametr funkce. Nebudeme dlouho chodit kolem horké kaše a rovnou se podíváme na následující příklad:
#include <iostream>
V příkladě jsme si vytvořili funkci vypis_pole, která vypíše hodnoty pole. Co nás však hlavně bude zajímat jsou parametry této funkce. Prvním parametrem je int pole[]. Tento parametr bude akceptovat všechny pole typu int, bezohledu na jejich rozměr. K tomu aby jsem však mohli použít v těle funkce cyklus potřebujeme konečnou hodnotu, proto má funkce ještě jeden parametr rozmer, který nám tuto hodnotu poskytne. V hlavní funkci programu jsme deklarovali pole adam a pepe, které jsme zároveň naplnili hodnotami. Následně jsme nechali tyto hodnoty vypsat pomocí funkce vypis_pole. Při volání funkce jejíž paramatrem je pole uvádíme pouze identifikátor tohoto pole. Výstup programu:
10, 20, 30, 40, 50, 60, 70, 80
|
Počítadlo |
| Nahoru
Úvod |
HTML |
CSS |
C++ |
JavaScript |
Grafika & design |
Webhosting
|