Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по производственной ПМ01.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
441.46 Кб
Скачать

1.2 Практические работы по программированию ветвлений

Пример: Требуется составить программу вычисления площади треугольника по длинам трех сторон a, b, c.

Для решения задачи используется формула Герона

где p=(a+b+c)/2 – полупериметр треугольника.

Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше суммы длин двух других сторон.

Имея возможность в одном условном операторе записывать достаточно сложные логические выражения, можно сразу «отфильтровать» все варианты неверных исходных данных:

Program Geron;

Var A, B, C, P, S: Real;

Begin

Writeln (‘Проверка программы’);

A := 3;

B := 4;

C := 5;

Writeln (‘Для а=’,A:4:2);

Writeln (' b=',B:4:2);

Writeln (' c=',C:4:2);

If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+C>A) And (A+C>B)

Then Begin

P := (A+B+C)/2;

S := sqrt(P*(P-A)*(P-B)*(P-C));

Writeln (‘Площадь = ’, S)

End

Else Writeln (‘Неверные исходные данные’)

A := 3;

B := 4;

C := -7;

Writeln (‘Для а=’,A:4:2);

Writeln (' b=',B:4:2);

Writeln (' c=',C:4:2);

If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+C>A) And (A+C>B)

Then Begin

P := (A+B+C)/2;

S := sqrt(P*(P-A)*(P-B)*(P-C));

Writeln (‘Площадь = ’, S)

End

Else Writeln (‘Неверные исходные данные’)

Writeln (‘Проверка закончена’)

Writeln (‘Введите длины сторон треугольника’);

Write (‘a=’); Readln (A);

Write (‘b=’); Readln (B);

Write (‘c=’); Readln (C);

If (A>0) And (B>0) And (C>0) And (A+B>C) And (B+C>A) And (A+C>B)

Then Begin

P := (A+B+C)/2;

S := sqrt(P*(P-A)*(P-B)*(P-C));

Writeln (‘Площадь = ’, S)

End

Else Writeln (‘Неверные исходные данные’)

End.

Пример: Требуется составить программу решения квадратного уравнения.

Алгоритм имеет структуру вложенных ветвлений. Программа на паскале будет иметь вид:

Program Roots;

Var A, B, C, D, X1, X2 : Real;

Begin

WriteLn (‘Введите коэффициенты квадратного уравнения:’);

Write (‘a= ‘); ReadLn (A);

Write (‘b=’); ReadLn (B);

Write (‘c= ‘); ReadLn (C);

If (A=0)

Then If (B=0)

Then If (C=0)

Then WriteLn (‘Любое Х – решение)

Else WriteLn (‘Нет решений’)

Else

Begin

X := -c/b;

WriteLn (‘X = ‘, X)

End

Else

Begin d := b*b – 4*a*c;

If (d<0)

Then WriteLn (‘Нет вещественных корней’)

Else

Begin

X1 := (-b+sqrt (d))/2/a;

X2 := (-b-sqrt (d))/2/a;

WriteLn(‘X1= ‘, X1);

WriteLn (‘X2= ‘, X2)

End

End

End.

Пример: Требуется составить программу перевода пятибалльной оценки в ее наименование: 5 – отлично, 4 – хорошо, 3 – удовлетворительно, 2 – неудовлетворительно.

Блок-схема алгоритма решения задачи приведена на рис. 2.2.

Этот алгоритм имеет структуру вложенных ветвлений и соответствующую программу на паскале можно записать следующим образом:

Program Marks-2;

Var N: Integer;

Begin

WriteLn (‘Введите оценку:’); ReadLn(N);

If (N=5)

Then WriteLn (‘Отлично’)

Else If (N=4)

Then Writeln(‘Хорошо’)

Else if (N=3)

Then Writeln(‘Удовлетворительно’)

Else if (N=2)

Then Writeln(‘Неудовлетворительно’);

Else Writeln(‘Неверная оценка’)

End.