Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Определения констант

Приведем программу вычисления среднегодовой температуры для задания 1 из 1.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. В больших программах одна и та же константа может встречаться десятки раз и подобный процесс может потребовать значительного расхода времени. В 6.4 мы уже сталкивались с такой ситуацией. Там мы нашли выход в том, что вместо константы записывали переменную величину. Но в нашем случае этого не получится, так как Паскаль запрещает задавать границу в описании массива переменной величиной. В таких случаях поступают следующим образом. Константе придумывают имя (как переменной), например k, и в специальном разделеconstей задается значение. Вот наша программа с использованием константыk:

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

VARs,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.

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

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

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

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

e =2.7; {тип Real}

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

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

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

OK =true; {тип Boolean}

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

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

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

CONST n :Integer =800;

e :Real=2.7;

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

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

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

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

VARs,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 и т.д. В разделе операторов эти значенияможноменять.

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

Constk =3; n=4;

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

( 25, 28, 26, 20),

( 11, 18, 20, 25));

.......

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]