- •Лекция 2
- •1.8. Операторы, выражения, операции
- •1.8.1. Исполняемые операторы
- •1.8.2. Оператор присваивания
- •1.8.3. Выражения
- •1.8.4. Арифметические функции
- •1.8.6. Операции
- •1.8.6.1. Арифметические операции
- •1.8.6.2. Логические операции
- •1.8.6.3. Операторы отношения
- •1.8.6.4. Операторы для строк (String)
- •2. Структура: программы, процедуры, функции, модуля
- •2.1. Структура программы
- •2.2. Структура функции
- •2.3. Структура процедуры
- •2.4. Структура модуля
- •Имя модуля и имя файла, в котором записан модуль должны совпадать.
- •2.5. Список параметров
- •2.5.1. Область видимости
- •2.5.2. Формальные и фактические параметры
- •2.5.3. Параметры-значения, параметры-переменные, нетипизированные параметры
- •3. Операторы
- •3.2. Оператор if
- •3.1. Оператор for
- •3.2. Оператор while
- •3.3. Оператор цикла repeat
- •3.4. Оператор выбора case
3.1. Оператор for
for <count> := <Нач_Значение> to <Кон_Значение> do <Оператор>;
for <count> := <Нач_Значение> downto <Кон_Значение> do <Оператор>;
Счетчик count – локальная переменная перечислимого типа.
Нач_Значение и Кон_Значение – выражения того же типа, что и счетчик count.
Пример 1. Вычислить сумму
Листинг 9. Сумма ряда
program Pr9;
{$APPTYPE CONSOLE}
const
n=20;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=1; a:=1; S:=a;
for i:=1 to n do
begin // составной оператор
Sign:=-Sign;
a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.
3.2. Оператор while
while <УСЛОВИЕ> do <ОПЕРАТОР>;
где УСЛОВИЕ - выражение логического типа. Цикл while выполняется до тех пор, пока УСЛОВИЕ = true.
Пример 2. Вычислить сумму
Листинг 10. Сумма ряда
program Pr10;
{$APPTYPE CONSOLE}
const
n=20;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=1; a:=1; S:=a; i:=0;
while i < n do
begin // составной оператор
i:=i+1;
Sign:=-Sign;
a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.
Пример 3. Вычислить сумму
Листинг 11. Сумма ряда
program Pr11;
{$APPTYPE CONSOLE}
const
n=20;
Eps=1.0e-6;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=-1; a:=1; S:=a; i:=0;
while Abs(a) > Eps do
begin
i:=i+1; Sign:=-Sign; a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.
3.3. Оператор цикла repeat
repeat
Оператор1;
...;
ОператорN;
until
<УСЛОВИЕ>;
где УСЛОВИЕ - выражение логического типа. Цикл repeat…until выполняется до тех пор, пока УСЛОВИЕ = false.
Листинг 12. Сумма ряда
x:=0.2; Sign:=1; a:=1; S:=a; i:=0;
repeat
i:=i+1;
Sign:=-Sign; a:=Sign*a*x/i;
S:=S+a;
A X
B
Пример 4. Методом деления отрезка пополам с точностью Eps=10-6 решить уравнение ex-2=0.
Листинг 13. Метод деления пополам
program Pr13;
{$APPTYPE CONSOLE}
const
Eps=1.0e-6;
var
x,a,b : real;
function F(x: real): real;
begin
Result:=Exp(x)-2;
End;
begin
a:=0; b:=10;
repeat
x:=(a+b)/2;
y:=F(x);
if F(a)*F(x)<0 then b:=x else a:=x;
until Abs(b-a) < Eps;
Writeln(‘x = ’, (a+b)/2:8:2);
Readln;
end.
Пример 5. Вычислить сумму цифр числа.
Листинг 14. Сумма цифр числа
var
n,Sum: integer;
begin
Write(‘N=’); Readln(N);
Sum:=0;
repeat
Sum := Sum + N mod 10;
N := N div 10;
until N=0;
Writeln(‘Sum = ’, Sum);
Readln;
End.
Пример 5. Вычислить максимальное значение функции (x^2-3x+2)/Sqrt(x^3-1) в узловых точках на интервале [a,b], если он разбит на n частей.
Листинг 15. Максимум функции
const
n=20;
var
i: integer;
X,Y,h,MaxValue: real;
function F(x: real): real;
begin
Result := (x*x-3*x+2)/Sqrt(x*x*x-1);
end;
begin
Write(‘A=’); Readln(A);
Write(‘B=’); Readln(B);
h := (B-A)/n;
x := A;
MaxValue := F(x);
while x<B do
begin
X := x+h; y := F(x);
if y > MaxValue then MaxValue := y;
end;
Writeln(‘MaxValue = ’, MaxValue:8:2);
Readln;
End.