App Inventor. Projekt Grafický editor

Vytvorme jednoduchý grafický editor, ktorý bude kresliť  čiary a malé a veľké bodky,  v ktorom bude možné nastaviť farbu pera, mazať nakreslený obrázok, ktorý bude alebo nebude mať pozadie a v ktorom bude používateľ môcť urobiť fotku a táto fotka sa stane pozadím. Naučíte sa pracovať s prvkami Canvas (plátno), Camera (fotoaparát, kamera), Variables (premenné) … Continue reading

Udalosti (tlačidlá)

Štandardná myš má tri tlačidlá, môžeme jej v programe priradiť tri funkcie, ktoré sa vykonajú po ich stlačení. Geometrických tvarov, ktoré by sme potrebovali kresliť je omnoho viac, potrebujeme preto nástroje, ktorými môžeme rozšíriť možnosti nášho  grafického editora. Takýmto nástrojom je príkaz Button, ktorý vytvorí tlačidlo. Každému tlačidlu môžeme priradiť nejakú funkciu.  Continue reading

Python. Tkinter. Nakreslenie mnohouholníka

Mnohouholník nakreslíme príkazom create_polygon.

Prvé parametre sú súradnice vrcholov mnohouholníka. Ďalšie paramentre sú rovnaké, ako v iných grafických príkazoch, farba výplne – fill, farba vonkajších hrán – outline, hrúbka vonkajších hrán – width.

Príkaz: platno.create_polygon(100,100,300,100,300,200,fill=“pink“) nakreslí trojuholník vyplnený ružovou farbou. Continue reading

Eliza 2

Už úvodná Elizina otázka Ako sa voláš?, či skôr odpoveď používateľa, predstavuje komplikovaný problém. Niekto odpovie  menom, niekto menom a priezviskom, ďalší priezviskom a menom, iný prezývkou v kombinácii s priezviskom či bez neho a ktosi odpovie svojim priezviskom. Ak by Eliza bola človek, vo väčšine prípadov by vedela identifikovať, o ktorý variant ide. Continue reading

Eliza (umelá inteligencia?) 1

Žiaci 8. B prišli s nápadom, rozvinúť dialóg s programom tak, aby to neboli len otázky počítača človeku, ale aby aj človek mohol klásť otázky počítaču a aby to vyzeralo, ako skutočný dialóg medzi dvoma ľuďmi. Spomenul som si na program Eliza, ktorý bol pravdepodobne inšpirovaný Turingovým testom umelej inteligencie – program bude mať vlastnosti umelej inteligencie, keď človek pri dialógu s programom alebo s človekom nerozozná, či je na druhom konci človek alebo počítač. Continue reading

Hra Logik v Pythone

Pravidlá hry Logik:

  • Hráč 1 si myslí štvorciferné číslo bez opakovania číslic
  • Hráč  2 toto číslo háda tak, že povie štvorciferné číslo, bez opakovania číslic  a hráč 1 odpovie koľko číslic  je na správnom mieste a koľko číslíc do čísla patrí, ale nie sú na svojom mieste. Číslice na správnom mieste sú označené počtom A, číslice na nesprávnom mieste počtom B.

Continue reading

Tabuľka ASCII

Informácie v počítači sú kódované podľa dohodnutých pravidiel. Najrozšírenejším kódovaním je kódovanie ASCII. Každý znak má pridelené nejaké číslo, napríklad A – 65, B – 66 až Z – 90.

Pôvodne malo kódovanie ASCII iba 128 znakovo od nula po 127, bolo to 7 bitové kódovanie, v súčasnosti je to 8 bitové kódovanie, takže možno zakódovať 256 znakov.

Ak sme v zahraničí, v internetovej kaviarni pravdepodobne nebude slovenská klávesnica. Znaky ako á, é, ô, ä … získame tak, že použijeme nasledujúcu tabuľku. Ak stlačíme a držíme stlačený kláves ALT a napíšeme číslice z tejto tabuľky a ALT pustíme, získame príslušný znak:

á – ALT 160

ö – ALT 148

 

 

Kompresor obrázkov

Online komprimovanie obrázkov

