Lekce 11 - Seznamy ve Scratchi
V předešlém cvičení, Řešené úlohy k 9.-10. lekci Scratche, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
V dnešním Scratch tutoriálu si představíme seznam. Vyzkoušíme si, jak do něj přidat jednotlivé položky a jak je odebrat. Nakonec vytvoříme aplikaci s nákupním seznamem a naučíme kočičáka, aby z něj smazal konkrétní položku.
Seznam ve Scratchi
Představme si, že si chceme uložit nějaké údaje o více
prvcích. Například chceme v paměti uchovávat deset čísel,
políčka šachovnice nebo jména padesáti uživatelů. Asi nám dojde, že v
programování bude nějaká lepší cesta, než začít bušit proměnné
uzivatel1
, uzivatel2
až uzivatel50
.
Nehledě na to, že jich může být třeba 1000! A jak by se v tom potom
hledalo? Brrr, takhle ne 🙂
Pokud potřebujeme uchovávat větší množství
proměnných, tento problém nám řeší seznam.
Můžeme si ho představit jako řadu přihrádek, kde v každé máme uložený
jeden prvek. Přihrádky jsou očíslované tzv. indexy, první
přihrádka má tedy index 1
:
![Struktura seznamu - Scratch](images/17303/scratch/scratch_list_1.png)
(Na obrázku je vidět seznam osmi čísel.)
Práce se seznamem
V několika dalších krocích si vytvoříme seznam a naplníme ho vlastními daty.
Vytvoření seznamu
Abychom vytvořili seznam, přejdeme do bloků Proměnné a klikneme na tlačítko Vytvoř seznam:
![Tlačítko vytvoř seznam - Scratch](images/17303/scratch/scratch_list_2.png)
Objeví se stejný dialog, jako když vytváříme proměnnou. Zadáme název seznamu a okno potvrdíme:
![Dialog pro vytvoření seznamu - Scratch](images/17303/scratch/scratch_list_3.png)
Tím se nám odemkly další možnosti, které si teď popíšeme 😉
Zobrazení a skrytí seznamu
Pokud chceme zobrazit všechny prvky v seznamu, můžeme to udělat zaškrtnutím fajfky u názvu seznamu (tak jako u proměnné). V aplikaci pak pro zobrazení seznamu použijeme blok ukaž seznam:
![Blok ukaž seznam - Scratch](images/17303/scratch/scratch_list_4.png)
Kdežto blok skryj seznam náš seznam skryje:
![Blok skryj seznam - Scratch](images/17303/scratch/scratch_list_5.png)
Naplnění seznamu
K naplnění seznamu můžeme použít dva způsoby. Seznam naplníme buď programově, nebo ručně. Obě možnosti si hned ukážeme 🙂
Programové naplnění
Abychom přidali do seznamu prvek, použijeme blok přidej k. Pojďme blok nalepit ke startovnímu bloku:
![Přidání položky do seznamu - Scratch](images/17303/scratch/scratch_list_6.png)
Program spustíme a vidíme, že se nám do seznamu opravdu přidala nová položka. Pokud program spustíme několikrát, položka se přidá vícekrát:
![Seznam s několika položkami - Scratch](images/17303/scratch/scratch_list_7.png)
Samozřejmě místo věc
můžeme pokaždé zadat
nějaký jiný text. V ukázce výše jsme do seznamu přidali položky s
číslem 1–3.
Ruční naplnění
Pokud chceme seznam naplnit ručně, použijeme k tomu symbol plus. Po kliknutí na něj se přidá další položka, do které napíšeme její název. Kliknutím vedle přestaneme psát a položka je úspěšně přidaná do seznamu:
![Ruční přidání do seznamu - Scratch](images/17303/scratch/scratch_list_17.gif)
Pokud chceme přidat další položku, stiskneme po dopsání názvu položky klávesu Enter 😉
Smazání položky
Stejně jako při editování položek můžeme také mazání seznamu provést buď programově, nebo ručně.
Programové smazání
Jak jsme si již řekli, v seznamu se položky označují indexy počínaje
1
. Ke smazání konkrétní položky slouží blok smaž
z:
![Blok pro smazání položek - Scratch](images/17303/scratch/scratch_list_8.png)
Všimněme si, že do tohoto bloku můžeme napsat jenom čísla. Musíme tedy nejprve vědět, na kterém indexu se mrkev nachází, a teprve pak ji můžeme takto smazat.
Ruční smazání
Pokud chceme položku ze seznamu smazat ručně, nejdříve na ni klikneme. Po kliknutí se vedle názvu položky objeví křížek, na který klikneme. Tím je položka smazána:
![Ruční smazání ze seznamu - Scratch](images/17303/scratch/scratch_list_18.gif)
Nákupní seznam
Pojďme si ukázat, jak můžeme smazat položku podle názvu, a ne podle indexu. Díky tomu si nebudeme muset pamatovat, která položka má jaký index 🙂
Začneme klasicky, přidáme si startovní blok a k tomu si vytvoříme
seznam nakupniSeznam
, do kterého si přidáme několik
položek:
![Nákupní seznam - Scratch](images/17303/scratch/scratch_list_9.png)
Za startovní blok nalepíme otázku
Zadejte název položky, kterou chcete smazat:
a za tu nalepíme
blok smaž z:
![Mazání 1. položky seznamu - Scratch](images/17303/scratch/scratch_list_10.png)
Potom vezmeme blok pořadí ve a místo položky věc
vložíme blok odpověď. Celý blok pak vložíme do bloku smaž
z namísto indexu:
![Mazání zadané položky seznamu - Scratch](images/17303/scratch/scratch_list_11.png)
Když program spustíme, ze seznamu se opravdu smaže zadaná položka:
![Kočičák maže položku ze seznamu - Scratch](images/17303/scratch/scratch_list_12.gif)
Tím jsme si zároveň představili další blok pro práci se
seznamem. Budeme si pamatovat, že blok pořadí ve vrátí
index výskytu položky v seznamu. Pokud se položka v seznamu
nevyskytuje, vrátí blok pořadí ve hodnotu 0
😉
Pojďme náš program ještě vylepšit. Pokud položka nebude na seznamu,
kočičák nám řekne, že tam není. Přidáme do programu blok když tak
jinak. Do podmínky pak vložíme operátor rovná se. Na levou
stranu přidáme stejný blok pořadí ve, jako jsme měli v bloku
smaž z. Na pravé straně zadáme hodnotu 0
:
![Podmínka pro mazání seznamu - Scratch](images/17303/scratch/scratch_list_13.png)
Náš celý mazací blok pak vložíme do větve jinak a do větve
tak vložíme bublina sekund s textem
Taková položka na seznamu není.
Celý kód bude vypadat
takto:
![Mazání seznamu s ověřením existence položky - Scratch](images/17303/scratch/scratch_list_14.png)
Když teď program spustíme, kočičák opravdu kontroluje, jestli se položka na seznamu nachází:
![Kočičák maže položku ze seznamu a kontroluje ho - Scratch](images/17303/scratch/scratch_list_15.gif)
Smazání všech položek
Bylo by samozřejmě otravné muset pro seznam s 50 položkami vytvářet 50 bloků smaž z a u každého měnit index. Proto existuje velmi elegantní řešení ve formě bloku smaž všechno z:
![Blok smaž všechno z - Scratch](images/17303/scratch/scratch_list_16.png)
Jak jistě uhádnete, blok zajistí smazání úplně všech položek ze seznamu 😉
V příští lekci, Seznamy ve Scratchi podruhé, si popíšeme další bloky pro práci se seznamy a ukážeme si, jak je využít pro vylepšení projektu s nákupním seznamem.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 7x (42.07 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch