ARCHIV |
|||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
Perl (10) - PoleV dnešním díle si přiblížíme další z datových struktur a to pole. Pole je jedna z tzv. seznamová struktura, kam patří společně se strukturou hash. Pole je tedy seznam skalárních dat, které jsou seřazené od prvního do posledního prvku. Jak už jsem zmínil v některém z minulých dílů, pole poznáme tak, že jeho názvu předchází znak "@". Pro název samozřejmě platí skoro všechna pravidla tvorby názvů proměnných - tzn. že se rozlišují velká a malá písmena, maximální délka názvu je 255 znaků, ale je tu jeden rozdíl! Názvy polí mohou totiž mohou začínat číslicí. Platí pak také samozřejmě, že názvy polí a jiných proměnných mezi sebou nekolidují. K prvkům pole se přistupuje pomocí indexů prvků pole, což souvisí právě s tím, že pole jsou řazená. A nyní se podíváme na to, jak mohou taková pole vypadat a jak se tvoří. Nejprve si vytvoříme prázdné pole:
@pole = ();
Teď si vytvoříme jednoduchá pole se skalárními daty:
@pole = (1,
2, 3, 4,
5); #pole s
cisly
K jednoduššímu zápisu pole lze použít i příkazu
Vidíme, že si vůbec nemusíme dávat práci s psaním oddělovacího znaku čárka a uvozovek. Pole lze i vnořovat do sebe - tzn. pokud některými (nebo všemi) prvky pole jsou další pole. Ovšem nemusí to mít logický význam pro programátora, protože tato pole se sloučí do jednoho. K prvkům pole se přistupuje pomocí indexu, který určuje pozici elementu v poli, přičemž pole jsou indexována od nuly. Takže když budu chtít například uložit řetězec "Vojta" do prvního prvku pole, udělám to takto:
$pole[0] = "Vojta";
Všimněme si, že tato proměnná nemá před názvem znak "@", ale přesto nemá s proměnnou $pole nic společného. Pole je dynamické jako všechny proměnné v Perlu, takže nemusíte, jako například v programovacím jazyce C, určovat délku pole v deklaraci. Takže když máte například pole o pěti prvcích (tzn. do prvku s indexem 4, protože se indexuje od 0) a chcete přidat další prvek, tak to uděláte prostě takto:
$pole[5] = "dalsi sesty prvek pole";
Pokud se budeme snažit přidat prvek, který nenásleduje za poslední definovaný prvek a přidali by jste prvek v našem poli o šesti prvcích například na desátou pozici, tak budou chybějící prvky mezi těmito prvky vyplněný nedefinovými hodnotami. Hodnoty indexů mohou mít i zápornou hodnotu. Takové indexy se pak počítají od konce pole, takže například prvek s indexem -1 je poslední prvek. Pokud chceme procházet pole v cyklu, tak je nejjednodušší a nejefektivnější použít cyklus
$delka_pole = @pole;
Je ovšem potřeba si dávat pozor na kontext, podle kterého data přiřazujeme. Co když budete potřebovat vytvořit pole s posloupností čísel od 1 do 100. Asi těžko vypíšete každý prvek zvlášť. Můžete použít buď cyklu a nebo elegantnější zápisu:
@pole = (1
.. 100);
Funguje to i se znaky, takže znaky od "e" do "k" v abecedě vypíšete takto:
@pole = ('e'
.. 'k');
Nad výpisem pole například na standardní výstup asi nemusíte přemýšlet a použijete prostě cyklus for s přístupem k prvkům přes indexy nebo cyklus foreach, ale existuje jedna elegantnější cesta, jak vytisknout pole (nebo zpracovávat jeho prvky).
print "@pole\n";
Všimněme si, že proměnná pole je v uvozovkách. Tento příkaz vypíše všechny prvky pole a to každý na jeden řádek. Nyní si představíme funkce, které se typicky používají pro práci s poli. Pokud budeme chtít do pole přidat prvek (z pravé strany), tak bychom mohli použít něco podobného jako:
@pole = (@pole, $novy_element);
Zde je důležizé si dávat pozor na kontext přiřazení (viz. níže). K přidání dalšího prvku z pravé strany pole lze použít i funkci
push(@pole, $novy_element);
Touto funkcí je možné přiřazovat i více prvků najednou a to takto:
@pole = (1,2,3); Tímto jsme vytvořili pole o šesti prvcích, které představují posloupnost čísel od 1 do 6. Další užitečnou funkcí je funkce
$posledni_element = pop(@pole);
Poslední prvek z pole
unshift(@fred, $novy_prvek); #prida prvek $a na zacatek pole
Další užitečnou funkcí je funkce
@pole = (1, 2, 3); Mezi další funkce, které lze použít přímo s poli patří například funce Nakonec si něco řekneme o kontextu přiřazení. Nejdříve se podíváme na pár příkladů přířazení, abychom viděli, jak se chovají:
($a, $b, $c) = (1, 2, 3); #priradi jednotlive prvky do jednotlivych prvku pole Co když ale zapíši takovéto dva zápisy:
$x = @pole; V prvním případě bude do proměnné V přístím díle se popereme s hashi.
Související články
Perl (1) - historie a vývoj
Perl (2) - instalace Perl (3) - skaláry I Perl (4) - skaláry II Perl (5) - Funkce I Perl (6) - Funkce II Perl (7) - Funkce III Perl (8) - Podmínky Perl (9) - Cykly Předchozí Celou kategorii (seriál)
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |