Kdo by mě naučil základy programování?
Re: Kdo by mě naučil základy programování?
Objev že KONEC nemusí být vždy na konci mi docela pomohl.
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Re: Kdo by mě naučil základy programování?
Tak už sis toho STĚHOVÁKa dopsal a spustil? 
Slovo KONEC ukončuje nějaký blok, buď celý příkaz, nebo větvení, nebo cyklus. Takže by bylo načase podívat se jaké máme základní programové struktury. Podle pravidel strukturovaného programování je možné jakýkoliv program napsat jen se dvěma stavebními prvky, těmito: rozhodování a zpracování. Cokoliv dalšího se z nich dá sestavit.
Zpracování je jasné, tam se prostě provádí nějaká činnost, buď základní příkazy jako KROK, POLOŽ, nebo volání složených příkazů které sis vytvořil sám, třeba NA-START.
Rozhodování mění podle určitých podmínek průběh programu. Pokud se po něm provede skok vpřed, jde o větvení, pokud skok vzad, jde o cyklus.
Podmínka buď platí nebo neplatí, to se v Karlovi určuje slovy JE a NENÍ. Karel dokáže testovat jen několik základních věcí, jestli je před ním zeď, jestli na poli kde stojí je nějaká značka, jakým směrem je otočený... Tady je seznam: ZEĎ, ZNAČKA, SEVER, JIH, VÝCHOD, ZÁPAD, DOMOV. Jiné dialekty se můžou lišit, třeba neumí testovat DOMOV, ale naopak umí zjistit jestli je ještě MÍSTO pro položení další značky, a podobně.
Větvení může být buď úplné nebo neúplné. Podle podmínky se tedy provede buď jedna činnost nebo druhá, a nebo se nějaká činnost provede nebo neprovede, KDYŽ podmínka platí nebo neplatí.
Neúplné větvení je jednoduché, obsahuje jen jednu větev s příkazem/příkazy, která se podle platnosti podmínky buď provede nebo přeskočí:
Úplné větvení má dvě větve, pokud podmínka platí, provede se první a druhá přeskočí, pokud neplatí, přeskočí se první a provede druhá, vymezená slovem JINAK:
První KONEC ukončuje první větev, v jiných dialektech místo něj stačí jen slovo JINAK, druhý KONEC ukončuje druhou větev a celé větvení.
Cyklus znamená opakování určitého úseku programu, a může být buď počítaný nebo podmíněný. V podstatě je to totéž, protože u podmíněného zadáváš přímo podmínku (stejně jako u větvení), a u počítaného počet opakování, takže u něj je podmínka že počítadlo nedosáhlo stanoveného počtu.
Počítaný cyklus se provede tolikrát, kolikrát přikážeš. Například vyplnění prázdného pole značkami se provede takhle:
Podmíněný cyklus může být buď s podmínkou na začátku, nebo s podmínkou na konci. Rozdíl mezi nimi je ten, že pokud podmínka neplatí, tak ten s podmínkou na konci se nejdřív projde a teprve pak testuje, takže celý proběhne minimálně jednou, ale ten s podmínkou na konci při neplatné podmínce neproběhne vůbec.
Cyklus s podmínkou na začátku se provádí DOKUD platí zadaná podmínka. Vysbírání libovolného počtu značek pod KARLEM se provede takhle:
Cyklus s podmínkou na konci se obvykle v Karlovi nevyskytuje, on se také používá méně a je pro začátečníky trochu zákeřný. Ale tady ho máme k dispozici a můžeme ho použít, ale s trochou opatrnosti. Ten se opakuje tak dlouho, AŽ začne podmínka platit:
Tenhle cyklus je záměrně napsaný chybně, vyzkoušej si jak funguje. Nejdřív se provede tělo cyklu a pak se teprve testuje jestli podmínka platí, pokud ano, cyklus se opakuje. Ale jestliže Karel nejdřív provede KROK a teprve pak se podívá jestli stojí u zdi, bude program správně fungovat jen v případě že je od zdi dost daleko! Pokud už u zdi stojí, tak narazí a program skončí chybou, což je věc která by se dobrým programátorům stávat neměla.
Ještě upřesnění na závěr, abys s tím nemusel laborovat jako s tím koncem, podmínky a cykly se dají vnořovat a samozřejmě také míchat mezi sebou, takže může být podmínka v podmínce, cyklus v cyklu, podmínka v cyklu i cyklus v podmínkce, a to všechno i několikanásobně, třeba cyklus v cyklu v cyklu v cyklu v cyklu v cyklu...
Tak to je prakticky celý Karel i základy programování, a teď už záleží jen na tobě, co z toho dokážeš pobrat a zkombinovat. Ale rozhodně to není všechno co je potřeba vědět, jen malinká a nepostradatelná část celého programátorského umění, stejně jako sčítání a odčítání v matematice.

