Решение задач с использованием циклов

advertisement
Решение задач с использованием циклов
Цель урока:
1. Рассмотреть решение задач с использованием циклов. Проверить
знания прошлого урока.
2. Воспитание умения слушать учителя.
3. Развитие познавательного интереса.
План урока:
1.
2.
3.
4.
Проверка домашнего задания.
Решение различных задач
Домашняя работа.
Подведение итогов урока.
Ход урока
Проверка домашнего задания.
Постановка цели урока.
Решение задач
Освоив, операторы присвоения и научившись пользоваться оператором IF,
теоретически можно написать любую программу. Но на практике в тех
случаях, где встречаются повторения одних и тех же действий такой способ
мало продуктивен. Гораздо удобнее в этих случаях использовать циклы. Во
всех более менее сложных задачах, как правило, используются циклы. Циклы
позволяют существенно упростить алгоритм и текст программы, сделать
программу изящной, гибкой более привлекательной. Поэтому даже при
решении школьных задач применение циклов неизбежно. Рассмотрим
применение циклов при решении конкретных задач.
Пример 1
Вычислите 20 первых членов последовательности и их
сумму, если общий член последовательности
где (k=1,2,3…20)
10
20
30
40
50
Rem
K=1
S=0
A=(Sqr(K)+1)/(K^2+1)
S=S+A
,
40
50
60
70
PRINT “K=”;K;”A=”;A,”S=”;S
K=K+1
IF K<=20 THEN 30
END
Эта программа позволяет
выполнить цикл с помощью
ветвления IF…THEN.
Другой вариант этой программы позволяет
обойтись без ветвления. Достаточно применить цикл DO…LOOP. (qbasic)
K=1
S=0
DO
A=(SQR(K)+1)/(K^2+1)
S=S+A
PRINT “K=”;K,”A=”;A,”S=”;S
K=K+1
LOOP WHILE K<=20
END
Пример 2
Используя алгоритм вычитания чисел, найдите НОД двух чисел.
10 REM НОД двух чисел
20 INPUT A, B
30 X=A
40 Y=B
50 IF X=Y THEN 110
60 IF X>Y THEN 90
70 Y=Y-X
80 GOTO 50
90 X=X-Y
100 GOTO 50
110 PRINT “A=”;A, “B=”;B
115 PRINT “НОД=”;X
120 END
Второй вариант этой программы. Применяя структурное программирование на
Quick Basic, освободимся от оператора GOTO.
а)
‘НОД двух чисел А и В
INPUT A, B
X=A: Y=B
DO
IF X=Y THEN
PRINT “A=”;A, “B=”; B, “НОД=”; X
END
ELSE
IF X>Y THEN
X=X-Y
ELSE
Y=Y-X
END IF
END IF
LOOP
б) При решение этой задачи можно так же
воспользоваться циклом ПОКА.
INPUT A, B
X=A : Y=B
DO
IF X>Y THEN
X=X-Y
ELSE
Y=Y-X
END IF
LOOP UNTIL X=Y
PRINT A, B, “НОД=”;X
END
Пример 3
Воспользуемся циклом ПОКА упорядочить три числа a, b, c в порядке
возрастания.
INPUT”Введите три числа”; a, b, c
DO
SWAP a, b
IF b>=c THEN
SWAP b, c
END IF
LOOP WHILE a>=b
PRINT a, b, c
Пример 4
Вычислите значение числа с точностью до 0,000001,
используя разложение функции экспоненты в ряд.
‘Вычисление e
INPUT”Введите точность вычисления”;E
S=0: P=1: K=0
DO
S=S+P
K=K+1
P=P/K
LOOP WHILE P>E
PRINT “e=”; S
END
Пример 5
Составьте программу, которая выводит на экран бегущую строку. Фраза
строки вводится с клавиатуры. Окно для строки разместить в центре экрана и
длина фразы 50 символов. Нажатие любой клавиши останавливает “бег”.
Stroka$=””
FOR i=1 TO 50
Stroka$=Stroka$+”*”
NEXT i
CLS
PRINT”Введите строку символов”
INPUT a$: Stroka$=Strika$+a$
CLS: COLOR 0,3, 4: flag$=””
WHILE flag$=””
LOCATE 12, 15
PRINT MID$(Stroka$, 1,50)
Stroka$=MID$(Stroka$, 2) + MID$(Stroka$, 1, 1)
FOR i=1 TO 10^5: NEXT i
flag$=INKEY$
WEND
END
Пример 6
Этот пример демонстрирует
досрочный выход из цикла ДО.
I%=0
DO WHILE I%<1000
IF I%=500 THEN EXIT DO
LOOP
PRINT”Выполнено 500
циклов”:”I=”;I%
Пример 7
Пузырьковая сортировка
одномерного числового массива.
INPUT”Введите размер массива”;N
DIM A(N)
FOR I=1 TO N
INPUT A(I)
NEXT I
DO
X=0
FOR I=1 TO N-1
IF A(I)>A(I+1) THEN
SWAP A(I), A(I+1)
X=I
END IF
NEXT I
LOOP UNTIL X=0
PRINT
FOR I=1 TO N
PRINT A(I);
NEXT I
Домашняя работа.
Задача игра. Компьютер загадал число от 1 до 100. Пользователь вводит с
клавиатуры некоторое число и получает один из ответов: “Моё число
больше”, “Моё число меньше”, “Вы угадали”. Игра повторяется до тех пор
пока число угадано
Download