ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ НАЧАЛА ПРОГРАММИРОВАНИЯ
Ключевые слова условный оператор неполный условный оператор составной оператор вложенные ветвления
Общий вид условного оператора else Перед else знак «;» не ставится. Полная форма условного оператора: ifthenelse if then else Неполная форма условного оператора: ifthen if then Операции отношений Операции отношений Логические операции Логические операции Простые Сложные Условия - логические выражения !
Условный оператор 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:=a; if (b>y) then y:=b; if (c>y) then y:=c; writeln ('y=', y) end. Y:=A B>Y Y:=B Y:=C C>Y да-нет да-нет
Составной оператор thenelse В условном операторе и после then, и после else можно использовать только один оператор. then else Если в условном операторе после then или после else нужно выполнить несколько операторов, то используют составной оператор – конструкцию вида: begin end
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; 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; begin x:=-b/2/a; writeln ('Корень уравнения x=', x:9:3) end; begin x:=-b/2/a; writeln ('Корень уравнения x=', x:9:3) 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 then writeln ('Корней нет'); if d=0 then if d>0 then end.
Блок-схема решения КВУР Конец Вывод «Корни уравнения: х 1=», х 1, «х 2=», х 2 х 1:=(-b+sqrt(d))/2/a Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d < 0 да Вывод «Корней нет» нет d:= 0 да x:=-b/2/a Вывод «Корень уравнения х=», х нет х 2:=(-b-sqrt(d))/2/a ? Соответствуют ли программа и блок-схема друг другу?
Вложенные ветвления Возможна следующая конструкция: ifthen if then else else elseif else всегда относится к ближайшему оператору if !
Решение линейного уравнения 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 – любое число'); end. Корней нет Список данных a, b, x - вещ a, b a<>0 x:=-b/a b<>0 Любое число нет да нет
Самое главное При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор: if then else Для записи неполных ветвлений используется сокращённый условный оператор: if then Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид: begin end.
Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x<y then x:=0 else read (y) б) if x>=y then x:=0; y:=0 else write (z) в) if x<y <z then a:=a+1 Что такое составной оператор? Для чего он используется в условном операторе? Используя составной оператор, упростите следующий фрагмент программы: if a>b then c:=1; if a>b then d:=2; if a<=b then c:=3; if a<=b then d:=4 Дано трёхзначное число. Напишите программу, которая определяет: есть ли среди цифр заданного целого трёхзначного числа одинаковые ; Пример входных данных Пример выходных данных 123Нет 121Да 222Да является ли число «перевёртышем», т. е. числом, десятичная запись которого читается одинаково слева направо и справа налево. Пример входных данных Пример выходных данных 123Нет 121Перевёртыш 222Перевёртыш Даны две точки в плоской прямоугольной системе координат. Напишите программу, определяющую, которая из точек находится ближе к началу координат. Пример входных данных Пример выходных данных Координаты 1-й точки>>1, 2 Координаты 2-й точки>>3, 4 Первая точка ближе Пример входных данных Пример выходных данных a b c>> 1 2 1Не существует a b c>> 2 2 2Равносторонний a b c>> Равнобедренный a b c>> 3 4 5Разносторонний Даны три натуральных числа. Напишите программу, определяющую, существует ли треугольник с такими длинами сторон. Если такой треугольник существует, то определите его тип (равносторонний, равнобедренный, разносторонний). Имеются данные о количестве полных лет трёх призёров спартакиады. Напишите программу, выбирающую и выводящую возраст самого младшего призёра. Пример входных данных Пример выходных данных k, l>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, l>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, l>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya ): а) на прямой y = kx + l, над ней или под ней; б) на окружности x 2 + y 2 = r 2, над ней или под ней. Примеры входных данных и соответствующих им выходных данных разработайте самостоятельно. Пример входных данных Пример выходных данных x >> 5 y >> 6 x = 5 y = 6 x >> 6 y >> 5 x = 5 y = 6 Напишите программу, которая производит обмен значений переменных x и y, если x больше y. Дан условный оператор: If a<5 then c:=1 else if a>5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данных Пример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -1 при x <0 0 при x =0 1 при x >0 y = Составьте программу для решения задачи: Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной y в алгоритме, определяющем день недели для любого числа (chislo) января 2011 года? chislo:= chislo mod 7 если chislo=3 то у:='… если chislo=4 то у:='… если chislo=5 то у:='… если chislo=6 то у:='… если chislo=0 то у:='… если chislo=1 то у:='… если chislo=2 то у:='… Пример входных данных Пример выходных данных Координаты 1 – го поля >> 2 2 Координаты 2 – го поля >> 3 3 Поля одного цвета Координаты 1 – го поля >> 2 3 Координаты 2 – го поля >> 3 3 Поля разного цвета Координаты 1 – го поля >> 2 7 Координаты 2 – го поля >> 5 4 Поля одного цвета Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8. Напишите программу, которая по введённым координатам двух полей ( k, l ) и ( m, n ) определяет, являются ли эти поля полями одного цвета. Напишите программу, в которой пользователю предлагается дополнить до 100 некоторое целое число а ( а - случайное число, меньшее 100). Ответ пользователя проверяется и комментируется.
Опорный конспект Условный оператор if then else if then begin end Полная форма Неполная форма Составной оператор