Рассмотрим задачу: написать программу, которая выведет на экран фразу "Привет, Мир" 10 раз. написать такую программу будет просто:
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
print "Привет, Мир"
Вроде бы, все. Но что делать, если нужно вывести на экран эту фразу не 10, а 100 раз? А если 500 раз? 10000 раз? Легко понять, что способ, указанный выше, в таких случаях не сработает. Что же делать?
В случае, если нам необходимо повторить какую-то команду (или серию команд) неоднократно, нужно использовать алгоритмическую структуру "цикл". Циклы бывают двух видов: со счетчиком и с условием. На этом уроке мы разберем первый вид цикла:
Цикл со счетчиком
Цикл со счетчиком используется в тех случаях, когда мы четко знаем, какое количество повторений нам необходимо сделать. В языке Basic этот цикл записывается следующим образом: for X=НачальноеЗначение to КонечноеЗначение Step Шаг
Тело цикла Next X
Разберем эту запись более подробно:
Первая строка служит началом цикла и определяет количество повторений. Количество повторений задается с помощью специальной переменной, которая меняется от заданного начального значения к конечному с определенным шагом. Каждый раз, когда переменная увеличивает свое значение на шаг, цикл команду или серию команд, называемую телом цикла. Когда переменная достигает конечного значения, выполнение цикла прекращается. Количество шагов, необходимое для достижения переменной своего конечного значения и определяет количество повторений цикла.
Пример: for A=1 to 10 Step 1
Тело цикла Next X
В данном цикле за количество повторений отвечает переменная А. Значение этой переменной будет изменяться от единицы (начальное значение) до 10(конечное знанчение) с шагом 1. Таким образом, переменная А будет принимать следующие значения:1,2,3,4,5,6,7,8,9,10
1 - при первом выполнении цикла
2 - при втором выполнении
3 - при третьем выполнении
...
9 - при девятом выполнении цикла
10 - при десятом и финальном выполнении
Таким образом, данный цикл совершит 10 повторений
Вторая строка - тело цикла. Тело цикла - одна или несколько команд, которые будут повторяться ровно столько раз, сколько будет определено первой строкой. Третья строка - конец цикла. Дословно это выглядит примерно как "Повторение закончено, переходим к следующему значению переменной А"
Чтобы сделать 10 повторений вовсе не обязательно использовать начальное значение 1 и конечное 10. 10 повторений можно реализовать и другим способом: for A=30 to 75 Step 5
В этом случае переменная А будет принимать следующие значения: 30,35,40,45,50,55,60,65,70,75, что обеспечит те же 10 повторений цикла.
Можно и иначе: for A=0 to 0.9 Step 0.1
В этом случае цикл совершит все те же 10 повторений, а переменная А будет принимать следующие значения: 0, 0.1, 0.2 ,0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9
Количество повторений можно легко вычислить по формуле: (Конечное значение-Начальное значение)/Шаг + 1
Принудительный выход из цикла
Для принудительного выхода из цикла можно использовать команду Exit For, например:
for i=1 to 50 step 1
if i=10 then exit for
next x Значение счетчика данного цикла дойдет всего до 10, после чего произойдет принудительное завершение цикла
Задание 1. Определить, какое количество повторений совершит цикл:
for x=1 to 50 step 1 Next x
Цикл совершит 50 повторений: (50-1)/1+1=50
Задание 2. Определить, какое количество повторений совершит цикл:
for x=2 to 10 step 2 Next x
Цикл совершит 5 повторений: (10-2)/2+1=5
Задание 3. Определить, какое количество повторений совершит цикл:
for x=10 to 2 step 1 Next x
Данный цикл невозможен, т.к. конечное значение (2) недостижимо из начального значения с указанным шагом. Чтобы цикл сработал, необходимо изменить значение шага на -1
Задание 4. Определить, какое количество повторений совершит цикл:
for x=99 to 27 step -3 Next x
Цикл совершит 25 повторений.
Задание 5. Написать программу, которая напечатает фразу "наши слоны - самые слонистые" 25 раз
Dim x as byte Примечание: Объявляем переменную х for x=1 to 25 step 1 Примечание: Делаем счетчик от 1 до 25, таким образом обеспечивая 25 повторений print "Наши слоны - самые слонистые" Примечание: Рассчитываем пути миграции драконов Next x Примечание: Завершаем цикл
Задание 6. Написать программу, которая напечатает все целые числа от 100 до 1
Dim x as byte Примечание: Объявляем переменную х for x=100 to 1 step 1 Примечание: Делаем счетчик от 100 до 1, таким образом обеспечивая 100 повторений с уменьшением шага print x Примечание: Переменная, отвечающая за счетчик будет уменьшаться в процессе выполнения программы. Если на каждом шагу отправлять ее на печать - мы получим искомое. Next x Примечание: Завершаем цикл
Задание 7. Написать программу, которая напечатает все четные числа от 100 до 1
Вариант 1
Примечание: если немножко подучить математику, то станет ясно, что четным числом является каждое второе. Поэтому, нам стоит сделать шаг цикла, равный двум. Dim x as byte Примечание: Объявляем переменную х for x=100 to 2 step 2 Примечание: Делаем счетчик от 100 до 2. Почему до 2, а не до 1, как было в условии? Все просто: последнее четное число, которое должна будет напечатать программа - 2. Шаг счетчика ставим равный 2, чтобы пропускать нечетные числа. Таким образом, переменная х будет меняться от 100 до 2 с шагом 2: 100,98,96,94 и т.д. print x Примечание: Переменная, отвечающая за счетчик будет уменьшаться в процессе выполнения программы, принимая нужные нам значения. Если на каждом шагу отправлять ее на печать - мы получим искомое. Next x Примечание: Завершаем цикл
Вариант 2
Примечание: Ученики чаще всего додумываются именно до этого варианта программы. Если немножко подучить математику, то станет ясно, что четным числом является каждое второе, всего таких чисел будет...50! Неожиданно, правда? Поэтому, сделаем цикл на 50 повторений: Dim x,y as byte Примечание: Объявляем переменную х z=100 for x=1 to 50 step 1 Примечание: мы ввели новую переменную z, которая изначально будет равна 100. Она и будет уменьшаться и выводиться на экран print z z=z-2 Примечание: выводим ее на экран, а затем уменьшаем на 2 с помощью переприсваивания. Next x Примечание: Завершаем цикл
Задание 8. Написать программу, которая напечатает все целые числа от 0 до введенного пользователем, не равного 0.
dim x,y as Long Объявляем 2 переменные. Одна - для счетчика, вторую будет вводить пользователь. Input y Примечание: Янепредставляючтоэтозакомандаяеесписализучебника. if y<0 then Да-да, нам придется использовать условие, чтобы наша программа работала и с отрицательными и с положительными числами for x=0 to y step -1 Делаем цикл от 0 до у с шагом -1. Шаг -1 потому, что введенная пользователем у меньше нуля. print x Очередная непонятная команда. Что бы она могла означать...? Next x Примечание: Завершаем цикл else Мы рассмотрели вариант, когда у меньше нуля. Пора обратиться к светлой стороне силы... т.е. к положительным числам. for x=0 to y step 1 Делаем цикл от 0 до у с шагом 1. Раз у больше нуля, значит - шаг положительный. Next x Примечание: Завершаем цикл End if Примечание: Завершаем ветвление
Задание 9. Написать программу, определяющую, является ли введенное пользователем целое число (>2) простым.
Примечание: Что значит "простое число"? Это число, которое делится без остатка только на себя и на единицу. Dim x,y as long Dim i as boolean Объявляем 3 переменные. х - для счетчика. у будет вводить пользователь. i - булева переменная, которая может принимать значения true или false. Она будет работать индикатором "число простое/число составное" i=true Примечание: Пока мы не нашли делители введенного числа - считаем его простым. for x=3 to у-1 step 1 Примечание: Делаем счетчик от 2(помним, что введенное число больше 2, да?) до введенного числа-1. Почему обязательно -1? Да потому, что само на себя оно точно будет делиться. if y mod x=0 then i=false Примечание: Вычисляем остаток от деления введенного пользователем числа, на текущее значение счетчика. Если остаток равен 0 - число поделилось, а значит, оно - составное. Если оно составное - присвоим переменной i значение false. Next x Примечание: Завершаем цикл. Программа переберет все числа от 2 до у-1. Если найдет хоть один делитель - присвоит переменной i значение false.if i=true then
print "Число простое"
else
print "Число составное" Примечание: выводим фразу "число простое" если i=true, иначе выводим "число составное".