Ak chcete zverejniť fotografie na www stránke, väčšinou stačí výrazne menšie rozlíšenie než má originálna fotografia a možno tiež použiť komprimovanie originálneho obrázku. Ak sú  na stránke menšie obrázky, načíta sa výrazne rýchlejšie, zároveň na danom hostingu máte predplatený nejaký priestor a ak tam budete dávať zbytočne objemné súbory, tak si tento priestor veľmi rýchlo vyčerpáte. Zmenšenie rozlíšenia sa nijako neprejaví na kvalite obrázka, pokiaľ ho nebudete potrebovať zobraziť v pôvodnom rozlíšení. Dvojnásobné zmenšenie lineárnych rozmerov zmenší  súbor štvornásobne, ak k tomu pridáte ešte komprimáciu, ktorá sa môže pohybovať okolo 70%, pôvodnú veľkosť súboru možno    zmenšiť približne 12 násobne. Komprimácia obrázka môže jeho kvalitu znížiť, komprimačné algoritmy pre obrázky sú navrhnuté tak, aby napriek tomu, že ide o stratovú komprimáciu, ľudské oko nepostrehlo, že sa obrázok líši od originálu. Ak je zmena kvality zjavná, treba zmenšiť kompresný pomer.

Na tejto adrese nájdete jeden z online kompresorov obrázkov:

Pokiaľ potrebujete komprimovať obrázky pravidelne, je vhodnejšie mať na počítači nainštalovaný niektorý z programov, ktoré komprimáciu majú implementovanú.

 

Tic-Tac-Toe v Baltíku

Väčšina z vás sa na počítačoch najradšej hrá. Aj ja sa na počítačoch a mobiloch zvyknem hrať, ale najväčšou zábavou pre mňa je niečo naprogramovať. Kedysi som sa naučil programovať  hlavne tým, že som programoval rôzne počítačové hry. Prvý počítač som si kúpil v roku 1985, bol to osembitový japonský počítač Sord, mal 8 kilobajtov pamäte a programy sa doň nahrávali pomocou kazetového magnetofónu. Do ôsmich KB sa toho veľa nezmestilo, preto som sa snažil programovať efektívne s čo najmenšími pamäťovými nárokmi a programujem tak doteraz. Vtedajšie počítače boli mnohotisíckrát pomalšie, ako dnešné, takže, ak hra mala byť hrateľná, bolo potrebné optimalizovať aj rýchlosť programu. Programovacím jazykom bol Basic a kritické časti som programoval v asemblery.

Na tento počítač takmer žiadne hry neexistovali a tak, keď som na iných počítačoch videl nejakú hru, naprogramoval som ju aj na mojom počítači.

Začneme jednoduchou logickou hrou Tic-Tac-Toe. Hrá sa na hracom pláne 3×3. Do plánu hráči striedavo zapisujú svoje symboly – krížik a krúžok. Kto uloží svoje symboly tak, že sú vedľa seba, pod sebou alebo po diagonále tri, vyhral. Ak sú všetky políčka obsadené a nik nemá tri rovnaké symboly v rade, hra skončila remízou. Na obrázku vpravo vyhral hráč, ktorý kreslil krúžky. Continue reading

Projekt Sudoku

 

1. etapa

