Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
5.75 Mб
Скачать

#Define my_friend "Марина"

на экране появится имя Марины. Почему? Потому что директива #define определяет константу с именем

MY_FRIEND, имеющую значение "Марина".

Константы в Си++

Компиляторы Си++ и некоторые компиляторы Си имеют дополнительный способ определения констант. Можно определить константу, описать тип данных и присвоить значение, используя ключевое слово const. Такое определение должно помещаться внутри тела функции, в отличие от директивы, помещаемой все- гда вне его:

main()

{

const int CHILDREN = 8; const char INIT = 'C';

....;

....;

}

Приведенные инструкции определяют целочисленную константу со значением 8 и символьную константу, имеющую значение 'C'. Их можно определить и так:

#define CHILDREN 8

#define INIT 'C'

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

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

#define PHONE "555-1234"

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

puts(PHONE);

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

puts("555-1234");

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

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

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

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

#define TAX 0.06

и выполнения вычислений с использованием константы TAX, можно было бы ввести значение 0.06 прямо

в формулу. Но, допустим, размер налога в вашем штате изменится с 6 до 6.5 процентов, тогда, если вы не использовали константу, вам придется исправлять эту цифру везде, где она встречается, вместо того, чтобы ограничиться простым изменением директивы #define*.

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

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

type name;

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

main()

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

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

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

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

main()

{

int count, children, year; float tax_rate, discount;

}

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

int count; main()

{

.....

}

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