Диапазон

End.

Begin

Var

Type

Var

End.

Begin

Begin

Repeat

Begin

Var

Var

End.

Begin

. . .

Begin

Var

Var

x, y, Eps : Double;

function BesselI0(x, Eps : Double) : Double ;

S, A, B, R: Double ;

BesselI0 := S ;

end;

 

writeln(‘x=? ’) ; readln(x);

writeln(‘Eps=? ’) ; readln(Eps);

y := BesselI0(x, Eps) ; writeln(‘y=’, y) ;

,

Условия прекращения цикла суммирования: и

 

S0 = 0 A0 = 1
S1 = S0 + A1 A1 = A0*B1 B1 = (x/2)2/12
S2 = S1 + A2 A2 = A1*B2 B2 = (x/2)2/22
. . . . . . . . .
Si = Si-1 + Ai Ai = Ai-1* Bi Bi = (x/2)2/i2

 


Текст программы на языке Free Pascal, TP7:

 

program BesselI0 ; // Необязательная строка

x,y: Double;

 

function BesselI0(x, Eps : Double): Double;

I, N: integer;

S, A, B, R, x2: Double;

S := 0 ;

x2 := sqr(x/2) ;

A := x2 ;

N := 0 ;

B := x2 / (N + 2) / (N + 2) ;

 

 

inc(N);

A := A * B ;

B := x2 / (N + 2 ) / (N + 2) ;

R := A / (1 - B) ;

until ( B < 1) and ( R < Eps ) ;

 

S := 1;

A := 1;

 


 

S0 = 0 A0 = 1
S1 = S0 + A1 A1 = A0*B1 B1 = (x/2)2/12
S2 = S1 + A2 A2 = A1*B2 B2 = (x/2)2/22
. . . . . . . . .
Si = Si-1 + Ai Ai = Ai-1* Bi Bi = (x/2)2/i2

 

for I := 1 to N do

B := x2 / I / I;

A := A * B;

S := S + A;

end;

 

BesselI0 := S ;

end ;

 


writeln(‘Введите x’) ; readln(x) ;

writeln(‘Введите Eps’) ; readln(Eps) ;

if (Eps <= 0) or (Eps >= 1) then exit ;

 

writeln(‘f=’, BesselI(x, Eps));

readln;

 


Тип «Перечисляемый»

 

<Перечисляемый тип> : : =

(<Список имён значений>)

Первому из элементов <Списка имён значений> придаётся внутренний (недоступный пользователю) номер 0, второму – номер 1, и т.д.


Переменные типа «Перечисляемый»

 

Примеры

v1: (LeftDyrecton, RightDyrecton, BackDyrecton);

MyType2=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

MyType4=(MyTrue, MyFalse);

MyVar2: MyType2;

MyVar3: boolean;

MyVar4: MyType4;

forMyVar2 :=Monday toFriday dowriteln(MyVar2); // Ошибка

forMyVar4 :=MyFalse toMyTrue dowriteln(MyVar4); // Ошибка

forMyVar3 := False toTrue dowriteln(MyVar3); // Выход: True False

Замечание. boolean ≠ (False, True). Вообще говоря.

Замечание. Тип «Перечисляемый – порядковый тип.


<Диапазон> : : =

<Целое число 1> . . <Целое число 2>

 

Естественное требование:

<Целое число 1> не более, чем <Целое число 2>

 

Примеры.

1 . . 5

First . . Third

//Если выше по тексту было что-то наподобие:

// constFirst = 0; Third = 2;

Тип «Диапазон»

type<Имя типа> = <Диапазон> ;

 

Пример.

typeMyType01 = –3 . . 72 ;

 


Переменные типа «Диапазон»

 

Примеры: