Циклические алгоритмы и программы

Download Report

Transcript Циклические алгоритмы и программы

Циклические алгоритмы и
программы
Цикл - организация повторения действий, пока
верно некоторое условие.
Тело цикла - набор повторяемых действий.
Существуют различные способы организации
повторения действий (типы циклов).
Их называют:
1. Цикл с предусловием ( Цикл “ПОКА”) “Пока
условие верно – повторяй”
Блок-схема:
Бейсик:
н
д
Словесная запись:
Пока Q повторяй:
Р
На языке
WHILE Q
ТЕЛО ЦИКЛА
WEND
Конец цикла
где Q- условие.
Цикла “Пока” достаточно, чтобы организовать повтор действий в
любой программе
2. Цикл с постусловием ( Цикл “ДО”)
Выполняется некоторая последовательность действий,
затем, если условие верно - действия повторяются снова.
д
н
Пример1. Выполнить табулирование функции Y=2X+1, X
изменяется на отрезке [-5, 5] шагом 2
Протабулировать функцию - напечатать таблицу значений
аргумента и соответствующего значения функции на
заданном интервале.
Цикл “ДО”
Программа:
Алгоритм:
CLS
x=-5
x=-5
20 y= 2*X+1
y=2x+1
Тело
цикла
Вывод x,y
X=X+2
x=x+2
x5
н
PRINT X,Y
Условие д
IF X<=5 THEN 20
END
2. Цикл “ПОКА”
Программа:
Алгоритм:
x=-5
Х5 д
Условие н
Y=2x+1
Вывод x,y
x=x+2
Тело
цикла
X=-5
WHILE X<=5
Y=2*X+1
PRINT X,Y
X=X+2
WEND
END
3.Цикл “ДЛЯ”
(схема алгоритма как в цикле “ДО”)
Тело
цикла
CLS
FOR X=-5 TO 5 STEP 2
Y=2*X+1
PRINT X,Y
NEXT X
начало
x=-5
y=2x+1
Вывод x,y
x=x+2
x5
н
конец
д
3.Цикл с параметром (Цикл “ДЛЯ”)
Работает так же, как цикл “ДО”: тело цикла всегда
выполняется хотя бы раз.
Используется тогда, когда известно, что повторение действий
зависит от значений некоторой величины ( параметра),
которая изменяется от некоторого начального значения , до
конечного значения с заданным шагом.
Для записи цикла “ДЛЯ” используются операторы:
где FOR(для)
ТО(до)
STEP(шаг)
NEXT(следующий)
х – параметр цикла
a – начальное значение параметра
b - конечное значение параметра
h - шаг изменения параметра
(по умолчанию шаг равен 1)
FOR x=a TO b STEP h
ТЕЛО ЦИКЛА
NEXT x
Команда NEXT x соответствует действию x=x+h
Что напечатает программа?
Ответ:
0
1) FOR X=0 TO 10 STEP 2
PRINT X
2
NEXT X
4
2) FOR I=10 TO 1 STEP -1
PRINT I;
6
Ответ: 10 9 8 7 6 5 4 3 2 1
NEXT
3) FOR I=1 TO 100 : NEXT
4) X=2
10
Ответ: пустой цикл
Y=3
FOR K=X+Y TO X*Y
PRINT K
NEXT K
8
ОТВЕТ:
5
6
5) Сколько чисел напечатает программа?
X=0
20 X=X+1
Что нужно изменить, чтобы напечатать 8 чисел?
Ответ:IF X<=8 GOTO 20
Чтобы печатать только четные числа?
PRINT X
IF X<=20 GOTO 20
STOP
Ответ:20
Ответ: 20 X=X+2
Кратные трем?
Ответ: 20 X=X+3
Числа от 11 до 20?
Ответ x=10:
6) Чему будет равно значение переменной S после выполнения
программы:
Алг Пример;
Целые S, i;
Начало
ввод N; S :=0; i:=1;
Пока I>10 повторять нц S:=S+2; i:=i+1 кц; вывод S;
Конец
A. S = 0; B. B. S = 20; C. S = 18; D. 22; E. программа «зациклится».
№1. В переменную Х последовательно вводится N действительных чисел.
Определить:
3) Связь:
1) Их сумму
2) Произведение чисел ≠ 0
I – параметр цикла (счетчик чисел) I
изменяется от [1;N] шагом 1
3) Количество отрицательных чисел 1) Сумма
4) Min число
I. Математическая модель
1) Существ. факторы:Х [-100;100]
2) Формализация
Дано:
S=0 – начальное значение
– формула суммы
S=S+X
2) Произведение
P=1 – начальное значение
Если Х≠0, то
N – кол-во чисел
Р=Р*Х – формула
произведения
Х – действительное число
3) Кол-во отрицательных чисел
Результат:
К=0 – начальное значение
1) S – сумма чисел
Если Х <0, то
2) P – произведение чисел ≠0
4) Мin число
3) К – кол-во отрицательных чисел
Пусть М=100
4) М – min число
Если Х< M, то М=Х
К=К+1
– формула кол-ва
II. Алгоритм
III. Программа: CLS
S=0; P=1; K=0; M=100
1) Цикл
S=0: P=1: K=0: M=100
Ввод N
«ДО»
i=1
INPUT”N”;N
н
Ввод Х
I=1
S=S+X
40 INPUT”Введи число»; Х
X≠0
д
P=P*X
н
н
X<0
X<M
д
S=S+X
Тело
цикла
IF X<>0 THEN P=P*Х
IF X <0 THEN K=K+1
K=K+1
IF X<M THEN M=X
д
I=I+1
M=X
I=I+1
д
IN
н
Вывод S,P,K,M
Условие - IF I<=N THEN 40
PRINT ”S=“; S
PRINT “P=“ ;P
PRINT “K=“; K
PRINT “MIN=“; M
IV. Тесты:
N
5
X
S
-2, -2
0, 1,
3, -4
P
K
M
24
2
-4
2) Цикл «Для»
Тело
цикла
3) Цикл «ПОКА»
CLS:S=0: P=1: K=0: M=100
CLS
INPUT”N”;N
S=0: P=1: K=0: M=100
I=1
INPUT”N”;N
WHILE I<=N
FOR I=1 TO N
INPUT”Введи число»; Х
INPUT”Введи число»; Х
S=S+X
S=S+X
IF X<>0 THEN P=P*X
Тело
цикла
IF X<>0 THEN P=P*X
IF X <0 THEN K=K+1
IF X <0 THEN K=K+1
IF X<M THEN M=X
IF X<M THEN M=X
I=I+1
NEXT I
WEND
PRINT ”S=“; S
PRINT ”S=“; S
PRINT “P=“ ;P
PRINT “P=“ ;P
PRINT “K=“; K
PRINT “K=“; K
PRINT “MIN=“; M
PRINT “MIN=“; M
Цикл «Пока»
S=0; P=1; K=0; M=100
Ввод N
i=1
IN
д
Воод Х
н
S=S+X
н
X≠0
д
P=P*X
н
X<0
д
K=K+1
д
н
X<M
д
M=X
I=I+1
Вывод S,P,K,M
СЛОЖНЫЕ (ВЛОЖЕННЫЕ) ЦИКЛЫ
Сложным называется цикл, содержащий в себе несколько
вложенных один в другой простых циклов. Различают
внешний и внутренний циклы.
Глубиной вложения называется количество вложенных
циклов. Мах число вложений в зависимости от системы
программирования от 8 до до 20 циклов.
Сложные циклы обеспечивают большое число повторений
при компактной записи действий.
СТРУКТУРА СЛОЖНОГО ЦИКЛА
1
2
10 FOR V1=….
20 FOR V2=…
30 FOR V3=…
…………….
50 NEXT V3
160 NEXT V2
170 NEXT V1
1- внешний цикл
2- внутренние циклы
Правила организации сложных циклов:
1.При каждом повторении параметра
внешнего цикла внутренний выполняется
полностью.
2.Внутренний цикл должен полностью
входить в тело внешнего цикла.
Пересечение циклов недопустимо!
3.Имена параметров вложенных циклов
должны быть различны
Схема правильной
организации циклов
FOR A=…
FOR B=…
………………
NEXT B
FOR C=…
FOR D=…
………………..
NEXT D
NEXT C
FOR B=…
…………..
NEXT B
NEXT A
Схема недопустимой
организации циклов
FOR A=….
FOR B=…
…………….
NEXT A
NEXT B
FOR X=…
FOR X=…
……………..
NEXT X
NEXT X
В первой группе циклы пересекаются.
Во второй группе внешний и
внутренний циклы имеют один и тот
же параметр Х
Пример: Таблица умножения
FOR I=1 TO 9
FOR J=1 TO 10
PRINT I; ”*”; J; “=”; I*J
NEXT J
PRINT
NEXT I
Задание. Измените программу так чтобы на экран
была выведена таблица Пифагора
FOR I=1 TO 9
FOR J=1 TO 10
PRINT I*J;
NEXT J
PRINT
NEXT I
Работа с файлами данных
Оператор открытия файлов OPEN - установка связи между
файлом в программе и файлом на внешнем устройстве
(ВЗУ).
OPEN имя FOR INPUT AS FILE программное имя –
открыть для последовательного ввода данных из файла
OPEN имя FOR OUTPUT AS FILE программное имя
OPEN (открыть), FOR INPUT (для ввода), FOR OUTPUT (для
вывода), AS FILE (как файл)
Имя – имя файла, под которым он хранится на ВЗУ
программное имя – имя файла в программе (#1,#2,#3,…)
CLOSE [программное имя, программное имя], … - оператор закрытия
файлов
Задача №1.
Нарисовать
Дано:
M – кол-во
окружностей
X,Y- начальная
точка
R – радиус
R
X,Y ●
…
Программа:
M
SCREEN 12
INPUT”M”;M
INPUT”X,Y,R”; X,Y,R
Результат:
FOR J=1 TO M
рисунок
«Окружности»
CIRCLE(X,Y),R
X=X+2*R
NEXT J
Запдача №2. Программа:
Нарисовать
…
…
R
●
X,Y
X,Y
N
………………………
…
SCREEN 12
INPUT”M,N”;M,N
INPUT”X,Y,R”; X,Y,R
X0=X
FOR I=1 TO N
FOR J=1 TO M
CIRCLE(X,Y),R
M
X=X+2*R
NEXT J
X=X0: Y=Y+2*R
NEXT I
SCREEN 12
Запдача №3.
Нарисовать
R
INPUT”M,N”;M,N
…
X,Y
INPUT”X,Y,R”; X,Y,R
X0=X
…
N
FOR I=1 TO N
FOR J=1 TO M
CIRCLE(X,Y),R
………………………
…
LINE(X,Y)-(X,Y+2*R
X=X+2*R
NEXT J
X=X0: Y=Y+3*R
M
NEXT I
INPUT программное имя , A1,A2,A3,…
Считывает данные из файла на ВЗУ в
переменные A1,A2,A3,…
PRINT программное имя , V1,V2,V3… Формирует файл на ВЗУ из совокупности данных,
полученных в программе
1)
OPEN “INPUT1.TXT” FOR INPUT AS #1
FOR I=1 TO 5
INPUT#1, X
S=S+X
NEXT I
OPEN “OUTPUT1.TXT” FOR OUTPUT AS #2
PRINT#2, S
CLOSE #1,#2
2)Файл прямого доступа объявляется как массив DIM
#1, имя массива
OPEN “INPUT1.TXT” FOR INPUT AS #1
DIM#1, X(5)
FOR I=1 TO 5
INPUT#1, X(I)
S=S+X(I)
NEXT I
OPEN “OUTPUT1.TXT” FOR OUTPUT AS #2
PRINT#2, S
CLOSE #1,#2
Моделирование случайного процесса
Задача1. Звездное небо
I. Математическая модель
1). Существ. фактор: Звезда точка, координаты точки (х,у)
–случайные числа в заданном
диапазоне, х €[A,B], Y €[C,D]
Дано:
N –кол-во звезд
Х,У – координаты точки
А,В – интервал значений Х
С,D – интервал значений У
Результат:
Рисунок «Звездное небо»
1). Небо – весь Экран
2). Верх экрана
3). Низ экрана
4). Верхний левый угол
5). Центр экрана
Связь:
I – счетчик звезд, параметр цикла, I €[1;N]
X =RND*(B-A)+A
Y=RND*(D-C)+C
PSET(X,Y) - точка
Тело
цикла
Программа
SCREEN 12
RANDOMIZE TIMER
INPUT”N”;N
Начало
Ввод N
Ввод А,В
Ввод C,D
I=1
INPUT “A,B”; A,B
X= RND*(B-A)+A
INPUT “C,D”;C,.D
Y=RND*(D-C)+C
FOR I=1 TO N
Поставить Точку
X= RND*(B-A)+A
I=I+1
Y=RND*(D-C)+C
I≤N
PSET(X,Y)
NEXT I
Конец
Задача2. Изменить программу так, чтобы на всю область экрана
выводились N случайных окружностей случайного радиуса и цвета
X =RND*(B-A)+A
Y=RND*(D-C)+C
R=RND*25
C=RND*15
CIRCLE(X,Y),R,C
Задача3. Изменить программу так, чтобы на всю область
экрана выводились N случайных линий случайного цвета из
центра экрана
X =RND*(B-A)+A
Y=RND*(D-C)+C
X1 =RND*(B-A)+A
Y1=RND*(D-C)+C
C=RND*15
LINE(X,Y)-(X1,Y1),C
Рекурентные соотношения
№1. Вычислить S  1  1  1  1  1  1  1  ...  1
2 3 4 5 6 7
N
Дано: N –кол-во слагаемых Нахождение суммы большого числа
Найти: S – сумму
слагаемых
Программа:
CLS
INPUT ”N”; N
S=0
FOR I=1 TO N
S=S+ 1/ I
NEXT I
PRINT “S=“; S
слагаемых можно заменить на
несколько последовательных сложений
двух чисел, накапливая сумму в
переменной S
1
S n  S n 1 
N
Переменная задана
рекурентно, если
существует правило,
позволяющее находить ее
следующее значение через
предыдущее.
Само правило называют
рекурентным соотношением
№2. Вычислить
Программа:
1 1 1 1
1
S  1      ... 
2 4 6 8
N
CLS
INPUT ”N”; N
S=1
FOR I=2 TO N STEP 2
S=S+ 1/ I
NEXT I
PRINT “S=“; S
№3. Вычислить
F  N! 1 2  3  4  ...  ( N  1)  N
N! (N-факториал – произведение последовательных
натуральных чисел, начиная с 1
Программа:
CLS
INPUT ”N”; N
F=1
FOR I=1 TO N
F=F* I
NEXT I
PRINT “F=“; F
№4. Вычислить
Y  2  2  2  ... 2
Программа:
CLS
INPUT ”N”; N
Y=SQR(2)
FOR I=2 TO N
Y=SQR(2+Y)
NEXT I
PRINT “Y=“; Y
N слагаемых
№5. Вычислить
U  sin X  sin 2 X  sin 3X  ...  sin NX
Программа:
CLS
INPUT ”N”; N
INPUT ”x”; x
U=0
FOR I=1 TO N
U=U+SIN(I*X)
NEXT I
PRINT “U=“; U