Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Перечислимый тип

Проект 2-3. Вычисление суммы регулярных выплат по кредиту

Использование пробелов и круглых скобок

Для улучшения читабельности программы выражения в C# могут содержать символы табуляции и пробелы. Например, следующие два выражения аналогичны, но второе гораздо легче для чтения:

x=10/y*(127/x);

x = 10 / y * (127/x);

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

x = y/3-34*temp+127;
x = (y/3) - (34*temp) + 127;

@S2 = RegPay.cs

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

Для вычисления размера платежа используется следующая формула:
где в переменной IntRate указывается процент выплат по кредиту, в переменной Principal содержится значение стартового баланса, в переменной PayPerYear указывается число платежей в год, а в переменной NumYears задается срок погашения кредита в годах.

Отметим, что в знаменателе формулы вы должны возвести в степень соответствующее значение. Для этого используется математический метод Math.Pow(). Вот как он вызывается:

result = Math.Pow(base, exp);

Метод Math() возвращает значение основания степени (base), возведенного в показатель степени (exp). Аргументы метода Pow() должны иметь тип double, и возвращаемое методом значение также будет иметь тип double. Это означает, что вам необходимо использовать приведение типов для преобразования типа double в тип decimal.

 

ЛОГИЧЕСКАЯ СТРУКТУРА. Перечислимый тип представляет собой упорядоченный тип данных, определяемый программистом, т.е. программист перечисляет все значения, которые может принимать переменная этого типа. Значения являются неповторяющимися в пределах программы идентификаторами, количество которых не может быть больше 2 147 483 647, например,

enum color{red,blue,green};

enum work_day{mo,tu,we,th,fr};

enum winter_day{december,january,february};

 

МАШИННОЕ ПРЕДСТАВЛЕНИЕ. Для переменной перечислимого типа в С++ выделяется 4-е байта, в который записывается порядковый номер присваиваемого значения. Порядковый номер определяется из описанного типа, причём нумерация начинается с 0. Имена из списка перечислимого типа являются константами, например,

color B,С;

B:=bluе; (* B=1 *)

C:=green; (* С=2 *)

printf(“B- %d C- %d”, B, C); - выдаст на экран: B- 1 C- 2

 

После выполнения данного фрагмента программы на экран будут выданы цифры 1 и 2. Содержимое памяти для переменных B И C при этом следующее: В - 00000001; С - 00000010.

ОПЕРАЦИИ. На физическом уровне над переменными перечислимого типа определены операции создания, уничтожения, выбора, обновления. При этом выполняется определение порядкового номера идентификатора по его значению и, наоборот, по номеру идентификатора определяется его значение.

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

 

Перечисления C#


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

const int maryBirthday = 1955; const int ivanBirthday = 1980; const int pavelBirthday = 1976;

 


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

enum FriendsBirthday { const int maryBirthday = 1955; const int ivanBirthday = 1980; const int pavelBirthday = 1976; }

 

Теперь три символические константы являются элементами одного перечисления типа FriendsBirthday.
Каждое перечисление имеет свой базовый тип, которым может быть любой встроенный целочисленный тип С# (int, long, short и т. д.), за исключением char.
Перечисление задается следующим образом:
[атрибуты] [модификаторы] enum идентификатор[: базовый тип] (список перечислений);
Атрибуты и модификаторы будут рассматриваться далее. Пока давайте остановимся на второй части этого объявления. Перечисление начинается с ключевого слова enum, которое сопровождается идентификатором типа:
enum MyEnurnerators
Базовый тип — основной тип для перечисления. Если вы не учитываете этот описатель при создании перечисления, то будут использоваться значения по умолчанию int. Но вы можете применить любой из целочисленных типов (например, ushort, long), за исключением char. Например, следующий фрагмент кода объявляет перечисление целых чисел без знака (uint):

enum Sizes: uint { Small = 1, Middle = 2, Large = 3 }

 

Внутри каждого перечисления записывается список возможных значений перечисления, разделенных запятой. Каждое значение может представлять собой либо просто набор символических констант, либо набор символических констант в сочетании с литеральным целочисленным значением. Если вы не укажете для элементов перечисления целочисленных значений, то компилятор пронумерует их сам, начиная с 0. Например, следующие фрагменты кода аналогичны:

enum Sizes: uint { Small, Middle, Large }

 

Если вы объявите свое перечисление следующим образом:

enum Sizes: uint { Small, Middle = 20, Large }

 

то элементы перечисления будут иметь такие числовые значения:
Small = 0;
Middle = 20;
Large = 21.
Давайте рассмотрим пример, который наглядно показывает, каким образом перечисления помогают упростить код приложения.

class ScreenResolutions { //перечисление размеров мониторов в дюймах enum Screens { Small = 14, Medium = 17, Large = 19, SuperLarge = 21 } static void Main() { System.Console.WriteLine("Самые маленькие мониторы имеют размер: {0}", (int) Screens.Small); System.Console.WriteLine("Самые большие мониторы имеют размер: {0}", (int) Screens.SuperLarge); } }

 

Как видите, значение перечисления (SuperLarge) должно быть специфицировано именем перечисления (Screens). По умолчанию, значение перечисления представляется его символическим именем (типа Small или Medium). Если вы хотите отобразить значение константы перечисления, то должны привести константу к ее основному типу (в данном случае int).
Целочисленное значение передается в функцию WriteLine, и оно отображается на экране.

 

<== предыдущая лекция | следующая лекция ==>
Символьный тип | Указатели. Интервальный тип языка PASCAL
Поделиться с друзьями:


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


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



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




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