лекция 1 Введение общие положения.pptx
- Количество слайдов: 29
Платформа. NET Framework включает: • общеязыковую исполняющую среду (CLR — Common Language Runtime); • библиотеку классов (FCL — Framework Class Library). От исходного кода к последовательности процессорных команд Исходный текст программы ------- трансляция в код на общем для всех исходных языков промежуточном языке(условно псевдокод или CIL – Common Intermediate Language)---- появление последовательности процессорных команд во время исполнения команд CIL средой CLR.
Программа C# C++ jscript Сборка Текст программы на CIL + Метаданные Исполнение средой CLR Последователь ность процессорных команд
Сборка Компилятор платформы. NET создает модуль DLL или EXE. Содержимое этих модулей - это сборка на языке IL (промежуточный язык). В том случае, когда к блоку инструкций IL обращается среда выполнения. NET, он компилируется в платформенно – специфичные инструкции.
Архитектура процессоров может быть различна Power PC, x 86, IA 64, ALPHA и др. В момент когда коды промежуточной программы (управляемые коды) ставятся на исполнение, подключается среда CLR (общеязыковая среда исполнения), которая с помощью встроенного JIT – (Just – In – Time вовремя, по мере надобности ) компилятора переводит управляемые коды в набор исполняемых машинных инструкций и обеспечивает разнообразные вспомогательные действия для исполняемой программы.
Строительные блоки. NET ( CLR, CTS, CLS) CLR –стандартная среда выполнения для языков. Обнаруживает и загружает типы. NET, производит управление в соответствии с командами. CLR выполняет всю низкоуровневую работу: автоматическое управление памятью, межъязыковым взаимодействием, развертыванием двоичных библиотек и т. д. CLR состоит из двух главных компонентов. Первый компонент – это ядро среды выполнения, которое реализовано в виде библиотеки mscoree. dll. Второй главный компонент – это библиотека базовых классов. Главная сборка библиотеки базовых классов представлена файлом mscorlib. dll CTS – стандартная система типов, полностью описывает все типы данных, поддерживаемые средой выполнения CLS – набор правил, определяющих подмножество общих типов данных , в отношении которых гарантируется, что они безопасны при использовании во всех языках. NET.
Пример. Правило 1. Правила CLS относятся только к тем частям типа, которые предназначены для взаимодействия за пределами сборки, в которой они определены.
Основное положение CTS —каждый тип – это класс, который может включать нуль или более членов. Все типы должны иметь единый базовый класс -> все типы являются производными от класса System. Object. Отдельным членом может быть: Поле – переменная, определяющая состояние класса или объекта. Поле идентифицируется именем и имеет конкретный тип. Метод – функция, выполняющая действие над классом или объектом. Для метода определен тип возвращаемого значения. Свойство – средство для получения или задания значения некоторой характеристики, зависящей от состояния объекта. Для вызывающей стороны свойство синтаксически неотличимо от поля. В реализации типа свойство представлено одним или двумя методами с фиксированным именем. Событие – средство уведомления адресатов (других объектов, классов, методов) об изменении состояния объекта или о воздействии на него.
• Все типы должны иметь единый базовый класс. В соответствии с этими требованиями все типы являются производными от класса System. Оbject. Происхождение всех типов от базового класса System. Оbject гарантирует для каждого типа присутствие заранее определенной минимальной функциональности. Эта функциональность предусматривает для каждого экземпляра любого типа возможности: • сравнения с другим экземпляром; • получения хеш – кода; • определения (идентификации) типа; • копирования; • формирования строкового представления значения. В конкретном языке для упрощения вводят <надстройки> над CTS, обеспечивающие более высокий уровень абстракции.
Пример. Первая простая программа using System; class Example{ public static void Main(){ Console. Write. Line(“ program Example”); } }
Пространство имен - механизм, посредством которого поддерживается независимость используемых в каждой программе имен и исключается возможность их случайного взаимного влияния. Пространство имен определяет декларативную область, которая позволяет отдельно хранить множество имен. По существу имена, объявленные в одном пространстве имен, не будут конфликтовать с такими же именами, объявленными в другом пространстве.
Каждая программа на C# может использовать либо свое собственное уникальное пространство имен, либо размещает свои имена в пространстве, предоставляемом программе по умолчанию. Пространство имен System объединяет те классы из. NET Framework, которые наиболее часто используются в программах на C#.
Пространства Имен Назначение System. Collections Корневое пространство имен Контейнерные классы: Array. List, Queue, Stack, Sorted. List и т. п. System. Data. Common System. Data. Ole. Db System. Data. Sql. Client Классы этих пространств предназначены для работы с базами данных System. Drawing. 2 D System. Drawing. Printing Классы для примитивов графического интерфейса – растровых изображений, шрифтов, значков, , поддержки печати System. IO Классы, отвечающие за операции ввода - вывода System. Net Классы, отвечающие за передачу данных по сети System. Security Классы, использующиеся для повышения безопасности при передаче данных System. Threading Пространство имен для классов, которые работают с программными потоками System. Web System. Windows. Forms Классы, используемые в Web – приложениях Классы для работы с элементами интерфейса. Windows System. XML Классы для работы с данными в формате XML
От предшествующих языков программирования C# унаследовал деление на две группы: простые (базовые, фундаментальные) типы и вторая группа соответствует специфическим для программирования на языках высокого уровня конструкциям: массивам, структурам, объектам, классам. Помимо деления на группы в языке C# имеется деление на две категории: это типы значений и ссылочные типы. Термин типы значений означает, что переменные этих типов содержат их значения. Переменные ссылочных типов содержат ссылки на истинное значение. Принципиальное различие этих двух типов заключается в том, что переменная ссылочного типа может именоваться одновременно несколькими ссылками, что недопустимо для переменных с типом значения.
Типы данных Типы значений Простые типы Типы перечислений Структурные типы Типы ссылок Типы классов Типы интерфейсов Типы делегатов Типы массивов Следует помнить, что объект ссылочного типа не имеет своего имени. Переменные с типами значений всегда при реализации получают память в стеке. Переменные ссылочных типов размещаются в куче. Как и переменные, объекты могут быть ссылочных типов и типов значений.
Все типы, которые могут использоваться в программах, делятся на три группы: • предопределенные типы (встроенные); • библиотечные; • пользовательские (определенные программистом). Предопределенные типы всегда включены в язык C#. К ним относятся: • object; • простые; • string – тип ссылок (класс) для представления строк. Библиотечные и пользовательские могут быть как типами значений, так и типами ссылок.
Простые типы языка C#, можно подразделить на следующие группы: • Числовые типы; • Логический тип; • Символьный тип; К числовым типам относятся : знаковые и беззнаковые целочисленные типы, вещественные типы и десятичный тип.
Константы - литералы Целочисленные литералы Примеры: 39 знакового целого типа (int); -64 знакового целого типа; 78 L знакового длинного целого типа (long); 51 U беззнакового целого типа (uint); 90 UL беззнакового длинного целого типа.
Константы (литералы) вещественных типов Примеры 234. 056 – тип double; -0. 7869 F – тип float; 5. 0 f – тип float; Использование экспоненциальной записи -0. 45 Е – 4 тип double; 3. 9 Е +5 F тип float; -6. 345 Е -2 f тип float.
Тип decimal Примеры 657483. 0009 М; 12. 55 m; 555566667778000 m
Эскейп – последовательности для изображения управляющих символов ’ - апостроф ” - кавычки \ - обратная косая черта a - звуковой сигнал b - возврат на шаг n - новая строка r - возврат каретки t - горизонтальная табуляция - нулевое значение f - перевод страницы v - вертикальная табуляция
Явная запись числового значения эскейп – последовательности позволяет представить любой символ Юникода. Формат такого представления: ‘uhhhh’, где h – шестнадцатеричная цифра, u – обязательный префикс. Предельные значения от ‘u 0000’ до ‘u. FFFF’.
Именованные константы const type name = expression; Объявление переменных базовых типов type name 1 = expression 1, name 2 = expression 2; Примеры: double pi = 3. 141593, e = 2. 05674, c = 34. 0; int nun = 123;
Тип языка C# Тип языка CTS Соответствие CLS Описание Bool System. Boolean Есть Логический тип Byte System. Byte Есть Беззнаковый целый(1 байт) Sbyte System. SByte - Знаковый целый (1 байт) Char System. Char Есть Символьный тип(2 байта) decimal System. Decimal Есть Денежный тип(12 байт) double System. Double Есть Вещественный с пл. точкой(8 б) Float System. Single Есть Вещественный с пл. точкой(4 б) int System. Int 32 Есть Знаковый целый(4 б) Uint System. UInt 32 - Беззнаковый целый(4 б) Long System. Int 64 Есть Знаковый целый(4 байта) Ulong System. UInt 64 - Беззнаковый целый object Short System. Object System. Int 16 Есть Знаковый целый (2 байта) ushort System. UInt 16 - Беззнаковый целый(2 байта) String System. String Есть
Переменные • int numb=41; • System. Int 32 numb=41 • double radius=new double(); • System. Double radius=new System. Double(); Происхождение типов от общего базового класса System. Object позволяет применять к каждой переменной и константе следующие методы: string To. String( )- возвращает строку, содержащую символьное представление значения того объекта, к которому этот метод применен; System. Type Get. Type( ) - возвращает системный тип того объекта, к которому применен метод; bool Equals(oject obj) - проверяет эквивалентоcть объекта-параметра и объекта, к которому этот метод применен.
Пример using System; class Program { static void Main() { long row=18 L; System. Int 64 col=423 L; Console. Write Line(“row. Get. Type( ) =” + row. Get. Type( )); Console. Write. Line(“row. Equals(col) =” + row. Equals(col)); Console. Write. Line(“row. To. String()+col. To. String( ) =”+row. To. String( ) +col. To. String( )); Console. Write. Line(“row+col=”+(row+col)); } } Результат выполнения программы: row. Get. Type() = System. Int 64 row. Equals(col) = False row. To. String() + col. To. String() = 18423 row+col = 441
Специфические методы и поля простых типов. Пример Метод Parse( ); using System; class Program { static void Мain( ) { long row=long. Parse(“ 18”); long col=System. Int 64. Parse(“ 000123 ”); Console. Write. Line(“row+col=” + (row + col)); double x=double. Parse(“ -000, 314159 e+1”); Console. Write. Line(“x = ” + x); Console. Write. Line(“Double. Parse(” 011” ) = ”+Double. Parse (“ 0011 ”); } } Результат выполнения программы row + col = 141 x = -3, 14159 Double. Parse(“ 0011 “) = 11
Новые типы значений могут быть введены в программу как перечисления и структуры. Для добавления новых типов ссылок используют классы, интерфейсы, делегаты.
Операции и целочисленные выражения Присваивание Имя переменной = выражение Составная операция присваивания А *=А Арифметические операции Операции отношения Логические операции Поразрядные операции Автоматическое и явное приведение арифметических типов Если один операнд decimal, double, ulong, то второй приводится к этому же типу Совместимость и приведение типов Пусть переменная имеет тип Т 1, а выражение Т 2. Эти типы считаются совместимыми, если : • оба они есть один и тот же тип; • оба они вещественные; • оба они целые, а диапазон значений Т 2 является подмножеством значений Т 1; • тип Т 1 –вещественный, а Т 2 – целый; • тип Т 1 – строка, а Т 2 – символ; • тип Т 2 является прямым или косвенным потомком класса Т 1
Явное приведение типов: int in 1 = 1, in 2 = 2; byte b 1; b 1 = in 1 + in 2; // ОШИБКА! ! ! ПРАВИЛЬНО: b 1 = (byte)(in 1 + in 2);
лекция 1 Введение общие положения.pptx