Основные темы параграфа: представление ветвлений на АЯ. Трассировка ветвящихся алгоритмов; в сложные ветвящиеся алгоритмы.
Представление ветвлений на АЯ. Трассировка ветвящихся алгоритмов Первая задача: даны два числа; выбрать большее из них. исходными данными являются переменные А и В. Выходные: С Например, если А = 5, В = 8, то должно получиться: С = 8.
Блок-схема алгоритма решения этой задачи.
Нетрудно понять смысл этого алгоритма. Если значение переменной А больше, чем В, то переменной С присвоится значение А. В противном случае, когда А < В, переменной С присвоится значение В. Условием, по которому разветвляется алгоритм, является отношение неравенства А > В. Изучая базы данных и электронные таблицы, вы узнали, что такое отношение является логическим выражением. Если оно справедливо, то результатом будет логическая величина «истина» и выполнение алго ритма продолжится по ветви «да»; в противном случае логическое выражение примет значение «ложь» и выполнение алгоритма пойдет по ветви «нет». До выполнения на компьютере правильность алгоритма можно проверить путем заполнения трассировочной таблицы. Вот как будет выглядеть трассировка нашего алгоритма для исходных значений А = 5, В = 8.
Ветвление является структурной командой. Его исполнение происходит в несколько шагов: проверка условия (вы полнение логического выражения) и выполнение команд на одной из ветвей «да» или «нет». Поэтому в трассировочной таблице записываются не команды алгоритма, а отдельные операции, выполняемые компьютером на каждом шаге.
В алгоритме на рис. 6.2 используется полное ветвление. Эту же самую задачу можно решить, применяя структурную команду неполного ветвления. Блок-схема такого алгоритма изображена на рис. 6.3.
Оператор ветвления на Паскале В языке Паскаль имеется оператор ветвления. Другое его название условный оператор. Формат полного оператора ветвления следующий: if then else Здесь if «если», then «то», else «иначе».
Даны два числа А и В. Найти наибольшее из них. program prim ; uses crt; {Описываем переменные А и В как целые.} var a, b: integer; begin clrscr; {Вводим два целых числа.} writeln('введите 2 числа'); write('введите число а='); readln(a); write('введите число b='); readln(b); {Если А>В, то выводим на экран А, иначе В.} if a>b then writeln('большее число а=',a) else writeln('большее число b=',b); readln; end.
Запишем на Паскале программу определения большего из трех чисел, блок-схема которой показана на рис. 6.6.
Проверка равенства трех чисел, введенных с клавиатуры Program Mx; var А,В,С: integer; begin writeln(' Введите 3 числа:'); readln(A,B,C); if (A = В) and (A = С) then writeln('Числа равные') else writeln('Числа не равны'); readln end.
Вычисление корней квадратного уравнения Program Quad; var А,В,С: real;{ Переменные для хранения коэффициентов } D: real; { Переменная для дискриминанта } X1,Х2: real;{ Переменные для получения корней} begin writeln('Введите коэффициенты A,B,C: '); readln(A,B,C); D:=Sqr(B) - 4*А*С; if D < 0 then writeln('Уравнение не имеет вещественных корней ') else if D=0 then writeln('У уравнения один корень', -В/(2*А):6:2) else { Ниже идет составной оператор } begin Х1:=(-В + Sqrt(D))/(2*A); Х2:=(-В - Sqrt(D))/(2*A); writeln('У уравнения два корня:',Х1:6:2, Х2:6:2) end; readln end.