|
||
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
|