Каково значение констант в программе

В работе рассказывается о использовании констант в языке программирования С++. Приведённая теория соответствует базовому уровню, и может быть полезна для тех, кто начинает изучать данный язык программирования.

Ключевые слова

ЯЗЫК ПРОГРАММИРОВАНИЯ С++, УКАЗАТЕЛЬ НА КОНСТАНТУ, КОНСТАНТЫ, ПРОГРАММИРОВАНИЕ

Текст научной работы

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

В С++ предусмотрены два типа констант — литеральные и символьные. Литеральная константа — это значение, непосредственно задаваемое в программе; тип и значение такой константы определяется ее внешним видом. Различают следующие виды литеральных констант: числовые, символьные, строковые.

Числовые константы могут быть целыми и вещественными. Целые, в свою очередь, могут иметь десятичное (типа int), восьмеричное или шестнадцатеричное представление:

Константы и переменные

  • десятичные: -18, 0, 12, 345, …;
  • восьмеричные (начинаются с нуля): 00, 014, 045, 0777…;
  • шестнадцатеричные (начинаются с 0х): 0х0000, 0х1A27, 0х5FFF, 0хFFF,….

По умолчанию целые десятичные константы имеют тип int.

Константам целого типа, используемым в программе, можно явно указать требуемый тип с помощью суффиксов L, l (long), U и u (unsigned). Например, константа 15L будет иметь тип long. Можно использовать суффиксы L и U одновременно, например, 24UL.

Константы вещественного типа имеют по умолчанию тип double. Примеры вещественных констант: -1.314, 3.98, 0.8765, … Также можно явно указать тип константы с помощью суффиксов F, f (float), L и l (long). Например, константа 1.57E+5L будет иметь тип long, а константа 3.22f — тип float.

Литеральные символьные константы задаются в апострофах, и их можно классифицировать на:

  • клавиатурные: ‘8’, ‘g’, ‘K’,…;
  • кодовые (используются для задания управляющих и разделительных символов и пишутся в паре с символом обратной косой черты (обратный «слеш»)): ‘n’, ‘a’, ‘b’, ‘t’, ‘\’, »’,…; назначение таких констант представлено ниже в таблице 1.5;
  • числовые кодовые (используются для задания ASCII-кодов символов): ‘xhhh’ (h — шестнадцатеричная цифра), ‘ooo’ (o — восьмеричная цифра). Например, комбинация клавиш «Ctrl+Z» имеет код ASCII, равный 26; ему соответствует 032 в восьмеричной системе и 0x1A в шестнадцатеричной.

Десятичный код ASCII

Шестнадцатеричный код ASCII

Возврат на одну позицию

Обратная косая черта,

Строковые константы представляют собой последовательности символов, заключенные в двойные кавычки: «Мир», «Ошибка», «Укажите номер элемента», «Press any key…», … Для хранения строковой константы требуется на 1 байт памяти больше, чем число символов между двойными кавычками в строковой константе. Этот дополнительный байт требуется для хранения кода-признака конца строки (000, или ). Допускается использовать управляющие и разделительные символы внутри строковых констант, но в этом случае они указываются без апострофов: «nНомер элемента», «Данные:nвторая строка», и т.д.

Читайте также:
Программа для скорости машины

Значение слова константа. Что такое константа.

Строковые константы типа wchar_t записываются с префиксом L, например: L»Year».

Символьные (не литеральные) константы (именные константы) — это константы, представленные именем; они объявляются так же, как и переменные соответствующих типов, но с указанием слова const (ключевое слово const иногда называют квалификатором или просто — спецификатором). Например:

const int a = 10;const float x = 1.75;const double y = 1.54E+12;const char s = ‘A’;const char Ch[] = «строка символов»;const wchar_t a[ ] = L»Year»;

Как было сказано выше, в отличие от переменной, значение инициализированной константы изменить нельзя.

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

const char* p1 = «number»; //указатель на константуchar const* p2 = «number»; //указатель на константуchar *const p3 = «number»; //константный указательconst char *const p4 = «number»; //константный указатель// на константу

Первые две строки в этом примере аналогичны друг другу (тип и слово const можно менять местами). Отмечу также, что в данном примере *const является оператором объявления указателя, наряду с символом *.

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

char s[] = «number»; //массив символовconst char* p = s; //указатель на константуs[0] = ‘z’; //изменяем один из символов (ошибки нет)p[0] = ‘z’; //будет выдано сообщение об ошибке://попытка изменить константу

Символьные (не литеральные) константы можно задавать также средствами препроцессора, на основе использования директивы #define:

#define DT 0.00017 // определяем числовую константу#define ST «Press any key…» // определяем строковую константу

После этого в тексте программы можно будет использовать имена DT и ST. Препроцессор перед компиляцией программы везде заменит имена DT и ST на соответствующие им значения 0.00017 и «Press any key…».

Символьные (не литеральные) целочисленные константы можно задавать также с использованием типа enum.

