Понятие циклов – еще один важный этап в изучении программирования. В кратком изложении цикл – это некая повторяющаяся последовательность. То, что повторяется несколько раз.
Простой пример. Допустим, мы хотим вывести на экран 10 раз приветствие «Hello world!». Первым вариантом будет простое написание подряд десяти команд PRINT “Hello world!”.
Да, так будет работать, задание, вроде бы, выполнено. А если потребуется, к примеру, сделать это не 10, а 1000 раз? Даже простое «копировать-вставить» займет, наверное, полчаса. Плюс программа будет неимоверно длинной. Именно поэтому существует второй вариант, цикл. Выглядит это так:
FOR i = 1 TO 10
PRINT “Hello world!”
NEXT i
В итоге наш код сократился всего до трех строк! И не важно, сколько раз нам нужно повторять, мы просто будем менять число 10 на любое другое.
Блок цикла состоит из управляющих команд FOR и NEXT. Первая открывает блок, вторая – закрывает. Все, что находится между этими строками, будет повторяться столько раз, сколько мы записали в условии цикла «1 TO 10» - повторяй с 1 до 10, т.е. 10 раз.
Обратите внимание на переменную «i», которая стоит в условии цикла и в конце блока после команды NEXT. Она тут не случайно. Это еще одно интересное решение для создания цикла.
Запись «i = 1 TO 10» означает, что переменная «i» будет принимать значения от 1 до 10. С каждой новой итерацией (проход цикла, одно повторение) у переменной будут новые значения. Соответственно, их можно использовать по своему разумению. Например, можно очень просто вывести на экран все эти значения:
Есть еще одно управляющее слово в условии цикла, которое мы пока не использовали. Это слово «STEP», обозначающее шаг, с которым будут присваиваться значения переменной. Чтобы, к примеру, вывести числа с шагом два, т.е. 1, 3, 5, 7, 9 – нужно написать такой код:
FOR i = 1 TO 10 STEP 2
Раньше мы не писали «STEP», потому что он у нас был равен 1, т.е. мы присваивали переменной числа с шагом 1: 1, 2, 3, 4, 5. Шаг, если кто еще не понял, это разница между соседними числами, которые присваиваются переменной.
Так вот, по умолчанию цикл понимает, что шаг у нас равен 1, поэтому «STEP 1» указывать необязательно.
Числа в условии цикла можно перебирать не только по возрастанию, но и по убыванию. Например, если мы хотим присваивать переменной числа от 10 до 1, то необходимо в условие добавить «STEP -1».
Шаг цикла может быть вещественным (дробным), например, «STEP 0.1». Напомним, что вещественные числа в программировании записываются через точку, а не через запятую.
Решение задачи может потребовать использования нескольких циклов, вложенных друг в друга. Например, давайте выведем 3 одинаковых строки, как в предыдущем примере:
Посмотрите внимательно: на первой строке у нас открывается блок цикла с переменной «j». На последней строке этот блок закрывается с помощью «NEXT j». Можно представить, что это первый уровень.
Внутри первого уровня есть еще один блок цикла с переменной «i». Он закрывается командой «NEXT i». Обратите внимание, что нельзя пересекать блоки циклов между собой. Код будет работать (по крайней мере адекватно) только тогда, когда блоки циклов будут образовывать правильную иерархию. Если второй блок цикла начался после первого, то и закончиться он должен до того, как закончится первый.
Итак, в этом коде мы создали цикл из трех повторений. В него вложили цикл из 10 повторений, который выводит 10 чисел на одной строке. Пустой PRINT мы сделали для того, чтобы перенести курсор с конца строки с числами на следующую строку. Попробуйте его убрать, и увидите, что получится.
Циклы можно приспособить также для подсчета количества итераций (количество прогонов цикла). Например, в тех случаях, когда в условии цикла фигурируют не цифры, а переменные:
FOR x = x1 TO x2 STEP s
Значения переменных x1, x2 и s определяются по ходу программы, и часто так бывает, что нам наперед могут быть не известны. А количество повторений нам знать необходимо. Вот для этого и создают так называемый «счетчик».
Для того, чтобы подсчитать количество повторений (итераций), нужно создать переменную, в которой будет копиться количество повторений. Изначально значение этой переменной будет равно нулю, но при каждой итерации цикла эта переменная будет увеличиваться на 1.
Пример со «счетчиком»:
Сразу вот нельзя же сказать, сколько будет повторений цикла? Числа какие-то некруглые, да еще и шаг равен трем... Для этого и придумали «счетчик».
Итак, в данном коде внутри блока цикла (кстати, набор команд, который выполняется многократно, называется «телом цикла») у нас стоит только «счетчик», который увеличивает значение переменной «n» на 1 каждый раз. В итоге, если мы много раз увеличим на 1, то, по сути, мы и получим количество увеличений, или количество итераций цикла, или количество чисел, которые использовались для присваивания переменной в условии цикла (в данном случае «i»).
На этом урок по циклам можно закончить. Рекомендуем для закрепления выполнить несколько заданий.
Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!
------------------------------
Список уроков Программирование на Бейсике для начинающих
Следующий урок Основные операторы текстового режима
Предыдущий урок Условный оператор
------------------------------
Задания
1. Даны целые числа K и N (N>0). Вывести N раз число K.
2. Даны два целых числа A и B (A<B).
- Вывести все целые числа между A и B (включая сами числа A и B) в порядке возрастания.
- Вывести все целые числа между A и B (не включая сами числа A и B) в порядке убывания.
3. Даны три целых числа A, B и S. A и B – это начало и конец диапазона чисел. S – это шаг цикла. Все числа могут быть отрицательными.
- Проверить, осуществим ли текущий цикл. Если не осуществим, то вывести причину ошибки пользователя.
- Вывести в одну строку все числа в указанном диапазоне.
- Вывести количество чисел.
4. Дана цена 1 кг конфет. Вывести таблицу стоимостей 1..10 кг конфет в формате:
1 kg 2500 t
2 kg 5000 t
…
10 kg 25000 t
5. Даны два целых числа A и B (A<B).
- Найти сумму всех целых чисел от A до B включительно.
- Найти произведение всех целых чисел от A до B включительно.
6. Дано целое число N (N>0), представляющее собой количество сомножителей выражения
1.1 * 1.2 * 1.3 * …
- Вывести на экран все сомножители в одну строку.
- Вычислить результат.
7. Дано целое число N (N>0), представляющее собой количество слагаемых выражения
1 + 2 – 3 + 4 – 5 …
- Вывести на экран все слагаемые в одну строку.
- Вычислить результат.
Примечание: условный оператор не использовать.
8. Дано число A и целое число N (N>0). Используя только один цикл и не используя оператор возведения в степень, вывести все степени числа A от 1 до N.
9. Дано целое число N (N>1). Вывести N первых чисел Фибоначчи, если учесть, что:
- Первое число равно 1
- Каждое последующее число равно сумме двух предыдущих. Второе число тоже равно 1, т.к. нулевого числа не существует (можно сказать, что оно равно 0).
Числа выводить в одну строку.
10. Вывести на экран числа от 1 до 9:
- Все числа одну строку.
- 9 одинаковых строк с числами от 1 до 9.
- 9 строк чисел, но в первой строке будет только число 1, во второй строке – числа 1 и 2, … в девятой строке – все девять чисел.