- •Тема 13. Программирование на языке паскаль
- •13.1. Базовые элементы языка Паскаль
- •13.1.1. Алфавит языка Паскаль
- •13.1.2. Элементарные конструкции
- •13.1.3. Концепция типа для данных
- •13.1.4. Стандартные типы данных
- •13.1.5.Перечисляемый тип. Интервальный тип
- •13.1.6. Константы
- •13.1.7. Переменные. Инициализация переменных
- •13.1.8. Выражения
- •13.2. Структура программы
- •13.3. Оператор присваивания
- •13.4. Операторы ввода и вывода
- •13.5. Пример линейной программы
- •13.5.1. Понятие сложности выражения. Оптимизация вычислений
- •13.5.2.Оптимизация линейных программ
- •13.6. Ветвящиеся программы
- •13.6.1. Понятие условия. Тип данных Boolean (логический)
- •13.6.2. Составной оператор
- •13.6.3.Выбирающие операторы: условный оператор
- •13.6.4.Ветвящиеся программы. Пример.
- •13.6.5. Оптимизация ветвящихся программ по времени
- •13.6.6.Выбирающие операторы: оператор варианта
13.6.2. Составной оператор
Несколько операторов, выполняемых последовательно, можно объединять в один составной оператор.
Составной оператор предусматривает выполнение входящих в него операторов – компонент в порядке их написания. Служебные слова Begin и End играют роль операторных скобок – они выделяют тело составного оператора.
С оставной оператор определяется диаграммой:
Обратите внимание на то, что раздел операторов программы представлен как один составной оператор.
Примеры составных операторов:
а)
Begin
Write(‘Введите координаты вектора: ‘);
Readln(a, b, c);
Length := sqrt(a*a + b*b+ c*c);
Write(‘длина (a,b,c) равна ‘, Length)
end
б)
Begin
u := u*х/n;
s := s+u
End
в) Begin writeln (‘уравнение корней не имеет’) End
13.6.3.Выбирающие операторы: условный оператор
Выбирающие операторы предназначены для выделения из составляющих их операторов – компонент одного – единственного, который и выполняется. Таким образом, выбирающие операторы реализуют управляющую алгоритмическую структуру “ветвление”. В качестве выбирающих в языке определены условный оператор и оператор варианта.
Существует две формы условного оператора:
If <условие> then < оператор >
If <условие> then < оператор > else <оператор>
Они соответствуют базовым управляющим структурам короткого и полного ветвления. Условие – это выражение типа Boolean.
С интаксическая диаграмма условного оператора имеет вид:
Примеры условных операторов :
а) If a >= b then Max := a else Max := b
б) If IntFun(i) mod 3 = 0 then write(i)
в) If (a11*a22 = a12*a21) And
((a11*b2 <> a12*b1) Or
(b1*a22 <> b2*a21))
then Write(‘система решений не имеет’)
else Write(‘система имеет решения’)
г) If х <= 0
then begin
u :=х*х – 2*х + 3;
v :=1/2*х + 1
end
else begin
u :=1/3*х+2;
v :=х*х+3*х–2
end
Обратите внимание на то, что в теле условного оператора может использоваться и другой условный оператор. Это создает возможность реализовывать многозначные ветвления. Например:
If Discriminant < 0
then If LeadCoef < 0
then Write(‘Решений нет’)
else Write(‘Решения – вся числовая ось’)
else If LeadCoef < 0
then Write(‘Решения – между корнями уравнения’)
else Write(‘Решения – вне корней уравнения’)
Для устранения синтаксической двусмысленности в языке избран вариант интерпретации вложенных ветвлений в соответствии с правилом: разделителю else соответствует ближайший предыдущий разделитель then.
13.6.4.Ветвящиеся программы. Пример.
Ветвящимися называют программы, в которых используются операторы ветвления.
Пример 1.
Program SquareEquation;
Const Line = ‘––––––––––––––––––––––––––––‘;
Var a, b, c, Root1, Root2: real;
Solution: Integer;
Discriminant: Real;
Begin
{Ввод данных}
Write(‘Введите коэффициенты уравнения (через пробел):’);
Readln(a, b, c) ; Writeln(Line);
{Вычисления}
Discriminant := Sqr(b) – 4*a*c;
If Discriminant < 0 then Solution := 0 { Нет корней }
Else
If Discriminant = 0 { Один корень }
then begin
Solution := 1;
Root1 := –b/a;
Writeln (‘х1= ‘ ,Root1)
end
else { Два корня } begin
Solution := 2;
Root1 := (–b + Sqrt(Discriminant))/(2*a);
Root2 := –b/a – Root1;
Writeln(‘х1= ‘, Root1, ‘ х2= ‘, Root2)
end ;
Writeln(Line);
Writeln(‘Количество решений равно: ‘, Solution)
End.