Замечание. Ключевое слово const относится к одному из двух так называемых cv-спецификаторов. Второй спецификатор определяется ключевым словом volatile.

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

Читайте также:
Рабочая программа подготовка к егэ по русскому языку

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

Если переменная не объявлена со спецификатором volatile, компилятор имеет право осуществлять описанную выше оптимизацию. Указание же спецификатора volatile говорит компилятору, что такая оптимизация не допускается.

Время существования и область видимости переменных в C++

  1. Дмитриев В.Л.

О программировании ветвлений в C++

  1. Дмитриев В.Л.

Об одном подходе к реализации компьютерной системы оценки знаний учащихся

  1. Дмитриев В.Л.

Игровые задачи как мотивация к изучению программирования

  1. Дмитриев В.Л.

Разработка помощника для систем, обеспечивающих электронное обучение

  1. Дмитриев В.Л.

Цитировать

Дмитриев, В.Л. Константы в C++ / В.Л. Дмитриев. — Текст : электронный // NovaInfo, 2017. — № 76. — С. 74-77. — URL: https://novainfo.ru/article/14477 (дата обращения: 09.07.2023).

Поделиться

Настоящий ресурс содержит материалы 16+

Источник: novainfo.ru

Константа (программирование)

Конста́нта в программировании — способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.

Использование именованных констант — приём, повышающий надёжность и безошибочность программ [1] , позволяя избегать использования «магических чисел».

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

Например, mvi A, 0, где 0 является числовой константой-литералом.

Именованные константы упростили процесс отладки и сопровождения программ:

  • Исчезла необходимость помнить конкретные числа — имена запоминаются легче;
  • Ошибки в именах обычно выявляются компилятором автоматически (кроме ситуаций, когда ошибочно использовано имя другой константы аналогичного типа);
  • Упростился процесс внесения изменений: значение константы задано в программе всего в одном месте.

Не все языки программирования позволяют защищать от изменения косвенно адресуемые области памяти. Такая возможность обычно имеется в языках программирования высокого уровня, что повышает надёжность кода и возможность его повторного использования. Преимущества именованных констант реализуются только при соответствующем стиле работы программиста, начиная с самых ранних этапов разработки программы.

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

Источник: wiki2.org

Константы

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

Строковые константы — это последовательность символов, заключенная в двойные кавычки: «Это пример не самой длинной строковой константы!».

Читайте также:
В какой программе можно увеличить объем волос

Целые константы бывают следующих форматов:

Десятичные могут быть представлены как последовательность цифр, начинающаяся не с нуля, например: 123; 2384.

Восьмеричные константы — последовательность восьмеричных цифр (от 0 до 7), начинающаяся с нуля, например: 034; 047.

Шестнадцатеричный формат констант начинается с символов Ох или ОХ с последующими шестнадцатеричными цифрами (0. 9, A. F), например: 0xF4; 0X5D. Буквенные символы при этом могут быть представлены в как в нижнем, так и в верхнем регистре.

Длинные целые константы, используемые в переменных типа long, определяются латинской буквой I или L сразу после константы без пробела: 36L, 012L, 0x52L.

Вещественные константы — числа с плавающей запятой могут быть записаны в десятичном формате (24.58; 13.0;.71) или в экспоненциальной форме (1е4; 5е+2; 2.2е-5, при этом в мантиссе может пропускаться целая или дробная часть:.2е4).

Типизованные константы используются как неременные, значение которых не может быть изменено после инициализации.

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

Рассмотрим небольшой пример:

// Объявление переменной int i;

// Инициализация переменной i

// литеральной целочисленной константой 25600

// Теперь объявим типизованную

// строковую константу MyCatName

// и инициализируем ее литеральной строковой константой

const MyCatName[] = «Рудик»;

Символьные константы в С++ занимают в памяти 1 байт и, следовательно, могут принимать значения от 0 до 255 (см. табл. 1.2). При этом существует ряд символов, которые не отображаются при печати, — они выполняют специальные действия: возврат каретки, табуляция и т.д., и называются символами escape-последовательности. Термин «escape-последовательность» ввела компания Epson, ставшая первой фирмой, которая для управления выводом информации на своих принтерах стала использовать неотображаемые символы. Исторически сложилось так, что управляющие последовательности начинались с кода с десятичным значением 27 (0x1В), что соответствовало символу «Escape» кодировки ASCII,

Escape-символы в программе изображаются в виде обратного слеша, за которым следует буква или символ (см. табл. 1.3).

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

const double pi = 3.1415;

const int Radius = 3;

double Square = 0;

Square = pi * Radius * Radius;

// Выведем вычисленное значение

// и осуществим перевод строки (‘п’)

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

Информация о работе «Типы данных С++»

Раздел: Информатика, программирование
Количество знаков с пробелами: 27321
Количество таблиц: 4
Количество изображений: 0

Источник: kazedu.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru