Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Const-параметры




ТИПИЗИРОВАННЫЕ КОНСТАНТЫ

План заняття

1. Поняття та характеристика типізованих констант Delphi

2. Приклади застосування типізованих констант

 

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

const A: integer = 1;const B: array [1..3] of integer = (1, 2, 3);

В C# константы всегда типизированы - как при использовании модификатораconst, так и readonly.

В Delphi при использовании директивы компилятора {$J+} (установлено поумолчанию) типизованные константы ведут себя как обычные переменные, которыеинициализируются одновременно с описанием, т.е. их значение может быть измененов ходе выполнения программы:

const A: integer = 1;X:= A;A:= 2;

В C# действуют более строгие правила - если константа, то поменять еезначение невозможно. Если же используется поле, тоего содержимое может быть изменено в контексте объекта:

// класс-оберткаpublic class Const {// число-константа public readonly int A = 1;// метод изменяет значение поля A public void ChangeA(int NewValue) { A = NewValue; }}

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

procedure A;const B: integer = 0;begin
Inc(B); ShowMessage(IntToStr(B));end;
procedure Do;begin
A; A; A;end;

Результаты вывода: 1, 2, 3

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

 

В Delphi семантический смысл const-параметров заключается в указаниикомпилятору на возможность оптимизации передачи в функцию (процедуру, метод)неизменяемой ссылки на некоторый объект программы. Так, например, конструкциятипа:


procedure A(const S: string);

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

В C# не предусмотрено прямого эквивалента const-параметров. Тем не менее, в случаенеобходимости может быть построена семантически эквивалентная конструкция(аналогия вышеприведенному примеру):


class ReadOnlyString {
ReadOnlyString(string S) { this.S = S; }
public readonly string S;
static void Test(ReadOnlyString s) { Console.Write(s.S); }
static void Main() {
string s = "проверка const-параметров";
ReadOnlyString.Test(new ReadOnlyString(s));
}
}

Приведенный код иллюстрирует использованиеклассов- (т.н. wrappers) и полей.

Контрольні питання

1. Навести поняття та характеристику типізованих констант Delphi

2. Охарактеризувати принципи застосування типізованих констант

 


САМОСТІЙНА РОБОТА СТУДЕНТА

ЗМІСТОВИЙ МОДУЛЬ 4: ФАЙЛОВІ СТРУКТУРИ ДАНИХ. ДИНАМІЧНІ СТРУКТУРИ ДАНИХ

ТЕМА 4.2: ДИНАМІЧНІ СТРУКТУРИ

 

Самостійне заняття №25 -Підпрограми




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 577; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.