Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2010, 00:09   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,875
По умолчанию

Если речь о Делфи, то там есть типизированные и не типизированные константы. Для первого типа выделяется память, для второго - замена при компиляции. Значения типизированных констант можно менять из программы при каких-то там опциях компилятору, т.к. они по сути ничем не отличаются от переменных. Не типизированные константы менять нельзя ни при каких условиях.
Arigato вне форума Ответить с цитированием
Старый 27.03.2010, 09:26   #12
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А как отличить, во что превратится константа?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.03.2010, 12:48   #13
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А как отличить, во что превратится константа?
Главный вопрос Зачем ?
BOBAH13 вне форума Ответить с цитированием
Старый 27.03.2010, 13:00   #14
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Главный вопрос Зачем ?
Цитата:
Значения типизированных констант можно менять из программы при каких-то там опциях компилятору, т.к. они по сути ничем не отличаются от переменных. Не типизированные константы менять нельзя ни при каких условиях.
Чтобы знать, какую можно менять, какую нет.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.03.2010, 13:56   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,875
По умолчанию

По умолчанию ни какую менять нельзя.
Arigato вне форума Ответить с цитированием
Старый 27.03.2010, 14:39   #16
СВ9
 
Регистрация: 25.03.2010
Сообщений: 9
По умолчанию

Объявление констант, как и предварительное объявление
типа переменной, как в Паскале, это дань строгому стилю программирования, избавляющих от лишних ошибок.
Проще просмотреть раздел констант на предмет всех
статических данных, чем лазить по всей программе.
Если будете изучать чужой код, то разница в этих стилях программирования сразу будет заметна.
СВ9 вне форума Ответить с цитированием
Старый 27.03.2010, 17:15   #17
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Цитата:
Константа в программировании — это способ адресования к данным, изменение которых рассматриваемой программой запрещено.
Использование констант, особенно, именованных — мощный инструмент, повышающий надёжность и безошибочность программ.
http://ru.wikipedia.org/wiki/Констан...ограммирование)
Смысл в том, что они удобны в применении, упрощают написание кода.
Например(не требуется писать CASE и IF с ELSE):
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Thlam = (hAA, hAB, hAC, hAD);

const
  hlam :array[Thlam] of string = ('AA', 'AB', 'AC', 'AD');

var
  I :Byte;

begin
 Writeln;
 for I := 0 to 3 do
  Writeln(I, ' = ', hlam[Thlam(I)]);
 Readln;
end.
В отличие от переменной, при объявлении константы тип явно не указывают. Тип константы определяется ее видом.

Последний раз редактировалось Alter; 27.03.2010 в 17:18.
Alter вне форума Ответить с цитированием
Старый 29.03.2010, 09:31   #18
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Помимо всего прочего посредством констант реализуются перечисления. Многие пользуются enum? Крайне удобная вещь. Почему знаю - в as3 натюрлих перечислений нет. Поэтому пришлось копаться искать как их реализовать.
Код:
package core
{
	public class Enum
	{
		
	}
}
Код:
/**
 * @see core.enum
 **/
package casino.components.enum
{
	import core.Enum;

	public class RankEnum extends core.Enum
	{
		public static const TWO: RankEnum = new RankEnum();      
		public static const THREE: RankEnum = new RankEnum(); 
                ...
                public static const JOKER: RankEnum = new RankEnum();   
	}
}
Код:
         public class Card extends UIComponent
	{
		private var _suit: SuitEnum; 
		private var _rank: RankEnum; 
                ...
Как это реализовать без констант?
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!

Последний раз редактировалось crazy horse; 29.03.2010 в 10:21.
crazy horse вне форума Ответить с цитированием
Старый 29.03.2010, 10:09   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Так все таки использование констант дает увеличение скорости выполнения в дельфи или не дает?
Дает для констант простых типов - символ, числа. Выполнение операций с такими константами будет быстрей, чем с переменными.
Ну и дзен и фень-шуй программирования также рекомендуют использовать константы вместо переменных везде где только можно.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видимость констант tae1980 Microsoft Office Excel 5 23.11.2009 12:06
Задание размеров формы с помощью констант (C++) Хохол Общие вопросы .NET 2 20.11.2009 13:19
считывание констант artemavd Общие вопросы Delphi 18 15.10.2008 15:32
произвольный выбор из констант Arhangel_bes Помощь студентам 11 12.10.2008 22:07
Замена констант в RichEdit. Pashekka Компоненты Delphi 1 24.09.2007 09:42