Ко всем страницам про Аскоту
К главной странице про механику (alple.net/arif-ru)
К главной странице моего сайта (alple.net)

Аскота 170: Примеры программ


1. Простейший расчёт ряда Фибоначчи:


1: read I; II+=; prn();
1: read II; I+=; prn(); newline; goto backward1;
Перед запуском программы следует ввести в регистры 1 и 2 единицу: перевести рычаги I и II вниз, прочитать с гашением регистры I и II (клавиши '*' над тремя белыми клавишами, нажать обе по очереди), нажать 'C', затем нажать цифру '1' на клавиатуре цифр, нажать клавиши 'I' и 'II' одновременно, нажать на центральную белую клавишу. Затем запустить автоматическое выполнение программы - перевести все рычаги вверх и ещё раз нажать центральную клавишу.
Код установки стопсов:
1 0/0 5/4 12/4 14/3 15/6R
1     5/4 12/3 14/4 15/6R 17/4 33/4 


2.A Расчёт ряда Фибоначчи с автоматическим запросом первого и второго члена ряда, в один столбик, с указанием номера члена ряда.


В I и II - члены ряда, в III - печатаемый член ряда, в IV - единица, в K - номер члена ряда.

1: read I; clr; //для начала очищаем все переменные
1: read II; clr;
1: read III; clr;
1: read IV; clr;
1: read K; clr;//останавливаемся и даём пользователю ввести единицу.
1: stop; read kbd; IV+=; K+=; prn(); clr;//записываем единицу в IV (она нужна будет для инкремента) и в K (начнём с первого члена ряда). Заодно печатаем её - она будет запросом для ввода первого члена ряда.
1: stop; read kbd; I+=; prn(); clr; // записали первый член ряда в I.
1: read IV; K+=;
1: read K; prn();// печатаем запрос на ввод второго члена ряда.
1: stop; read kbd; II+=; I+=; prn(); clr; // записали второй член ряда в II. Заодно теперь в I теперь I+II, то есть третий член ряда.
backward1: 12: read IV, K+=; // увеличиваем на единицу номер текущего члена ряда - для начала, он станет равен 3. Обратите внимание, этот шаг выполняется и по программе №1, и по программе №2.
2: read II; I+=; III+=; goto prog1; goto forward; // на первом цикле этот шаг обходим, потому что у него метка программы №2, а не №1. А на втором цикле из II читается четвёртый член, который записывается в пустой III и прибавляется к I (в I был третий, стал пятый). После этого мы снова переодим к программе №1 и прыгаем вперёд, к этапу печати.
1: read I; II+=; III+=; goto prog2; // На первом цикле в I третий член, в II - второй. В сумме, соответственно, получается четвёртый (он оказывается в II). В III записываем текущий I - третий. И переходим к программе №2.
forward1: 12: read III; prn(); clr; // печатаем текущий член ряда - для начала I+II, а там видно будет. Обнуляем III. Обратите внимание, этот и следующий шаги выполняются и по программе №1, и по программе №2.
12: read k; prn(); newline; goto backward1; // Печатаем номер шага, переводим строку, возвращаемся назад.


Перед началом выполнения программы надо выставить каретку в крайнее правое положение, выставить рычаги в стандартное состояние (трёхпозиционный в среднее, остальные в верхние). Затем нажать среднюю клавишу, когда каретка остановится ввести 1, запустить, внести первый член ряда, запустить, внести второй член ряда, запустить.


Код установки стопсов:

01 1 0/0(+2)        5/3     10/4      14/3 15/6R                                  // 1: read I; clr; 
02 1                5/3     10/4 12/3      15/6R                                  // 1: read II; clr;
03 1                5/3     10/4           15/6R                     41/3         // 1: read III; clr;
04 1                5/3     10/4           15/6R                35/3 41/3         // 1: read IV; clr;
05 1         3/10   5/3                    15/6R                                  // 1: read K; clr;
06 1         3/4        8/3                                     35/3 41/4         // 1: stop; read kbd; IV+=; K+=; prn(); clr; 
07 1                    8/3           14/4                                        // 1: stop; read kbd; I+=; prn(); clr; 
08 1         3/4    5/3                    15/6R                35/3 41/3         // 1: read IV; K+=;
09 1         3/9    5/4                    15/6R                                  // 1: read K; prn();
10 1                    8/3      12/4 14/4                                        // 1: stop; read kbd; II+=; I+=; prn(); clr; 
11 2 0/0(+2) 3/4    5/3                    15/6R                35/3 41/4 43/7R(-2)//backward1: 12: read IV, K+=; 
12(1)               5/3          12/3 14/4 15/6R 16/3 19/3           41/4         // 2: read II; I+=; III+=; goto prog1; goto forward; 
13 1                5/3          12/4 14/3 15/6R      19/4 20/5      41/4         // 1: read I; II+=; III+=; goto prog2; 
14 2                5/4 8/3 10/4           15/6R                     41/3         // forward1: 12: read III; prn(); clr;
15 2         3/9    5/4 8/3                15/6R   17/4       33/4                // 12: read k; prn(); newline; goto backward1; 

