Pole si můžete představit jako řadu prvků spojených dohromady. Tyto prvky jsou uvozeny znakem hranaté závorky a odděleny čárkou. Polem je např.:
[] [5] ['Ahoj', 'Na shledanou'] promenna = 'text' # toto není pole, ale proměnná [89.9, promenna, [true, false]]
První pole je prázdné, druhé obsahuje číslici 5, třetí pole obsahuje dva textové řetězce a konečně poslední pole obsahuje číslo, hodnotu proměnné promenna a posledním prvkem pole je pole obsahující pravdivostní hodnoty true a false.
Vzpomínáte na prázdný textový řetězec ('') ? Tak proč bychom nemohli mít prázdné pole ([]), že?
Pojďme se nyní podívat, jak se s jednotlivými prvky pole vlastně pracuje.
jmena = ['Martin', 'Honza', 'Alena'] puts jmena puts puts jmena[0] puts jmena[1] puts jmena[2] puts jmena[3]
zobrazí
Martin Honza Alena Martin Honza Alena nil
K jednotlivým prvkům pole se tedy přistupuje prostřednictvím čísla (pozice) v poli. Jen je důležité pamatovat na to, že se jednotlivé prvky pole číslují od 0 a zároveň nás hodnota nil informuje o tom, že se v poli již žádný další prvek nenachází (v našem případě, že prvek pole s pořadovým číslem 3 neexistuje).
Hodnota nil je speciální objekt a znamená konec pole.
Metoda each
Metoda each
vám umožní provést něco (cokoliv chcete) s každým prvkem pole. Zkusme následující příklad.
jazyky = ['čeština', 'angličtina', 'němčina'] jazyky.each do |jazyk| puts 'Můj nejoblíbenější jazyk je ' + jazyk + '!' puts 'Máte ho také rádi?' end
zobrazí
Můj nejoblíbenější jazyk je čeština! Máte ho také rádi? Můj nejoblíbenější jazyk je angličtina! Máte ho také rádi? Můj nejoblíbenější jazyk je němčina! Máte ho také rádi?
Je vidět, že se každá z hodnot pole jazyky
v cyklu postupně dosadí do proměnné jazyk
, kterou pak dál používáme pro výpis daného jazyka.
Podobně vypadá následující konstrukce, která nám umožní zopakovat nějaký kus kódu xkrát. Pozor, přitom se ale nejedná o pole, ale pouze metodu (objektu) celého čísla:
3.times do puts 'Mám tě rád.' end
zobrazí
Mám tě rád. Mám tě rád. Mám tě rád.
Pokročilá práce s polem
Podívejme se nyní na další metody, které nám usnadní provádění většiny běžných operací, které někdy můžeme chtít s polem provést.
Metody join
a to_s
potraviny = ['mléko', 'maso', 'pivo'] puts potraviny puts puts potraviny.to_s puts puts potraviny.join(', ') puts puts potraviny.join(' :) ') + ' 8)' 200.times do puts [] end
zobrazí
mléko maso pivo mlékomasopivo mléko, maso, pivo mléko :) maso :) pivo 8)
Několik poznámek k předchozímu programu
-
puts potraviny
vytiskne položky pole potraviny pod sebe -
puts potraviny.to_s
spojí položky pole dohromady, tedy je napíše jako jedno slovo -
puts potraviny.join(', ')
přidá ke každé položce pole text uvedený v závorce -
puts potraviny.join(' :) ') + ' 8)'
si můžete pro snadnější pochopení představit jako řetězecputs potraviny.join(' :) ')
PLUS řetězec' 8)'
- konečně poslední cyklus neprovede nic, přesněji řečeno 200krát vypíše prázdné pole, tedy nevypíše nic
Metody push
, pop
, last
, length
Zkusme tento příklad
oblibene = [] oblibene.push 'víno a brambůrky' oblibene.push 'stránky Microsoftu' puts oblibene[0] puts oblibene.last puts oblibene.length puts oblibene.pop puts oblibene puts oblibene.length
zobrazí
víno a brambůrky stránky Microsoftu 2 stránky Microsoftu víno a brambůrky 1
a nyní vysvětlení
- metoda
push
přidává do pole další položky, položky jsou přidávány postupně, jak přijdou, nová položka je přidána na konec pole - metoda
last
zobrazí poslední položku v poli - metoda
length
nám řekne, kolik prvků pole obsahuje (pozor, index posledního prvku v poli je o jedničku menší!) - metoda
pop
pak vrací položku z konce pole a zároveň ji z pole odebere
Pamatujte, že metody push
a pop
mění obsah pole. Metoda push
prvky do pole přidává a metoda pop
je odebírá!
Příklady 7
- Napište program, který od nás bude na vstupu čekat neomezené množství slov (jedno slovo na řádek). Jakmile pak stisknete klávesu [Enter] na prázdném řádku, ukončí vstup slov a vypíše námi napsaná slova opačně, tzn. od posledního slova po první slovo, které jsme zadali.
- Upravte předchozí příklad tak, že zadaná slova setřídíte, použijte metodu
sort
. Její syntaxe je snadná -pole.sort
vrátí setříděný seznam prvků pole. - Přepište program, ve kterém jste vytvářeli obsah nějaké knihy. Jednotlivé kapitoly uchovejte jako prvky pole.
- Napište program, který vytvoří pole 20 náhodných dvouciferných čísel. Zajistěte, aby se čísla uvedená v poli neopakovala!
Příště se podíváme na psaní vlastních metod. Jak sami uvidíte, usnadníme si tím psaní delších programů a zároveň zpřehledníme vlastní kód programu.