Slovo KONEC ukončuje nějaký blok, buď celý příkaz, nebo větvení, nebo cyklus. Takže by bylo načase podívat se jaké máme základní programové struktury. Podle pravidel strukturovaného programování je možné jakýkoliv program napsat jen se dvěma stavebními prvky, těmito: rozhodování a zpracování. Cokoliv dalšího se z nich dá sestavit.
Zpracování je jasné, tam se prostě provádí nějaká činnost, buď základní příkazy jako KROK, POLOŽ, nebo volání složených příkazů které sis vytvořil sám, třeba NA-START.
Rozhodování mění podle určitých podmínek průběh programu. Pokud se po něm provede skok vpřed, jde o větvení, pokud skok vzad, jde o cyklus.
Podmínka buď platí nebo neplatí, to se v Karlovi určuje slovy JE a NENÍ. Karel dokáže testovat jen několik základních věcí, jestli je před ním zeď, jestli na poli kde stojí je nějaká značka, jakým směrem je otočený... Tady je seznam: ZEĎ, ZNAČKA, SEVER, JIH, VÝCHOD, ZÁPAD, DOMOV. Jiné dialekty se můžou lišit, třeba neumí testovat DOMOV, ale naopak umí zjistit jestli je ještě MÍSTO pro položení další značky, a podobně.
Větvení může být buď úplné nebo neúplné. Podle podmínky se tedy provede buď jedna činnost nebo druhá, a nebo se nějaká činnost provede nebo neprovede, KDYŽ podmínka platí nebo neplatí.
Neúplné větvení je jednoduché, obsahuje jen jednu větev s příkazem/příkazy, která se podle platnosti podmínky buď provede nebo přeskočí:
Kód: Vybrat vše
KDYŽ NENÍ ZEĎ
KROK
KONEC
Úplné větvení má dvě větve, pokud podmínka platí, provede se první a druhá přeskočí, pokud neplatí, přeskočí se první a provede druhá, vymezená slovem JINAK:
Kód: Vybrat vše
KDYŽ JE ZNAČKA
ZVEDNI
KONEC, JINAK
POLOŽ
KONEC
První KONEC ukončuje první větev, v jiných dialektech místo něj stačí jen slovo JINAK, druhý KONEC ukončuje druhou větev a celé větvení.
Cyklus znamená opakování určitého úseku programu, a může být buď počítaný nebo podmíněný. V podstatě je to totéž, protože u podmíněného zadáváš přímo podmínku (stejně jako u větvení), a u počítaného počet opakování, takže u něj je podmínka že počítadlo nedosáhlo stanoveného počtu.
Počítaný cyklus se provede tolikrát, kolikrát přikážeš. Například vyplnění prázdného pole značkami se provede takhle:
Kód: Vybrat vše
OPAKUJ 8-KRÁT
POLOŽ
KONEC
Podmíněný cyklus může být buď s podmínkou na začátku, nebo s podmínkou na konci. Rozdíl mezi nimi je ten, že pokud podmínka neplatí, tak ten s podmínkou na konci se nejdřív projde a teprve pak testuje, takže celý proběhne minimálně jednou, ale ten s podmínkou na konci při neplatné podmínce neproběhne vůbec.
Cyklus s podmínkou na začátku se provádí DOKUD platí zadaná podmínka. Vysbírání libovolného počtu značek pod KARLEM se provede takhle:
Kód: Vybrat vše
DOKUD JE ZNAČKA
ZVEDNI
KONEC
Cyklus s podmínkou na konci se obvykle v Karlovi nevyskytuje, on se také používá méně a je pro začátečníky trochu zákeřný. Ale tady ho máme k dispozici a můžeme ho použít, ale s trochou opatrnosti. Ten se opakuje tak dlouho, AŽ začne podmínka platit:
Kód: Vybrat vše
OPAKUJ
KROK
AŽ JE ZEĎ
Tenhle cyklus je záměrně napsaný chybně, vyzkoušej si jak funguje. Nejdřív se provede tělo cyklu a pak se teprve testuje jestli podmínka platí, pokud ano, cyklus se opakuje. Ale jestliže Karel nejdřív provede KROK a teprve pak se podívá jestli stojí u zdi, bude program správně fungovat jen v případě že je od zdi dost daleko! Pokud už u zdi stojí, tak narazí a program skončí chybou, což je věc která by se dobrým programátorům stávat neměla.
Ještě upřesnění na závěr, abys s tím nemusel laborovat jako s tím koncem, podmínky a cykly se dají vnořovat a samozřejmě také míchat mezi sebou, takže může být podmínka v podmínce, cyklus v cyklu, podmínka v cyklu i cyklus v podmínkce, a to všechno i několikanásobně, třeba cyklus v cyklu v cyklu v cyklu v cyklu v cyklu...
Tak to je prakticky celý Karel i základy programování, a teď už záleží jen na tobě, co z toho dokážeš pobrat a zkombinovat. Ale rozhodně to není všechno co je potřeba vědět, jen malinká a nepostradatelná část celého programátorského umění, stejně jako sčítání a odčítání v matematice.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Kdo by mě naučil základy programování?
Dobrý článek :). Ale teď nevím co dál.
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Re: Kdo by mě naučil základy programování?
No co dál, teď se přece máš učit programovat
Tak pro začátek udělej pár jednoduchých úloh, vytvoř příkazy které můžeš použít ve složitějších programech:
DVOJKROK
ÚKROK-VLEVO
ÚKROK-VPRAVO
OPATRNY-KROK (Jen když není zeď, můžeš použít i název ?KROK.)
JAKO-KŮŇ (Víš jak skáče šachový kůn? Využij předchozí příkazy.)
ŠIKMÝ-KROK (Chůze po diagonále.)
NA-SEVER
NA-JIH
NA-VÝCHOD
NA-ZÁPAD (Tyhle otočí Karla do příslušného směru.)
A nejaké trochu složitější prográmky, třeba
OHRADA (Postaví řádku značek kolem dokola města.)
UKLIDIT-MĚSTO (Vyčistí značky v celém městě pomocí cyklů.)

