Похожие презентации:
Управляющие операторы
1. Управляющие операторы
Лекция №32. Управляющие операторы
Команды, управляющие порядком исполненияпрограммы, называются управляющими
структурами.
Оператор условной передачи управления IF
Оператор выбора Case
Операторы циклов For, While, Repeat
3. Оператор условной передачи управления
Используется дляпрограммирования ветвлений,
т.е. ситуаций, когда возникает
необходимость выполнять
различные действия в
зависимости от выполнения
каких-либо условий.
Пример
IF x mod 2 =0
TNEN write (x,‘- четно’)
ELSE write(x,‘- нечет’);
IF (x mod 3) and (x>=0)
then y:= sqrt(x);
true
Оператор 1
Усл
false
Оператор 2
if <условие>
then <оператор1>
else <оператор2>;
Условие оператора записывается в виде
логического выражения (см. Лекция
2) и принимает значение
логического типа.
Если результат условия принимает
значение true, то выполняется
оператор ветви THEN, иначе –
оператор ветви ELSE.
4. Сокращенная форма условного оператора
если нет необходимостивыполнять какое-либо
действие при ложности
условия, то используется
сокращенная форма
условного оператора.
Пример
If N >=0 then N:=sqrt(N);
true
Действие
Усл
5. УСЛОВИЕ
Условие оператора записывается в виде логического выражения ипринимает значение логического типа ( True или False).
Логические выражения конструируются с помощью:
операций сравнения : =, <>, <, >, <=, >=
и логических операций:
not – НЕ (отрицание, инверсия)
and – И ( одновременное выполнение всех простых условий)
or – ИЛИ (выполнение хотя бы одного из условий)
xor – исключающее ИЛИ (выполнение строго одного условия)
Примеры
логических выражений:
a<0
//проверка на знак числа
a=b
//проверка на равенство чисел
a mod 2<>0
//проверка на нечетность
a mod 10=5
//проверка последней цифры в записи числа
Not(a=1)
//проверка на неравенство единице
(a>=10) and (a<=99) //проверка числа на двузначность
(100<=x)and (х<=999) //проверка числа на трехзначность
6. Задание
Составьте условие:a)
Проверки, что треугольник прямоугольный
b)
Проверки, что треугольник равнобедренный
c)
Проверки , что три числа не равны между собой
d)
Проверки, что число заканчивается на чётную цифру
7. Пример
Вычислить значение функции9 − a2
z=
x + sin( a )
Var a,x,z, znam: real;
Begin
Write (‘введите значения А и x:’);
Readln(a,x);
Znam:=x+sin(a);
If (abs(a)<3) and (znam<>0)
then begin
z:=sqrt(9-sqr(a))/znam;
Writeln(‘z=’, z:7:2)
end
else writeln (‘Функция не определена’);
End.
8. Операторные скобки
Синтаксис оператора IFдопускает применение на
каждой ветви не более
одного оператора.
Если алгоритм требует
выполнение нескольких
операторов на какой-либо
из веток, то необходимо
использовать составной
оператор (операторные
скобки) begin … end
If <логическое выражение>
then begin
оператор a1;
оператор a2;
…………..
оператор an
end
else begin
оператор b1;
оператор b2;
…………..
оператор bm
end;
Составным оператором называют последовательность
операторов, заключенную в операторные скобки Begin ….End,
и считающимся как бы одним оператором.
9. Вложенные операторы
Так как условный операторотносится к группе
структурных
операторов, то любая
из его ветвей может
содержать любую
алгоритмическую
структуру ( ветвление,
повтор, совокупность
операторов).
начало
a,b,c
D=b2– 4ac
D>0
x1 =
−b+ D
2a
D=0
–b/(2a)
x1 =
−b− D
2a
x1, x2
конец
Дейст.
корней
нет
10. Задание
Запишите условный оператор:a) Если число N – двузначное и заканчивается на цифру
1, то увеличить его в два раза, иначе увеличить на 1.
b) Если неверно, что число N кратно 7 , то увеличить
значение N на 2.
11. Оператор множественного выбора
Оператор выбора используетсядля реализации нескольких
альтернативных вариантов
действий, каждый из которых
соответствует своим
значениям выражения
порядкового типа.
case <выражение> of
a1: <оператор1>;
a2: <оператор2>;
…
an: <оператор n>;
[else <оператор>;]
end;
Выраж
поряд
типа
Действие 1
Действие 2
Действие 3
12.
Оператор множественноговыбора
case a mod 16 of
0..9: writeln (a mod 16);
10: writeln (‘A’);
11: writeln (‘B‘);
12: writeln (‘C‘);
13:writeln(‘D’);
14: writeln(‘E’);
15: writeln(‘F’);
end;
case i+3 of
1: a := b;
2: a := c;
end;
Выражение оператора, а
также значения, которые
оно может принимать
может быть только
порядкового типа
var c: char;
...
case c of
'а': writeln('Антилопа');
'б': writeln('Барсук');
else writeln('Не знаю');
end;
13. Управляющий блок программы
Program Pr2;VAR x,y:real;
kod:byte;
BEGIN
Writeln(ФУНКЦИИ: ');
Writeln(‘1. y=x^2');
Writeln('2. y=kx');
Writeln('3. y=1/x');
Writeln('4. y=x^3');
Readln(kod);
x:=Readlnreal(‘Введите х: ’)
CASE kod of
1: writeln(x*x);
2: begin readln(k);
writeln(k*x)
end;
3: if x<>0 then writeln(1/x) else writeln(‘не сущ’);
4: writeln(x*x*x);;
END;
END.
14. Операторы циклов
Для реализации повтора действий в программепредусмотрены операторы циклов:
◼ с заданным числом итераций (FOR)
◼ условные (с неизвестным числом
итераций) (While, Repeat).
15. Операторы циклов
Основные понятияЦиклом называется любая многократно исполняемая последовательность
действий.
Последовательность инструкций, предназначенная для многократного
исполнения, называется телом цикла.
Единичное выполнение тела цикла называется итерацией.
Выражение, определяющее, будет в очередной раз выполняться итерация
или цикл завершится, называется условием выхода или условием
окончания цикла.
Переменная, хранящая текущий номер итерации, называется параметром
цикла.
Исполнение любого цикла включает первоначальную инициализацию
переменных цикла, проверку условия выхода, исполнение тела цикла и
обновление переменной цикла на каждой итерации.
16. Счетный цикл
for i:=m1 to m2 do<оператор>;
{шаг цикла +1 }
i=n1,n2,h
for i:=m1 downto m2 do
<оператор>;
Тело цикла
{шаг цикла –1 }
for i:=m1 to m2 do
begin
<оператор 1>;
<оператор 2>;
…
<оператор n>;
end;
i, m1, m2 - только
порядкового типа
17. Задание
1) Вывести таблицуквадратов всех
двузначных чисел.
2) Вычислить значение
функции y=sin(x+5) на
интервале [a,b] шагом 1.
18. Задача. Вывести все делители натурального числа N.
Program delits;var n, i: integer;
begin
Writeln(‘вв. натуральное число’);
Readln(n);
For i:=1 to n do
If n mod i=0
then write(i:3);
end.
19. Задача. Вводится натуральное число N. Определить, является ли оно простым числом.
k:=0;For i:=1 to N do
If N mod i=0
then k:=k+1;
If k=2
then writeln (N, ‘-простое’)
else writeln (N,‘-не простое’);
Как можно
оптимизировать
алгоритм?
i:=1;
If N=1
then print(N,‘-не простое’)
Else begin
Repeat
i:=i+1;
Until (N mod i=0)OR(i=N);
if i=N
then writeln (N, ‘-простое’)
else writeln (N,‘-не простое’);
End;
20. Цикл с постусловием (цикл-до)
Repeat<Оператор 1>;
<Оператор 2>;
…
<Оператор n>
Until <усл.выхода>;
Оператор
false
Тело цикла повторяется до тех
пор, пока условие не
выполнится
.
Условие
true
21. Проверка на корректный ввод данных
Задача. Вводится неотрицательное число.Определить квадратный корень числа.
program _shislа;
var a: integer;
begin
Repeat
Writeln(‘вв. число’);
Readln(a);
Until a>=0;
Writeln(sqrt(a))
end.
Назовите результат работы
программы при вводе
следующих данных:
а) -1
б) 0
с) 3
22. Цикл с предусловием (цикл-пока)
Если в цикле требуетсявыполнить более одного
оператора, то используется
While <усл.входа> do
<оператор>;
составной оператор:
Цикл работает пока условие
истинно (усл=TRUE).
Усл.
true
Оператор
readln(a);
While a>=0 do
readln(a);
false
While <усл.> do
begin
<оператор1>;
<оператор2>;
<оператор3>;
….
end;
23. Задача. Вводится последовательность целых неотрицательных чисел. Определить количество четных элементов последовательности.
Входные данные: послед-ть целыхнеотриц. чисел
Выходные данные: k- количество четных
элементов входящей послед-ти
var a,k: integer;
begin
Writeln(‘вв. число’);
Readln(a);
k:=0;
while a>=0 do
begin
if a mod 2=0 then k:=k+1;
Writeln(‘вв. число’);
Readln(a);
end;
end.
Сколько раз
выполнится цикл
при следующих
входных данных?
А) 1, 2, 4,-3
Б) 0,-2
С) -3,-2
24.
for i:=m1 to m2 do<оператор>;
{шаг цикла +1 }
~
i:=m1;
While i<=m2 do
begin
<оператор>;
i:=i+1;
End;
25. Бесконечный цикл!
Сколько раз выполнится вход в цикл?Var a:integer;
Begin
a:=3;
While a>0 do
S:=a+1;
End.
26. При программировании вложенных циклов, необходимо помнить, что переход на следующую итерацию внешнего цикла производится только
Вложенные циклыПри программировании вложенных циклов, необходимо помнить, что
переход на следующую итерацию внешнего цикла производится только
после окончания внутреннего цикла.
var N,del,S:integer;
begin
for n:=10 to 20 do
begin
write(n, ‘:’);
{вывод делителей числа n}
for del:=1 to n do
if n mod del=0 then write(del:3);
writeln;
end;
end.
10: 1 2 5 10
11: 1 11
12: 1 2 3 4 6 12
13: 1 13
14: 1 2 7 14
…
27. Задание
На интервале [123456789; 987654321] определить всечисла, содержащие ровно три делителя.
28.
29. Трассировочные таблицы
Наиболее простым способом отслеживания действийалгоритма, является пошаговое исполнение. Для того,
чтобы наглядно представлять значения переменных,
изменяющихся при выполнении алгоритма в сложных
алгоритмических
структурах,
например,
циклах,
составляют трассировочные таблицы.
Трассировочные таблицы могут быть двух видов:
Пошаговое выполнение каждого действия с записью
результата в каждую строку таблицы.
Выполнение группы действий с записью в одну строку
таблицы.
30. Пример
Дан алгоритм,представленный
начало блок-схемой:
Запишем команды и результаты в
таблицу:
№
шаг
а
n, m
1
n≠m
n>m
n=n-m
m=m-n
m
конец
Команда
результат
2
ввод
n≠m
да
3
n>m
да
4
n=n - m
5
n≠m
да
6
n>m
да
7
n=n - m
8
n≠m
да
9
n>m
да
10
n=n - m
11
n≠m
да
12
n>m
нет
13
m= m - n
n≠m
14
результат
m
14
n
49
35
21
7
7
нет
7
7
31.
При составлении таблиц второготипа в столбцах лучше отметить
переменные и условия алгоритма:
начало
n, m
n≠m
n>m
n=n-m
m=m-n
№
пр.
1
2
3
4
5
6
результат
m
конец
n≠m
да
да
да
да
нет
n>m
да
да
да
нет
m
n
14
49
35
21
7
7
7
7
32. Задание. Выполните трассировку алгоритмов:
1) Определите значение переменной с после выполнения следующегофрагмента программы, в котором a, b, c – целочисленные переменные.
a:=90
начало
b:=25
b:=a-b*2
A=1
a:=a-b*2
B=-1
если
a>2*b
то a:=div(a,b)
иначе b:=div(b,a)
B<A
все
c:=a+b
A=B
2) Определите результат алгоритма,
представленного блок-схемой.
B=B+A
A=A+B
A
конец
Программирование