IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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, uzivatel2uzivatel50. 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

(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

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

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

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

Blok skryj seznam - Scratch

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

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

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

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

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

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

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

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

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

Kočičák maže položku ze seznamu - Scratch

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

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

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

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

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

 

Předchozí článek
Řešené úlohy k 9.-10. lekci Scratche
Všechny články v sekci
Scratch
Přeskočit článek
(nedoporučujeme)
Seznamy ve Scratchi podruhé
Článek pro vás napsal PDoctor
Avatar
Uživatelské hodnocení:
6 hlasů
Aktivity