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
:

(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:

Objeví se stejný dialog, jako když vytváříme proměnnou. Zadáme název seznamu a okno potvrdíme:

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:

Kdežto blok skryj seznam náš seznam skryje:

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:

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:

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:

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:

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:

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:

Za startovní blok nalepíme otázku
Zadejte název položky, kterou chcete smazat:
a za tu nalepíme
blok smaž z:

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:

Když program spustíme, ze seznamu se opravdu smaže zadaná položka:

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
:

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:

Když teď program spustíme, kočičák opravdu kontroluje, jestli se položka na seznamu nachází:

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:

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 18x (42.07 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch