Команда ветвления

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 +… не меньших Е.