mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 15:24:09 +03:00
Fix small mistackes.
This commit is contained in:
parent
a7918fb33c
commit
4fc9c89f64
@ -12,10 +12,10 @@ Brainfuck (пишется маленькими буквами, кроме нач
|
|||||||
маленький Тьюринг-полный язык программирования лишь с 8 командами.
|
маленький Тьюринг-полный язык программирования лишь с 8 командами.
|
||||||
|
|
||||||
```
|
```
|
||||||
Любой символ игнорируется кроме "><+-.,[]" (исключая кавычки).
|
Любой символ, кроме "><+-.,[]", игнорируется, за исключением кавычек.
|
||||||
|
|
||||||
Brainfuck представлен массивом из 30000 ячеек, инициализированных нулями,
|
Brainfuck представлен массивом из 30000 ячеек, инициализированных нулями,
|
||||||
и указателем, указывающего на текущую ячейку.
|
и указателем с позицией в текущей ячейке.
|
||||||
|
|
||||||
Всего восемь команд:
|
Всего восемь команд:
|
||||||
+ : Увеличивает значение на единицу в текущей ячейке.
|
+ : Увеличивает значение на единицу в текущей ячейке.
|
||||||
@ -29,22 +29,22 @@ Brainfuck представлен массивом из 30000 ячеек, ини
|
|||||||
] : Если значение в текущей ячейке равно нулю, то перейти к следующей инструкции.
|
] : Если значение в текущей ячейке равно нулю, то перейти к следующей инструкции.
|
||||||
В противном случае, вернуться назад к соответствующей [ .
|
В противном случае, вернуться назад к соответствующей [ .
|
||||||
|
|
||||||
[ и ] образуют цикл while. Очевидно, они должны быть сбалансированы.
|
[ и ] образуют цикл while. Естественно, они должны быть сбалансированы.
|
||||||
|
|
||||||
Давайте рассмотрим некоторые базовые brainfuck программы.
|
Давайте рассмотрим некоторые базовые brainfuck-программы.
|
||||||
|
|
||||||
++++++ [ > ++++++++++ < - ] > +++++ .
|
++++++ [ > ++++++++++ < - ] > +++++ .
|
||||||
|
|
||||||
Эта программа выводит букву 'A'. Сначала, программа увеличивает значение
|
Эта программа выводит букву 'A'. Сначала программа увеличивает значение
|
||||||
ячейки №1 до 6. Ячейка #1 будет использоваться циклом. Затем, программа входит
|
ячейки №1 до 6. Ячейка №1 будет использоваться циклом. Затем программа входит
|
||||||
в цикл ([) и переходит к ячейке №2. Ячейка №2 увеличивается до 10, переходим
|
в цикл ([) и переходит к ячейке №2. Ячейка №2 увеличивается до 10, переходим
|
||||||
назад к ячейке №1 и уменьшаем ячейку №1. Этот цикл проходит 6 раз (ячейка №1
|
назад к ячейке №1 и уменьшаем ячейку №1. Этот цикл проходит 6 раз (ячейка №1
|
||||||
уменьшается до нуля, и с этого места пропускает инструкции до соответствующей ]
|
уменьшается до нуля, и с этого места пропускает инструкции до соответствующей ]
|
||||||
и идет дальше).
|
и идет дальше).
|
||||||
|
|
||||||
В этот момент, мы в ячейке №1, которая имеет значение 0, значение ячейки №2
|
В этот момент мы находимся в ячейке №1, которая имеет значение 0, значение
|
||||||
пока 60. Мы переходим на ячейку №2, увеличиваем 5 раз, до значения 65, и затем
|
ячейки №2 пока 60. Мы переходим на ячейку №2, увеличиваем 5 раз, до значения 65,
|
||||||
выводим значение ячейки №2. Код 65 является символом 'A' в кодировке ASCII,
|
и затем выводим значение ячейки №2. Код 65 является символом 'A' в кодировке ASCII,
|
||||||
так что 'A' выводится на терминал.
|
так что 'A' выводится на терминал.
|
||||||
|
|
||||||
|
|
||||||
@ -53,11 +53,11 @@ Brainfuck представлен массивом из 30000 ячеек, ини
|
|||||||
Данная программа считывает символ из пользовательского ввода и копирует символ
|
Данная программа считывает символ из пользовательского ввода и копирует символ
|
||||||
в ячейку №1. Затем мы начинаем цикл. Переходим к ячейке №2, увеличиваем значение
|
в ячейку №1. Затем мы начинаем цикл. Переходим к ячейке №2, увеличиваем значение
|
||||||
ячейки №2, идем назад к ячейке №1 и уменьшаем значение ячейки №1. Это продолжается
|
ячейки №2, идем назад к ячейке №1 и уменьшаем значение ячейки №1. Это продолжается
|
||||||
до тех пор пока, ячейка №1 не равна 0, а ячейка №2 сохраняет старое значение
|
до тех пор, пока ячейка №1 не равна 0, а ячейка №2 сохраняет старое значение
|
||||||
ячейки №1. Мы завершаем цикл на ячейке №1, поэтому переходим в ячейку №2, и
|
ячейки №1. Мы завершаем цикл на ячейке №1, поэтому переходим в ячейку №2 и
|
||||||
затем выводим символ ASCII.
|
затем выводим символ ASCII.
|
||||||
|
|
||||||
Также, имейте в виду, что пробелы здесь исключительно для читабельности. Вы можете
|
Также имейте в виду, что пробелы здесь исключительно для читабельности. Вы можете
|
||||||
легко написать и так:
|
легко написать и так:
|
||||||
|
|
||||||
,[>+<-]>.
|
,[>+<-]>.
|
||||||
@ -71,13 +71,13 @@ Brainfuck представлен массивом из 30000 ячеек, ини
|
|||||||
Суть в том, что программа сначала читает два ввода. Затем начинается внешний цикл,
|
Суть в том, что программа сначала читает два ввода. Затем начинается внешний цикл,
|
||||||
сохраняя ячейку №1. Затем программа перемещается в ячейку №2, и начинается
|
сохраняя ячейку №1. Затем программа перемещается в ячейку №2, и начинается
|
||||||
внутренний цикл с сохранением ячейки №2, увеличивая ячейку №3. Однако появляется
|
внутренний цикл с сохранением ячейки №2, увеличивая ячейку №3. Однако появляется
|
||||||
проблема: В конце внутреннего цикла, ячейка №2 равна нулю. В этом случае,
|
проблема: В конце внутреннего цикла ячейка №2 равна нулю. В этом случае,
|
||||||
внутренний цикл не будет работать уже в следующий раз. Чтобы решить эту проблему,
|
внутренний цикл не будет работать уже в следующий раз. Чтобы решить эту проблему,
|
||||||
мы также увеличим ячейку №4, а затем копируем ячейку №4 в ячейку №2.
|
мы также увеличим ячейку №4, а затем копируем ячейку №4 в ячейку №2.
|
||||||
Итак, ячейка №3 - результат.
|
Итак, ячейка №3 - результат.
|
||||||
```
|
```
|
||||||
|
|
||||||
Это и есть brainfuck. Не так уж сложно, правда? Забавы ради, вы можете написать
|
Это и есть brainfuck. Не так уж сложно, правда? Забавы ради, вы можете написать
|
||||||
свою собственную brainfuck программу или интерпретатор на другом языке.
|
свою собственную brainfuck-программу или интерпретатор на другом языке.
|
||||||
Интерпретатор достаточно легко реализовать, но если вы мазохист, попробуйте
|
Интерпретатор достаточно легко реализовать, но если вы мазохист, попробуйте
|
||||||
написать brainfuck интерпретатор... на языке brainfuck.
|
написать brainfuck-интерпретатор... на языке brainfuck.
|
||||||
|
Loading…
Reference in New Issue
Block a user