Переменные и константы в языке программирования Паскаль
В Паскале, как и в других языках программирования данные делятся на константы и переменные. Для получения текущих значений переменных и констант к ним можно обращаться в программе по именам.
Переменная — это именованная величина определенного типа, способная в процессе работы программы менять свое значение.
Обычно переменная получает текущее значение в результате выполнения оператора присваивания (например, s := 0 – переменной s присваивается значение 0). Это значение будет сохраняться до тех пор, пока этой переменной не будет присвоено новое значение (при этом предыдущее значение теряется безвозвратно!)
Важно: попытка присвоить переменной значение иного типа является ошибкой.
Описание переменных
Все переменные, которые будут использоваться в программе на языке Паскаль, описываются в разделе описаний. Раздел начинается со служебного слова var , после которого могут располагаться описания в следующих формах:
- список имен: тип;
- или
- имя: тип := выражение;
- или
- имя: тип = выражение; // для совместимости с Delphi
- или
- имя := выражение;
В случае, если необходимо описать несколько переменных, то они перечисляются в списке через запятую. Например:
- var
- a1, a2, a3: integer;
- p: real := 5.7;
- str := ‘PascalABC.NET’;
- k := 1;
В последних двух случаях тип переменной определяется автоматически по типу выражения в правой части. Заметим, что по умолчанию все переменные, описанные в главной программе, обнуляются.
PascalABC.NET позволяет описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными. Для внутриблочного описания можно использовать формы приведенные выше. Например:
- begin
- var a1,a2,a3: integer;
- var p: real := 2.5;
- var str := ‘ ‘;
- end;
Описание констант
Константы – это элементы данных, значения которых устанавливаются в разделе описаний и не изменяются в процессе выполнения программы
Раздел описания именованных констант в языке программирования Паскаль начинается с ключевого слова const после которого следуют описания в следующих формах:
- имя константы = значение;
- или
- имя константы : тип = значение;
- const
- MaxLen = 100;
- Pi = 3.14;
- g = 9.8;
- Day = ‘Sunday’;
Использование именованных констант позволяет улучшить читаемость программы и облегчает внесение в нее изменений.
Copyright © 2014-2021, Урок информатики
Все права защищены
Переменные и константы
Любая программа обрабатывает данные (информацию, объекты). Данные, с которыми работает программа, хранятся в памяти компьютера (чаще оперативной). Программа должна знать, где они лежат, каким объемом памяти она располагает, как следует интерпретировать данные (например, как числа или строки). Для обеспечения программе доступа к участкам памяти существует механизм переменных.
Переменные описываются в начале программы и как бы сообщают о том, с какими данными будет работать программа и какой объем памяти они займут. Другими словами, резервируется память. Но это не значит, что в эти ячейки памяти помещаются конкретные значения (данные). На момент резервирования памяти в них может быть что угодно.
В процессе выполнения программы в ячейки памяти будут помещаться конкретные значения, извлекаться оттуда, изменяться, снова записываться. Мы же через программу обращаемся к ним посредством имен переменных, которые были описаны в начале программы.
Имена переменных могут быть почти любым сочетанием английских букв и цифр (без пробелов). Нельзя чтобы имена переменных совпадали со словами, которые являются какими-либо командами самого языка программирования. Нельзя начинать имена переменных с цифры или специального символа. Для того чтобы имена переменных были удобны для восприятия, надо стараться придерживаться пары правил. Если программа не простейший пример, то имена переменных должны быть осмысленными словами или их сокращениями. Желательно, чтобы имена переменных не были слишком длинными.
В Pascal прописные и строчные буквы в именах переменных не различаются.
При описании переменных указывается не только их имя, но и тип. Тип переменных сообщает о том, сколько отвести под них памяти и что за данные там планируется сохранять. Точнее хранится там всегда будут числа в двоичной системе счисления. Но что они значат, может быть чем угодно: целым или дробным числом, символом, строкой, массивом, записью и др. Т.е. тип переменной определяет то, что мы можем сохранить в участке памяти, с которым связана описываемая переменная.
В примере ниже происходит ввод значений трех переменных разных типов и выполнение допустимых для их типов операций. Если тип переменных integer, то им можно присваивать только целые числа в диапазоне от -32768 до 32767. Под тип integer в языке программирования Паскаль отводится 2 байта, что равно 16 битам, а это значит, что можно хранить 2 16 (65536) значений (отрицательные и положительные числа, а также ноль). В этих диапазонах переменные int1 и int2 могут принимать какие угодно значения. При попытке записи в переменную значения не ее типа возникнет ошибка.
var int1,int2: integer; r: real; ch: char; begin write('Type integer: '); readln(int1); write('Type real: '); readln(r); write('Type char: '); readln(ch); int2:= int1 mod 10; int1:= int1 div 10; r:= r + 0.5; ch:= chr(ord(ch)+1); writeln(int1:5, int2:3, r:7:2, ch:3); end.
Пример работы программы:
Type integer: 32 Type real: 5.34 Type char: A 3 2 5.84 B
Итак, переменные связаны с участками памяти, содержимое которых может меняется по ходу выполнения программы в определенных пределах.
Длина переменных
Ранние версии компиляторов Паскаля имели ограничение на учитываемую длину имен переменных. В имени учитывались лишь первые восемь символов. Поэтому, например, такие переменные как variable1 и variable2 компилятор воспринимал как одно и тоже, т.к. первые восемь символов совпадали.
В современных версиях компиляторов с языка Pascal таких ограничений нет. Например, в результате работы приведенной ниже программы как в среде Free Pascal, так и Turbo Pascal 7.1 на экран выводятся два разных числа (10 и 20). Это значит, что компиляторы учитывают больше восьми символов в именах переменных (и других идентификаторов: именах констант, процедур и др.).
var variable111, variable222: integer; begin variable111 := 10; variable222 := 20; writeln(variable111); writeln(variable222); readln end.
Константы
Что делать, если в программе требуется постоянно использовать какое-нибудь одно и тоже число. Вроде бы это не проблема. Можно описать переменную, затем присвоить ей значение и не изменять его в программе. Однако это не всегда удобно (можно нечаянно изменить), поэтому в языках программирования для хранения данных помимо переменных существуют константы.
Главное преимущество констант заключается в том, что они описываются в начале программы и им сразу там же присваивается значение, а при выполнении программы константы не изменяются. Но если при правке кода, программист решит поменять значение константы, он впишет в ее описание другое значение, а сам код программы редактировать не придется. Поэтому, если в программе часто планируется использоваться какое-то значение, опишите его в разделе констант, который в программе располагается до раздела переменных:
const конст1 = значение; конст2 = значение;
Значениями констант могут быть данные большинства типов, используемых в языке Паскаль.
Рассмотрим такую программу:
const N = 10; var i: byte; sum: word; begin sum := 0; for i:=1 to N do sum := sum + i; writeln('Sum of ', N, ' numbers = ', sum); end.
В ней используется константа n со значением 10. Программа считает сумму десяти чисел в диапазоне от 1 до 10. Если нам захочется посчитать сумму чисел до 20, то достаточно будет изменить значение константы в начале программы. Если бы константа не использовалась, то пришлось бы просмотреть весь код программы и исправить значение 10 на 20. Если программа большая, то легко ошибиться: не найти или исправить не то значение.
Типизированные константы
В языке Паскаль помимо обычных констант используются типизированные константы. Можно сказать, что они занимают промежуточное положение между переменными и константами. Они получают значение при описании (как константы), но могут его менять в теле программы (как переменные).
Описываются типизированные константы в разделе констант:
const конст1: тип = значение; конст2: тип = значение;
const NUMS: integer = 10;
Константы в Pascal.
Иногда, бывает так, что у нас в программе встречаются величины, которые не меняются в процессе выполнения программы (т.е. фактически они противоположность переменных). Такие величины называются константами. Константы указываются в специальном разделе, который называется Const.
В качестве констант в языке программирования Pascal могут использоваться:
- Целые числа. Они записываются со знаком или без знака и могут иметь значение от – 2 147 483 648 до + 2 147 483 647. Если константа имеет значение, выходящее за эти пределы, то в качестве значения константы необходимо использовать вещественные числа.
- Вещественные числа записываются со знаком или без знака с использованием десятичной точки или экспоненциальной части, которая начинается с символа «e», за которым следует десятичный порядок. Например, запись 3.14e5 означает 3,14*10 5 . А запись – 3.14e-4 означает – 3,14*10 -4 .
- Шестнадцатеричные числа, которые состоят из шестнадцатеричных цифр со знаком доллара «$» впереди. Диапазон шестнадцатеричных чисел — от $00000000 до $FFFFFFFF.
program number21; uses crt; Const G = 9.8; Var V, H: Real; begin clrscr; writeln (‘Введите высоту башни:’); readln (H); V:=Sqrt(2*G*H); writeln (‘Скорость падения равна ‘,V:6:3); readln end.
Строка №3. Раздел Const — это раздел, который описывает константы. Он должен находиться перед разделом Var, описывающий переменные. В данном случае, в разделе описания констант мы записываем константу «G», которая будет являться именем нашей константы (имя мы придумываем сами) и указываем для нее значение 9.8. В нашей программе константа «G» будет описывать ускорение свободного падения, которое, как известно, величина постоянная и равна 9.8 м/с. Тип константы определяется автоматически. Т.е. здесь, в отличии от раздела описания переменных Var не нужно указывать тип данных. В данном случае число 9.8 дробное, поэтому тип данных будет вещественным. Обратите внимание, что когда мы присваиваем константе какое-либо значение, то используется знак «=». Это отличает константы от переменных. Если Вы помните, то при присвоении переменной какого-либо значения используется знак «:=».
В строке №9 записываем формулу для расчета скорости свободного падения, которая, как известно, вычисляется по формуле V 2 =2gh
В появившемся окне введем высоту башни, например 10, и нажмем Enter.
Использование шестнадцатеричных чисел в качестве значения константы.
Program number22; Uses Crt; Const t = $f; Begin ClrScr; Write(t); ReadLn End.
В строке №3 записываем имя константы, которое придумываем сами. Например, назовем константу латинской буквой «t». Затем присваиваем константе значение $f. «f» в шестнадцатеричной системе счисления имеет значение 15.
В строке №6 выводим значение константы на экран.
Дополнение к материалу.
В качестве констант могут выступать не только числа. В следующих уроках вы сможете познакомиться с логическими константами, символными константами и строковыми константами.
Программирование на языке паскаль
Константа – именованный элемент программы, который не меняет свое значение. Перед употреблением должна быть объявлена в разделе констант const. Определены два типа констант: истинные и типизированные.
Истинная константа
Она объявляется со значением. Ее тип неизвестен, поэтому ее значение в программе менять нельзя:
Типизированная константа объявляется с типом и значением. В сущности это инициализированная переменная. Ее значение в программе менять можно.
Значением типизированной константы могут быть:
- Конкретные данные (число, строка).
- Выражение.
- Для указателей Nil или адрес локальной переменной.
- Файловый тип и тип Variant запрещены.
Как и Turbo Pascal, FPC поддерживает простые и типизированные константы.
Реализация объявлений простых констант одинакова во FPC, Turbo Pascal и Delphi.
Компилятору необходимо вычислять значение выражения в объявлении константы во время компиляции. Это значит, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении констант. Тем не менее, можно использовать такие операции и функции, как +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd. Можно объявить константы только следующих типов: порядковые, вещественные, Char и String. Правильные объявления констант:
r = 2.7182818; // Вещественная константа
i = 2; // Порядковая (целая) константа
c = ’4′; // Символьная константа
s = ‘Это строковая константа’; // Константа типа String
Простой константе не разрешается присваивать значение. Так, если даны вышеприведенные объявления, то следующая операция присваивания приведет к ошибке компилятора:
s:= ‘другая строка’;
Типизированные константы
Они служат для инициализации переменных. В отличие от простых констант, во время выполнения программы им можно присваивать значения. Они отличаются от обычных переменных тем, что автоматически получают значение в начале работы программы, а обычные переменные должны инициализироваться явным образом в ходе ее работы. Пусть дано объявление:
S: String = ‘Это типизированная константа’;
является допустимым присваиванием, где Func – это функция, возвращающая значение типа String. Типизированные константы часто используют для инициализации массивов и записей. Для массивов начальные значения должны быть отделены друг от друга запятой и указаны в круглых скобках. Количество значений должно в точности совпадать с количеством элементов массива в объявлении типа. Например,
tt: array [1..3] of string[20] = (‘ikke’, ‘gij’, ‘hij’);
ti: array [1..3] of Longint = (1,2,3);
Что касается константных записей, то все элементы записи в круглых скобках, отделенные друг от друга запятыми, должны быть указаны в формате Поле. Значение, например,
Origin: Point = (X:0.0; Y:0.0);
Порядок полей в константной записи должен совпадать с порядком полей в объявлении типа, иначе компилятор выдаст ошибку.
Замечание. Следует подчеркнуть, что типизированные константы получают начальные значения в начале работы программы. Это верно и для локальных типизированных констант. Локальные типизированные константы также инициализируются в начале работы программы. Если значение локальной типизированной константы менялось в предыдущем вызове функции, то это её изменённое значение сохраняется, то есть локальные типизированные константы не инициализируются при каждом вызове функции.
Ресурсные строки
Особый вид части объявления констант – это часть Resourcestring. Эта часть подобна секции Const, но поддерживает только константы типа строка и доступна только в режимах Delphi или objfpc.
Следующий пример представляет определение resourcestring:
Все константы строк определены в секции resourcestring и хранятся в специальных таблицах, позволяющих манипулировать значениями строк в реальном режиме с некоторыми особыми механизмами.
Семантически строки подобны константам. Им не могут быть присвоены значения, за исключением присвоения через специальный механизм в модуле objpas. Однако они могут быть использованы в присвоениях или выражениях, как обычные константы. Главное применение секции resourcestring – для обеспечения лёгкой интернационализации. Можно не меняя имени строки изменить ее содержания без перепрограммирования исходника.