Tak pro začátek udělej pár jednoduchých úloh, vytvoř příkazy které můžeš použít ve složitějších programech:
DVOJKROK
ÚKROK-VLEVO
ÚKROK-VPRAVO
OPATRNY-KROK (Jen když není zeď, můžeš použít i název ?KROK.)
JAKO-KŮŇ (Víš jak skáče šachový kůn? Využij předchozí příkazy.)
ŠIKMÝ-KROK (Chůze po diagonále.)
NA-SEVER
NA-JIH
NA-VÝCHOD
NA-ZÁPAD (Tyhle otočí Karla do příslušného směru.)
A nejaké trochu složitější prográmky, třeba
OHRADA (Postaví řádku značek kolem dokola města.)
UKLIDIT-MĚSTO (Vyčistí značky v celém městě pomocí cyklů.)
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Kdo by mě naučil základy programování?
Kód: Vybrat vše
DVOJKROK
KROK
KROK
KONEC
Kód: Vybrat vše
ÚKROKVLEVO
VLEVO-VBOK
KROK
OPAKUJ 3-KRÁT
VLEVO-VBOK
KONEC
KONEC
Kód: Vybrat vše
VPRAVO-VBOK
OPAKUJ 3-KRÁT
VLEVO-VBOK
KONEC
KONEC
Kód: Vybrat vše
ÚKROKVPRAVO
VPRAVO-VBOK
KROK
VLEVO-VBOK
KONEC
Kód: Vybrat vše
?KROK
KDYŽ NENÍ ZEĎ
KROK
KONEC
KONEC
Kód: Vybrat vše
KŮŇ
KROK
KROK
VLEVO-VBOK
KDYŽ JE ZEĎ
VLEVO-VBOK
VLEVO-VBOK
KROK
KONEC, JINAK
KROK
KONEC
KONEC
Kód: Vybrat vše
ŠIKMÝKROKVLEVO
KROK
VLEVO-VBOK
KROK
OPAKUJ 3-KRÁT
VLEVO-VBOK
KONEC
KONEC
Kód: Vybrat vše
SVETOVÉSTRANY
DOKUD NENÍ SVĚTOVASTRANA
VLEVO-VBOK
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Re: Kdo by mě naučil základy programování?
VPRAVO-VBOK bys mohl klidně použít i v úkroku vlevo a šikmém kroku, když už ho v tom slovníku máš. Ale ty světové strany jsi pěkně odflákl
A jak ty dva prográmky na závěr, zvládneš složit víc cyklů v jednom příkazu, nebo si ten problém dekomponuješ do několika? Druhá možnost je lépe hodnocena, program se zpřehlední a snáz se opravují chyby, vždycky je totiž jednodušší prozkoumat pětkrát deset samostaných řádků než jednu nudli padesáti, zvlášť pokud se ti nějaké cykly nevejdou vcelku na obrazovku
Tohle rozdělení může kupodivu vést i ke zkrácení programu, představ si že bys v něm měl čtyřikrát rozepsaný ČELEM-VZAD v cyklech s VLEVO-VBOK, kolik řádků ušetříš tím že si takový úsek vytvoříš jako samostatný příkaz. Na tohle přišli programátoři už v úplných počátcích počítačů, kdy si museli vystačit jen s několika tisíci slovy paměti, a ve svých programech začali používat takzvané podprogramy.

