Операторы языка Бейсик для записи циклического алгоритма
При рассмотрении вопросов алгоритмизации задач было сказано, что все вычислительные процессы, выполняемые на компьютере по заданной программе, можно разделить на три основных вида:
• линейные;
• разветвляющиеся;
• циклические.
Напомним, что линейным принято называть вычислительный процесс, в котором операции выполняются последовательно, в порядке их записи в программе.
Вычислительный процесс называется разветвляющимся, если для его реализации предусмотрено несколько направлений (ветвей). В программе появляются операторы передачи управления, которые могут изменять порядок выполнения операторов в программе. Это рассмотренные ранее оператор безусловного перехода и условные операторы.
Вычислительный процесс называется циклическим, если он содержит цикл. Цикл – это группа операторов, которые выполняются многократно путем возврата от последнего оператора этой группы к её первому оператору, т.е. это многократно повторяемый участок программы. Цикл может быть организован с использованием оператора безусловного перехода и условных операторов. Продемонстрируем это на примере.
Пример: Вычислить сумму
CLS
S=0
N=0
1 N=N+1
S=S+1/N
IF N<=1000 THEN GOTO 1
PRINT ”Сумма =”; S
END
Это так называемый цикл «ДО», т. е. проверка условия выхода из цикла осуществляется после выполнения тела цикла. Для его организации использован условный строчный оператор и оператор безусловного перехода. Не составит особого труда составить цикл, в котором проверка условия выхода из цикла осуществляется перед выполнением тела цикла, т. е. цикл «ПОКА».
Однако в языке программирования Бейсик, как и в других языках программирования высокого уровня, существует специальный оператор цикла, обеспечивающий более удобный способ организации циклов.
2.6.1. Оператор цикла
Оператор цикла является одним из наиболее важных операторов. Его эффективность особенно велика при использовании массивов, т. е. работе с элементами массивов.
Оператор цикла является структурным оператором, имеющим три части: заголовок оператора цикла, тело цикла, завершающий оператор.
FORI=NITOKISTEPHI заголовок оператора цикла
СЕРИЯ ОПЕРАТОРОВ тело цикла
NEXTI завершающий оператор
Оператор цикла содержит четыре ключевых слова: FOR, что в переводе c английского языка означает для, TO, что в переводе c английского языка означает до, STEP, что в переводе c английского языка означает шаг и NEXT, что в переводе c английского языка означает следующий.
Тело цикла состоит из последовательности исполняемых операторов, следующих за заголовком оператора цикла до завершающего оператора. В частном случае, тело цикла может состоять из одного оператора.
Напомним, I – имя параметра цикла (управляющая переменная цикла, такое определение более информативно: переменная, которая управляет циклом и входе его выполнения изменяет свое значение); NI – начальное значение параметра цикла (управляющей переменной цикла); KI – конечное значение параметра цикла (управляющей переменной цикла); HI – шаг изменения параметра цикла (управляющей переменной цикла). NI, KI и HI могут быть представлены любыми арифметическими выражениями, но значения переменных, которые входят в них, должны быть определены до выполнения цикла.
Работу оператора цикла можно описать следующим образом:
1. Вычисление значений выражений, определяющих NI, KI и HI;
2. I присваивается значение NI;
3. I сравнивается с KI: если I больше KI при положительном HI (или, наоборот, I меньше KI при отрицательном HI), то переход к выполнению оператора следующего за завершающим оператором цикла ( NEXT I ), иначе вход в цикл;
4. Выполняются операторы, входящие в тело цикла до завершающего оператора цикла ( NEXT I );
5. I автоматически изменяется на HI;
6. Переход к пункту 3, т.е. как бы переход к заголовку цикла;
Иначе говоря, операторы FOR и NEXT обеспечивают изменение значения I от NI до KI с шагом HI и выполнение оператора (операторов), заключенных между FOR и NEXT, при каждом значении I.
Замечания:
1. Изменять значение величин NI, KI и HI в процессе выполнения оператора цикла не рекомендуется.
2. Вход в цикл, минуя заголовок оператора цикла, в Бейсике запрещен.
3. Значение HI не должно быть 0 (нуль), так как цикл будет бесконечным.
4. Если Значение HI равно 1, конструкцию STEP 1 можно опустить.
Пример: Вычислить сумму
CLS
S=0
FOR N=1 TO 1000 STEP 1
S=S+1/N
NEXT N
PRINT ”Сумма =”; S
END
2.6.2. Программа циклического алгоритма
Рассмотрим реализацию разветвляющегося алгоритма на примере задачи, приведенной в разделе 1.3, а именно: вычислить значение y=sin φ в диапазоне изменения аргумента от 10° до 90° с шагом 10°.
CLS
INPUT " Введите значения: NX"; NX
INPUT " Введите значения: KX"; KX
INPUT " Введите значения: HX"; HX
FOR X=NX TO KX STEP HX
X1 = X*3.14/180
Y = SIN(X1)
? Y;"=sin(";X;")"
NEXT X
END
В приведенной программе использовался оператор цикла, применение которого значительно проще, чем организация цикла с помощью условного оператора.
Для самостоятельной работы на построение блок-схемы и записи программы циклического алгоритма можно предложить следующие задачи:
Задача 1. Вычислить сумму (S) натуральных нечетных чисел от 1 до 99 (S=1+3+5+…+99).
Задача 2. Вычислить произведение (P) натуральных чисел от 1 до 10 (P=1*2*3*…*10=10! – это называется 10 факториал).