Лекция: Занятие 2. Нелинейные алгоритмы с разветвлением
Цель занятия -изучение основ построения алгоритмов и программ нелинейной структуры с использованием выбора по условию.
Объем занятия – 2 часа.
1. Общие сведения
Базовая структура ветвление обеспечивает в зависимости от результата про верки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран.
Структура ветвление существует в четырех основных вариантах:
· если-то;
· если-то-иначе;
· выбор;
· выбор-иначе.
Содержание работы
Работа предполагает базовые знания школьного курса языка программирования Turbo Pascal. Запустить программу Pascal ABC. Ознакомиться с работой программы, строкой меню, окном редактора кода и ввода-вывода команд. Воспроизвести примеры, приведенные ниже, используя, где необходимо, преобразование команд «школьного алгоритмического языка» в операторы паскаля. По указанию преподавателя выбрать вариант из Приложения В. По завершении работы результаты сохранить в файл.
| Структура ветвления | Блок-схема |
| 1. если-то | |
| если условието действиявсе | |
| Пример 1.Для положительных х вычислить значение функции sin(x) если x > 0то y := sin(x)все | |
| 2. если-то-иначе | |
| если условието действия 1иначе действия 2все | |
| Пример 2.Даны два числа, если первое из них больше второго, то его необходимо удвоить, а второе число приравнять единице, в противном случае первое число оставить без изменения, а второе – удвоить. если a > bто a := 2*a; b := 1иначе b := 2*bвсе | |
| 3. выбор | |
| Выборпри условие 1: действия 1при условие 2: действия 2............при условие N: действия Nвсе | |
| Пример 3.В зависимости от значения натурального числа n, могущего принимать значения 1, 2 или 3, присвоить функции y значения sin x, cos x или нуля. выборпри n = 1: y := sin(x)при n = 2: y := cos(x)при n = 3: y := 0все | |
| 4. выбор-иначе | |
| Выборпри условие 1: действия 1при условие 2: действия 2............при условие N: действия Nиначе действия N+1все | |
| Пример 4. выборпри a > 5: i := i+1при a = 0: j := j+1иначе i := 10; j:=0все |
Пример 5.Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе – оставить без изменения.
Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.
| 1. Ввести число n 2. Если число n нечетное и меньше 16384, то n := n * 2 3. Вывод n 4. Конец |
Пример 6.Даны три точки на плоскости. Определить, какая из них ближе к началу координат.
Program Points;Uses Crt;Var xA, yA, xB, yB, xC, yC, DistA, DistB, DistC: Real;BEGIN ClrScr;WriteLn('Введите координаты точки А:');Write('x = '); ReadLn(xA); Write('y = '); ReadLn(yA);WriteLn('Введите координаты точки B:');Write('x = '); ReadLn(xB); Write('y = '); ReadLn(yB);WriteLn('Введите координаты точки C:');Write('x = '); ReadLn(xC); Write('y = '); ReadLn(yC);
Пример 7.Найти произведение цифр заданного целого четырехзначного числа.
Пример 8.Решить квадратное уравнение ax2 + bx + c = 0.
Пример 9.Контроль корректности данных. Составить программу расчета площади треугольника S по трем сторонам a, b,c, значения которых запрашиваются с клавиатуры, по формуле Герона
, где .
Var a, b, c, p,S: real;
Begin
Write(‘Ввести сторону а=’);ReadLn(a);
Write(‘Ввести сторону b=’);ReadLn(b);
Write(‘Ввести сторону c=’);ReadLn(c);
IF (a>0) and (b>0) and (c>0){проверка положительности}
and (a+b>c) and (a+c>b) and (c+b>a) {каждая сторона должна быть меньше суммы двух других сторон}
THEN begin p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
WriteLn(‘Площадь:’, S:15:5)end
ELSE Writeln(“Неверные входные данные!’);
ReadLn
END.
Пример 10.Программа случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях – Вы «неудачник».
Var N:word;
Begin
WriteLn(‘Предсказание будущего!’);
Randomize;N:=Random(20)+1; {N-случайное число от 1 до 20}
WriteLn; Write(‘Вас ожидает_’);
Case N of
1: WriteLn(‘счастье’); 6: WriteLn(‘здоровье’);
2: WriteLn(‘пятерка’); 7: WriteLn(‘деньги’);
3: WriteLn(‘дорога’); 8: WriteLn(‘любовь’);
4: WriteLn(‘двойка’); 9: WriteLn(‘встреча’);
5: WriteLn(‘болезнь’); 10: WriteLn(‘мама’)
Else WriteLn(‘неудача’) end;
WriteLn(‘Нажми клавишу Enter’);
ReadLn
END.
Здесь функция Random(x) генерирует случайное число, с равномерной плотностью распределения на заданном интервале. Для инициализации распределения в начале программы необходимо вызвать процедуру Randomize.