1 / 14

Seznamy

Seznamy. Seznam = očíslovaná posloupnost skalárů Zápis seznamu do kulatých závorek: ("máslo" ) # jedno členný seznam (1,2,3) # seznam se 3 členy ("jedna",2,3,"osm",100,$pozdrav) () # prázdný seznam (2..7) # (2,3,4,5,6,7) print – seznamový operátor => netřeba závorek

thu
Download Presentation

Seznamy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seznamy • Seznam = očíslovaná posloupnost skalárů • Zápis seznamu do kulatých závorek:("máslo") # jednočlenný seznam(1,2,3)# seznam se 3 členy("jedna",2,3,"osm",100,$pozdrav) ()# prázdný seznam (2..7) # (2,3,4,5,6,7) • print – seznamový operátor => netřeba závorek • print "Výsledek je ", $prijmeni, "\n"; • tiskne 3členný seznam, nepřidává mezery !

  2. Zápis seznamuřetězců • Místo uvozovek (jednoduchých či dvojitých) lze použít operátory q nebo qq • Operátor qw - nemusí (NESMÍ) se psát uvozovky:qw(máslo mouka sýr rozinky) • Místo závorek lze použít jiný oddělovač, stejně jako pro q, qq • Mezi členy seznamu mohou být mezery, tabulátory, znaky konce řádku:qw[máslo moukasýrrozinky ]

  3. Seznamy a proměnné • ($jedna, $dve) = (1,2); • totéž jako $jedna = 1; $dve = 2; • ($tri, $ctyri) = ($jedna, $dve); • napřed se vyhodnotí seznam vpravo, ten se pak přiřadí do seznamu nalevo • ($tri, $ctyri) = ($ctyri, $tri); # výměna obsahu dvou proměnných • Je to totéž jako $tri = $ctyri; $ctyri = $tri; ?

  4. Pole (array) • = zařízení na ukládání seznamů • Název pole - začíná @, dále stejná pravidla jako pro název proměnné • Ukládání dat do polí: přiřazení seznamu: • my @pole; # deklarace • @pole = (1,3,5); • @pole = qw(máslo mouka sýr rozinky); • Rozdíl print @pole; <--> print "@pole";

  5. Pole a skaláry • @pole je něco jiného než $pole!NEDĚLEJTE TO !!! • Ale lze přiřazovat skaláru pole: @pole = qw(máslo mouka sýr rozinky); $skalar = @pole; print $skalar; # Výsledek je 4 = počet prvků pole print scalar @pole; # totéž • Skalární kontext vs. seznamový kontext @pole2 = @pole; $pole2 = @pole;

  6. Prvky pole • Index pole - pořadí prvku pole • Čísluje se od nuly ! • @pady = qw(nominativ genitiv dativ akuzativ vocativ local instrumental); • print $pady[2]; # co se vypíše? • záporný index - odzadu: print $pady[-3]; • Výpis více prvků najednou: • @pady[3,5,6] # proč tu není $ ? • @pady[0..4] • reverse(@pady[0..4]) #nikoli @pady[4..0] !

  7. Prvky pole - pokr. • Přiřazování prvků pole $pad1 = $pady[0]; @vyber = @pady[0..3,6]; ($pad1,$pad3, $pad7) = @pady[0,2,6]; • Zvl. proměnná $#pole- index posledního prvku pole • Změna obsahu prvku pole - prosté přiřazení: $pole[2] = "třetí pád"; • Vložení jiného pole: @pole1 = (3,5,7); @pole2 = (1,@pole1,9,11); print $pole2[2]; # co se vypíše?

  8. Funkce na polích pop máslo mouka sýr rozinky rozinky pop(@pole); push máslo mouka sýr rum chléb push(@pole,qw/rum chléb/); rum chléb shift máslo mouka sýr rum chléb shift(@pole); máslo unshift cukr sůl mouka sýr rum chléb cukr sůl unshift(@pole, "cukr", sůl");

  9. Další funkce splice cukr sůl mouka sýr rum chléb krupice tvaroh splice(@pole,2,3,"krupice","tvaroh"); pole kolik čím (seznam) odkud Podobné jako u funkce substr, jenže pro prvky pole.

  10. Funkce split • Pracuje na řetězcích, výsledek je seznam $veta = "Dnes máme ale hezké počasí."; @slova = split(" ",$veta); print @slova[1,4], "\n"; # co se vypíše ? split(vzor, řetězec) Vzor může být i více znaků.

  11. Cyklus foreach foreach proměnná (seznam) { blok } • Cyklus se opakuje tolikrát, kolik prvků má seznam • Použití při procházení pole – s každým prvkem seněco provede • Nelze nekonečný cyklus - výhoda foreach $pad (@pady) { print $pad, "\n"; }

  12. Cyklus for for (inicializace ; podmínka ; změna) { blok} for($i = 0; $i <= $#pady; $i++) { print $pady[$i], "\n"; } Použití deklarace my uvnitř cyklu neovlivní hodnotu proměnné vně $i = 666; for(my $i=10;$i>0;$i--) {print $i} print $i; # bude 666

  13. Vnořené cykly my @konce = qw/konec exit quit leave stop/; while(<STDIN>) { chomp; foreach my $k (@konce) { last if ($k eq $_) } print "Stále jsme neskončili, říkáš $_!\n"; } print "Končíme\n";

  14. Návěští my @konce = qw/konec exit quit leave stop/; VNEJSI:while(<STDIN>) { chomp; VNITRNI:foreach my $k (@konce) { last VNEJSIif ($k eq $_) } print "Stále jsme neskončili, říkáš $_!\n"; } print "Končíme\n";

More Related