Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

12.4. Определения констант

Приведем программу вычисления среднегодовой температуры для задания 1 из раздела 12.3.

VAR s,i:Integer;

t :array[1..365] of Integer;

BEGIN

for i:=1 to 365 do ReadLn(t[i]);

s:=0;

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

WriteLn(s/365)

END.

Пусть нам потребовалось переделать эту программу на вычисление средней недельной температуры. Для этого достаточно везде в тексте программы число (константу) 365 заменить на число (константу) 7. В больших программах одна и та же константа может встречаться десятки раз и подобный процесс может потребовать значительного расхода времени. В разделе 10.4 мы уже сталкивались с такой ситуацией. Там мы нашли выход в том, что вместо константы записывали переменную величину. Но в нашем случае этого не получится, так как Паскаль запрещает задавать границу в описании массива переменной величиной. В таких случаях поступают следующим образом. Константе придумывают имя (как переменной), например k, и в специальном разделе CONST ей задается значение. Вот наша программа с использованием константы k:

CONST k=365; {Обратите внимание, что в определении вместо := стоит =}

VAR s,i :Integer;

t :array [1..k] of Integer;

BEGIN

for i:=1 to k do ReadLn(t[i]);

s:=0;

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

WriteLn(s/k)

END.

B приведенном виде программа стала универсальной. Теперь для ее переделки под средне-недельную температуру достаточно в одном месте поменять определение k = 365 на k = 7.

Значению константы запрещено меняться в процессе выполнения программы, то есть запрещены операторы вида k:=30 и ReadLn(k). Паскаль присматривает за этим.

Тип константы указывать нельзя. Паскаль сам догадается о типе по записи:

CONST n =800; {тип целочисленный}

е =2.7; {тип Real}

bukva ='ж'; {тип Char}

Slash ='/'; {тип Char}

slovo ='хорошо'; {тип String}

OK =true; {тип Boolean}

Имя константы образуется из букв, цифр и знаков подчеркивания так же, как и имя переменной. Важное отличие константы от переменной в том, что значение переменной задается на этапе выполнения программы, а значение константы - раньше, на этапе компиляции. Рекомендуем вам там, где можно, вместо переменных применять константы. Программа получается строже.

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

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

CONST n :integer =800;

е :Real =2.7;

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

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 вместо 12 присвоений можно было записать так:

CONST k=3;h=4;

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

(25,28,26,20),

(11,18,20,25));

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