From 0f69e0cddb727aaf88a04831cd0cce2231030ad2 Mon Sep 17 00:00:00 2001 From: Boris Verkhovskiy Date: Fri, 19 Apr 2024 03:45:39 -0700 Subject: brainfuck -> bf part 2 --- cs-cz/bf.html.markdown | 87 +++++++++++++++++++++++++++++++++++++++++++ cs-cz/brainfuck.html.markdown | 87 ------------------------------------------- 2 files changed, 87 insertions(+), 87 deletions(-) create mode 100644 cs-cz/bf.html.markdown delete mode 100644 cs-cz/brainfuck.html.markdown (limited to 'cs-cz') diff --git a/cs-cz/bf.html.markdown b/cs-cz/bf.html.markdown new file mode 100644 index 00000000..8d451964 --- /dev/null +++ b/cs-cz/bf.html.markdown @@ -0,0 +1,87 @@ +--- +language: bf +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io/"] + - ["Mathias Bynens", "http://mathiasbynens.be/"] +translators: + - ["Vojta Svoboda", "https://github.com/vojtasvoboda/"] +filename: learnbrainfuck-cz.bf +lang: cs-cz +--- + +Brainfuck (psaný bez kapitálek s vyjímkou začátku věty) je extrémně minimální +Turingovsky kompletní (ekvivalentní) programovací jazyk a má pouze 8 příkazů. + +Můžete si ho vyzkoušet přímo v prohlížeči s [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). + +``` +Jakýkoliv znak mimo "><+-.,[]" (bez uvozovek) je ignorován. + +Brainfuck je reprezentován jako pole, které má 30.000 buněk s počátkem v nule +a datovým ukazatelem na aktuální buňce. + +Můžeme využít těchto osm příkazů: ++ : Přičte k aktuální buňce jedničku. +- : Odečte od aktuální buňky jedničku. +> : Posune datový ukazatel na další buňku, která je napravo. +< : Posune datový ukazatel na předchozí buňku, která je nalevo. +. : Vytiskne ASCII hodnotu aktuální buňky (například 65 = 'A'). +, : Načte jeden znak do aktuální buňky. +[ : Pokud je hodnota aktuální buňky nulová, přeskočí na buňku odpovídající ] . + Jinak skočí na další instrukci. +] : Pokud je hodnota aktuální buňky nulova, přeskočí na další instrukci. + Jinak skočí zpět na instrukci odpovídající [ . + +[ a ] tak tvoří 'while' smyčku a tyto symboly musí tak být v páru. + +Pojďme se mrknout na některé brainfuck programy. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Tento program vypíše písmeno 'A' (v ASCII je to číslo 65). Nejdříve navýší +buňku #1 na hodnotu 6. Buňka #1 bude použita pro smyčku. Potom program vstoupí +do smyčky ([) a sníží hodnotu buňky #1 o jedničku. Ve smyčce zvýší hodnotu +buňky #2 desetkrát, vrátí ze zpět na buňku #1 a sníží její hodnotu o jedničku. +Toto se stane šestkrát (je potřeba šestkrát snížit hodnotu buňky #1, aby byla +nulová a program přeskočil na konec cyklu označený znakem ]. + +Na konci smyčky, kdy jsme na buňce #1 (která má hodnotu 0), tak má buňka #2 +hodnotu 60. Přesuneme se na buňku #2 a pětkrát zvýšíme její hodnotu o jedničku +na hodnotu 65. Na konci vypíšeme hodnotu buňky #2 - 65, což je v ASCII znak 'A' +na terminálu. + + +, [ > + < - ] > . + +Tento program přečte znak z uživatelského vstupu a zkopíruje ho do buňky #1. +Poté začne smyčka - přesun na buňku #2, zvýšení hodnoty buňky #2 o jedničku, +přesun zpět na buňku #1 a snížení její hodnoty o jedničku. Takto smyčka pokračuje +do té doby, než je buňka #1 nulová a buňka #2 nabyde původní hodnotu buňky #1. +Protože jsme na buňce #1, přesuneme se na buňku #2 a vytiskneme její hodnotu +v ASCII. + +Je dobré vědět, že mezery jsou v programu uvedené pouze z důvodu čitelnosti. +Program je možné klidně zapsat i takto: + +,[>+<-]>. + + +Nyní se podívejte na tento program a zkuste zjistit co dělá: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Tento program vezme dvě čísla ze vstupu a vynásobí je. + +Program nejdříve načte dvě vstupní hodnoty. Poté začíná smyčka řízená hodnotou +v buňce #1 - přesun na buňku #2 a start druhé vnořené smyčky, která je řízená +hodnotou v buňce #2 a zvyšuje hodnotu v buňce #3. Nicméně je zde problém +kdy na konci vnitřní smyčky je v buňce #2 nula a smyčka by tak znovu +napokračovala. Vyřešíme to tak, že zvyšujeme o jedničku i buňku #4 a její +hodnotu poté překopírujeme do buňky #2. Na konci programu je v buňce #3 +výsledek. +``` + +A to je brainbuck. Zase tak složitý není, co? Zkuste si nyní napsat nějaký +vlastní brainfuck program a nebo interpretr v jiném jazyce, což není zase +tak složité, ale pokud jste opravdový masochista, zkuste si naprogramovat +interpretr jazyka brainfuck v jazyce... brainfuck :) diff --git a/cs-cz/brainfuck.html.markdown b/cs-cz/brainfuck.html.markdown deleted file mode 100644 index 8d451964..00000000 --- a/cs-cz/brainfuck.html.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -language: bf -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["Vojta Svoboda", "https://github.com/vojtasvoboda/"] -filename: learnbrainfuck-cz.bf -lang: cs-cz ---- - -Brainfuck (psaný bez kapitálek s vyjímkou začátku věty) je extrémně minimální -Turingovsky kompletní (ekvivalentní) programovací jazyk a má pouze 8 příkazů. - -Můžete si ho vyzkoušet přímo v prohlížeči s [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). - -``` -Jakýkoliv znak mimo "><+-.,[]" (bez uvozovek) je ignorován. - -Brainfuck je reprezentován jako pole, které má 30.000 buněk s počátkem v nule -a datovým ukazatelem na aktuální buňce. - -Můžeme využít těchto osm příkazů: -+ : Přičte k aktuální buňce jedničku. -- : Odečte od aktuální buňky jedničku. -> : Posune datový ukazatel na další buňku, která je napravo. -< : Posune datový ukazatel na předchozí buňku, která je nalevo. -. : Vytiskne ASCII hodnotu aktuální buňky (například 65 = 'A'). -, : Načte jeden znak do aktuální buňky. -[ : Pokud je hodnota aktuální buňky nulová, přeskočí na buňku odpovídající ] . - Jinak skočí na další instrukci. -] : Pokud je hodnota aktuální buňky nulova, přeskočí na další instrukci. - Jinak skočí zpět na instrukci odpovídající [ . - -[ a ] tak tvoří 'while' smyčku a tyto symboly musí tak být v páru. - -Pojďme se mrknout na některé brainfuck programy. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Tento program vypíše písmeno 'A' (v ASCII je to číslo 65). Nejdříve navýší -buňku #1 na hodnotu 6. Buňka #1 bude použita pro smyčku. Potom program vstoupí -do smyčky ([) a sníží hodnotu buňky #1 o jedničku. Ve smyčce zvýší hodnotu -buňky #2 desetkrát, vrátí ze zpět na buňku #1 a sníží její hodnotu o jedničku. -Toto se stane šestkrát (je potřeba šestkrát snížit hodnotu buňky #1, aby byla -nulová a program přeskočil na konec cyklu označený znakem ]. - -Na konci smyčky, kdy jsme na buňce #1 (která má hodnotu 0), tak má buňka #2 -hodnotu 60. Přesuneme se na buňku #2 a pětkrát zvýšíme její hodnotu o jedničku -na hodnotu 65. Na konci vypíšeme hodnotu buňky #2 - 65, což je v ASCII znak 'A' -na terminálu. - - -, [ > + < - ] > . - -Tento program přečte znak z uživatelského vstupu a zkopíruje ho do buňky #1. -Poté začne smyčka - přesun na buňku #2, zvýšení hodnoty buňky #2 o jedničku, -přesun zpět na buňku #1 a snížení její hodnoty o jedničku. Takto smyčka pokračuje -do té doby, než je buňka #1 nulová a buňka #2 nabyde původní hodnotu buňky #1. -Protože jsme na buňce #1, přesuneme se na buňku #2 a vytiskneme její hodnotu -v ASCII. - -Je dobré vědět, že mezery jsou v programu uvedené pouze z důvodu čitelnosti. -Program je možné klidně zapsat i takto: - -,[>+<-]>. - - -Nyní se podívejte na tento program a zkuste zjistit co dělá: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Tento program vezme dvě čísla ze vstupu a vynásobí je. - -Program nejdříve načte dvě vstupní hodnoty. Poté začíná smyčka řízená hodnotou -v buňce #1 - přesun na buňku #2 a start druhé vnořené smyčky, která je řízená -hodnotou v buňce #2 a zvyšuje hodnotu v buňce #3. Nicméně je zde problém -kdy na konci vnitřní smyčky je v buňce #2 nula a smyčka by tak znovu -napokračovala. Vyřešíme to tak, že zvyšujeme o jedničku i buňku #4 a její -hodnotu poté překopírujeme do buňky #2. Na konci programu je v buňce #3 -výsledek. -``` - -A to je brainbuck. Zase tak složitý není, co? Zkuste si nyní napsat nějaký -vlastní brainfuck program a nebo interpretr v jiném jazyce, což není zase -tak složité, ale pokud jste opravdový masochista, zkuste si naprogramovat -interpretr jazyka brainfuck v jazyce... brainfuck :) -- cgit v1.2.3