Добавить в цитаты Настройки чтения

Страница 20 из 502

<b>    Console.WriteLine(&quot;Норма прибыли: &quot; + rate_of_return);</b>

<b>    Console.WriteLine(&quot;В течение &quot; + years + &quot; лет&quot;);</b>

<b>    for(i =0; i &lt; years; i++)</b>

<b>        amount = amount + (amount * rate_of_return);</b>

<b>    Console.WriteLine(&quot;Будущая стоимость равна $&quot; + amount);</b>

<b>  }</b>

<b>}</b>

Вот как выглядит результат выполнения этой программы.

<b>Первоначальные капиталовложения: $1000 </b>

<b>Норма прибыли: 0.07 </b>

<b>В течение 10 лет</b>

<b>Будущая стоимость равна $1967.151357289565322490000</b>

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

Символы

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

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

<b>char ch; </b>

<b>ch = 'X';</b>

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

<b>Console'.WriteLine (&quot;Значение ch равно: &quot; + ch) ;</b>

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

<b>char ch;</b>

<b>ch = 88; // ошибка, не выйдет</b>

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

Логический тип данных

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

В приведенном ниже примере программы демонстрируется применение типа bool.

<b>// Продемонстрировать применение типа bool.</b>

<b>using System;</b>

<b>class BoolDemo {</b>

<b>  static void Main() { </b>

<b>    bool b; </b>

<b>    b = false;</b>

<b>    Console.WriteLine(&quot;b равно &quot; + b); </b>

<b>    b = true;</b>

<b>    Console.WriteLine(&quot;b равно &quot; + b);</b>

<b>    // Логическое значение может управлять оператором if. </b>

<b>    if(b) Console.WriteLine(&quot;Выполняется.&quot;);</b>

<b>    b = false;</b>

<b>    if(b) Console.WriteLine(&quot;He выполняется.&quot;);</b>

<b>    // Результатом выполнения оператора отношения </b>

<b>    // является логическое значение.</b>

<b>    Console.WriteLine(&quot;10 &gt; 9 равно &quot; + (10 &gt; 9));</b>

<b>  }</b>

<b>}</b>

Эта программа дает следующий результат.

<b>b равно False </b>

<b>b равно True </b>

<b>Выполняется.</b>

<b>10 &gt; 9 равно True</b>

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