Чтение онлайн

на главную - закладки

Жанры

Полное руководство. С# 4.0
Шрифт:

Результат выполнения этой программы выглядит следующим образом. Цена со скидкой: $16.9575

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

Рассмотрим еще один пример применения типа decimal. В этом примере рассчи тывается будущая

стоимость капиталовложений с фиксированной нормой прибыли в течение ряда лет. /* Применить тип decimal для расчета будущей стоимости капиталовложений. */ using System; class FutVal { static void Main { decimal amount; decimal rate_of_return; int years, i; amount = 1000.0M; rate_of_return = 0.07M; years = 10; Console.WriteLine("Первоначальные капиталовложения: $" + amount); Console.WriteLine("Норма прибыли: " + rate_of_return); Console.WriteLine("В течение " + years + " лет"); for(i = 0; i < years; i++) amount = amount + (amount * rate_of_return); Console.WriteLine("Будущая стоимость равна $" + amount); } }

Вот как выглядит результат выполнения этой программы. Первоначальные капиталовложения: $1000 Норма прибыли: 0.07 В течение 10 лет Будущая стоимость равна $1967.151357289565322490000

Обратите внимание на то, что результат выполнения приведенной выше програм мы представлен с точностью ДО целого ряда десятичных разрядов, т.е. с явным избыт ком по сравнению с тем, что обычно требуется! Далее в этой главе будет показано, как подобный результат приводится к более "привлекательному" виду. Символы

В C# символы представлены не 8-разрядным кодом, как во многих других языках программирования, например C++, а 16-разрядным кодом, который называется унико дом (Unicode). В уникоде набор символов представлен настолько широко, что он охва тывает символы практически из всех естественных языков на свете. Если для многих естественных языков, в том числе английского, французского и немецкого, характерны относительно небольшие алфавиты, то в ряде других языков, например китайском, употребляются довольно обширные наборы символов, которые нельзя представить 8-разрядным кодом. Для преодоления этого ограничения в C# определен тип char, представляющий 16-разрядные значения без знака в пределах от 0 до 65 535. При этом стандартный набор символов в 8-разрядном коде ASCII является подмножеством уни кода в пределах от 0 до 127. Следовательно, символы в коде ASCII по-прежнему оста ются действительными в С#.

Для того чтобы присвоить значение символьной переменной, достаточно заклю чить это значение (т.е. символ) в одинарные кавычки. Так, в приведенном ниже фраг менте кода переменной ch присваивается символ X. char ch; ch = 'X';

Значение типа char можно вывести на экран с помощью метода WriteLine. Например, в следующей строке кода на экран выводится значение переменной ch. Console.WriteLine("Значение ch равно: " + ch);

Несмотря на то что тип char определен в C# как целочисленный, его не следует путать со всеми остальными целочисленными типами. Дело в том, что в C# отсутству ет автоматическое преобразование символьных значений в целочисленные и обратно.

Например, следующий фрагмент кода содержит ошибку. char ch; ch = 88; // ошибка, не выйдет

Ошибочность приведенного выше фрагмента кода объясняется тем, что 88 — это целое значение, которое не преобразуется автоматически в символьное. При попытке скомпилировать данный фрагмент кода будет выдано

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

Тип bool представляет два логических значения: "истина" и "ложь". Эти логиче ские значения обозначаются в C# зарезервированными словами true и false соот ветственно. Следовательно, переменная или выражение типа bool будет принимать одно из этих логических значений. Кроме того, в C# не определено взаимное преобра зование логических и целых значений. Например, 1 не преобразуется в значение true, а 0 — в значение false.

В приведенном ниже примере программы демонстрируется применение типа bool. // Продемонстрировать применение типа bool. using System; class BoolDemo { static void Main { bool b; b = false; Console.WriteLine("b равно " + b); b = true; Console.WriteLine("b равно " + b); // Логическое значение может управлять оператором if. if(b) Console.WriteLine("Выполняется."); b = false; if (b) Console.WriteLine("He выполняется."); // Результатом выполнения оператора отношения // является логическое значение. Console.WriteLine("10 > 9 равно " + (10 > 9)); } }

Эта программа дает следующий результат. b равно False b равно True Выполняется. 10 > 9 равно True

В приведенной выше программе обнаруживаются три интересные особенно сти. Во-первых, при выводе логического значения типа bool с помощью метода WriteLine на экране появляется значение "True" или "False". Во-вторых, самого значения переменной типа bool достаточно для управления оператором if. Для это го не нужно, например, записывать оператор if следующим образом. if(b == true) ...

И в-третьих, результатом выполнения оператора отношения является логическое значение. Именно поэтому в результате вычисления выражения 10 > 9 на экран вы водится значение "True." Кроме того, выражение 10 > 9 следует заключить в скобки, поскольку оператор + имеет более высокий приоритет, чем оператор >. Некоторые возможности вывода

До сих пор при выводе с помощью метода WriteLine данные отображались в формате, используемом по умолчанию. Но в среде .NET Framework определен до статочно развитый механизм форматирования, позволяющий во всех деталях управ лять выводом данных. Форматированный ввод-вывод подробнее рассматривается далее в этой книге, а до тех пор полезно ознакомиться с некоторыми возможностями форма тирования. Они позволяют указать, в каком именно виде следует выводить значения с помощью метода WriteLine. Благодаря этому выводимый результат выглядит более привлекательно. Следует, однако, иметь в виду, что механизм форматирования поддерживает намного больше возможностей, а не только те, которые рассматривают ся в этом разделе.

При выводе списков данных в предыдущих примерах программ каждый элемент списка приходилось отделять знаком +, как в следующей строке. Console.WriteLine("Вы заказали " + 2 + " предмета по цене $" + 3 + " каждый.");

Конечно, такой способ вывода числовой информации удобен, но он не позволяет управлять внешним видом выводимой информации. Например, при выводе значения с плавающей точкой нельзя определить количество отображаемых десятичных раз рядов. Рассмотрим оператор Console.WriteLine("Деление 10/3 дает: " + 10.0/3.0);

Поделиться:
Популярные книги

Темный Лекарь

Токсик Саша
1. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь

6 Секретов мисс Недотроги

Суббота Светлана
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
6 Секретов мисс Недотроги

Planescape: Torment: "Пытка Вечностью"

Хесс Рисс
Фантастика:
фэнтези
5.00
рейтинг книги
Planescape: Torment: Пытка Вечностью

Матабар

Клеванский Кирилл Сергеевич
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар

От океана до степи

Стариков Антон
3. Игра в жизнь
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
От океана до степи

Возвышение Меркурия. Книга 15

Кронос Александр
15. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 15

Предложение джентльмена

Куин Джулия
3. Бриджертоны
Любовные романы:
исторические любовные романы
8.90
рейтинг книги
Предложение джентльмена

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит

Конунг Туманного острова

Чайка Дмитрий
12. Третий Рим
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Конунг Туманного острова

Черный Маг Императора 12

Герда Александр
12. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 12

Сделай это со мной снова

Рам Янка
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Сделай это со мной снова

На границе империй. Том 9. Часть 5

INDIGO
18. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 5

Выбор варианта

Ром Полина
Фантастика:
фэнтези
5.50
рейтинг книги
Выбор варианта

Свет во мраке

Михайлов Дем Алексеевич
8. Изгой
Фантастика:
фэнтези
7.30
рейтинг книги
Свет во мраке