|
Базовые команды и операторы
|
|
| TimurAR | Дата: Вторник, 25.07.2017, 23:27 | Сообщение # 1 |
 Генералиссимус
Группа: Администраторы
Сообщений: 11
Статус: Offline
| Обсуждаем и задаем вопросы о базовых операторах и командах Liberty Basic. Задавайте любые вопросы, даже если они могут показаться неуместными. УВАЖАЕМЫЕ посетители сайта убедительная просьба не стесняйтесь задавайте вопросы или делитесь опытом, а то вроде бы просмотры есть, а ни одной записи.
|
| |
|
|
| lidiyapro | Дата: Понедельник, 28.08.2017, 21:20 | Сообщение # 2 |
 Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
| В чём различие оператора GOTO от GOSUB. Фактически они выполняют одно и то же
|
| |
|
|
| TimurAR | Дата: Вторник, 29.08.2017, 00:50 | Сообщение # 3 |
 Генералиссимус
Группа: Администраторы
Сообщений: 11
Статус: Offline
| Цитата lidiyapro (  ) В чём различие оператора GOTO от GOSUB. Фактически они выполняют одно и то же goto [metka]- оператор который переводит на указанную строку выполнение программы и далее код выполняется с этой указанной строки, а gosub [metka]- оператор который перевод на часть кода которую мы определили как подпрограмму, после выполнения которой обязательно пишем RETURN и возвращаемся в то место откуда мы перешли. При чем этот код подпрограммы мы можем вызывать несколько раз из разных мест. Пример: a=3 b=4 c=0 goto [m2] 'вот отсюда переходим на [m2] c=a*b 'эту строчку пропускаем [m2] 'вот сюда переходим c=c+a+b print c
Пример: a=3 b=4 c=0 gosub [m1] 'вот здесь вызываем подпрограмму первый раз print c a=5 b=6 gosub [m1] 'вот здесь подпрограмму вызываем второй раз print c end [m1] 'отсюда начинается подпрограмма c=a*b RETURN 'здесь подпрограмма заканчивается и возвращается в то место откуда была вызвана
|
| |
|
|
| Гупи | Дата: Среда, 05.09.2018, 17:37 | Сообщение # 4 |
|
Рядовой
Группа: Модераторы
Сообщений: 2
Статус: Offline
| Здравствуйте, Тимур, подскажите, пожалуйста. У меня два вопроса, касающихся нижеприведённого цикла.
1. FOR i=1 TO 14 2. x=INT(RND(1)*(16-i)+i) 3. b=A(i) 4. A(i)=A(x) 5. A(x)=b 6. NEXT i
Первый вопрос: по какой причине в четвёртой строчке выражение "А(х)" является значением массива, а уже в следующей строчке то же самое выражение является индексом массива А? Это зависит от того, в какой части находится данное выражение? По типу если слева от "=", то это индекс массива, а если справа, то его значение?
И второй вопрос: никак не могу понять, как получается, что данный алгоритм заполняет массив в итоге случайными числами без повторения?
|
| |
|
|
| TimurAR | Дата: Четверг, 06.09.2018, 22:30 | Сообщение # 5 |
 Генералиссимус
Группа: Администраторы
Сообщений: 11
Статус: Offline
| Хотел вчера ответить, но интернет вырубился.
|
| |
|
|
| TimurAR | Дата: Четверг, 06.09.2018, 22:52 | Сообщение # 6 |
 Генералиссимус
Группа: Администраторы
Сообщений: 11
Статус: Offline
| Алгоритм взят из примера решения задач 1 глава, 20 параграф, задача б). Вообще данный алгоритм я взял из одной старой советской книжки для военных. Он предназначался для ручного перемешивания карточек с числами. Вот достаточно полный код: 1 Dim ch(15) 2 For i=1 to 15 3 ch(i)=i 4 Next i 5 For i=1 to 14 6 x=Int(Rnd(1)*(16-i)+i) 7 b=ch(i) 8 ch(i)=ch(x) 9 ch(x)=b 10 Next i 11 For i=1 to 15 12 print "ch(";i;")=";ch(i) 13 Next i Сперва со 2 по 4 строчку заполняем массив числами по порядку. Далее следует обратить внимание на группу строк с 7 по 9, это обмен значениями между двумя членами массива ch(i) и ch(x) через буферную переменную "b". Сперва сохраняем значение хранящееся в ch(i) в переменную "b", затем в ch(i) кладем значение из ch(x), и потом в ch(x) кладем старое значение ch(i) которое у нас находится в "b". Вся соль перемешивания заключается в 6 строке. Это формула генерирует случайное число из постоянно меняющегося диапазона. следующим образом: Для ch(1) выбирается пара для обмена значениями из диапазона от 1 до 15 Для ch(2) выбирается пара уже из диапазона от 2 до 15 Для ch(3) выбирается пара из диапазона от 3 до 15 и т.д. В результате, массив заполненный числами по порядку, оказывается перемешанным за один проход. По поводу конкретно вопроса: в пятой строчке переменная A(x) - не индекс массива, а ячейка массива в которую кладем значение (в данном случае из переменной "b"), а в четвертой строке мы из переменной A(x) кладем значение в переменную A(i). Индексом у них являются переменные "i" и "x".
|
| |
|
|