Глава_3_Типы_данных_форматирование.ppt
- Количество слайдов: 18
СОСТАВ ЯЗЫКА С# 1. Алфавит. 2. Идентификатор. n n n В нотации Pascal каждое слово, входящее в идентификатор, начинается с заглавной буквы. Например: Age, Last. Name, Time. Of. Death. Венгерская нотация отличается от предыдущей наличием префикса, соответствующего типу величины. Например: f. Age, s. Name, i. Time. В нотации Camel с заглавной буквы начинается каждое слово идентификатора, кроме первого. Например: age, last. Name, time. Of. Death. 3. Комментарии. 4. Ключевые слова.
КЛЮЧЕВЫЕ СЛОВА C#
ОБЩИЕ СВЕДЕНИЯ О ТИПАХ ДАННЫХ Система типов. NET Типы-значения типы) (размерные Структуры Перечисления Простые типы Простые nullable типы Типы-ссылки (ссылочные типы) Классы Строки Массивы Делегаты Интерфейсы
РАЗЛИЧИЕ МЕЖДУ ТИПАМИ Принципиальное различие между размерными и ссылочными типами состоит в способе хранения их значений в памяти. У размерных типов фактическое значение хранится в стеке. У ссылочных типов в стеке хранится адрес переменной, но сам объект хранится в куче.
ОТЛИЧИЯ РАЗМЕРНЫХ ТИПОВ ОТ ТИПОВ-ССЫЛОК
При выполнении оператора присваивания в случае РАЗМЕРНОЙ ПЕРЕМЕННОЙ КОПИРУЕТСЯ ЗНАЧЕНИЕ, а в случае ССЫЛОЧНОЙ ПЕРЕМЕННОЙ КОПИРУЕТСЯ ССЫЛКА. struct Foo { public int x, y; } class Class 1 { public static void Main() { Foo f 1=new Foo (); f 1. x=100; f 1. y=100; Foo f 2=f 1; Console. Write. Line(“f 1. x={0} Console. Write. Line(“f 2. x={0} Console. Write. Line(“Изменяем f 2. x=200; Console. Write. Line(“f 1. x={0} Console. Write. Line(“f 2. x={0} } } f 1. y={1}”, f 1. x, f 1. y); f 2. y={1}”, f 2. x, f 2. y); f 2. x”); f 1. y={1}”, f 1. x, f 1. y); f 2. y={1}”, f 2. x, f 2. y);
БАЗОВЫЕ ТИПЫ ДАННЫХ ЯЗЫКА С#
ВЕЩЕСТВЕННЫЕ ТИПЫ float и double Пример 3. 2 Найти радиус круга по его площади. using System; class Find. Radius { public static void Main() { double r; double S; S = 10. 0; r = Math. Sqrt(S / 3. 1416); Console. Write. Line("Радиус равен " + r ) ; } } Результат выполнения этой программы таков: Радиус равен 1. 78412203012729 Float – 7 знакомест, double – 16 знакомест
ФИНАНСОВЫЙ ТИП decimal Предназначен для вычислений, связанных с денежными единицами. Он способен точно представить до 28 десятичных разрядов. Пример 3. 3 Использование типа decimal для вычисления скидки. using System; class Use. Decimal { public static void Main() { decimal price; decimal discount; / decimal discounted_price; // Вычисляем цену со скидкой. % price = 19. 95 m; discount = 0. 15 m; // Ставка дисконта равна 15% discounted_price = price - ( price * discount); Console. Write. Line("Цена со скидкой: $" + discounted_price); } } Результат работы этой программы выглядит так: Цена со скидкой: $16. 9575
ФИНАНСОВЫЙ ТИП decimal Пример 3. 4 Вычисление будущей стоимости капиталовложений using System; class Type. Decimal { public static void Main() { decimal vklad; decimal rate; int years, i; vklad = 1000. 0 M; rate = 0. 07 M; years = 10; Console. Write. Line("Исходный вклад: $" + vklad); Console. Write. Line("Норма прибыли: " + rate); Console. Write. Line("Через " + years + " лет"); for(i = 0 ; i < years; i++) vklad = vklad + (vklad * rate); Console. Write. Line("Будущая стоимость равна $" + vklad); } } Результаты работы этой программы имеют такой вид: Исходный вклад: $1000 Норма прибыли: 0. 07 Через 10 лет Будущая стоимость равна $1967. 15135728956532249
СИМВОЛЬНЫЙ ТИП сhar ch; ch = 'X'; Console. Write. Line("Это ch: " + ch); //вывод на экран Автоматического преобразования целочисленных значений в значения типа char не существует. Например, следующий фрагмент программы содержит ошибку. char ch; ch = 10; // Ошибка, это работать не будет.
ЛОГИЧЕСКИЙ ТИП bool Тип bool представляет значения ИСТИНА (true) и ЛОЖЬ (false) В С# не определено ни одно преобразование значения типа bool в целочисленное значение. Например, число 1 не преобразуется в значение true, а число 0 – в значение false.
Пример 3. 5. Демонстрация использования значений типа bool. using System; class Bool. Demo { public static void Main() { bool b; b = false; Console. Write. Line("b содержит " + b ) ; b = true; Console. Write. Line("b содержит " + b ) ; // Значение типа bool может управлять if-инструкцией. if(b) Console. Write. Line("Эта инструкция выполняется. "); b = false; if(b) Console. Write. Line( "Эта инструкция не выполняется. ") ; // Оператор отношения возвращает результат типа bool. Console. Write. Line("10 > 9 равно " + (10 > 9)); } } Эта программа генерирует следующий результат: b содержит False b содержит True Эта инструкция выполняется. 10 > 9 равно True
ЯВНОЕ И НЕЯВНОЕ ПРЕОБРАЗОВАНИЕ ВСТРОЕННЫХ ТИПОВ short х; int у = 5; х = (short)у; //явное преобразование short x = 1 ; int у = х; //неявное преобразование int i; float f; i = 10; f = i; // float-переменной присваивается int-значение short х; int у = 5; х = у; //не скомпилируете
Демонстрация автоматического преобразования типов из long в double using System; class Lto. D { public static void Main() { long L; double D; L = 100123285 L; D = L; Console. Write. Line("L и D: " + L + " " + D); } }
СЛЕДУЮЩАЯ ВЕРСИЯ ПРЕДЫДУЩЕЙ ПРОГРАММЫ НЕДОПУСТИМА using System; // Эта программа не будет скомпилирована class Lto. D { public static void Main() { long L; double D; D = 100123285. 0; L = D; // Неверно!!! Console. Write. Line("L и D: " + L + " " + D); } }
СХЕМА ПРЕОБРАЗОВАНИЯ ТИПОВ


