Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Зачем нужны константы в программировании?

Dark Crafter Знаток (335), закрыт 5 лет назад
Зачем они нужны? Я например не представляю, как их можно использовать. Зачем они нужны, если можно просто число написать?
Дополнен 5 лет назад
Короче, понял. Чисто для удобства.
Лучший ответ
Молот Шотландцев Высший разум (303047) 5 лет назад
Если "просто число написать" то прикажете что ли каждый раз писать какое-нибудь 6743267.0764357?
Dark CrafterЗнаток (335) 5 лет назад
Спасибо, уже разобрался)
Остальные ответы
111 111 Ученик (112) 5 лет назад
null
Dark CrafterЗнаток (335) 5 лет назад
Так можно просто число записать. Зачем для этого целую перменную создавать?!
Παν μέτρον άριστον Мыслитель (9586) Во-первых, переменную можно перезаписывать. Во-вторых, у переменной есть имя, которое говорит о том, что она содержит. В-третьих, константа - это переменная, которую нельзя модифицировать. нужно это для того, чтобы избежать непреднамеренной модификации.
Psy666 Nobody Мудрец (13014) 5 лет назад
Для удобства.
Константа определяется один раз. Если потом надо ее изменить - проблем нет.
А числа в большом коде найти нереально
Παν μέτρον άριστονМыслитель (9586) 5 лет назад
Не для удобства, а для безопасности от ошибок.
Habreth Профи (999) 5 лет назад
Переменная, как вы можете догадаться из названия, изменяется со временем. Если он не меняется, "нет потерь". Когда вы сообщаете компилятору, что значение не изменится, компилятор может выполнить целую кучу оптимизаций, например, непосредственно вложить значение и никогда не выделять пространство для константы в стеке.

Однако вы не всегда можете рассчитывать на то, что ваш компилятор достаточно умный, чтобы иметь возможность правильно определить, изменится ли значение после его установки. В любой ситуации, когда компилятор не может определить это со 100-процентной уверенностью, компилятор будет ошибаться со стороны безопасности и предположить, что он может измениться. Это может привести к различным последствиям производительности, например, избегать встраивания, не оптимизировать определенные циклы, создавая объектный код, который не является parallelism -другим.

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

Как использовать константы вместо буквенных чисел:

1) Это делает код более читаемым. Всем известно, что 3.14 (надеюсь), не все знают, что 3.07 - ставка подоходного налога в ПА. Это пример знаний о доменах, и не все, кто будет поддерживать ваш код в будущем (например, налоговое программное обеспечение), узнают об этом.

2) Это экономит работу при внесении изменений. Переход и изменение каждые 3.07 до 3.18, если изменение ставки налога в будущем будет раздражать. Вы всегда хотите свести к минимуму изменения и в идеале сделать одно изменение. Чем больше одновременных изменений вы должны сделать, тем выше риск того, что вы что-то забудете, что приведет к ошибкам.

3) Вы избегаете рискованных ошибок. Представьте, что существовали два государства с ставкой налога на прибыль в размере 3,05, а затем одна из них изменилась до 3,18, а другая - на 3,07. Просто перейдя и заменив, вы можете столкнуться с серьезными ошибками. Конечно, многие значения целых или строковых констант более распространены, чем "3.07". Например, число 7 может представлять количество дней в неделю и что-то еще. В больших программах очень сложно определить, что означает каждое литеральное значение.

4). В случае текстового текста обычно используется символическое имя для строк, чтобы позволить пулам строк быстро меняться в случае поддержки нескольких языков.

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

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

29
Михаил ГуровУченик (114) 2 года назад
Отличный ответ (тот кто задал вопрос долбан, выбрал какое то го*н
о в роли ответа...)
Я Красавчег Мыслитель (7010) 5 лет назад
Ну например число пи до десятого знака для точности. Часто вы его понапишите!? А число E?
Παν μέτρον άριστονМыслитель (9586) 5 лет назад
Они не обязаны быть константами, это просто переменная будет.
Я Красавчег Мыслитель (7010) Ну так все можно делать не константами. Константа для того и нужна, что бы показать прогеру что изменение ее чревато серьезными последствиями. Например если изменить число пи то при вычислениях мы уже не получим длинну окружности!
Anton Искусственный Интеллект (107998) 5 лет назад
потому что если ты будешь везде вписывать числа, то в итоге запутаешься. а константа имеет имя, по которому понятно, для чего она нужна и где её использовать
Παν μέτρον άριστονМыслитель (9586) 5 лет назад
Это переменная, а не константа.
Anton Искусственный Интеллект (107998) серьезно? это как ты определил?
ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО* Высший разум (362541) 5 лет назад
Переменная - это ячейка для данных, которые могут измениться.
Константа - это ячейка для данных, которые НЕ могут измениться.
Например, радиус окружности - это переменная. А число pi - константа, ни при каких обстоятельствах число ПИ не может меняться..
И если вдруг скажем значение константы где-то пытается измениться (по тексту программы вы пытаетесь константе что-то присвоить), то срабатывает exception и вы понимаете, что у вас где-то в коде косяк.
Вспоминается анекдот в тему: один студент написал реферат и в самом начале написал, что т. к. никто мой реферат читать не будет, принимаю значение ПИ равным четырем. И дальше все расчеты были исходя из этого. Но к несчастью, его реферат прочитали....
Aleks Nots Просветленный (26378) 5 лет назад
Вопрос задан как-то так, что "два в одном"
1 - Зачем числам давать имена, если можно просто писать числа?
2 - Зачем константы?

1
Допустим у Вас в программе используются два параметра
Пенсионный возраст = 60
курс доллара к рублю = 60

Если Вы для каждого числа используете свое имя:
float Pens_Vozr = 60
float Rubl_za_Dollar = 60
То в дальнейшем, когда пенсионный возраст станет 70 лет, а курс 120 рублей за доллар, Вы измените эти числа только в одном месте, и они изменятся во всех местах где они применяются.

А если писать просто числа, то разобраться где 60 надо менять на 70, а где на 120 и поменять во всей программе, весьма непросто и велика вероятность ошибиться.

2
Если в языке есть возможность обявлять переменную константой, то это позволяет обнаруживать попытки изменить ее значение и помечать эти случаи как ошибки в программе при ее компиляции.
Алекс Куха Высший разум (474717) 5 лет назад
Для безопасности. Константы имеют атрибут readonly
Похожие вопросы