Программирование разветвляющихся алгоритмов

advertisement
ПРОГРАММИРОВАНИЕ
РАЗВЕТВЛЯЮЩИХСЯ
АЛГОРИТМОВ
НАЧАЛА ПРОГРАММИРОВАНИЯ
Ключевые слова
•
•
•
•
условный оператор
неполный условный оператор
составной оператор
вложенные ветвления
Общий вид условного оператора
Полная форма условного оператора:
if <условие> then <оператор_1> else
<оператор_2>
Неполная форма условного оператора:
if <условие> then <оператор>
!
Перед else знак «;» не ставится.
Условия - логические выражения
Простые
Сложные
Операции
отношений
Логические
операции
Условный оператор
program n_9;
var x, a, b: real;
begin
writeln ('Определение принадлежности
точки отрезку');
write ('Введите а, b>>');
да
readln (a, b);
write ('Введите x>>');
ДА
readln (x);
if (x>=a) and (x<=b) then
writeln ('Точка принадлежит отрезку')
else writeln ('Точка не принадлежит отрезку')
end.
a, b, x
(x>=a) and (x<=b)
нет
НЕТ
Неполная форма условного оператора
program n_10;
var y, a, b, c: integer;
begin
writeln ('Нахождение наибольшей из трёх величин');
да
write ('Введите а, b, с>>');
readln (a, b, c);
Y:=B
y:=a;
if (b>y) then y:=b;
да
if (c>y) then y:=c;
writeln ('y=', y)
Y:=C
end.
Y:=A
B>Y
C>Y
нет
нет
Составной оператор
В условном операторе и после then, и после else
можно использовать только один оператор.
Если в условном операторе после then или после else
нужно выполнить несколько операторов, то
используют составной оператор – конструкцию вида:
begin <последовательность операторов> end
program n_11;
var a, b, c: real;
var d: real;
var x, x1, x2: real;
begin
writeln ('Решение квадратного
уравнения');
write ('Введите коэффициенты a, b,
c >>');
readln (a, b, c);
d:=b*b-4*a*c;
if d<0 thenbegin
writeln ('Корней нет');
if d=0 then x:=-b/2/a;
writeln ('Корень уравнения x=', x:9:3)
end;
if d>0 then
begin
x1:=(-b+sqrt(d))/2/a;
x2:=(-b-sqrt(d))/2/a;
writeln ('Корни уравнения:');
writeln ('x1=', x1:9:3);
writeln ('x2=', x2:9:3)
end;
end.
Блок-схема решения КВУР
Начало
Введите коэффициенты a, b, c
d:=b*b-4*a*c
нет
да
d<0
да
Вывод
«Корней нет»
d:= 0
нет
x:=-b/2/a
Вывод
«Корень уравнения х=», х
х1:=(-b+sqrt(d))/2/a
х2:=(-b-sqrt(d))/2/a
Соответствуют ли программа
и блок-схема друг другу?
?
Конец
Вывод
«Корни уравнения:
х1=», х1, «х2=», х2
Вложенные ветвления
Возможна следующая конструкция:
if <условие1> then
if
<условие2>
then
<оператор1>
else <оператор2>
else <оператор3>
!
else всегда относится к ближайшему оператору if
Решение линейного уравнения
Список данных
a, b, x - вещ
a, b
да
x:=-b/a
a<>0
да
нет
нет
b<>0
Любое число
program n_12;
Корней нет
var a, b, x: real;
begin
writeln ('Решение линейного уравнения');
write ('Введите коэффициенты a , b>>');
readln (a, b);
if a<>0 then
begin
x:=-b/a;
writeln ('Корень уравнения x=', x:9:3)
end
else if b<>0 then writeln ('Корней нет')
else writeln ('x – любое
число');
Самое главное
При записи на языке Паскаль разветвляющихся
алгоритмов используют условный оператор:
if <условие> then <оператор_1> else <оператор_2>
Для
записи
неполных
ветвлений
сокращённый условный оператор:
используется
if <условие> then <оператор>
Если при некотором условии требуется выполнить
определённую последовательных операторов, то их
объединяют в один составной оператор, имеющий вид:
begin <последовательность операторов> end.
Вопросы и задания
Поле
шахматной
доски
определяется
парой
Напишите
программу,
определяющую,
лежитпрограмму,
ли
точка
Напишите
программу,
Дано
трёхзначное
вычисляющую
число.
значение
Составьте
Даны
три
программу
натуральных
для
числа.
решения
Напишите
задачи:
Дан
условный
оператор:
Напишите
программу,
которая
производит
обмен
натуральных
А(ха,
ya
):
чисел,
каждое
из
которых
не
превосходит
8.
функции:
Напишите
программу,
которая
определяет:
определяющую,
Известно,
что
существует
31
января
ли
2011
треугольник
года
приходится
с
такими
на
значений
переменных
x
и
y
,
если
x
больше
y
.
а)
y = kxзначения
+ оператор,
l, над которая
ней
или
под
ней;введённым
Напишите
программу,
по
If на
a<5прямой
then
c:=1
Используя
составной
упростите
следующий
длинами
понедельник.
сторон.
Какие
должны
быть
присвоены
Имеются
данные
о
количестве
полных
лет
трёх
Является
Что
ли
такое
составной
условным
оператор?
оператором
есть
Даны
ли
две
среди
точки
цифр
в
плоской
заданного
прямоугольной
целого
трёхзначного
системе
-1
при
x
<0
координатам
двух
полей
(вk,валгоритме,
l) которой
и (m,то nопределите
)пользователю
определяет,
фрагмент
программы:
Напишите
программу,
литерной
Если
такой
переменной
треугольник
y
существует,
определяющем
его
является
ли
число
«перевёртышем»,
т.
е.
числом,
призёров
спартакиады.
else
if
a>5
then
c:=2
Пример
входных
данных
Пример
выходных
данных
последовательность
Для
чего
он
используется
символов?
в
условном
операторе?
Как
Пример
наодинаковые
языке
входных
Паскаль
записывается
Пример
полное
выходных
и неполное
данных
числа
координат.
Напишите
; данных
программу,
определяющую,
являются
ли
эти
поля
полями
одного
цвета.
тип
день
(равносторонний,
недели
для
любого
равнобедренный,
числа
(chislo)
января
разносторонний).
2011
года?
предлагается
дополнить
до
100
некоторое
целое
число
а
десятичная
запись
которого
читается
одинаково
слева
Напишите
программу,
выбирающую
и
выводящую
y
=
0
при
x
=0
if
a>b
then
c:=1;
ветвление?
которая
точек находится
ближе
к началу
координат.
elseиз
c:=3
k,
l>>-1
5
Точка
лежит
под
chislo:=
chislo
mod
7
а) число,
ifмладшего
x<y
thenпризёра.
x:=0
5 самого
x100).
=else
5 read (y) прямой
направо
и справа
налево.
возраст
(аx ->>
случайное
меньшее
Какое
значение
имеет
а, выходных
если в результате
Пример
входных
данных
данных
если
chislo=3
то
xa,
2
1переменная
при
>0
if a>b
thenyxПример
d:=2;
пользователя
проверяется
и комментируется.
yОтвет
>>ya6 >>1
= 6у:='…‘
б)входных
ifвходных
x>=y
then
x:=0;
y:=0
else
write (z)
Пример
данных
Пример
выходных
данных
выполнения
условного
оператора
переменной
с
если
chislo=4
то
у:='…‘
Пример
Пример
Пример
входных
входных
данных
данных
данных
Пример
Пример
Пример
выходных
выходных
выходных
данных
данных
данных
k,
l>>-1
5
Точка
лежит
над
прямой
Координаты
1
–
го
поля
>>
2
2
Поля
одного
цвета
x >> 6
x =c:=3;
5
if
a<=b
then
если
chislo=5
то у:='…‘
присваивается
значение
3? Пример
Пример
входных
данных
выходных данных
a
b
c>>
1
2
1
Не
существует
Координаты
2
–
го
поля
>>
3
3
xa,
ya
>>1
10
в)
if
x<y
<z
then
a:=a+1
y123
>>
5
y
=
6
Координаты
1-й точки>>1,
2 Нет
Первая
точка ближе
123
Нет
если chislo=6
то у:='…‘
Координаты
го поля
>>chislo=0
2 3then
разного
if a<=b
l>>-1
5 21 2–2-й
Точка
лежит цвета
на прямой
-5k,
yПоля
=то
-d:=4
1у:='…‘
если
a
b
c>>
2
Равносторонний
Координаты
точки>>3,
4
121
121
Перевёртыш
Да
Координаты
2
–
го
поля
>>
3
3
если chislo=1 то у:='…‘
ya >>1 4
0xa,
y Равнобедренный
=0
a
b
c>>
20
20
30
2
2
2
Координаты
1 – го поля
2= 7r Перевёртыш
Поля
одного
если
то у:='…‘
б) на окружности
x +>>ychislo=2
,Да
над
ней
илицвета
под ней.
222
222
им
5 aПримеры
=1
Координаты
2входных
– го поляданных
>> 5 4иyсоответствующих
b
c>>
3
4
5
Разносторонний
выходных данных разработайте самостоятельно.
Опорный конспект
Условный оператор
Полная форма
if <условие> then <оператор_1> else <оператор_2>
Неполная форма
if <условие> then <оператор>
Составной оператор
begin <последовательность операторов> end
Download