11. Aktivita 7 - datové seznamy a komponenty pro práci se seznamy

Téma

Tematický celek

Datový typ seznam a komponenty pro práci se seznamy.

Motivační rámec

Usnadnění práce s větším množstvím proměnných a zjednodušení programu.

Počet žáků

5-15

Věk žáků

10+

Pomůcky

PC odpovídajících parametrů,
webový prohlížeč Mozilla Firefox nebo Google Chrome,
zařízení s Androidem připojené k internetu,
případně emulátor zařízení s Androidem,
účet pro Google služby

Stručný popis aktivity

Přihlášení k prostředí App Inventoru http://appinventor.mit.edu/
Teoretické a praktické seznámení s datovým typem seznam "list".

Vhodné místo

Počítačová učebna

Cíle aktivity

Studenti se seznámí s použitím datového typu seznam a komponentami pro práci se seznamy a vyzkouší si je.

Předchozí znalosti

Aktivita navazuje na předchozí lekci tohoto kurzu.

Časový plán

Fáze činnosti s přístrojem

Metody a formy, motivace

5-15m

Seznámení s tématem lekce. Volitelně předvedení a popis ukázkové aplikace. Dle znalostí studentů  zopakování informací o datovém typu seznam a základních operací s tímto datovým typem nebo seznámení s nimi.

Volitelně infromace o frontách LIFO a FIFO.

Frontální výklad, ukázka.

25-50m

Prohlídka ukázkových aplikací. Modifikace ukázkových aplikací případně využití znalosti seznamů při tvorbě vlastní aplikace.

Samostatná a skupinová práce s využitím získaných znalostí, infromací v tomto kurzu a externích zdrojů.

15-30m

Prezentace prací žáků, sdílení poznatků, diskuze.
Motivace žáků k domácí práci.

Prezentace prací a diskuze

Hodnocení

Zpětná vazba je okamžitá. Student reflektuje vzdělávací cíle, svůj postup a dosažené výsledky. Student průběžně srovnává vlastní výsledky s výsledky ostatních studentů.

Návaznosti

Na tuto aktivitu navazují následující aktivity, které prohlubují a kombinují znalosti prostředí App Inventoru.

Poznámky

Pro případ výpadku připojení k internetu nebo technických problémů s App Inventorem doporučuji připravit záložní aktivitu, založenou na podobných principech blokového programování, například offline aplikaci MIT Scratch, BYOB nebo některou z variant programovacích prostředí LOGO.

Video o vytváření seznamu v AI2 2 min . Creating lists in App Inventor 2

Tutoriál k vytváření seznamu. Making Lists (App Inventor 2)

Popis jednotlivých bloků seznamu. AI2 Lists.

Aplikace využívající seznamy. Math Blaster

Aplikace pro ukázku práce s datovými seznamy

Datové seznamy usnadňují práci s programem. Podobně jako procedury zobecňují kód a umožňují ho zjednodušit, seznamy zjednodušují práci s proměnnými a jejich obsahem. Aplikace napodobuje hru videostop. Po stisknutí tlačítka start se mění obrázky tří sprite a talčítkem stop ze změny zastaví. Hráč zvedá skóre, když se mu podaří zastavit na stejných obrázcích.

Komponenty modelové aplikace.

pamai_a070_lists_design.png

Inicializace seznamů

V ukázce jsou vytvořeny tři seznamy. sprites a jmena_souboru jsou inicializovany jako prázdné seznamy a jsou naplněny v bloku when Screen.Initialize.

Seznam jmena_obrazku je naplněn při inicializaci. Obsahuje řetězce, kterými se jednotlivé obrázky liší. V bloku when Screen.Initialize je nejdříve vytvořen seznam instancí sprites, následně je vytvořen seznam jmena_souboru, který obsahuje celé názvy souborů s obrázky. Seznamy tedy mohou obsahovat nejen čísla a textové řetězce, mohou obsahovat také instance objektů.

pamai_a070_lists_blocks_init.png

Cyklus nad objekty seznamu

Tlačítkem ButtonStartStop je řízeno pouštění a zastavení časovače. Časovač Clock1 spouští v cyklu "for each sprite in list get global sprites" cyklus nad dříve vytvořeným seznamem sprites. Pro každý sprite zavolá proceduru nahodny_obrazek, která vybere ze seznamu obrázků jeden náhodný. Po druhém stisknutí tlačítka ButtonStartStop je zavolána funkce pro vyhodnocení skóre.

pamai_a070_lists_blocks_start_change.png

Vyhodnocení výsledku

Uvnitř procedury vyhodnoceni je vytvořen seznam jako lokální proměnná. Pak potřebujeme zjistit, kolik obrázků je stejných. Místo porovnávání obrázků každého s každým je tento úkol řešen pomocí seznamu. V cyklu for each se projdou všechny zobrazené obrázky a přidávají se do seznamu, pokud tam ještě nejsou. Pokud jsou po cyklu for each v seznamu 3 obrázky, znamená to, že hráč nestrefil ani dva stejné. Pokud jsou v seznamu dva obrázky, hráč strefil dva stejné a jeden jiný obrázek. Pokud je v seznamu jen jeden obrázek, znamená to, že hráč strefil 3 stejné obrázky.

Procedura vyhodnocení může vypadat na první pohled komplikovaně, ale když si odmyslíte dvě vrstvy, vnoření samotné proceduty a vnoření lokální proměnné, k "porovnani" zbude jen for a case cyklus.

pamai_a070_lists_blocks_score.png

Tipy na modifikace programu:

  • více než 6 obrázků, které se střídají,
  • více než 3 sprites pro zobrazování obrázků,
  • náhodné zastavení obrázku a ponechání beze změny,
  • počítání počtu pokusů, případně omezení na x pokusů, pak reset.