Лекция: Занятие 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.

еще рефераты
Еще работы по информатике