Какое значение имеет служебное слово const

от admin

Const

В С/С++ есть простой модификатор, который делает переменную постоянной (константной).

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

Указатели на константные переменные

До этого момента все указатели, которые мы рассматривали, были неконстантными указателями на неконстантные значения:

Однако, что произойдет, если указатель будет указывать на константную переменную?

Фрагмент кода, приведенный выше, не скомпилируется: мы не можем присвоить неконстантному указателю константную переменную. Здесь есть смысл, ведь на то она и константа, что её значение нельзя изменить. Гипотетически, если бы мы могли присвоить константное значение неконстантному указателю, то тогда мы могли бы разыменовать неконстантный указатель и изменить значение этой же константы. А это уже является нарушением самого понятия «константа».

Указатели на константные значения

Указатель на константное значение — это неконстантный указатель, который указывает на неизменное значение. Для объявления указателя на константное значение, используется ключевое слово const перед типом данных:

В примере, приведенном выше, ptr указывает на константный целочисленный тип данных.

Рассмотрим следующий пример:

Указатель на константную переменную может указывать и на неконстантную переменную. Подумайте об этом так: указатель на константную переменную обрабатывает переменную как константу при получении доступа к ней независимо от того, была ли эта переменная изначально определена как const или нет. Таким образом, следующее в порядке вещей:

Но не следующее:

Указателю на константное значение, который сам при этом не является константным (он просто указывает на константное значение), можно присвоить и другое значение:

Константные указатели

Мы также можем сделать указатель константным. Константный указатель — это указатель, значение которого не может быть изменено после инициализации. Для объявления константного указателя используется ключевое слово const между звёздочкой и именем указателя:

Подобно обычным константным переменным, константный указатель должен быть инициализирован значением при объявлении. Это означает, что он всегда будет указывать на один и тот же адрес. В вышеприведенном примере ptr всегда будет указывать на адрес value (до тех пор, пока указатель не выйдет из области видимости и не уничтожится):

Однако, поскольку переменная value, на которую указывает указатель, не является константой, то её значение можно изменить путем разыменования константного указателя:

Константные указатели на константные значения

Наконец, можно объявить константный указатель на константное значение, используя ключевое слово const как перед типом данных, так и перед именем указателя:

Константный указатель на константное значение нельзя перенаправить указывать на другое значение также, как и значение, на которое он указывает, — нельзя изменить.

Ссылка на константу

Объявить ссылку на константное значение можно путем добавления ключевого слова const перед типом данных:

Константной ссылки не бывает, так как ссылка сама по определению константна. Чаще всегда, если говорят “константая ссылка” имеют ввиду ссылку на константу. Для указателей же это разыне вещи.

Константные ссылки в качестве параметров функции

Рассмотрим пример константной ссылки в качестве параметра функции. Это позволяет получить доступ к аргументу без его копирования, гарантируя, что функция не изменит значение, на которое ссылается ссылка:

5. Синтаксис языка Pascal. Алфавит, комментарии, идентификаторы, константы, служебные слова.

Алфавит Pascal включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.

Буквы – это буквы латинского алфавита от a до z и от A до Z, а также знак подчеркивания _. Нет различия между прописными и строчными буквами алфавита, если только они не входят в символьные или строковые выражения.

Цифры – арабские цифры от 0 до 9.

Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0..9, остальные шесть – латинскими A..F.

Специальные символы – это символы + – * / = , ‘ . : ; , . [ ] ( ) < >^ @ $ #

К специальным также относятся следующие пары символом: < > <= >= := (* *) (. .)

Зарезервированные (служебные) слова: and, asm, array, begin, case, const, construction, destructor, div, do, downto, else, end, file, for, function, goto, if, implementation, in, inline, interface, label, mod, nil, not, object, of, or, packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor.

Идентификаторы – имена констант, переменных, меток, типов, объектов, процедур, функций, модулей, программ и т.д. В качестве идентификатора можно использовать любые последовательности символов, удовлетворяющих следующим ограничениям:

1. идентификатор может состоять из букв латинского алфавита, цифр, знака подчеркивания; другие символы в идентификаторе не допустимы;

2. идентификатор не может начинаться с цифры;

3. идентификатор не может совпадать ни с одним из зарезервированных слов;

4. длина идентификатора может быть произвольной, но значащими считаются первые 63 символа.

Константы. В качестве констант могут использоваться целые, вещественные, шестнадцатеричные числа, логические константы, символы, строки символов, конструкторы множеств и признак неопределенного указателя NIL.

Тип константы определяется способом записи ее значения. Например:

с1 = 17; (константа типа integer)

c2 = 3.14; (константа типа real)

c3 = ‘A’; (константа типа char)

c4 = ‘3.14’; (константа типа string)

c5 = false; (константа типа boolean)

