11. diel - Zoznamy v Scratchi
V predchádzajúcom cvičení, Riešené úlohy k 5.-8. lekciu Scratche, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
V dnešnom Scratch tutoriále si predstavíme zoznam. Vyskúšame si, ako do neho pridať jednotlivé položky a ako ich odobrať. Nakoniec vytvoríme aplikáciu s nákupným zoznamom a naučíme mačičiaka, aby z neho zmazal konkrétnu položku.
Zoznam v Scratchi
Predstavme si, že si chceme uložiť nejaké údaje o viacerých
prvkoch. Napríklad chceme v pamäti uchovávať desať čísel,
políčka šachovnice alebo mená päťdesiatich užívateľov. Asi nám dôjde,
že v programovaní bude nejaká lepšia cesta, než začať búšiť premenné
uzivatel1
, uzivatel2
až uzivatel50
.
Nehľadiac na to, že ich môže byť treba 1000! A ako by sa v tom potom
hľadalo? Brrr, takto nie 🙂
Ak potrebujeme uchovávať väčšie množstvo premenných,
tento problém nám rieši zoznam. Môžeme si ho predstaviť
ako množstvo priehradok, kde v každej máme uložený jeden prvok. Priehradky
sú očíslované tzv. indexy, prvá má index
1
:
![Štruktúra zoznamu - Scratch](images/17303/scratch/scratch_list_1.png)
(Na obrázku je vidieť zoznam ôsmich čísel.)
Práca so zoznamom
V niekoľkých ďalších krokoch si vytvoríme zoznam a naplníme ho vlastnými dátami.
Vytvorenie zoznamu
Aby sme vytvorili zoznam, prejdeme do blokov Premenné a klikneme na tlačidlo Vytvor zoznam:
![Tlačidlo vytvor zoznam - Scratch](images/17303/scratch/scratch_list_2.png)
Zobrazí sa rovnaký dialóg, ako keď vytvárame premennú. Zadáme názov zoznamu a okno potvrdíme:
![Dialóg na vytvorenie zoznamu - Scratch](images/17303/scratch/scratch_list_3.png)
Tým sa nám odomkli ďalšie možnosti, ktoré si teraz popíšeme 😉
Zobrazenie a skrytie zoznamu
Ak chceme zobraziť všetky prvky v zozname, môžeme to urobiť zaškrtnutím fajky pri názve zoznamu (tak ako pri premennej). V aplikácii potom pre zobrazenie zoznamu použijeme blok ukáž zoznam:
![Blok ukáž zoznam - Scratch](images/17303/scratch/scratch_list_4.png)
Kde blok skry zoznam náš zoznam skryje:
![Blok skry zoznam - Scratch](images/17303/scratch/scratch_list_5.png)
Naplnenie zoznamu
Na naplnenie zoznamu môžeme použiť dva spôsoby. Zoznam naplníme buď programovo, alebo ručne. Obe možnosti si hneď ukážeme 🙂
Programové naplnenie
Aby sme pridali do zoznamu prvok, použijeme blok pridaj k. Poďme blok nalepiť k štartovému bloku:
![Pridanie položky do zoznamu - Scratch](images/17303/scratch/scratch_list_6.png)
Program spustíme a vidíme, že sa nám do zoznamu naozaj pridala nová položka 😉 Ak program spustíme niekoľkokrát, položka sa pridá viackrát:
![Zoznam s niekoľkými položkami - Scratch](images/17303/scratch/scratch_list_7.png)
Samozrejme namiesto věc
môžeme zakaždým zadať
nejaký iný text. V ukážke vyššie sme do zoznamu pridali položky s
číslom 1-3 😉
Ručné naplnenie
Pokiaľ chceme zoznam naplniť ručne, použijeme na to symbol plus. Po kliknutí naň sa pridá ďalšia položka, do ktorej napíšeme jej názov. Kliknutím vedľa prestaneme písať a položka je úspešne pridaná do zoznamu:
![Ručné pridanie do zoznamu - Scratch](images/17303/scratch/scratch_list_17.gif)
Ak chceme pridať ďalšiu položku, stlačíme po dopísaní názvu položky klávesu Enter 😉
Zmazanie položky
Rovnako aj pri mazaní položiek zo zoznamu platí, že ho môžeme vykonať buď programovo, alebo ručne.
Programové zmazanie
Ako sme si už povedali, v zozname sa položky označujú indexy počnúc
1
. Na zmazanie konkrétnej položky slúži blok smaž
z:
![Blok na zmazanie položiek - Scratch](images/17303/scratch/scratch_list_8.png)
Všimnime si, že do tohto bloku môžeme napísať iba čísla. Musíme teda vedieť, na akom indexe sa mrkva nachádza, a až potom ju môžeme takto zmazať 😉
Ručné zmazanie
Pokiaľ chceme položku zo zoznamu zmazať ručne, najskôr na ňu klikneme. Po kliknutí sa vedľa názvu položky objaví krížik, na ktorý klikneme. Tým je položka zmazaná:
![Ručné zmazanie zo zoznamu - Scratch](images/17303/scratch/scratch_list_18.gif)
Nákupný zoznam
Poďme si ukázať, ako môžeme zmazať položku podľa názvu a nie podľa indexu. Vďaka tomu si nebudeme musieť pamätať, aká položka má aký index 🙂
Začneme klasicky, pridáme si štartový blok ak tomu si vytvoríme zoznam
nakupniSeznam
, do ktorého si pridáme niekoľko položiek:
![Nákupný zoznam - Scratch](images/17303/scratch/scratch_list_9.png)
Za štartový blok nalepíme otázku
Zadejte název položky, kterou chcete smazat:
a za tú nalepíme
blok zmaž z:
![Mazanie 1. položky zoznamu - Scratch](images/17303/scratch/scratch_list_10.png)
Potom vezmeme blok poradie vo a namiesto položky věc
vložíme blok odpoveď. Celý blok potom vložíme do bloku smaž
z namiesto indexu:
![Mazanie zadanej položky zoznamu - Scratch](images/17303/scratch/scratch_list_11.png)
Keď program spustíme, zo zoznamu sa naozaj zmaže zadaná položka:
![Mačičák maže položku zo zoznamu - Scratch](images/17303/scratch/scratch_list_12.gif)
Tým sme si zároveň predstavili ďalší blok na prácu so
zoznamom. Budeme si pamätať, že blok poradí vo vráti index
výskytu položky v zozname. Ak sa položka v zozname nevyskytuje,
vráti blok poradie vo hodnotu 0
😉
Poďme náš program ešte vylepšiť. Pokiaľ položka nebude na zozname,
povie nám mačičák, že tam nie je. Pridáme do programu blok keď tak
inak. Do podmienky potom vložíme operátor rovná sa. Na ľavú
stranu pridáme rovnaký blok poradie vo, ako sme mali v bloku
smaž z. Na pravej strane zadáme hodnotu 0
:
![Podmienka pre mazanie zoznamu - Scratch](images/17303/scratch/scratch_list_13.png)
Náš celý mazací blok potom vložíme do vetvy inak a do vetvy
tak vložíme bublina sekúnd s textom
Taková položka na seznamu není.
Celý kód bude vyzerať
takto:
![Mazanie zoznamu s overením existencie položky - Scratch](images/17303/scratch/scratch_list_14.png)
Keď teraz program spustíme, mačičák naozaj kontroluje, či sa položka na zozname nachádza:
![Mačičák maže položku zo zoznamu a kontroluje ho - Scratch](images/17303/scratch/scratch_list_15.gif)
Zmazanie všetkých položiek
Bolo by samozrejme otravné musieť pre zoznam s 50 položkami vytvárať 50 blokov smaž z a pri každom meniť index. Preto existuje veľmi elegantné riešenie vo forme bloku zmaž všetko z:
![Blok zmaž všetko z - Scratch](images/17303/scratch/scratch_list_16.png)
Ako iste uhádnete, blok zaistí zmazanie úplne všetkých položiek zo zoznamu 😉
V nasledujúcej lekcii, Zoznamy v Scratchi - Dokončenie , si popíšeme ďalšie bloky pre prácu so zoznamami a ukážeme si, ako ich využiť na vylepšenie projektu s nákupným zoznamom.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 7x (42.07 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch