- Учителю
- Циклические структуры. Материал к урокам информатики в 8 - 9 классах
Циклические структуры. Материал к урокам информатики в 8 - 9 классах
Циклические структуры (8 - 9 класс)
Цикл WHILE
С помощью конструкции WHILE ... WEND можно реализовать выполнение ряда операторов до тех пор, пока выполняется определенное условие.
WHILE Условие
Тело цикла
WEND
До тех пор пока соблюдается условие, последовательно выполняются операторы тела цикла. Ключевое слово WEND закрывает конструкцию по аналогии с командой END IF. Если условие цикла больше не соблюдается, то выполнение программы продолжается, начиная с оператора, следующего за WEND. Если условие цикла WHILE не выполняется с самого начала, то управление сразу же передается оператору, расположенному за WEND. Следите за тем, чтобы действия внутри цикла влияли на WHILE-условие.
Цикл DO
Вариант 1: Вариант 2:
DO DO WHILE {или UNTIL} Условие
Тело цикла Тело цикла
[EXIT DO] [EXIT DO]
LOOP WHILE {или UNTIL} Условие LOOP
{WHILE I UNTIL} - Ключевыми словами WHILE или UNTIL определяется способ проверки условий. При использовании WHILE цикл выполняется до тех пор, пока соблюдается условие (значение логического выражения истинно). И, наоборот, при использовании UNTIL цикл выполняется только тогда, когда условие не соблюдается (значение логического выражения ложно).
EXIT DO - оператор EXIT DO преждевременно прерывает выполнение цикла. В первом варианте цикл выполняется, по крайней мере один раз, так как проверка условия находится в конце цикла, а во втором варианте цикл может вообще не выполняться, если соответствующее условие с самого начала не позволяет входить в него. Как видно из синтаксического описания, DO...LOOP может работать без проверки условий. В этом случае из бесконечного цикла можно выйти с помощью оператора EXIT DO.
Цикл FQR...NEXT
Используя оператор FOR...NEXT, можно программировать циклы, количество прохождений которых зависит от значения счетчика.
Тело цикла
[EXIT FOR]
NEXT X
Х- счетчик - арифметическая переменная, которая изменяется при повторении цикла. Ее часто называют управляющей переменной цикла.
- начальное значение - арифметическое выражение, задающее начальное значение счетчика.
- конечное значение - арифметическое выражение, задающее конечное значение счетчика.
- шаг - арифметическое выражение, задающее приращение счетчика при каждом прохождении цикла. Значение шага по умолчанию принимается равным +1.
EXIT FOR - Прерывает выполнение цикла.
Операторы между FOR и NEXT повторяются до тех пор, пока управляющая переменная цикла не превысит конечное значение. После каждого прохождения цикла переменная цикла изменяется на величину шага. Если шаг - положительное число, то начальное значение переменной цикла должно быть меньше конечного значения, иначе цикл ни разу не выполнится, и, наоборот, если шаг отрицательный, то начальное значение переменной цикла должно быть больше конечного, иначе опять-таки цикл ни разу не отработает. В остальных случаях количество прохождений цикла с шагом - это ближайшее большее целое от выражения: "(конечное значение - начальное значение+1) / шаг", если шаг положительный, и "(конечное значение-начальное значение -1) / шаг", если шаг отрицательный.
Примеры
-
Разработать программу нахождения и вывода на экран всех чисел, оканчивающихся на 5, и делящихся на 3, из диапазона чисел от 5 до 1000.
CLS
FOR i = 5 ТО 1000 STEP 5
х = i MOD 3
IF x = 0 THEN PRINT i;
NEXT i
END
-
Определите, является ли число простым, или нет. Натуральное число N называется простым, если его делителями являются только два числа: 1 и N.
CLS
INPUT "Введите число N=", N
IF N <= 3 THEN 10
d = 2
IF N MOD 2 = 0 THEN 20
d = 3
FOR i = 1 TO N
d = d + 2
IF N MOD d = 0 THEN 20
IF N <= d * d THEN 10
NEXT i
10 PRINT "Число N-простое."
INPUT "Для продолжения - Enter.", z
END
20 PRINT "Число N-составное. Оно делится на"; d
INPUT "Для продолжения - Enter.", w
END
-
Составить программу, которая сгенерирует случайное число между 1 и 20. Дать играющему 5 шансов, и после того, как введено число, программа должна сообщать больше или меньше введённое вами число, или поздравить с победой, или пожелать игроку победы в следующий раз, указав ему, что он на этот раз проиграл.
PRINT "Игра - угадай!"
n = INT(RND * 10) + 1
PRINT "Секретное число находится в промежутке от 1 до 10"
WHILE g <> 10 ' цикл до предположении = 10
INPUT "Попыток "; g
tr = tr + 1 'это счётчик попыток
WEND
PRINT "Молодец! Вы угадали моё секретное число с "; tr; "попыт(ок),(ки)"
END
Задания
-
Вычислить значения функции Y= 5*Х2 - 4*Х + 11 на отрезке (-5,5) с шагом 1,5;
-
Вычислите сумму, если N вводится с клавиатуры: 3*2 + 5*2 + ... + (2N+1)*2.
-
Вычислите произведения, если А и N вводятся с клавиатуры:
а. (1+12)*(1+22)...(1+N2);
б. A*(A-N)*(A-2N)...(A-N*N);
в. 2*4*6*.,.*2*N.
-
Определить является ли произвольное число кратным трем.
-
Дана последовательность чисел, введенная с клавиатуры. Найдите сумму отрицательных членов этой последовательности и произведение положительных, количество отрицательных и положительных.
-
Вывести минимальное натуральное число большее 200, которое делится на 17.
-
Найти максимальное из натуральных чисел, не превышающих 5000, которое нацело длится на 39.
-
Найти наибольший общий делитель двух чисел, используя алгоритм Евклида.
-
Найти наименьшее общее кратное двух заданных натуральных чисел.
-
Даны натуральные числа а и Ь, обозначающие соответственно числитель и знаменатель дроби. Сократить дробь, т. е. найти такие натуральные числа р и q не имеющие общих делителей, что p/q = a/b.
-
Гражданин 1 марта открыл счет в банке положив 10000 руб.. Через каждый месяц счет в банке увеличивается на 2% от имеющийся суммы. Определить:
а. За какой месяц величина ежемесячного увеличения вклада превысит 300 руб.;
б. Через сколько месяцев размер вклада превысит 12000 руб.
12. Даны натуральные числа тип. Получить все кратные им числа, не превышающие m*n. Условный оператор не использовать.
Операторы перехода
Операторы условного перехода реализуют на языке программирования алгоритмическую конструкцию ветвления.
Ветвление - это такая форма организации действий, при которой выполнение или иного действия зависит от выполнения или невыполнение некоторого условия.
Условие - это логическое выражение, содержащее знаки сравнения и логические операции (см. табл.).
Таблица действия логических функций (таблица истинности), где а и b -логические выражения.
Пример записи логического выражения: а + b > с AND d <> 8.
Логическая операция NOT (отрицание) выполняется над простым логическим выражением: NOT ( а> b )
Логическое выражение принимает одно из двух значений: TRUE (истина) и FALSE (ложь). Эти выражения применяются в операторах ветвления и цикла.
Существующий приоритет выполнения операций поддерживается и здесь: сначала выполняются операции в скобках, затем логическое умножение, логическое сложение.
Примеры записей логических выражений:
Принят следующий приоритет логических и арифметических операций:
■ операции в скобках;
■ операция NOT;
■ операции AND, /, * ;
■ операции OR, +, -;
■ операции отношения.
Упражнения
1. Вычислить значение логического выражения
а) X2 -У2 <=12 при Х=0 и У=-1 б) NOT ((X*Y) OR (Y >X) при X=4, Y=1
2. Написать логические выражения, которые имеют значение истинна лишь при выполнении указанных условий:
а) Х>0 и Y>0 Y не является MAX (X, Y, Z)
б) неверно, что Х>0 X, Y, Z равны между собой
в) 2< X < 20 точка с координатами X, Y принадлежит 1-ой четверти
Операторы перехода разделяются на две группы:
операторы безусловного перехода и операторы условного перехода.
Оператор безусловного перехода.
Он служит для перехода из одной строки программы к другой, помеченной номером или меткой.
Общий вид оператора: GOTO N
где N - номер строки или метки оператора, на который происходит переход в программе.
Примеры:
1. Х=3 2. GOTO W
GOTO 7 …
Y=2*X W PRINT "решение получено"
7 Z=5*X
Операторы условного перехода
Существуют две формы ветвления: полная и неполная.
Соответственно существуют и два вида операторов: полной и неполной альтернативы.
-
Полная альтернатива (предусмотрены команды в ветви "ДА" и в ветви "НЕТ").
1). Линейная форма записи (оператор записывается в одной строке).
Условие выполняется "ДА"
Работа оператора: в зависимости от того выполняется или не выполняется условие (условие - логическое выражение, которое может содержать знаки сравнения и логические операции). Если условие истинно, то выполняется блок операторов 1, если условие ложно, то выполняется блок операторов 2.
ПРИМЕР: IF А=1 THEN PRINT "ДА" ELSE PRINT "НЕТ"
PRINT "КОНЕЦ"
Здесь операторы работают следующим образом:
■ если условие А=1 "ИСТИННО", то выполняются операторы PRINT "ДА" и
PRINT "КОНЕЦ";
■ если условие А=1 "ЛОЖНО", то выполняются операторы PRINT "HET" и
PRINT "КОНЕЦ".
2) Блочная форма записи:
IF условие THEN
блок операторов ветви "ДА"
ELSE
блок операторов ветви "НЕТ"
END IF
ПРИМЕР:
CLS
INPUT a
IF a=l THEN
PRINT "работает ветвь ДА "
PRINT a
ELSE
PRINT "работает ветвь НЕТ"
PRINT a
END IF
II. Условный оператор неполной альтернативы:
IF условие THEN блок операторов
Примеры решения задач.
Пример 1. Определить наибольшее из двух чисел X и Y, введенных клавиатуры.
CLS
INPUT " Введите два числа ";Х, Y
IF X > Y THEN
PRINT "НАИБОЛЬШЕЕ ЧИСЛО Х="; X
ELSE
PRINT "НАИБОЛЬШЕЕ ЧИСЛО Y ="; Y
END IF
END
Пример 2. Вычислите значение функции Y для любого значения X.
CLS
INPUT " Введите Х"; Х
IF Х<=-2 THEN
Y=X^2+4*X-7
ELSE
Y=X^2-3*X+12
END IF
PRINT "ФУНКЦИЯ ="; Y;" при X=";X
END
Пример 3. Вычислите значение функции Y =ЗХ2 -5Х+12 на отрезке (-3,3) с шагом 1.
CLS
PRINT "Y", "X"
Х=−3
4 У=3*Х^2 -5*X+12
PRINT Y, X
Х=Х+1
IF Х<3 THEN 4
END
Пример 4. Вычислите сумму целых чисел от 10 до 20
S =10+11+12+...+20
CLS: S=0: Х=10
5 S=S+X
Х=Х+1
IF Х<=20 THEN 5
PRINT "сумма = "; S
END
Пример 5. Вычислите произведение нечетных чисел от 15 до 30
Р= 15*17*19*...*29
CLS:P=1:X=15
7 Р=Р*Х
Х=Х+2
IF Х<30 THEN 7
PRINT "произведение = "; Р
END
Примеры решения задач:
Проверить, принадлежит ли точка с координатами, вводимыми с клавиатуры заштрихованной области.
На первом рисунки, точки принадлежащие заштрихованной области задаются неравенством у ≥ х2 для их координат (на 2-м рисунке неравенством у ≤ х2).
На этом рисунке точки из пересечения двух заштрихованных областей задаются двумя неравенствами, связанными логическим действием - конъюнкция.
(y>=x2) AND (y<=2.5x+1.5)
Программа для проверки принадлежности точки (с координатами, вводимыми с клавиатуры) заштрихованной области третьего рисунка:
REM Проверка принадлежности точки к область плоскости
CLS
INPUT «Введите координаты точки», х, у
IF (y>=x) АND (y<=2.5x+1.5) THEN
PRINT «Точка принадлежит заштрихованной области»
EESE
PRINT «Точка не принадлежит заштрихованной области»
END IF
END
Пример наложения дополнительного условия, и как следствие уменьшение выделенной области плоскости:
(y>=x2) AND (y<=2.5x+1.5) AND (x<=0)
Задание: записать условие для задания заштрихованной области (в виде применимом коде программы)
Дополнительные примеры описания заштрихованных областей:
Задания:
Записать программы по проверке принадлежности точки (с координатами, вводимыми с клавиатуры) заштрихованным областям.