Типизированные константы

В блоке CONST можно описывать не только константы, но и переменные величины. Эти переменные величины из-за того, что они описаны в таком странном месте, приобретают неудачное название типизированные константы, но переменными быть не перестают, а самое для нас главное - здесь им можно удобно придавать начальные значения. Вот пример:

CONST n:Integer =800;

e:Real =2.7;

Вот как запишется программа для вычисления средней недельной температуры из 12.4, если массив t описать как типизированную константу:

CONST k =7; { k - обычная, нетипизированная константа}

t: array [1..k] of Integer = (-14, -12, -8, -2, 0, 1, -3);

{ t - типизированная константа}

VAR s,i:Integer;

BEGIN

s:=0;

for i:=1 to k do s:=s+t[i];

WriteLn(s/k)

END.

Здесь в круглых скобках задается список начальных значений переменной t, а именно: t[1] равно -14, t[2] равно -12 и т.д. В разделе операторов эти значения можно менять.

Двумерным массивам начальные значения придаются аналогично. Так в программе из 12.3 вместо двенадцати присвоений можно было записать так:

Const k =3; n=4;

t: array [1..k,1..n] of Integer = ((-8,-14,-19,-18),

(25, 28, 26, 20),

(11, 18, 20, 25));

.......

Обратите внимание на расстановку скобок.

Придумываем типы данных

Паскаль предоставляет возможность не только пользоваться стандартными типами данных, но также именовать их по-другому и даже создавать свои типы.

Запись TYPE bukva = Char

означает: ТИП bukva "равен" (эквивалентен) типу Char,

то есть мы просто придумали типу Char еще одно название "bukva". Теперь все равно, как записать:

VAR a,b:Char

или VAR a,b:bukva.

Еще примеры: type Vector = array [1..10] of Integer;

matritsa = array [1..8] of Vector;

var a,b:Vector;

c:matritsa;

d: array [1.. 8] of Vector;

Здесь мы создали два новых типа с именами Vector и matritsa. Очевидно, переменные c и d описаны одинаково. Обратите внимание, что вместо type matritsa = array [1.. 8] of Vector

можно записать type matritsa = array [1.. 8] of array [1..10] of Integer

или type matritsa = array [1..8,1..10] of Integer.

Зачем нужны новые типы? Вот две из нескольких причин. Одна – наглядность и удобство. Другая - чисто грамматическая - Паскаль разрешает в определенных конструкциях записывать лишь имена типов, а не их определения. Например, когда мы изучим процедуры с параметрами, мы узнаем, что

писать procedure p(a: array[1..10] of Integer) неправильно,

а писать procedure p(a: Vector) правильно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: