- •Дмитров 2015 Содержание
- •Введение
- •Профессиональные компетенции
- •Приемы программирования основных алгоритмических структур на языке Паскаль
- •1.1 Программирование ветвящихся алгоритмов
- •1.2 Практические работы по программированию ветвлений
- •1.3 Программирование циклических алгоритмов
- •1.4 Практические работы по программированию циклов
- •Подпрограммы в Паскале
- •Заключение
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.