2.B Расчёт ряда Фибоначчи с автоматическим запросом первого и второго члена ряда, в один столбик, с указанием номера члена ряда. Без использования счётчика К


В I и II - члены ряда, в III - печатаемый член ряда, в IV - единица, в 30 - номер члена ряда.

1: read I; clr; //для начала очищаем все переменные
1: read II; clr;
1: read III; clr;
1: read IV; clr;
1: read 30; clr;//останавливаемся и даём пользователю ввести единицу.
1: stop; read kbd; IV+=; 30+=; prn(); clr;//записываем единицу в IV (она нужна будет для инкремента) и в 30 (начнём с первого члена ряда). Заодно печатаем её - она будет запросом для ввода первого члена ряда.
1: stop; read kbd; I+=; prn(); clr; // записали первый член ряда в I.
1: read IV; 30+=;
1: read 30; prn();// печатаем запрос на ввод второго члена ряда.
1: stop; read kbd; II+=; I+=; prn(); clr; // записали второй член ряда в II. Заодно теперь в I теперь I+II, то есть третий член ряда.
backward1: 12: read IV, 30+=; // увеличиваем на единицу номер текущего члена ряда - для начала, он станет равен 3. Обратите внимание, этот шаг выполняется и по программе №1, и по программе №2.
2: read II; I+=; III+=; goto prog1; goto forward; // на первом цикле этот шаг обходим, потому что у него метка программы №2, а не №1. А на втором цикле из II читается четвёртый член, который записывается в пустой III и прибавляется к I (в I был третий, стал пятый). После этого мы снова переодим к программе №1 и прыгаем вперёд, к этапу печати.
1: read I; II+=; III+=; goto prog2; // На первом цикле в I третий член, в II - второй. В сумме, соответственно, получается четвёртый (он оказывается в II). В III записываем текущий I - третий. И переходим к программе №2.
forward1: 12: read III; prn(); clr; // печатаем текущий член ряда - для начала I+II, а там видно будет. Обнуляем III. Обратите внимание, этот и следующий шаги выполняются и по программе №1, и по программе №2.
12: read 30; prn(); newline; goto backward1; // Печатаем номер шага, переводим строку, возвращаемся назад.


Перед началом выполнения программы надо выставить каретку в крайнее правое положение, выставить рычаги в стандартное состояние (трёхпозиционный в среднее, остальные в верхние). Затем нажать среднюю клавишу, когда каретка остановится ввести 1, запустить, внести первый член ряда, запустить, внести второй член ряда, запустить.


Код установки стопсов:

01 1 0/0(+2)        5/3     10/4      14/3 15/6R                                           // 1: read I; clr; 
02 1                5/3     10/4 12/3      15/6R                                           // 1: read II; clr;
03 1                5/3     10/4           15/6R                              41/3         // 1: read III; clr;
04 1                5/3     10/4           15/6R                    35/3      41/3         // 1: read IV; clr;
05 1                5/3     10/4           15/6R                         37/3              // 1: read 30; clr;
06 1                    8/3                                         35/3 37/4 41/4         // 1: stop; read kbd; IV+=; 30+=; prn(); clr; 
07 1                    8/3           14/4                                                 // 1: stop; read kbd; I+=; prn(); clr; 
08 1                5/3                    15/6R                    35/3 37/4 41/3         // 1: read IV; 30+=;
09 1                5/4                    15/6R                         37/3              // 1: read 30; prn();
10 1                    8/3      12/4 14/4                                                 // 1: stop; read kbd; II+=; I+=; prn(); clr; 
11 2 0/0(+2)                                                                       43/7R(-2)//backward1: 12: read IV, 30+=; 
12(1)               5/3          12/3 14/4 15/6R 16/3 19/3                    41/4          // 2: read II; I+=; III+=; goto prog1; goto forward; 
13 1                5/3          12/4 14/3 15/6R      19/4 20/5               41/4          // 1: read I; II+=; III+=; goto prog2; 
14 2                5/4 8/3 10/4           15/6R                              41/3          // forward1: 12: read III; prn(); clr;
11 2                5/3                    15/6R                35/3     37/4 41/4          //backward1: 12: read IV, 30+=; (повтор 11 строки тут)
15 2                5/4 8/3                15/6R   17/4       33/4       37/3               // 12: read 30; prn(); newline; goto backward1; 

З. Вычисление квадратного корня. Вариант с автоматическим определением порядка, сложный и требовательный к качеству смазки машины.


4. Вычисление квадратного корня. Упрощённый вариант, менее требовательный к состоянию машины.


Ко всем страницам про Аскоту
К главной странице про механику (alple.net/arif-ru)
К главной странице моего сайта (alple.net)