A jak ty dva prográmky na závěr, zvládneš složit víc cyklů v jednom příkazu, nebo si ten problém dekomponuješ do několika? Druhá možnost je lépe hodnocena, program se zpřehlední a snáz se opravují chyby, vždycky je totiž jednodušší prozkoumat pětkrát deset samostaných řádků než jednu nudli padesáti, zvlášť pokud se ti nějaké cykly nevejdou vcelku na obrazovku

Tohle rozdělení může kupodivu vést i ke zkrácení programu, představ si že bys v něm měl čtyřikrát rozepsaný ČELEM-VZAD v cyklech s VLEVO-VBOK, kolik řádků ušetříš tím že si takový úsek vytvoříš jako samostatný příkaz. Na tohle přišli programátoři už v úplných počátcích počítačů, kdy si museli vystačit jen s několika tisíci slovy paměti, a ve svých programech začali používat takzvané podprogramy.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Kdo by mě naučil základy programování?
Ty složitější se dneska pokusím vytvořit. Ještě ti sem dám ty světové strany - včera jsem docela chvátal
--- Doplnění předchozího příspěvku (16 Bře 2013 19:19) ---
Tak tady mám ohradu (konečná verze je ta druhá)
Kód: Vybrat vše
NAZÁPAD
NASEVER
VLEVO-VBOK
KONEC
Kód: Vybrat vše
NAVÝCHOD
NAJIH
VLEVO-VBOK
KONEC
Kód: Vybrat vše
NAJIH
DOKUD NENÍ JIH
VLEVO-VBOK
KONEC
KONEC
Kód: Vybrat vše
NASEVER
DOKUD NENÍ SEVER
VLEVO-VBOK
KONEC
KONEC
--- Doplnění předchozího příspěvku (16 Bře 2013 19:19) ---
Tak tady mám ohradu (konečná verze je ta druhá)
Kód: Vybrat vše
OHRADA2
NA-START
OHRADA1
KONEC
Kód: Vybrat vše
OHRADA2
NA-START
OHRADA1
KONEC
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Re: Kdo by mě naučil základy programování?
Tak tady je ten uklízeč
Kód: Vybrat vše
UKLÍZEČ
NASTART
UKLÍZEČ1
UKLÍZEČ2
UKLÍZEČ1
UKLÍZEČ2
UKLÍZEČ1
UKLÍZEČ2
UKLÍZEČ1
UKLÍZEČ2
UKLÍZEČ1
DOKUD NENÍ ZEĎ
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
AŽ JE ZEĎ
ZVEDNI
NASTART
KONEC
Kód: Vybrat vše
UKLÍZEČ1
DOKUD NENÍ ZEĎ
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
AŽ JE ZEĎ
VLEVO-VBOK
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
DOKUD JE ZNAČKA
ZVEDNI
KONEC
VLEVO-VBOK
KONEC
Kód: Vybrat vše
UKLÍZEČ2
DOKUD NENÍ ZEĎ
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
AŽ JE ZEĎ
VPRAVO-VBOK
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
VPRAVO-VBOK
KONEC
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Re: Kdo by mě naučil základy programování?
Té tvojí ohradě jsem tedy moc neporozuměl, nechceš to zkusit jinak? Já bych na to šel třeba takhle:
O tom uklízení ještě zapřemýšlej, určitě by se to dalo udělat jednodušeji a lépe
Kód: Vybrat vše
OHRADA
NA-START
OPAKUJ 4-KRÁT
OPAKUJ 9-KRÁT
KOSTKA
KROK
KONEC
VLEVO-VBOK
KONEC
KONEC
O tom uklízení ještě zapřemýšlej, určitě by se to dalo udělat jednodušeji a lépe

