ЦИКЛ

advertisement
БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ
КОНСТРУКЦИИ
ПОВТОРЕНИЕ
ЦИКЛЫ
Повторение – это составная
команда алгоритма, в которой в
зависимости от соблюдения
условия может повторяться
команда или серия команд.
Цикл – это команды алгоритма, которые
позволяют несколько раз повторить одну и
ту же группу команд.
Цикл с предусловием (цикл «пока»)
While ? do
(Тело цикла);
?
Тело цикла
В цикле с предусловием (цикл «пока»)
команда или серия команд повторяется,
если условие соблюдается.
Цикл с постусловием (цикл «до»)
Тело цикла
нет
Repeat
Тело цикла;
Until ? ;
?
да
В цикле с постусловием (цикл «до») – команда
или серия команд повторяется, если условие не
соблюдается.
Это неопределенные циклы, так как количество
выполнений тела цикла зависит от условия.
Для того, чтобы при переводе записи алгоритма с
языка блок-схем на язык программирования
исключить внесение изменений в конструкцию
команды, следует использовать приведенные выше
алгоритмические конструкции,
так как на языке программирования команды
повторения реализуются именно таким образом.
Задача: Найти сумму вводимых с клавиатуры
положительных чисел.
Конец вводимой последовательности – ввод 0.
Дано:
Последовательность любых чисел.
0 – конец последовательности.
Получить: Сумму чисел больших нуля.
Связи:
а – переменная-ячейка для
последовательного ввода чисел.
Тип переменной а – вещественное число.
S – переменная-ячейка для накопления суммы.
Программа:
S=0
Ввод A
A≠0
Да
Да
A>0
S=S+A
Ввод A
Вывод
S
Анализ
результатов:
нет
Program Symma1;
Var a, s: real;
Begin
S:=0;
Write(‘ Введите число: ’);
Readln(a);
While a<>0 do
Begin
If a>0 then S:=S+a;
Write(‘Введите число: ’);
Readln(a);
End;
Writeln(‘Sum = ’ , S:7:1);
End.
Ввести числа: 1, 3, 2, -2, 0.
Предполагаемый результат: Sum = 6.0
S=0
Ввод
A
да
A>0
S=S+A
нет
А=0
да
Вывод
S
нет
Программа:
Program Symma2;
Var a, s: real;
Begin
S:=0;
Repeat
Write( ‘Введите число: ’);
Readln(a);
If a>0 then S:=S+a;
Until a = 0;
Writeln( ‘Summa = ’ , S:7:1);
End.
Анализ результатов:
Ввести числа: 1, 3, 2, -2, 0.
Предполагаемый результат: Sum = 6.0
S=0
S=0
Ввод A
Ввод
A
A≠0
да
Да
Да
A>0
A>0
нет
S=S+A
S=S+A
Ввод A
нет
А=0
да
Вывод
S
Вывод
S
нет
начало
Открыть дневник
Прочитать 1-ю
запись в дневнике
Выучить уроки.
нет
Есть задание?
Да
Выучить урок
Прочитать следующую
запись в дневнике
Конец
Задача: Найти сумму вводимых с клавиатуры чисел.
Конец вводимой последовательности – ввод 0.
Дано:
Последовательность любых чисел.
0 – конец последовательности.
Получить:
Сумму чисел вводимой последовательности.
Связи:
а – переменная-ячейка для
последовательного ввода чисел.
Тип переменной а – вещественное число.
S – переменная-ячейка для накопления суммы.
 Написать алгоритм.
 Написать программу.
 Выполнить программу.
 Произвести анализ полученного результата.
 Показать учителю.
1. Какие алгоритмические структуры присутствуют в вашем алгоритме?
Программа:
S=0
Ввод A
A≠0
Да
S=S+A
Ввод A
Вывод
S
Анализ
результатов:
Нет
Program Symma1;
Var a, s: real;
Begin
S:=0;
Write(‘ Введите число: ’);
Readln(a);
While a<>0 do
Begin
S:=S+a;
Write(‘Введите число: ’);
Readln(a);
End;
Writeln(‘Sum = ’ , S:7:1);
End.
Ввести числа: 1, 3, 2, -2, 0.
Предполагаемый результат?
Написать алгоритм и программу с
использованием алгоритмической структуры
ЦИКЛ-ДО.
Задача.
Протабулировать функцию Y = X2 на интервале от
-1 до 1 с шагом 0.2.
Результат представить в виде:
X
Y
-1.00
1.00
-0.80
0.64
…
…
1.00
1.00
Программа:
Program Tabl1;
Var x, y: real;
Begin
x:= -1;
Writeln(‘X’:5, ‘Y’:13);
While x<= 1 do
Begin
y:= x*x;
Writeln(x:8:2, y:10:2);
x:= x + 0.2;
End;
Writeln;
End.
ЗАДАНИЕ:
1. Для данной программы написать
алгоритм в виде блок-схемы.
2. Протабулировать функцию
Y = sin(X), для Х от 0 до 6.28 с
шагом 0.3
3. Протабулировать функцию
Y
= 3(X – 2)2 - 4 на интервале от -4 до
8 с шагом 0.5.
Дом. работа
Написать алгоритм на бытовую тему с
использованием алгоритмической
структуры – неопределенные циклы
начало
Открыть дневник
Прочитать 1-ю
запись в дневнике
Выучить уроки.
нет
Есть задание?
Да
Выучить урок
Прочитать следующую
запись в дневнике
Конец
Download