Управляющие операторы
Управляющие операторы
Оператор условной передачи управления
Сокращенная форма условного оператора
УСЛОВИЕ
Задание
Пример
Операторные скобки
Вложенные операторы
Задание
Оператор множественного выбора
Управляющий блок программы
Операторы циклов
Операторы циклов
Счетный цикл
Задание
Задача. Вывести все делители натурального числа N.
Задача. Вводится натуральное число N. Определить, является ли оно простым числом.
Цикл с постусловием (цикл-до)
Проверка на корректный ввод данных
Цикл с предусловием (цикл-пока)
Задача. Вводится последовательность целых неотрицательных чисел. Определить количество четных элементов последовательности.
Бесконечный цикл!
При программировании вложенных циклов, необходимо помнить, что переход на следующую итерацию внешнего цикла производится только
Задание
Трассировочные таблицы
Пример
Задание. Выполните трассировку алгоритмов:
325.37K
Категория: ПрограммированиеПрограммирование

Управляющие операторы

1. Управляющие операторы

Лекция №3

2. Управляющие операторы

Команды, управляющие порядком исполнения
программы, называются управляющими
структурами.
Оператор условной передачи управления 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
конец
English     Русский Правила