"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Kdo by mě naučil základy programování?
Tady sem zjednodušil poslední část uklízeče
Kód: Vybrat vše
UKLÍZEČ3
NASTART
OPAKUJ 4-KRÁT
UKLÍZEČ1
UKLÍZEČ2
KONEC
UKLÍZEČ1
DOKUD NENÍ ZEĎ
DOKUD JE ZNAČKA
ZVEDNI
KONEC
KROK
AŽ JE ZEĎ
DOKUD JE ZNAČKA
ZVEDNI
KONEC
NASTART
KONEC
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
- Tomina
- Level 5.5
- Příspěvky: 2690
- Registrován: březen 08
- Bydliště: Praha
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Kdo by mě naučil základy programování?
Vy se tu opravdu učíte Karla? WTF?
LOL
Já nikdy kloudně neprogramoval, pak jsem koupil knihu o Javě a prostě začal. Pokud nezačneš sám, nebude to nikdy mít smysl..

Já nikdy kloudně neprogramoval, pak jsem koupil knihu o Javě a prostě začal. Pokud nezačneš sám, nebude to nikdy mít smysl..
Re: Kdo by mě naučil základy programování?
tady mám ještě tu ohradu
Kód: Vybrat vše
OHRADA
NASTART
OPAKUJ 4-KRÁT
DOKUD NENÍ ZEĎ
DOKUD NENÍ ZNAČKA
POLOŽ
KONEC
KROK
AŽ JE ZEĎ
VLEVO-VBOK
KONEC
KONEC
Když chci poradit ohledně svého PC vždy mám na mysli tento počítač v podpisu
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
OS : Windows 7 64-bit
ZDROJ : MaxPower 500 W
CPU : AMD Phenom II x4 925 2,8 GHz
RAM : 4x1 GB
GPU : Gigabyte HD 7850 OC 2GB
MB : MSI KA790GX
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Seznam[Bot] a 0 hostů