Na prvej hodine ste takmer všetci zvládli nakresliť hrací plán Sudoku (obrázok vpravo). Mnohí postupovali extenzívne, niektorí zvládli aj efektívnosť riešenia. Počet použitých príkazov sa pohyboval od 21 do 93 (mne sa to podarilo na 18 príkazov, svoje riešenie sprístupním, keď všetky triedy dokončia prvú etapu a sprístupním tiež najefektívnejšie riešenia žiakov a jedno či viac riešení, ktoré budú niečim originálne.   Continue reading

Súťaž v programovaní Imagine

Vašou úlohou je naprogramovať prázdny hrací plán hry Sudoku na čo najmenší počet príkazov. Riešenie musí byť vytvorením procedúry, ktorá tento hrací plán nakreslí a nemožno použiť už predkreslený obrázok.

Vzor, ako by mal hrací plán vyzerať:

Do počtu príkazov nepočítame viem názov_procedúry a koniec a číselné parametre či už vo forme čísla alebo premennej.

Celkové poradie

  1. Čajka 9. A 18
  2. Petróc 7.A 21
  3.  Micheĺ 9.A 22
  4.  Varinský 7.A 29
  5. Richnavský 31

Poradie podľa jednotlivých tried

9.A

  1. Čajka 18
  2. Micheľ 22
  3. Richnavský 31
  4. Krajňáková 39
  5. Sabovčíková a Genčiová 91
  6. Kalina 98

7. A

  • Petróc 21
  • Varinský 29
  • Melicherová 31
  • Gbúrová 32
  • Lukáč, Orosz 75
  • Bucher 85

7. B

  • Sremaňák 40 (Patrikove riešenie zverejním, ako jediný použil parameter, ktorý určuje, aký veľký bude hrací plán)
  • Jakubčák 56
  • Šašala – veľa 🙂

Učiteľ TM 17. Pôvodne som mal 21, keď Petróc dosiahol rovnaký počet, ešte som to zredukoval.

 

Genetické algoritmy

Čo je sudoku, takmer všetci vedia, väčšina nevie, čo je genetický algoritmus alebo genetické programovanie.

Genetický algoritmus je nedeterministická metóda riešenia problému, vychádzajúca z princípov Darwinovej evolučnej teórie. 

Každé riešenie úlohy (aj “zlé”) sa nazýva chromozóm, je tvorené binárnym reťazcom danej dĺžky, ktorá je rovnaká pre všetky chromozómy populácie. Populácia je konečná množina chomozómov. Základná populácia resp. nultá generácia populácie je začiatočný stav riešenia. Vývoj k optimálnemu riešeniu prebieha prirodzeným vývojom populácií. Nultá generácia je vygenerovaná náhodne, vygenerované chromozómy, musia byť riešením problému.

Proces reprodukcie:

  • Výber chromozómov na kríženie či mutáciu (pseudonáhodný výber podľa pravdepodobnosti úmernej jeho fitness)
  • Kríženie chromozómov (výmena podreťazcov, kde môže prebiehať kríženie jednobodovo, či viacbodovo)
  • Mutácia, náhodne zmutujú niektoré gény, mutuje sa s malou pravdepodobnosťou, aby zostala zachovaná genetická informácia

Náhodnosť sa zaisťuje pomocou generovania pseudonáhodných čísel.
Continue reading

Modul Math jazyka Python

Základný modul jazyka Python obsahuje iba základné matematické operácie. Ak potrebujeme v programe použiť zložitejšie operácie a funkcie, buď ich musíme naprogramovať alebo importovať modul, ktorý matematické funkcie obsahuje. Takýmto modulom je napríklad modul math, ktorý je súčasťou štandardnej distribúcie. Príkazy modulu sprístupníme príkazom import\, math. Ak potrebujeme pracovať s väčšou prenosťou, musíme si doinštalovať špeciálny matematický modul, napríklad mpmath. Continue reading

Python 1. Shell a matematické operácie

Programovacie jazyky, s ktorými ste doteraz pracovali (Imagine, Baltík, Scratch …), sú prispôsobené detskému používateľovi. V Baltíku a v Scratchi ste príkazy zadávali pomocou grafických ikon, v Imagine sa síce zadávali príkazy v tvare textu, ale s takou syntaxou, ktorá sa v iných programovacích jazykoch nepoužíva a navyše namiesto anglických príkazov ste používali slovenské príkazy. Z hľadiska rýchleho pochopenia čo ten ktorý príkaz robí, je to  efektívne, ale z dlhodobého hľadiska, keď si budete chcieť osvojiť niektorý zo všeobecne používaných programovacích jazykov, budete sa musieť anglické ekvivalenty príkazov tak či tak naučiť.  Programovací jazyk Python je navrhnutý tak, že používa podobnú syntax a podobné názvy príkazov, ako iné programovacie jazyky, takže, ak sa ho naučíte, nemal by pre vás byť v budúcnosti problém prejsť na iný programovací jazyk a je to zároveň profesionálny programovací jazyk, ktorý používa napríklad firma Google. Continue reading

Metóda Monte Carlo

Náhoda hrá vo vede významnú úlohu. Mnohé dôležité objavy boli objavené na základe náhodných okolností. Niektoré sú možno iba mytologizáciou skutočnosti napríklad objav Archimedovho zákona a údajný beh nahého Archimeda Syrakúzami vykrikujúceho Heuréka! alebo Pád jablka na hlavu Newtona. Mnohé iné sa určite stali napríklad Flemingov objav penicilínu. Vo všetkých týchto prípadoch však popri náhode bolo dôležité, že príslušný vedec mal adekvátne vedomosti a tvorivú myseľ a tak hoci predtým tisíckam ľudí padli jablká či hrušky na hlavu, až Newton si dal veci do súvisu a prišiel na to, že rovnaká sila udržiava planéty okolo Slnka a Mesiac okolo Zeme, aká pôsobí na padajúce jablko, stovky vedcov mali neumyté misky a iba ich umyli, pričom si nevšimli žiadnu anomáliu až Fleming aj pri umývaní misiek premýšľal. Keď môže byť náhoda alebo omyl čas od času príčinou pokroku, stojí za úvahu, či neskúmať niektoré prírodné javy pomocou využitia náhody. Continue reading

Kurča a kocúr

V projekte Kurča a kocúr bude vašou úlohou naprogramovať počítačovú hru, v ktorej sa po pyramíde pohybujú kurča a kocúr. Kocúr je ovládaný počítačom a raz za čas sa náhodne pohne s väčšou pravdepodobnosťou smerom ku kurčaťu. Kurča ovláda hráč a jeho úlohou je prefarbiť všetky vrchné štvorce. Keď skočí na neprefarbený štvorec, prefarbí ho, ak skočí na prefarbený, tak v závislosti od úrovne hry sa buď nestane nič, alebo sa prefarbí na pôvodnú farbu alebo … Continue reading

Pomocníci (šachovnica)

Keď som vám dal úlohu nakresliť šachovnicu, tak sa vám tá úloha zdala byť náročná, pretože ste ju realizovali mechanicky. Vyčarovali ste biele pole,  pohli ste sa, vyčarovali ste čierne pole, pohli ste sa, keď ste došli na koniec riadku, otočili ste sa na sever, pohli ste sa, otočili ste sa na západ a znova ste začali kresliť políčka šachovnice. Vaše programy mali 140 až 170 prvkov.

Efektívne programovanie spočíva v tom, že sa programátor nad problémom zamyslí a všetko čo sa opakuje zovšeobecní. Continue reading

Parametrizácia procedúr (šachovnica)

Tak ako jednoduché stroje už v  staroveku ľuďom uľahčovali fyzickú prácu, počítače môžu uľahčiť netvorivú mechanickú duševnú prácu a čoskoro budú schopné vykonávať aj niektoré úkony tvorivej práce. Ak vám zadám úlohu: Nakreslite v Imagine štvorec so stranou 100, mechanickým postupom napíšete napríklad nasledujúcu postupnosť príkazov:

do 100
vpravo 90
do 100
vpravo 90
do 100
vpravo 90
do 100
vpravo 90 

Poznámka: do je skratka príkazu dopredu.

Continue reading

Zoznamy v Imagine

Zoznam/zoznamy použijeme, keď máme viac objektov, s ktorými potrebujeme postupne jednotným spôsobom pracovať.

Príkazy zadané do príkazového riadku sú napísané tučne, čo sa vypíše v informačnej časti obrazovky je napísané kurzívou. Za maltézskym krížom # sú uvádzané poznámky k príkazom.
Všetky nižšie uvedené príkazy si individuálne vyskúšajte.

Ak by sme potrebovali mať zoznam čísel od jedna do 100, môžeme ho vytvoriť nasledujúcim spôsobom:

urob „zoznam [ ]  #vytvorenie prázdneho zoznamu

opakuj 100 [urob „zoznam veta :zoznam počítadlo]

Funkcia veta spája dva zoznamy.

Continue reading

Tic-tac-toe v Imagine

Prebrali sme už väčšinu príkazov jazyka Imagine. Pomocou týchto príkazov môžete naprogramovať všetky jednoduché hry, ktoré hrávate na počítačoch alebo v mobiloch. Vašou úlohou je naprogramovať hru Tic-Tac-Toe. Stretnete sa pritom s väčšinou problémov a úloh, ktoré pred programátorom vyvstanú, ak chce aby hra bola hrateľná, funkčná, aby dobre vyzerala, aby boli ošetrené všetky možné situácie, …

plantictac

  • Tic-Tac-Toe sa hrá na hracom pláne rozmerov 3×3. Obrázok vľavo
  • Hráči striedavo kreslia krúžky a krížiky.
  • VýhraKomu sa podarí vytvoriť tri rovnaké symboly vodorovne, zvislo alebo po uhlopriečkach vyhrá. Na obrázku vpravo, vyhral hráč, ktorý kreslil krúžky.
  • Ak sú všetky políčka obsadené a nik nevytvoril trojicu rovnakých symbolov, hra končí remízou.
  • Ďalšiu hru začína druhý hráč

Continue reading