Kdo by mě naučil základy programování?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 15 bře 2013 15:02

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

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7398
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod faraon » 15 bře 2013 18:47

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čí:

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, 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)

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 15 bře 2013 19:09

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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7398
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod faraon » 15 bře 2013 19:55

No co dál, teď se přece máš učit programovat :lol:

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)

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 15 bře 2013 21:05

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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7398
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod faraon » 16 bře 2013 06:14

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 :evil:

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 :crazy:

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)

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 16 bře 2013 09:18

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

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

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 17 bře 2013 09:29

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

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7398
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod faraon » 17 bře 2013 11:47

Té tvojí ohradě jsem tedy moc neporozuměl, nechceš to zkusit jinak? Já bych na to šel třeba takhle:

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)

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 17 bře 2013 16:36

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

Uživatelský avatar
Tomina
Level 5.5
Level 5.5
Příspěvky: 2690
Registrován: březen 08
Bydliště: Praha
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Kdo by mě naučil základy programování?

Příspěvekod Tomina » 17 bře 2013 16:41

Vy se tu opravdu učíte Karla? WTF? :-D 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..

staclu
Level 3
Level 3
Příspěvky: 642
Registrován: listopad 12
Pohlaví: Muž
Stav:
Offline

Re: Kdo by mě naučil základy programování?

Příspěvekod staclu » 17 bře 2013 16:44

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


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti