Конспект лекций по информатике для специальностей 2102, 2103 Автор доц., к т. н. Каширская Е. Н

Вид материалаКонспект

Содержание


4.2. Ограниченный тип (диапазон, интервал)
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   25

4.2. Ограниченный тип (диапазон, интервал)


Множество значений простых типов упорядоченно и конечно (разумеется, кроме вещественного типа). Если программисту необходимо сузить диапазон значений, принимаемых некоторым объектом скалярного типа, то он осуществляет это в явном виде наложением ограничения на стандартный или определенный ранее перечислимый тип, который в этом случае называется базовым. Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором ограниченном диапазоне, то ее можно рассматривать как переменную ограниченного типа (иногда говорят интервальный тип или тип диапазон).

Пример.Type Day = (Mo , Tu , We , Th , Fr , Sa , Su);

Mom = 10...25

Sss = ` C`...`X`;

Wd = SA...SU;

Для ограниченного типа Mom базовым является целый тип, для SSS - символьный, для Wd - определённый ранее перечислимый тип Day.

Попытка присвоить переменной ограниченного типа значение \, не входящее в заданный диапазон, приведёт к возникновению ошибки при счёте.

Таким образом,. введение ограниченных типов перекладывает проверку допустимости значений с программиста на компилятор.

Пусть, например, в разделе описания указан перечислимый тип Год:

Type Year = ( Jan, Febr, Mart, Apr, May, Jun, Jul, Aug, Sent, Okt, Nov, Dec);

А нам предстоит решать задачи, связанные только с весенним временем года. Тогда можно ввести ограниченный тип: Spring Sum = Маy .. Aug; который является частью перечислимого типа.

При определении ограниченного типа указываются начальные и конечные значения диапазона, разделённые двумя точками.

Общий вид описания ограниченного типа:

Type имя типа = константа 1 .. константа N;

Общий вид описания переменных ограниченного типа:

Var имя переменной: имя типа;

Пример.

Type T = 1... 100;

Var A, B: T;

Переменные А и В могут принимать любые значения из диапазона 1..100.

При использовании ограниченного типа должно выполняться следующее

Правила:

1) обе граничные константы должны быть одинакового типа;

2) начальное значение не должно быть больше конечного;

3) тип констант может быть любой простой, кроме действительного (целый, символьный, логический, перечислимый).

Пример. К= 15 ... 70; - целый

Lit = ‘A’ ... ‘ z’ ; - символьный

Summer = Jun ... Aug ; - переменный

Если константы имеют стандартный типа можно делать непосредственно в разделе переменных.

Пример. Var S1, S2: 1..100;

Sim : ‘A’..’R’;

Тип констант называется базовым. Над переменными ограниченного типа разрешается выполнять все операции, которые допустимы для данных его базового типа.

Пример. Если переменная К принимает только целые значения 4,5,6,7,8,9, то лучше дать описание: Var K: 4..9; чем Var K: Integer; И вот почему. В случае выхода ‘K’ за диапазон 4..9 в первом варианте (ограниченный тип) будет выдано диагностическое сообщение об ошибке. Во втором варианте (целый тип) может быть выдан неверный результат.

Целый тип описания переменных рекомендуется использовать только тогда , когда диапазон значения переменной либо заранее неизвестен, либо занимает весь допустимый в языке Паскаль диапазон для целого типа.

Пример. Вычислить W = a ln |x| при |x| <1

W = при |x| >=1

Program usl;

Var A,X,W : Real;

Label : Error;

Begin

Writeln (‘ввести данные’);

Write (‘A=’);

Readln (A);

Write (‘X=’);

Readln (X);

If Abs (X) <1 Then Writeln (‘W=’, A*ln (Abs(X)))

Else If Sqr (X) >A Then begin Writeln (‘ошибка’);

goto Error

End.

Else Writeln (‘W=’, Sqrt (A-Sqrt(X)));

Error: End.

Пример. Составить программу для вывода возможных значений координат X и Y в зависимости от № квадранта.

Program Kvadrant;

Var Number : Integer;

Begin

Writeln (‘N=’);

Readln (Number);

Case Number of

1: Writeln (‘X и Y >0/’)

2: Writeln (‘X < 0/ , Y > 0/’);

3: Writeln (‘X и Y <0/’);

4: Writeln (‘X >0/ , Y <0/’);

End;

End.

Пример. Вывод первых дести натуральных чисел в возрастающем порядке.

Program Num 10;

Const KN = 10;

Var N:Integer;

Begin

For N:=1 To KN Do

Write (N:6);

Writeln;

End.

Program Num 10;

Const KN = 10;

Var N:Integer;

Begin

N:=0;

Rеpeat

N:=N+1;

Write (N);

Until N>=KN;

End.

Пример. Определить к, при котором функция становится меньше или равна а.

Program Inter;

Var X,A,P:Real;

K: Integer;

Begin

Writeln (‘ввести X,A’);

Read (X,A);

K:=1;

P:=X;

Write P/K >A Do

Begin

K: = K+1;

P: = P*X;

End;

Writeln (‘K = ‘, K);

End.

Program Inter;

Var X,A,P : Real;

K: Integer;

Begin

Writeln (‘Ввести X,A’);

Readln (X,A);

K: = 0;

P: = 1;

Repeat

K : = K+1;

P : = P*X;

Until P/K <=A;

Write(‘K = ‘,K);

End.

Пример. Вычислить сумму бесконечного ряда с точностью до члена ряда, меньшего Е: Z = 1+

Рекуррентная формула Yn = Y n-1 * X / n

Program Ryad;

Var X, Eps,Y,Z:Real;

N:Integer;

Begin

Writeln (‘Ввести X, Eps’);

Readln (‘X, Eps’);

N: = 0’

Y: = 1;

Z: = 1;

While Y > = Eps Do Begin

N: = N+1;

Y: = Y*X/N;

Z: = Z+Y;

End;

Write (‘Z = ‘Z);

End.