- •Составной оператор
- •Примеры составных операторов :
- •Выбирающие операторы: Условный оператор
- •1 Вариант:
- •2 Вариант:
- •Выбирающие операторы: оператор варианта
- •2,3 : Writeln(‘Выходной день’);
- •4,5,6,0 : Writeln(‘Безрадостный рабочий день’);
- •1 : Writeln(‘Занятие по программированию’)
- •1 Вариант: умножение и сравнение
- •2 Вариант: 3 логических операции. Сложность 2-го варианта меньше
- •Операторы повторения
- •Оператор цикла с параметром
- •Var MinX, MaxX, Step: Real;
- •X, y : Real; Coef : Real;
- •I, n : Integer;
- •Семантика Оператор (тело цикла) выполняется до тех пор, пока условие истинно. Если при первой проверке условие оказалось ложным, оператор не выполняется ни разу. Пример:
- •Var a, b, c : Integer;
- •X : Integer; y : Real;
- •Var Fib1, Fib2 : Integer; Buf : Integer;
- •I : Integer;
- •Var u, V, Root : Real;
1 Вариант: умножение и сравнение
2 Вариант: 3 логических операции. Сложность 2-го варианта меньше
Cледующие вычисления эквивалентны:
If x < 0
then If y < 0 <==> If (x < 0) And (Y < 0)
then z := 1 then z := 1
If x < 0
then Flag := False <==> Flag := (x >= 0)
else Flag := True
Операторы повторения
Циклы - основное средство в программировании, позволяющее коротко записывать алгоритм, осуществляющий большое количество действий.
оператор цикла с параметром;
оператор цикла с предусловием;
оператор цикла с постусловием.
Оператор цикла с параметром
For <параметр> := <нач. значение> to <кон. значение> do <оператор>
или
For <параметр> := <нач. значение> downto <кон значение> do <оператор>
Пример. Табулирование функции вещественного переменного.
Рrogram Tabulation;
Var MinX, MaxX, Step: Real;
X, y : Real; Coef : Real;
I, n : Integer;
Begin
Write(‘Введите пределы табулирования ‘); Readln(MinX, MaxX);
Write(‘Введите шаг табулирования ‘); Readln(Step);
Coef := 1/Sqrt(Pi);
x := MinX;
n := Round((MinX – MaxX)/Step);
For i := 0 to n do begin
y := Coef * exp(-Sqr(x)/2);
writeln(‘ x = ‘,x,’ y = ‘,y);
x := x + Step
end;
End.
Пример: Суммирование последовательности.
S = a0 + a1 + … + an; ai = xi/i!
{Ввод х}
S := 0; a := 1; {Инициализация цикла}
For i := 0 to n do begin
S := S + a; {Суммирование накоплением}
a := a*x/(i+1) {Следующее значение слагаемого}
end;
{Вывод S}
S := 0; a := 1; {Инициализация цикла}
For i := 1 to n+1 do begin
S := S + a; {Суммирование накоплением}
a := a*x/i {Следующее значение слагаемого}
end;
Операторы повторения While и Repeat
Когда количество повторений заранее неизвестно, а задано некоторое условие окончания (или продолжения) цикла, в языке Паскаль используют операторы повторения: оператор цикла с предусловием While и оператор цикла с постусловием Repeat.
Оператор цикла
с
предусловием
Семантика Оператор (тело цикла) выполняется до тех пор, пока условие истинно. Если при первой проверке условие оказалось ложным, оператор не выполняется ни разу. Пример:
Найти наименьшее натуральное решение неравенства x3 + ax2 + bx + c > 0 с целыми коэффициентами.
Очевидный алгоритм поиска решения заключается в последовательном вычислении значений Y = x3 + ax2 + bx + c для x = 1, 2, 3, ... до тех пор, пока Y 0.
Program UneqvSolution;
Var a, b, c : Integer;
X : Integer; y : Real;
Begin
Write(‘ введите коэффициенты a, b, c : ‘); Readln(a, b, c);
X := 1; Y := a + b + c + 1; { Инициализация цикла }
While Y <= 0 do begin
X := Succ(X); { Следующее значение X }
Y := ((X + a)*X + b)*X + c { Следующее значение Y }
end;
Writeln(‘X = ‘, X, ‘ Y = ‘, Y )
End.
Д
При
некотором значении Х значение кубического
выражения станет положительным
lim (x3 + ax2 + bx + c) = +
x -> +
Оператор цикла Repeat (с постусловием)
Оператор Repeat
Семантика
Тело цикла Repeat выполняется до тех пор, пока условие принимает значение False. Тело цикла будет выполнено по крайней мере один раз. Таким образом, условие является условием окончания цикла.
Пример. Найти номер наименьшего числа Фибоначчи, делящегося на 10. Последовательность Фибоначчи { F(n) } определяется рекуррентно:
F(1) = F(2) = 1, F(n+2) = F(n+1) + F(n)
Первые несколько членов: 1, 1, 2, 3, 5, 8, 13, …..
Алгоритм и программа
Как и в предыдущем примере, вычисляем Fn для n = 3, 4, ... до тех пор, пока не найдем элемент последовательности, делящийся на 10. Проблема обоснования метода остается прежней: существует ли искомый элемент?
Program Fibbonachy;
