Podcast o Dátové typy a pokročilé programovanie v Scratch

Dátové Typy a Pokročilé Programovanie v Scratch

Podcast

Programovanie v Scratch0:00 / 8:50
0:001:00 zostáva
Tereza...počkať, takže celý Scratch vlastne dopredu ani nevie, či do premennej dám číslo alebo text? To je neuveriteľné!
LukášPresne tak. Je to dynamicky typovaný jazyk. Nemusíš mu dopredu hovoriť: „Toto bude číslo!“ On si to zistí sám, keď tam tú hodnotu vložíš.
Kapitoly

Programovanie v Scratch

Délka: 8 minut

Kapitoly

Úvod do Scratchu

Premenné: Čísla a slová

Zoznamy a logické hodnoty

Vlastné bloky pre poriadok

Práca so súbormi

Mapy a súbory

Vytvárame postavy

Klonovanie vs. Duplikovanie

Komunikácia a udalosti

Od Scratchu k OOP

Postava ako Objekt

Komunikácia a Premenné

Zhrnutie a Záver

Přepis

Tereza: ...počkať, takže celý Scratch vlastne dopredu ani nevie, či do premennej dám číslo alebo text? To je neuveriteľné!

Lukáš: Presne tak. Je to dynamicky typovaný jazyk. Nemusíš mu dopredu hovoriť: „Toto bude číslo!“ On si to zistí sám, keď tam tú hodnotu vložíš.

Tereza: Dobre, toto si musíme rozobrať! Vitajte pri Studyfi Podcast, kde sa dnes s expertom Lukášom pozrieme na programovanie v Scratchi, ktoré je zjavne múdrejšie, ako som si myslela.

Lukáš: Ahojte! A je to hlavne super nástroj na učenie sa základov. Tak poďme na to.

Tereza: Fajn, začnime tými premennými. Čo všetko do nich môžem uložiť?

Lukáš: V podstate dve základné veci: čísla alebo text, ktorému programátori hovoria reťazec alebo anglicky string.

Tereza: Takže napríklad skóre v hre by bolo číslo a meno hráča by bol text?

Lukáš: Presne! S číslami potom môžeš robiť všetky možné matematické operácie – sčítanie, násobenie, porovnávanie... Vieš, nastav skóre na nula, a vždy, keď postava niečo chytí, zmeň skóre o jeden.

Tereza: A čo s textom? Tam asi veľa matematiky neurobím.

Lukáš: To veru nie, ale môžeš napríklad spájať texty. Napríklad spojíš pozdrav „Ahoj “ s menom hráča, ktoré zadal. Alebo zistíš dĺžku slova, či overíš, či odpoveď obsahuje správne písmeno.

Tereza: A čo ak potrebujem uložiť viacero vecí naraz? Napríklad zoznam najvyšších skóre?

Lukáš: Na to slúžia zoznamy. Je to ako nákupný zoznam – usporiadaná zbierka hodnôt. Môžeš do nej pridávať nové položky, mazať staré, alebo zisťovať, čo je na piatej pozícii.

Tereza: To je super praktické. A ešte tu máme logické hodnoty. To znie dosť... logicky.

Lukáš: Áno. Ide o odpovede áno/nie, alebo pravda/nepravda. Používaš ich v podmienkach. Napríklad: AK je skóre väčšie ako 10, POTOM vyhral si. Tá časť „skóre je väčšie ako 10“ je logická hodnota. Buď je to pravda, alebo nie.

Tereza: Dobre, a teraz niečo pre pokročilých. Počula som o vlastných blokoch. Prečo by som si mala vytvárať vlastné bloky?

Lukáš: Hlavne kvôli prehľadnosti a opakovaniu. Predstav si, že chceš v programe desaťkrát nakresliť štvorec. Namiesto toho, aby si desaťkrát kopírovala tie isté štyri príkazy, vytvoríš si jeden vlastný blok s názvom „Štvorec“.

Tereza: A potom už len zavolám ten jeden blok? To šetrí kopu miesta!

Lukáš: Presne. A dokonca mu môžeš dať vstup, napríklad dĺžku strany. Takže raz zavoláš blok „Štvorec“ s dĺžkou 50 a druhýkrát s dĺžkou 100. Jeden blok, veľa možností.

Tereza: A posledná vec na dnes – textové súbory. Dá sa v Scratchi načítať niečo z počítača alebo si tam niečo uložiť?

Lukáš: Určite! Funguje to cez spomínané zoznamy. Môžeš si napríklad pripraviť textový súbor s otázkami pre kvíz, kde každý riadok je jedna otázka.

Tereza: A ten potom naimportujem do zoznamu v Scratchi? Jedným klikom?

Lukáš: Áno, pravým tlačidlom na zoznam a „Importovať“. Každý riadok súboru sa stane jednou položkou zoznamu. A rovnako jednoducho vieš zoznam aj exportovať a uložiť si ho ako textový súbor. Perfektné na ukladanie výsledkov hry.

Tereza: Takže skóre máme v premennej, ale čo sa stane, keď hru vypnem? Všetko je preč, však?

Lukáš: Presne tak. Na to slúžia súbory. Ale pozor, Scratch nevie zapisovať do súboru priamo počas hry.

Tereza: A ako to teda funguje?

Lukáš: Počas hry si ukladáš dáta, napríklad skóre, do zoznamu. A až po skončení hry tento zoznam exportuješ. Každý prvok zoznamu bude jeden riadok v textovom súbore.

Tereza: Chápem. Takže si môžem uložiť rebríček najlepších hráčov. A dá sa to použiť aj naopak? Načítanie dát do hry?

Lukáš: Určite! To je super užitočné. Predstav si, že chceš vytvoriť labyrint. Nemusíš ho stavať z blokov ručne.

