Занятие 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
Домашнее задание.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.