[forth/ru-ru] Spellcheck and whitespace (#5171)
All checks were successful
Trigger site build / deploy (push) Has been skipped
CI / lint (push) Successful in 33s

This commit is contained in:
Peter Lemenkov 2024-11-08 23:33:45 +01:00 committed by GitHub
parent ccdb3504c9
commit 77e2233bf3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,18 +8,21 @@ filename: learnforth-ru.fs
lang: ru-ru lang: ru-ru
--- ---
Форт создан Чарлзом Муром в 70-е годы. Это императивный, стековый язык программирования и среда исполнения программ. Использовался в таких проектах как Open Firmware. Продолжает применятся в проектах. Применяется в НАСА. Форт создан Чарлзом Муром в 70-е годы. Это императивный, стековый язык
программирования и среда исполнения программ. Использовался в таких проектах
как Open Firmware. Продолжает применяться в проектах. Применяется в НАСА.
Внимание: этот материал использует реализацию Форта - Gforth, но большая часть написанного будет работать в других средах. Внимание: этот материал использует реализацию Форта - Gforth, но большая часть
написанного будет работать в других средах.
```forth ```forth
\ Это комментарий \ Это комментарий
( Это тоже комментарий, но используется для предоределённых слов ) ( Это тоже комментарий, но используется для предопределённых слов )
\ --------------------------------- Прекурсор -------------------------------- \ --------------------------------- Прекурсор --------------------------------
\ Всё программирование на Форте заключается в манипулировании \ Всё программирование на Форте заключается в манипулировании
\ параметрами на стеке. \ параметрами на стеке.
5 2 3 56 76 23 65 \ ok 5 2 3 56 76 23 65 \ ok
@ -31,7 +34,7 @@ lang: ru-ru
\ ---------------------------- Базовая арифметика ---------------------------- \ ---------------------------- Базовая арифметика ----------------------------
\ Арифметика (фактически все ключевые слова требуют данных) - это манипуляция \ Арифметика (фактически все ключевые слова требуют данных) - это манипуляция
\ данными на стеке. \ данными на стеке.
5 4 + \ ok 5 4 + \ ok
@ -51,10 +54,10 @@ lang: ru-ru
\ --------------------------- Манипуляции со стеком --------------------------- \ --------------------------- Манипуляции со стеком ---------------------------
\ Естественно, когда мы работаем со стеком, то используем \ Естественно, когда мы работаем со стеком, то используем
\ больше полезных методов: \ больше полезных методов:
3 dup - \ дублировать верхний элемент в стеке 3 dup - \ дублировать верхний элемент в стеке
\ (1-й становится эквивалентным 2-му): 3 - 3 \ (1-й становится эквивалентным 2-му): 3 - 3
2 5 swap / \ поменять местами верхний элемент со 2-м элементом: 5 / 2 2 5 swap / \ поменять местами верхний элемент со 2-м элементом: 5 / 2
6 4 5 rot .s \ сменять по очереди 3-и верхних элемента: 4 5 6 6 4 5 rot .s \ сменять по очереди 3-и верхних элемента: 4 5 6
@ -63,20 +66,20 @@ lang: ru-ru
\ ------------------ Более продвинутые манипуляции со стеком ------------------ \ ------------------ Более продвинутые манипуляции со стеком ------------------
1 2 3 4 tuck \ дублировать верхний елемент стека во вторую позицию: 1 2 3 4 tuck \ дублировать верхний элемент стека во вторую позицию:
\ 1 2 4 3 4 ok \ 1 2 4 3 4 ok
1 2 3 4 over \ диблировать второй елемент наверх стека: 1 2 3 4 over \ дублировать второй элемент наверх стека:
\ 1 2 3 4 3 ok \ 1 2 3 4 3 ok
1 2 3 4 2 roll \ *переместить* элемент в заданной позиции наверх стека: 1 2 3 4 2 roll \ *переместить* элемент в заданной позиции наверх стека:
\ 1 3 4 2 ok \ 1 3 4 2 ok
1 2 3 4 2 pick \ *дублировать* элемент в заданной позиции наверх: 1 2 3 4 2 pick \ *дублировать* элемент в заданной позиции наверх:
\ 1 2 3 4 2 ok \ 1 2 3 4 2 ok
\ Внимание! Обращения к стеку индексируются с нуля. \ Внимание! Обращения к стеку индексируются с нуля.
\ --------------------------- Создание новых слов ----------------------------- \ --------------------------- Создание новых слов -----------------------------
\ Определение новых слов через уже известные. Двоеточие `:` переводит Форт \ Определение новых слов через уже известные. Двоеточие `:` переводит Форт
\ в режим компиляции выражения, которое заканчивается точкой с запятой `;`. \ в режим компиляции выражения, которое заканчивается точкой с запятой `;`.
: square ( n -- n ) dup * ; \ ok : square ( n -- n ) dup * ; \ ok
5 square . \ 25 ok 5 square . \ 25 ok
@ -86,15 +89,15 @@ see square \ : square dup * ; ok
\ -------------------------------- Зависимости -------------------------------- \ -------------------------------- Зависимости --------------------------------
\ -1 == true, 0 == false. Однако, некоторые ненулевые значения \ -1 == true, 0 == false. Однако, некоторые ненулевые значения
\ обрабатываются как true: \ обрабатываются как true:
42 42 = \ -1 ok 42 42 = \ -1 ok
12 53 = \ 0 ok 12 53 = \ 0 ok
\ `if` это компилируемое слово. `if` <stuff to do> `then` <rest of program>. \ `if` это компилируемое слово. `if` <stuff to do> `then` <rest of program>.
: ?>64 ( n -- n ) dup 64 > if ." Больше чем 64!" then ; : ?>64 ( n -- n ) dup 64 > if ." Больше чем 64!" then ;
\ ok \ ok
100 ?>64 100 ?>64
\ Больше чем 64! ok \ Больше чем 64! ok
\ Else: \ Else:
@ -119,7 +122,7 @@ myloop
: one-to-12 ( -- ) 12 0 do i . loop ; \ ok : one-to-12 ( -- ) 12 0 do i . loop ; \ ok
one-to-12 \ 0 1 2 3 4 5 6 7 8 9 10 11 12 ok one-to-12 \ 0 1 2 3 4 5 6 7 8 9 10 11 12 ok
\ `?do` работает подобным образом, за исключением пропуска начального \ `?do` работает подобным образом, за исключением пропуска начального
\ и конечного значения индекса цикла. \ и конечного значения индекса цикла.
: squares ( n -- ) 0 ?do i square . loop ; \ ok : squares ( n -- ) 0 ?do i square . loop ; \ ok
10 squares \ 0 1 4 9 16 25 36 49 64 81 ok 10 squares \ 0 1 4 9 16 25 36 49 64 81 ok
@ -139,13 +142,13 @@ variable age \ ok
\ Затем мы запишем число 21 в переменную 'age' (возраст) словом `!`. \ Затем мы запишем число 21 в переменную 'age' (возраст) словом `!`.
21 age ! \ ok 21 age ! \ ok
\ В заключении мы можем напечатать значение переменной прочитав его словом `@`, \ В заключении мы можем напечатать значение переменной прочитав его словом `@`,
\ которое добавит значение на стек или использовать слово `?`, \ которое добавит значение на стек или использовать слово `?`,
\ что бы прочитать и распечатать в одно действие. \ что бы прочитать и распечатать в одно действие.
age @ . \ 21 ok age @ . \ 21 ok
age ? \ 21 ok age ? \ 21 ok
\ Константы объявляются аналогично, за исключем того, что мы не должны \ Константы объявляются аналогично, за исключем того, что мы не должны
\ беспокоиться о выделении адреса в памяти: \ беспокоиться о выделении адреса в памяти:
100 constant WATER-BOILING-POINT \ ok 100 constant WATER-BOILING-POINT \ ok
WATER-BOILING-POINT . \ 100 ok WATER-BOILING-POINT . \ 100 ok
@ -155,7 +158,7 @@ WATER-BOILING-POINT . \ 100 ok
\ Создание массива похоже на объявление переменной, но нам нужно выделить \ Создание массива похоже на объявление переменной, но нам нужно выделить
\ больше памяти. \ больше памяти.
\ Вы можете использовать слова `2 cells allot` для создания массива \ Вы можете использовать слова `2 cells allot` для создания массива
\ размером 3 элемента: \ размером 3 элемента:
variable mynumbers 2 cells allot \ ok variable mynumbers 2 cells allot \ ok
@ -165,7 +168,7 @@ mynumbers 3 cells erase \ ok
\ В качестве альтернативы мы можем использовать `fill`: \ В качестве альтернативы мы можем использовать `fill`:
mynumbers 3 cells 0 fill mynumbers 3 cells 0 fill
\ или мы можем пропустить все слова выше и инициализировать массив \ или мы можем пропустить все слова выше и инициализировать массив
\ нужными значениями: \ нужными значениями:
create mynumbers 64 , 9001 , 1337 , \ ok (the last `,` is important!) create mynumbers 64 , 9001 , 1337 , \ ok (the last `,` is important!)
@ -205,7 +208,7 @@ mynumbers 1 of-arr ? \ 20 ok
\ ---------------- Операции над числами с плавающей точкой -------------------- \ ---------------- Операции над числами с плавающей точкой --------------------
\ Многие фортовцы стараются избегать использование слов с вещественными числами. \ Многие фортовцы стараются избегать использования слов с вещественными числами.
8.3e 0.8e f+ f. \ 9.1 ok 8.3e 0.8e f+ f. \ 9.1 ok
\ Обычно мы просто используем слово 'f', когда обращаемся к вещественным числам: \ Обычно мы просто используем слово 'f', когда обращаемся к вещественным числам:
@ -215,7 +218,7 @@ myfloatingvar f@ f. \ 4.4 ok
\ ---------- В завершение несколько полезных замечаний и слов ----------------- \ ---------- В завершение несколько полезных замечаний и слов -----------------
\ Указание несуществующего слова очистит стек. Тем не менее, есть специальное \ Указание несуществующего слова очистит стек. Тем не менее, есть специальное
\ слово для этого: \ слово для этого:
clearstack clearstack