Целые числа записываются со знаком или без него по обычным правилам, могут принимать значения от -2147483648 до +2147483847.

Вещественные числа записываются со знаком или без него с использованием десятичной точки и/или экспоненциальной части (е или Е за которой следуют «+» или «-» и десятичный порядок – например, 3.14е-2 = 3.14*10 -2 ).

Шестнадцатеричное число – состоит из шестнадцатеричных цифр, которым предшествует знак $. Диапазон – от $00000000 до $FFFFFFFF.

Логическая константа – это либо слово FALSE (ложь) либо TRUE (истина).

Символьная константа – это любой символ, заключенный в апострофы (пример – ‘z’).

Строковая константа – любая последовательность символов, заключенная в апострофы.

Конструктор множества – список элементов множества, обрамленных квадратными скобками (пример [1, 2, 3, 4..7, 12).

Комментарии разрешается вставлять в любое место программы, где по смыслу может стоять пробел. Комментарии обрамляются ограничителями – <комментарий> или (* комментарий *). Можно вкладывать комментарии с ограничителями разных типов друг в друга: < (* *) >или (* < >*).

Синтаксис на примере программы:

Program My_first_program;

text = ‘Ya programmiruyu na Pascale’;

В данной программе-примере 6 строк. Строки выделяют некоторые смысловые фрагменты текста и могут не связываться с конкретными действиями в программе. Пробел в Pascal используется как разделитель отдельных конструкций языка и не может использоваться произвольно. Поэтому в названии программы (My_first_program) используются символы подчеркивания. В языке игнорируется различие по высоте букв (заглавные и строчные), если только это не связано с текстовыми константами.

Первая строка – слово Program зарезервировано и содержит объявление имени программы. Зарезервированные слова не могут использоваться в качестве идентификатора (имени) объекта программы – переменной, константы и т.д. Вторая строка – const – содержит зарезервированное слово const, означающее, что далее будут описываться одна или несколько констант. Константы – такие объекты программы, которые не могут изменять свои значения. Описать константу – значит указать ее имя и значение (третья строка: text – имя константы, ‘Ya programmiruyu na Pascale’ – значение константы). text – константа типа строки символов (признаком этого являются апострофы). Четвертая строка – зарезервированное слово begin – начало главной части программы (раздела операторов). Пятая строка: оператор wtiteln(text) – вывод значения константы text на экран. Слово writeln не является зарезервированным, но является средством вывода данных, поэтому переопределять его не стоит. Шестая строка: зарезервированное слово end с точкой – конец программы. За сочетанием end. может идти какой угодно текст, он не будет обрабатываться компилятором.

Читать:
Служба rdp windows 7 как называется

Какое значение имеет служебное слово const

Любая программа выполняет над исходными данными некоторые расчеты. При этом, как и переменные или константы в математике, отдельные элементы данных обозначаются даваемыми программистом именами (идентификаторами). Любые идентификаторы в языке Паскаль строятся по следующим правилам:

· имена могут включать латинские буквы, цифры и знак подчеркивания (для простоты опустим некоторые другие символы, разрешенные в именах);

· имя состоит из одного слова; если требуется пробел в имени, он заменяется на подчеркивание: так, My _1 будет правильным идентификатором, а My 1 — нет;

· имя всегда начинается с буквы: возможен объект с именем A 1 , но не 1 A ; прописные и строчные буквы в именах не различаются Паскалем: x 1 и X 1 — это одна и та же величина;

· имена не могут совпадать с зарезервированными в языке служебными словами, обозначающими разрешенные в языке операции над данными: например, нельзя назвать Begin или BEGIN ни одну величину в программе, так как begin —зарезервированное служебное слово, а прописные и строчные буквы в служебных словах также не различаются. Познакомиться с большинством служебных слов мы сможем в процессе изучения языка.

2.1. Константы

Константой называют величину, значение которой не меняется в процессе выполнения программы.

Числовые константы служат для записи чисел. Различают следующие их виды:

Целочисленные (целые) константы: записываются со знаком + или — , или без знака, по обычным арифметическим правилам:

Вещественные числа могут записываться в одной из двух форм:

обычная запись: 2.5 -3.14 2. — обратите внимание, что целая часть отделяется от дробной символом точки;

экспоненциальная ("научная") форма: в этой записи вещественное число представляется в виде m *10 p , где m — мантисса или основание числа, 0.1≤| m |≤1, p — порядок числа, заданный целочисленной константой. Действительно, любое вещественное число можно представить в экспоненциальной форме:

99.005 0.99005*10 2

Во всех IBM -совместимых компьютерах вещественные числа хранятся как совокупность мантиссы и порядка, что позволяет упростить операции над ними, используя специальную арифметику, отдельно обрабатывающую мантиссу и порядок. Для программной записи числа в экспоненциальной форме в качестве обозначения "умножить на 10 в степени" используется символ E или e (латинские):

-153.5 -0.1535*10 3 -0.1535 E 3 или -1.535 E 02

99.005 0.99005*10 2 0.99005 E +2 или 9.9005 e +01

Без принятия специальных мер, программа на Паскале будет выводить на экран и принтер вещественные числа именно в такой форме. Кроме того, такая форма удобна для записи очень маленьких и очень больших чисел:

Поскольку размер памяти, отводимой под мантиссу и порядок, ограничен, то вещественные числа всегда представляются в памяти компьютера с некоторой погрешностью. Например, простейшая вещественная дробь 2/3 дает в десятичном представлении 0,666666. и, независимо от размера памяти, выделяемой для хранения числа, невозможно хранить все его знаки в дробной части. Одной из типичных проблем программирования является учет возможных погрешностей при работе с вещественными числами.

Кроме числовых констант существуют и другие их виды:

логические константы служат для проверки истинности или ложности некоторых условий в программе и могут принимать только одно из двух значений: служебное слово true обозначает истину, а false — ложь;

символьные константы могут принимать значение любого печатаемого символа и записываются как символ, заключенный в апострофы (‘одинарные кавычки’):

В последнем случае значение символьной константы равно символу пробела. Если требуется записать сам символ апострофа как символьную константу, внутри внешних апострофов он удваивается: »» .

К символьным также относятся константы вида # X , где X — числовое значение от 0 до 255 включительно, представляющее собой десятичный ASCII -код символа. Таблицы ASCII -кодов, используемых операционными системами DOS и Windows , приведены в Приложении 1. Например, значение #65 будет соответствовать коду буквы ‘ A ‘ латинской. Обработка нажатий клавиш и расширенные коды клавиатуры описаны в гл. 24 и Приложении 5.

Строковые константы — это любые последовательности символов, заключенных в апострофы. Как правило, строковые константы служат для записи приглашений к вводу данных, выдаваемых программой, вывода диагностических сообщений и т. п.:

‘Введите значение X :’

Если в строковой константе необходимо записать сам символ апострофа, это делается так же, как для символьных констант.

Именованные константы перечисляются в разделе описаний программы оператором следующего вида:

Имя N =Значение N ;

Ключевое слово const показывает начало раздела описаний именованных констант. Ясно, что зачастую удобнее обращаться к константе по имени, чем каждый раз переписывать ее числовое или строковое значение. Приведем пример раздела:

const e =2.7182818285;

lang =’ Turbo Pascal 7.1′;

Здесь описана числовая константа e со значением основания натурального логарифма и строковая константа с именем lang , содержащая строку ‘ Turbo Pascal 7.1’ .

Каждое даваемое программистом имя должно быть уникальным в пределах одной программы. Если мы включим этот раздел в свою программу, мы уже не сможем создать в ней других объектов с именами e и lang .

2.2. Переменные и типы переменных

Переменными называют величины, значения которых могут изменяться в процессе выполнения программы. Каждая переменная задается своим уникальным именем, построенным по правилам, указанным в начале главы. Максимально возможная длина имени зависит от реализации Паскаля, теоретически можно давать переменным имена вплоть до 63 символов длиной, что едва ли актуально — обычно имена не длиннее 5-10 символов.

Поскольку любые данные в памяти компьютера хранятся в числовой форме и двоичной системе счисления, кроме имени, переменной обязательно следует присвоить и тип, определяющий диапазон значений, принимаемых переменной, и способ ее обработки машиной. Поясним сказанное на примере. Как видно из Приложения 1, большая латинская буква ‘ A ‘ имеет десятичный код 65, или 01000001 в двоичном представлении. Без дополнительной информации о типе данных, хранящихся в некоторой ячейке памяти, компьютеру было бы невозможно решить, что именно представляют из себя эти данные — число 65, код символа ‘ A ‘ или что-то еще. В любом языке программирования, в том числе и в Паскале, существует стандартный набор типов, к которым может быть отнесена та или иная совокупность ячеек памяти. Информацию о типах данных Паскаля удобно свести в таблицу. Строки этой таблицы будут упорядочены по старшинству типов, от самого "младшего", требующего наименьшее число байт для представления, и, соответственно, представляющего наименьший диапазон возможных значений, до самого "старшего", представляющего наибольший диапазон значений. В табл. 2.1 представлены не все возможные, а лишь основные типы данных Паскаля.

Служебное слово CONST в программе на языке PASCAL фиксирует начало раздела программы содержащего​

const — служебное слово задающее программе константу, то есть неизменяемое значение.

Оно задаётся следующим образом:

const

Pi = 3.14;

Name = ‘Михаил’

a = 123;

Cлужебное слово CONST в программе на языке PASCAL фиксирует начало раздела программы содержащего​ константы.

Похожие статьи