Почему используют константы?

      Комментарии к записи Почему используют константы? отключены

Если заранее известно, что некий параметр не будет менять значение в процессе выполнения программы, зачем создавать лишние сложности и вводить константу? Почему нельзя вставить его прямо в текст соответствующей инструкции? Например, если программа начинается с директивы

#define PHONE 555-1234

то, чтобы вывести номер телефона на дисплей, надо написать следующую инструкцию:

puts(PHONE);

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

puts(555-1234);


Рис. 10. Использование констант позволяет легко вносить изменения в программу

и не тратить время на введение в текст директивы #define и определение имени константы.

Однако использование констант позволяет легче вносить изменения в программу. Предположим для примера, что программа 20 раз использует ваш номер телефона. Может случиться так, что номер изменится, и тогда, если вы не использовали константу, вам придется редактировать 20 функций puts(). Если же вы по ошибке отредактируете только 19 функций puts(), это приведет к тому, что в одном случае будет использован неправильный номер. Введение константы позволит ограничиться изменением только одного места программы, а именно, потребуется вставить новый номер телефона в директиву #define. Как показано на рис.10, все функции puts() будут исправлены автоматически.

Все сказанное выше справедливо и для числовых констант. Вместо использования директивы

#define TAX 0.06

и выполнения вычислений с использованием константы TAX, можно было бы ввести значение 0.06 прямо в формулу. Но, допустим, размер налога в вашем штате изменится с 6 до 6.5 процентов, тогда, если вы не использовали константу, вам придется исправлять эту цифру везде, где она встречается, вместо того, чтобы ограничиться простым изменением директивы #define. Помимо перечисленных преимуществ, константы дают возможность символьного представления трудных для запоминания числовых величин, а в некоторых случаях сокращают исходный текст (и, как следствие, ускоряют его ввод), если заменить часто встречаемую фразу, например стандартное сообщение, более коротким именем.

Определение переменных

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

type name;

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

main()


Рис. 11. Определение переменной

Внутри функции main() создается целочисленная переменная int и переменная с плавающей точкой, которая называется tax_rate (рис.11).

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

main() { int count, children, year; float tax_rate, discount; }

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

int count; main(){…..}

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

Присваивание значения

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

Числовым или символьным переменным (определение строк мы обсудим позже) значение может присваиваться при их определении:

main() { int count = 5; char initial = ‘A’; float rate = 0.55; }

В этих инструкциях мы определили целочисленную переменную count и присвоили ей начальное значение 5. Далее мы определили символьную переменную initial, присвоив ей букву ‘А’ в качестве начального значения, и переменную типа float с именем rate и начальным значением 0.55. Значение символьной переменной должно быть заключено в одинарные кавычки, а число с плавающей точкой должно иметь хотя бы по одному знаку слева и справа от точки.

Если переменная определена, можно присваивать ей значение в отдельной инструкции, используя оператор присваивания (=):

count = 5; initial = ‘A’; rate = 0.55;

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

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

Статьи к прочтению:

Константы. Ключевое слово const. C++ для начинающих. Урок #6.


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