1 БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ ПОВТОРЕНИЕ НЕОПРЕДЕЛЕННЫЕ ЦИКЛЫ
2 Повторение – это составная команда алгоритма, в которой в зависимости от соблюдения условия может повторяться команда или серия команд. Цикл – это команды алгоритма, которые позволяют несколько раз повторить одну и ту же группу команд.
3 Цикл с предусловием (цикл «пока») While do (Тело цикла); В цикле с предусловием (цикл «пока») команда или серия команд повторяется, если условие выполнения цикла соблюдается. нет да Тело цикла УЦ ПОКА условие цикла (УЦ) соблюдается – делай ПОКА условие цикла (УЦ) соблюдается – делай
4 Цикл с постусловием Цикл с постусловием (цикл «до») нет да Тело цикла УЦ Repeat Тело цикла; Until ; В цикле с постусловием (цикл «до») – команда или серия команд повторяются, если условие выхода из цикла не соблюдается.
5 Цикл с постусловием Аналогичен циклу с предусловием, но проверка условия выхода из цикла производится после выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз. Операторы тела цикла заключены между командой Repeat и служебным словом Until, что позволяет обходиться без операторных скобок (Begin – End) в случае нескольких операторов в теле цикла. Без конструкции «цикл с постусловием» можно было бы обойтись, используя «цикл с предусловием», но если она есть – значит ею надо пользоваться!
6 Это неопределенные циклы, так как количество выполнений тела цикла зависит от условия. Для того, чтобы при переводе записи алгоритма с языка блок-схем на язык программирования исключить внесение изменений в конструкцию команды, следует использовать приведенные выше алгоритмические конструкции, так как на языке программирования команды повторения реализуются именно таким образом. В УЦ обязательно должна быть переменная, от значения которой зависит будут выполняться команды тела цикла или нет. В теле цикла ОБЯЗАТЕЛЬНО значение этой переменной должно изменяться.
7 Дано: Последовательность любых чисел. 0 – конец последовательности. Получить: Сумму чисел больших нуля. Связи: а – переменная-ячейка для последовательного ввода чисел. Тип переменной а – вещественное число. S – переменная-ячейка для накопления суммы. Задача: Найти сумму вводимых с клавиатуры положительных чисел. Конец вводимой последовательности – ввод 0.
8 Вопросы: Какая задача решается? Какие числа будем вводить? Какие числа будем суммировать? Каким образом организовать накопление суммы? Как обходиться с отрицательными числами, которые вводим? Какую циклическую конструкцию удобнее использовать при составлении алгоритма? По какому условию должно происходить прерывание цикла? Может случиться ситуация, что ничего суммировать не надо?
9 Трассировочная таблица -это таблица, в которой прослеживается как изменяются значений всех переменных в ходе выполнения алгоритма (программы). С помощью трассировочной таблицы проверяется правильно ли составлены алгоритм или программа, даёт ли она ожидаемый результат.
S=0 Ввод A A 0 A > 0 Ввод A Вывод S S = S + A Да нет Программа: Program Symma1; Var a, s: real; Begin S:=0; Write( Введите число: ); Readln(a); While a0 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 Анализ результатов: a = Знак as Трассировочная таблица
S=0 Ввод A A > 0 Вывод S S = S + A А = 0 да нет Программа: 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 Анализ результатов: Трассировочная таблица = Знак aas = Знак aas
12 S=0 Ввод A A > 0 Вывод S S = S + A А = 0 да нет S=0 Ввод A A 0 A > 0 Ввод A Вывод S S = S + A Да нет
13 Выучить уроки. Да нет начало Открыть дневник Прочитать 1-ю запись в дневнике Есть задание? Конец Выучить урок Прочитать следующую запись в дневнике
14 Самостоятельная работа Написать алгоритм на бытовую тему с использованием алгоритмической структуры «неопределенные циклы»
15 Дано: Последовательность любых чисел. 0 – конец последовательности. Получить: Сумму чисел вводимой последовательности. Количество введенных чисел. Связи: а – переменная-ячейка для последовательного ввода чисел. Тип переменной а – вещественное число. S – переменная-ячейка для накопления суммы. K – переменная-ячейка для накопления количества. Задача: Найти сумму и количество вводимых с клавиатуры чисел. Конец вводимой последовательности – ввод 0.
16 Написать алгоритм. Для проверки алгоритма составить трассировочную таблицу. Написать программу. Выполнить программу. Произвести анализ полученного результата. Показать учителю. 1. Какие алгоритмические структуры присутствуют в вашем алгоритме?
S = 0 K = 0 Ввод A A 0 Ввод A Вывод S S = S + A Да Program Symma1; Var a, s: real; k: integer; Begin S:=0; k:=0; Write( Введите число: ); Readln(a); While a0 do Begin S:=S+a; k:=k + 1; Write( Введите число: ); Readln(a); End; Writeln( Sum =, S:7:1); Writeln( kol-vo =, k); End. Ввести числа: 1, 3, 2, -2, 0. Предполагаемый результат? Анализ результатов: Нет k = k + 1 Вывод k
18 1.Изменить алгоритм и программу используя алгоритмическую структуру ЦИКЛ-ДО. 2.Проверить правильность алгоритма с помощью трассировочной таблицы. Задание: Задача. Известны оценки абитуриента на четырех экзаменах. Определить сколько «пятерок» он получил.
19 Задача. Протабулировать функцию Y = X 2 на интервале от 1 до -1 с шагом Результат представить в виде: X Y …
20 Математическая модель Дано: Х= 1, 0.8, 0.6, …,-0.8, -1,т.е. Начальное Х = 1, конечное Х = -1, шаг = -0.2 Получить: таблицу значений Х, Y в виде: X Y … Связи: Y=Х 2, для каждого Х
Программа: 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. Для данной программы написать алгоритм в виде блок-схемы. Проверить программу с помощью трассировочной таблицы
22 ЗАДАЧИ: 1.Протабулировать функцию Y = sin(X), для Х от 0 до 6.28 с шагом Протабулировать функцию Y = 3(X – 2) на интервале от -4 до 8 с шагом 0.5.
23 3. Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры. Рекомендуемый вид экрана во время работы программы: Вычисление среднего арифметического последовательности положительных чисел. Вводите после стрелки числа. Для завершения ввода нажмите ноль. -> 45 ->23 -> 15 -> 0 Введено чисел: 3 Сумма чисел: 83 Среднее арифметическое: 27.67
24 4. Написать программу, которая определяет максимальное число из введенной с клавиатуры последовательности положительных чисел. Рекомендуемый вид экрана во время работы программы: Определение максимального числа последовательности положительных чисел. Вводите после стрелки числа. Для завершения ввода нажмите ноль. -> 23 ->45 -> 15 -> 0 Максимальное число: 45
25 5. Дана непустая последовательность натуральных чисел, за которой следует 0. Составить алгоритм поиска в данной последовательности порядкового номера наименьшего элемента.
26 ЗАДАЧА. Дан прямоугольник с размерами a Х b. От него отрезают квадраты максимального размера, пока это возможно. Затем от оставшегося прямоугольника вновь отрезают квадраты максимально возможного размера и т.д. На какие квадраты и в каком их количестве будет разрезан исходный прямоугольник? Дано: a, b – целые числа, Получить: квадраты мах размера. Сколько их и какого размера. Например, 27 Х 8 3 квадрата 8х8; 2 квадрата 3х3; 1 квадрат 2х2; 2 квадрата 1х
a,b A 0 или B 0 A > B A:= A – B Fp:= Fp + 1 Fp:= 0 B, Fp да нет B > A B:= B – A Fl:= Fl + 1 Fl:= 0 A, Fl да нет A > B да нет ABFpFl Трассировочная таблица
28 Ещё много интересных задач