- Преподавателю
- Информатика
- Изучаем язык BASIC. Занятие 10. Циклы в алгоритмах и программах
Изучаем язык BASIC. Занятие 10. Циклы в алгоритмах и программах
Раздел | Информатика |
Класс | - |
Тип | Конспекты |
Автор | Гегелашвили Т.П. |
Дата | 26.08.2015 |
Формат | doc |
Изображения | Есть |
Занятие 10
Циклы в алгоритмах и программах.
Лучшее качества компьютеров проявляются не тогда, когда они рассчитывают значения сложных выражений, а когда многократно, с незначительными изменениями, повторяют сравнительно простые операции. Даже очень простые расчеты могут поставить человека в тупик, если их надо повторить тысячи раз, а повторять операции миллионы раз человек совершенно не способен.
С необходимостью повторяющихся вычислений программисты сталкиваются постоянно. Например, если надо подсчитать, сколько раз буква "о" встречается в тексте необходимо перебрать все буквы. При всей простоте этой программы исполнить ее человеку очень трудно, а для компьютера это задача на несколько секунд.
Циклический алгоритм - описание действий, которые должны повторяться указанное число раз или пока не выполнено заданное условие.
Различают два вида циклов: с известным числом повторов и с неизвестным числом повторов
Перечень повторяющихся действий называют телом цикла.
Например, на уроке физкультуры вы должны пробежать некоторое количество кругов вокруг стадиона.
Циклы с известным числом повторов называются - циклы со счетчиком.
На языке Basic они записываются следующим образом:
FOR Счетчик=НачЗнач TO КонЗнач [STEP шаг]
тело цикла
NEXT [Счетчик]
Параметры указанные в квадратных скобках являются не обязательными (их можно не записывать). По умолчанию шаг цикла равен одному, т.е. каждый раз после прохождения тела цикла счетчик увеличивается на единицу.
Пример: Вывести на экран все числа от 1 до 100. Для этого можно было бы написать следующую программу:
REM Вывод чисел от 1 до 100
PRINT 1
PRINT 2
PRINT 3
PRINT 4
PRINT 5
PRINT 6
PRINT 7
...
PRINT 98
PRINT 99
PRINT 100
END
Всего каких-то 102 строчки ;-). Хотя эту же программу можно написать намного короче:
REM Вывод чисел от 1 до 100
FOR I=1 TO 100
PRINT I
NEXT
END
Немного исправив программу можно сделать, чтобы она выводила все числа от a до b.
REM Вывод чисел от a до b
a=55
b=107
FOR I=a TO b
PRINT I
NEXT
END
В этом случае счетчик при первом прохождении цикла принимает значение переменной a, после чего выполняются операторы до ключевого слова NEXT. После этого счетчик увеличивается на единицу и сравнивается со значение переменной b, если счетчик меньше, то цикл выполняется еще.
Легко сделать чтобы программа выводила числа в обратном порядке. Для этого шаг цикла должен быть равен -1 (минус один). В этом случае значение счетчика каждый раз после прохождения цикла будет уменьшено на единицу.
REM Вывод чисел от b до a
a=55
b=107
FOR I=b TO a STEP -1
PRINT I
NEXT
END
Пример: Вычислить сумму двухзначных натуральных чисел.
REM Вычислить сумму двухзначных натуральных чисел
FOR I=10 TO 99
s=s+I
NEXT
PRINT "Результат = ",s
END
Программа перебирает числа от 10 до 99 каждый раз выполняя действия s=s+I. С точки зрения математики это совершенно бессмысленная запись, но рассмотрим её внимательней.
Процесс решения вычислительной задачи - это процесс последовательного изменения значений переменных. В итоге - в определенных переменных получается результат. Переменная получает определенное значение в результате присваивания. Вы помните, что присваивание - это занесение в ячейку, отведенную под переменную, определенного значения в результате выполнения команды.
В результате операции а=5 переменная а получает значение 5.
В результате операции с=a+b переменная с получает значение равное сумме значений переменной а и b.
В результате операции s=s+I переменная s получает значение равное сумме предыдущего значения переменной s и значения переменной I. Т.е., если до операции присваивания значение s было равно 5, а переменной I равно 3, то после операции значение переменной s будет равно 8 (5+3, старое значение s + значение I).
Значит после выполнения нашей программы в переменной s будет хранится сумма всех двузначных чисел от 10 до 99.
Найти сумму всех чисел от 1 до N
CLS
INPUT "N= ";N
S=0
FOR I=1 TO N
S=S+I
NEXT I
PRINT "S= ";S
END
Найти сумму всех четных чисел от 1 до N
CLS
INPUT "N= ";N
S=0
FOR I=0 TO N STEP 2
S=S+I
NEXT I
PRINT "S= ";S
END
I/2=I\2 - четные
I/2<>I\2 - нечетные
I/3=I\3 - кратные 3
I/3<>I\3 - некратные 3
Второй вариант
CLS
INPUT "N= ";N
S=0
FOR I=1 TO N
IF I/2=I\2 THEN S=S+I
NEXT I
PRINT "S= ";S
END
Подсчитать сумму квадратов двузначных чисел.
cls
S=0
FOR I=10 TO 99
s=s+I^2
NEXT
PRINT "Результат = ",s
END
CLS
INPUT "N= ";N
S=0
FOR I=1 TO N
S=S+1/I
NEXT I
PRINT "S= ";S
END
Домашнее задание.