Tereza: Počkaj... akože načítaš mapu zo súboru?

Lukáš: Presne tak. V súbore máš riadky plné núl a jednotiek, napríklad '1011', '1100'. Jednotka je stena, nula je chodba. Tvoj program to prečíta a sám ten labyrint vykreslí.

Tereza: Dobre, máme bludisko. Kto sa v ňom bude pohybovať? Potrebujeme postavy!

Lukáš: Jasné. Máš tri možnosti. Buď si vyberieš postavu z knižnice, nakreslíš si vlastnú... alebo si naimportuješ hotovú zo súboru.

Tereza: Moje kresliace schopnosti sú... diskutabilné. Takže asi ostanem pri knižnici. A postava môže mať aj viac kostýmov, však? Aby to vyzeralo, že sa hýbe.

Lukáš: Áno, presne. Zmenou kostýmov vytváraš ilúziu pohybu. Každá postava má svoj vlastný scenár, svoje správanie. Je to ako herec s vlastným textom.

Tereza: Čo ak chcem mať v hre desať rovnakých nepriateľov? Musím každého vytvoriť a naprogramovať zvlášť?

Lukáš: Nemusíš. Tu máme dve cesty. Môžeš postavu duplikovať. To je ako ručné kopírovanie. Vznikne ti nezávislá kópia aj so skriptami, ktorú si môžeš upraviť.

Tereza: A tá druhá cesta?

Lukáš: Klonovanie. To je oveľa mocnejšie. Pomocou programu vytvoríš koľko chceš klonov jednej postavy. Všetky budú robiť to isté, čo im povieš v bloku 'pri štarte klonu'.

Tereza: Takže napríklad padajúce jablká v hre?

Lukáš: Perfektný príklad! Alebo guľky, ktoré strieľaš. Nemusíš mať sto postáv guliek, stačí ti jedna, ktorú klonuješ.

Tereza: A ako tie postavy medzi sebou komunikujú? Keď jedna postava niečo urobí, ako to tá druhá zistí?

Lukáš: Pomocou správ. Jedna postava pošle správu, napríklad 'otvor dvere'. Druhá postava má blok 'po prijatí správy otvor dvere' a vykoná, čo má. Je to ako posielanie SMSiek.

Tereza: To znie jednoducho. Takže celé to funguje na princípe akcií a reakcií?

Lukáš: Presne. Scratch je riadený udalosťami. Program čaká, kým sa niečo stane. Kliknutie na vlajku, stlačenie klávesu, kliknutie na postavu...

Tereza: Takže stlačím šípku doprava a postava sa pohne doprava. Stlačím medzerník a ona skočí.

Lukáš: Áno, na to slúžia bloky v kategórii Udalosti. 'Pri stlačení klávesu', 'pri kliknutí na mňa'. Dokonca vieš zistiť, či sa dotýkaš myši alebo akej farby.

Tereza: Tým sa otvárajú obrovské možnosti pre interaktivitu. To už nie sú len animácie, ale skutočné hry. Je úžasné, ako sa tieto jednoduché bloky spájajú do komplexných systémov. A čo vlastné premenné a bloky, Lukáš? Dajú sa veci ešte viac zjednodušiť?

Tereza: Takže premenné a zoznamy máme za sebou. Ale keď sa na to pozrieme zvrchu, ako presne Scratch súvisí s "naozajstným" programovaním ako je Python?

Lukáš: Skvelá otázka na záver! Scratch je vlastne taká tajná prípravka na objektovo orientované programovanie, alebo OOP. Každá postava v Scratchi... je v podstate objekt.

Tereza: Objekt? Akože... má svoje vlastnosti a správanie?

Lukáš: Presne tak! Premenné, ktoré patria len tej postave, sú jej atribúty. A skripty, ktoré jej hovoria, čo má robiť... to sú jej metódy. Je to ako v Pythone, kde má objekt svoje self.x a metódy ako def pohyb(self):.

Tereza: A čo klony? To sú potom inštancie toho objektu?

Lukáš: Bingo! Vytvoríš klon a on zdedí všetky skripty – teda metódy – od originálu. Ale môže mať vlastné hodnoty premenných, napríklad inú rýchlosť alebo smer.

Tereza: A ako spolu tie objekty-postavy komunikujú? V Pythone by si zavolal metódu iného objektu.

Lukáš: V Scratchi na to máme systém správ! Jedna postava pošle správu, ako keby zakričala "Hej, začni sa hýbať!", a druhá, ktorá na tú správu čaká, spustí svoj skript. Je to veľmi elegantné.

Tereza: Spomínal si premenné pre jednu postavu. To je dôležité, však?

Lukáš: Kľúčové! Pri tvorbe premennej si vyberieš, či platí "pre všetky postavy" – to je globálna premenná, ako napríklad skóre. Alebo len "pre túto postavu", čo je lokálna.

Tereza: Takže každý nepriateľský klon môže mať vlastné životy. To je super.

Lukáš: Presne tak. Scratch ťa vlastne učí základy OOP bez toho, aby si musel písať zložitý kód. Je to ako stavať z Lega namiesto toho, aby si si najprv musel vyrobiť vlastné tehličky.

Tereza: Skvelé prirovnanie! Takže, kľúčový poznatok je, že Scratch nie je len hračka. Je to vizuálny úvod do konceptov, ktoré použijete v jazykoch ako Python.

Lukáš: Absolútne. Je to fantastický odrazový mostík.

Tereza: Ďakujeme, Lukáš, za všetky skvelé vysvetlenia. A vám, milí poslucháči, ďakujeme za pozornosť pri dnešnom dieli Studyfi Podcastu. Dopočutia nabudúce!

Lukáš: Dopočutia!