Ограниченный тип (диапазон, интервал)
Множество значений простых типов упорядоченно и конечно (разумеется, кроме вещественного типа). Если программисту необходимо сузить диапазон значений, принимаемых некоторым объектом скалярного типа, то он осуществляет это в явном виде наложением ограничения на стандартный или определенный ранее перечислимый тип, который в этом случае называется базовым. Если какая-то переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором ограниченном диапазоне, то ее можно рассматривать как переменную ограниченного типа (иногда говорят интервальный тип или тип диапазон). Пример. 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.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|