Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.doc
Скачиваний:
2
Добавлен:
10.11.2019
Размер:
237.57 Кб
Скачать

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 <УСЛОВИЕ>;

где УСЛОВИЕ - выражение логического типа. Цикл repeatuntil выполняется до тех пор, пока УСЛОВИЕ = 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

until Abs(a)<=Eps;

Пример 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.