ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ НАЧАЛА ПРОГРАММИРОВАНИЯ
Ключевые слова условный оператор сокращённая форма условного оператора составной оператор вложенные ветвления
Общий вид условного оператора 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=a) and (x
Сокращённая форма условного оператора 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
Блок-схема решения КВУР Конец Вывод «Корни уравнения: х1=», х1, «х2=», х2 х1:=(-b+sqrt(d))/2/a d>0 да Начало Введите коэффициенты a, b, c d:=b*b-4*a*c d < 0 да Вывод «Корней нет» нет d:= 0 да x:=-b/2/a Вывод «Корень уравнения х=», х нет х2:=(-b-sqrt(d))/2/a
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 d0 then end.
Вложенные ветвления Возможна следующая конструкция: 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 a0 then begin x:=-b/a; writeln ('Корень уравнения x=', x:9:3) end else if b0 then writeln ('Корней нет') else writeln ('x – любое число'); end. Корней нет Список данных a, b, x - вещ a, b a0 x:=-b/a b0 Любое число нет да нет
Самое главное При записи на языке Паскаль разветвляющихся алгоритмов используют условный оператор: if then else Для записи неполных ветвлений используется сокращённый условный оператор: if then Если при некотором условии требуется выполнить определённую последовательных операторов, то их объединяют в один составной оператор, имеющий вид: begin end.
Вопросы и задания Как на языке Паскаль записывается полное и неполное ветвление? Является ли условным оператором последовательность символов? а) if x=y then x:=0; y:=0 else write (z) в) if xb then d:=2; if a1, 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, 1>>-1 5 xa, ya >>1 2 Точка лежит под прямой k, 1>>-1 5 xa, ya >>1 10 Точка лежит над прямой k, 1>>-1 5 xa, ya >>1 4 Точка лежит на прямой Напишите программу, определяющую, лежит ли точка А(ха, ya ): а) на прямой y = kx + 1, над ней или под ней; б) на окружности 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 a5 then c:=2 else c:=3 Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3? Пример входных данныхПример выходных данных -5y = - 1 0y = 0 5y = 1 Напишите программу, вычисляющую значение функции: -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 Полная форма Неполная форма Составной оператор