Команда ветвления
Download
Report
Transcript Команда ветвления
Команда повторения и ее
описание на
алгоритмическом языке и
языке программирования
Паскаль.
Циклы используются при решении таких
задач, где необходимо повторить
некоторую последовательность команд
больше одного раза.
Циклы бывают:
с известным и
неизвестным количеством
повторений
Например:
Посадить 5 кустов (одни и те же действия будем
выполнять 5 раз)
Посадить все саженцы из ящика (одни и те же
действия придется повторять, пока ящик с
саженцами не останется пустым)
Почистить 10 картошин
Начистить кастрюлю картошки
Учительница в первом классе дает детям
задачи: “Дети, напишите, пожалуйста, десять
букв “А” и строчку букв“Б”.
Чем отличаются эти две задачи? В первом
случае сразу же известно, сколько раз
необходимо повторять выполнения команды
“напишите букву А”, а в второй – количество
букв “Б” будет зависеть от разных факторов:
почерка ребенка, размера букв, расстояние
между буквами и т.п.. Ясно, что в первом
случае мы можем четко Обусловить
количество повторов, а второму – необходимо
найти такое условие, проверяя что, ребенок
сможет закончить свою работу.
Найдите это условие, придумайте свои
подобные варианты циклов.
В зависимости от места проверки условия
окончания (продолжения) циклических
действий определяются два вида цикла:
Цикл с предусловием
услови
е
Цикл с постусловием
ложь
Серия команд
истина
Серия команд
Возможность ни разу не
выполнить последовательность
повторяющихся действий
истина
ложь
условие
Выполнить последовательность
повторяющихся действий не
менее одного раза
В алгоритмическом языке для
описания циклических процессов
используют две команды повторения:
пока (с неизвестным числом
повторений)
для (заранее известно число
повторений).
Общий вид команды
повторения с предусловием на
алгоритмическом языке
пока условие
нц
команды
кц
Правила выполнения команды.
1. Проверяем записанное после
служебного слова пока условие.
2. Если условие не соблюдается ,
то выполнение цикла завершается
и начинается выполнение
команды, записанные после кц.
3. Если условие выполняется, то
выполняется серия команд,
записанная между словами нц и
кц и и снова возвращаемся в
п.1.
Пример
пока нарушитель не раскаялся
нц
провести воспитательную работу
кц
Нарушител
ь не
раскаялся
истина
ложь
Провести воспитательную
работу
Сколько раз может выполняться
данный цикл?
1 вариант: Ни разу, в случае, если нарушитель раскаялся до
выполнения данной команды;
2 вариант: Конечное число раз.
3 вариант: бесконечное число раз (зацикливание)
Пример 2.
Составить алгоритм заполнения 10-литрового
ведра водой с помощью литровой банки
пока ведро не полно
нц
долить в ведро литр
кц
Сколько раз будет выполняться команда, если в
10-литровом ведре было налито 1л ?6л ?3.5л?
Можно ли придумать такие условия (такую
ёмкость ведра и количество налитой воды),
чтобы после выполнения этой команды ведро
было полным?
Нет. После выполнения команды повторения
ведро будет полным.
Попробуйте составить
алгоритмы решения следующих
задач.
Составить алгоритм окраски забора (по
одной доске). Каждую доску забора красить
в разный цвет через одну: красной и синей
краской.
В грузовике привезли стулья для актового
зала. Стулья носить по одному.
В ящике есть конфеты в красной обертке и
синей. Разобрать: в синей - брату , в
красной – оставить себе.
Пример 3. Вычислить сумму первых n
натуральных чисел. S=1+2+3+4+…+n
Для понимания сути задачи вычислим сумму
«вручную» при n=5:
S0:=0
На каждом шаге вычисления
суммы, начиная со второго, мы к
S1:=S0+1=1
предыдущему значению суммы
S2:=S1+2=3
прибавляли очередное слагаемое:
Si:=Si-1+I, I=1,2,3,4,5
S3:=S2+3=6
S4:=S3+4=10
S5:=S4+5=15
При анализе условия задачи выясняем, что для её решения необходимо
организовать цикл.
Для успешной организации любого цикла нужно
выделить 4 основных этапа выполнения цикла.
1.
2.
3.
4.
Начальная организация цикла.
(Всем величинам,
изменяющимся в цикле,
присваиваются начальные
значения)
начало
n
S:=0
i:=1
Проверка условия
существования цикла
Тело цикла (основная часть,
последовательность действий,
многократное повторение
которых приводит к
достижению поставленной
цели).
Организация повторения тела
цикла (получение новых
значений величин,
используемых в теле цикла и в
условии цикла)
-
i<=n
+
S:=S+i
i:=i+1
Вывод S
конец
Составим алгоритм.
алг Сумма (нат n, цел S)
арг N
рез S
нач нат i
S:=0; i:=1
пока I ≤ n
нц
S:=S+i;
i:=i+1
кц
кон
Начальная организация цикла
Проверка условия существования цикла
Тело цикла
Организация повторения тела цикла
На языке программирования Паскаль команда
повторения с предусловием записывается в
виде:
While условие do
begin
команды
end;
Например, в программе вычисления
суммы первых n натуральных чисел
(см. пример 3)
While i<=n do
begin
s:=s+i;
i:=i+1;
end;
Решаем задачи:
Пример 4. Составить алгоритм вычисления и вывода на печать
значений функции y=cos x, для значений х, изменяющихся от
х нач до хкон с шагом hx.
X нач, x кон, hx
x:=x нач
-
х<=х
кон
+
Y:=cos(x)
x,y
x:=x+hx
алг функция (вещ x нач, x кон, hx, y)
арг x нач, x кон, hx
рез y
нач вещ x
x:=x нач
пока х<=х кон
нц
Y:=cos(x)
x:=x+hx
кц
кон
Программа на Паскале:
Program Func;
Var xn,xk,hx,x,y:real;
Begin
Writeln (‘Введите значения xn,xk,hx’);
Readln(xn,xk,hx);
X:=xn;
При каждом выполнении цикла сначала проверяется
While x<=xk do
условие x<=3.14
begin
Вычисляется значение функции у
Y:=cos(x);
Печатается аргумент х и значение функции
writeln(‘x=‘,x:5:2,’ y=‘,y:5:2);
у, используя формат выведения
действительного числа: выделено 5
x:=x+hx;
позиций, из них 2 на дробную часть
End;
Для следующего шага цикла вычисляется новое
End.
значение аргумента, х увеличивается на шаг hx
Команда повторения с постусловием описана на языке
программирования Паскаль циклом Repeat – until и
предназначена для организации многократного
выполнения группы команд (тела цикла) до тех пор, пока
условие цикла не станет истинной.
Repeat
команды
Until условие;
Например, в программе вычисления
суммы первых n натуральных чисел (см.
пример 3)
repeat
s:=s+i;
i:=i+1
until I>n;
Примечания:
1. Тело цикла не нужно брать в скобки (begin –end), т.к. служебные слова Repeat –
until играют роль скобок.
2. Тело цикла в этой команде выполняется как минимум один раз.
3. Условие команды является условием выхода из цикла.
Пример использования команды
повторения с постусловием
Вычислить сумму S=1+1/3+1/5+… Суммирование
продолжать до тех пор, пока очередной член суммы
не станет меньше заданного числа Е.
При анализе условия задачи выясняем, что E,S действительные числа. Процесс накопления суммы
можно написать: S:=S+a, где а – очередное
слагаемое a=1/i, I=1,3,5,…
Таким образом, повторяемое тело цикла: S:=S+a;
a:=1/i,
i:=i+2 – организация повторения тела цикла.
В данном случае неизвестно, сколько раз
необходимо повторить тело цикла, т.е. При каком i
значение а станет меньше Е.
Такие циклы называют
итерационными. В них число
повторений зависит от некоторого
наперед неизвестного промежуточного
результата.
Сравни 2
возможных
варианта
использования
команд
повторения.
E
a:=1
S:=0: i:=1
S:=s+a
i:=i+2
A:=1/i
+
a<E
-
Program Sum;
Var S,a,e:real;
i: integer;
Begin
Writeln (‘Введите значение Е’);
Readln(E);
a:=0; S:=0; i:=1;
repeat
s:=s+a;
i:=i+2; a:=1/i
until a<E;
writeln(‘S=‘, S:5:3);
End.
While a> =E do
begin
s:=s+a;
i:=i+2; a:=1/I;
End;
S
Задачи для самостоятельного
решения.
Вычислить:
P=sin(1)+sin(1.2)+sin(1.4)+…sin(2).
Составить алгоритм решения задачи:
определить площади 30 равносторонних
треугольников. Сторона первого 63 см, а
каждого следующего уменьшается на 2 см.
Команда повторения с
параметром.
Параметр
цикла
В случае, если число повторяющихся действий в задаче известно,
можно воспользоваться командой повторения с параметром.
для х от хн до хк шаг h
нц
Тело цикла
Хн – начальное значение х,
хк – конечное значение х,
кц
h – шаг изменения х
При h=1 конструкцию шаг h разрешается не писать.
Исполнение команды происходит следующим
образом:
Переменная х принимает последовательно все
значения от хн до хк с шагом h.
Блок-схема
можетиз
быть
представлена
в двух видах:тело цикла.
Для каждого
значений
х выполняется
В соответствии циклу пока
Х:=хн
Х=хн, хк, h
Х<=xк
истина
Тело цикла
Тело цикла
Х:=х+h
х:=хн
пока х ≤ хк
нц
тело цикла
х:=х+h
кц
ложь
Рассмотрим примеры
использования команды повторения
для.
В примере 4 в алгоритме
вычисления и вывода на
печать значений функции
y=cos x, для значений х,
изменяющихся от хнач до хкон с
шагом hx команда повторения
будет выглядеть так:
для х от хнач до хкон шаг
hх
нц
Y:=cos(x)
кц
В алгоритме 3 в вычислении
суммы первых n натуральных
чисел S=1+2+3+4+…+n
для i от 1 до n
нц
s:=s+i;
кц
Шаг изменения параметра i
равен 1, поэтому указание шага
в команде повторения
отсутствует.
Задача. Вычислить a .
n
Чтобы получить целую степень n числа
а, нужно умножить его n раз само на
себя.
Произведение обозначим буквой p. N раз
будет повторяться команда p:=p*a.
Начальное значение p=1 (число не
влияющее на умножение).
В алгоритме будет присутствовать параметр i,
контролирующий количество повторений.
алг Степень(вещ a, p,
цел n)
арг a,n
рез p
нач нат i
p:=1
для i от 1 до n
нц
p:=p*a;
кц
кон
A,n
p:=1
i=1,n
-
p:=p*i
p
В Паскале есть два оператора
организации циклов с известным числом
повторений – прямой и обратный.
Прямой перебор
Выполнение команды For:
Параметр, счетчик,
индекс
Начальное значение
параметра
For I := n1 to n2 do
begin
Операторы;
End;
Конечное
значение
параметра
1. Параметру цикла i присваивается
начальное значение n1.
2. Он сравнивается с конечным
значением n2. Если I<n2, то
выполняется тело цикла. Значение i
автоматически увеличивается на 1
(т.е. становится следующим
элементом) и снова сравнивается с
значением n2.
3. Если I>n2, то выполнение команды
повторение завершается.
Составим программу
n.
вычисления
степени
a
Program Stepen;
Var p,a:real;
Параметр цикла должен быть описан в разделе
I ,n: integer;
переменных.
Begin
Writeln (‘Введите значение основания степени a=’);
Readln(a);
Writeln (‘Введите целое значение показателя степени n=’);
Readln(n);
p:=1;
Если в теле команды повторения
for I:=1 to n p:=p*a;
необходимо выполнить только одну
writeln(‘p=‘, p:5:3);
команду, то указатели begin… end
End.
отсутствуют.
Обратный перебор
For I := n2 downto n1
do
begin
Операторы;
End;
Например, в команде вычисления суммы
натуральных чисел от 1 до 10
S:=0;
For I := 10 downto 1 do s:=s+I;
Выполнение команды обратного
хода:
1. Параметру цикла i присваивается
начальное значение n2.
2. Он сравнивается с конечным
значением n1. Если i >=n1, то
выполняется тело цикла.
Значение i автоматически
уменьшается на 1 (т.е.
становится предыдущим
элементом) и снова сравнивается
с значением n1.
3. Если I<n1, то выполнение
команды повторение
завершается.
Задачи для самостоятельного
решения:
Составить алгоритм, блок-схему и программу
вычисления:
А) a(a+1)(a+2)…(a+n-1)
b) (1+sin 0.1)(1+sin 0.2)..(1+sin 10)
С) Произведение всех чисел,от 1 до 100 кратных 3, но
не кратных 6.
Вычислить значение выражения
3
3
3
3 ..
3
3
10(20) подкоренных выражений.
Определить для функции z=x/n значение n, при
котором z<=A.
Z=Cos(x)+cos(2x)/2+cos(3x)/3 +… не меньших Е.