Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемДмитрий Приведёнышев
1 Шаталов Юрий
2 О себе Шаталов Юрий Закончил отделение второго высшего на ВМК в 2010 году Team Lead в крупной российской компании Microsoft Certified Professional Developer (MCPD) Курс читается 4 год. Сильно изменяется от года к году Рассказ о современном положении дел Давайте общаться на ты и по именам
3 О Вас Представьтесь Каково ваше отношение к IT? работаете в IT, собираетесь, интересуетесь Что знаете / слышали о.NET, C, C++, C# ? Что ожидаете от курса ?
4 1 семестр Основы программирования на языке С# в среде.NET Framework 4.5 Разработка Windows приложений на платформе Microsoft.NET. Windows Presentation Foundation (WPF) Windows Forms Metro Style Applications (Windows 8) 2 семестр Доступ к данным и манипуляция данными ADO.NET, LINQ, ADO.NET Entity Framework Разработка распределенных приложений Windows Communication Foundation (WCF). Разработка Web-приложений на платформе.NET ASP.NET Асинхронное Web программирование. AJAX (если успеем)
5 В конце каждого семестра Экзамен Зачет Для зачета необходимо сделать ВСЕ домашние работы Зачет и Экзамен независимые и необязательные Бонус При сдаче любого сертификационного экзамена Microsoft ( – , путь к MCSD по Visual Studio 2012) - зачет и экзамен за семестр автоматом При получении статуса MCSD – автоматом зачеты и экзамены за год
6 Э.Троелсен. Язык программирования C# 5.0 и платформа.NET 4.5 (2013) Джозеф Албахари, Бен Албахари. C# 5.0. Справочник. Полное описание языка (2013) Мэтью Мак-Дональд. WPF: Windows Presentation Foundation в.NET 4.5 с примерами на C# 5.0 для профессионалов (2013) С. Пугачев, А. Шериев, К. Кичинский. Разработка приложений для Windows 8 на языке C# (2013) Старайтесь читать литературу по.NET в оригинале (на английском языке) Лекции по отдельным темам
7 Софт Visual Studio Можно бесплатно получить лицензионную версию в комнате 705. Сайт Почта
8 Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы
9 Язык С. Использование Win API Процедурный стиль Не объектный Сложный API Язык C++. Использование различных оберток над Win API Сложная работа с указателями Ручное управление памятью Переносимость, оптимизация Visual Basic 6 Нет классического наследования Трудности с многопоточностью Java Подразумевает использования только языка Java COM Нет наследования Не гарантии совместимость типов Необходимость регистрации в реестре Невозможность использования разных версий одного и того же модуля
10 Кроссплатформенность Разные версии Windows Частично клоны Unix Mac OS Поддержка нескольких языков программирования C#, VB, Managed C++, F# Общая среда выполнения для различных языков программирования Прозрачное межязыковое взаимодействие Библиотека базовых классов Взаимодействие со старым кодом (COM и т.д.) Упрощенная работа с памятью Простое развертывание (не нужна регистрация в реестре) Безопасность
11 Обширная библиотека готового кода Простая работа с памятью Быстрое написание сложных программ Простое использование старого кода Возможность использования наиболее удобного языка программирования
12 С#.NET Framework 1.1(2000 год) С# 2.NET Framework 2 (2005 год) Шаблоны, Итераторы, Анонимные методы С# 3.NET Framework 3.0 (2007 год, входит в дистрибутив Windows Vista) Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Workflow Foundation (WF) LINQ С# 3.NET Framework 3.5 (2008 год, входит в дистрибутив Windows 7) Entity Framework, WPF доведен до ума С# 4.NET Framework 4 (2010 год) Parallel, dynamic, F#, средства для Windows Azure С# 4.5.NET Framework 4.5 (2012 год, входит в дистрибутив Windows 8) Async, средства программирования Windows 8 (metro style)
13 Предыстория Понятие платформы.NET Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы
14 CLR Общеязыковая среда выполнения Common Language Runtime - CLR MSIL JIT-компилятор Сборщик мусора Единая система типов Common Type Specification - CTS Общеязыковая спецификация Common Language Specification - CLS Библиотека базовых классов Base Class Library - BCL Global Assembly Cache - GAC
15 HelloWorld.cs HelloWorld.vbHelloWorld.js csc.exevbc.exejsc.exe HelloWorld.exe Cодержит MSIL-код (Microsoft Intermediate Language - MSIL) JIT-компилятор (Just In Time - JIT) Коды операций процессора (x86, x64, ARM и т.д.) Выполнение
16 Программный код компилируется в промежуточный код (Intermediate Language – IL, MSIL, CIL) CLR – не интерпретатор. Компиляция происходит 1 раз. Повторно не компилируется, а используется уже откомпилированный код Более медленный старт и работа приложения Экономия памяти Код на IL обычно занимает меньше места Компилируется только тот код, который выполняется JIT компилятор получает высоко оптимизированный код (заточенный под конкретную аппаратную модель) CLR отслеживает частоту вызова и может производить оптимизацию налету
17 CLR Common Language Runtime - CLR Виртуальная исполняющая среда Отвечает за: Загрузку сборок Just In Time компиляцию Управление памятью Управление безопасностью
18 Автоматическая сборка мусора // Утечка памяти в C char *f(int a) { char *p = (char)malloc(…); … return p; } … void g(){ f(1); } функция f(): text char *p функция g(): text Сборщик мусора (Garbage Collector - GC) отслеживает ссылки на объекты. Он обнаружит, что на область памяти p больше нет ссылок и освободит эту область. Утечка памяти CLR может перенести часто используемые объекты для оптимизации доступа к страницам памяти
19 Независимая единица кода Файл с расширением dll или exe Сборка может состоять из нескольких модулей (netmodule). Не поддерживается Visual Studio Состоит из: Манифеста Манифеста Содержит информацию о текущей версии сборки, культуре, перечень ссылок на все внешние сборки, необходимые для работы сборки Метаданных типов Метаданных типов Описание всех типов внутри сборки, их публичных членов Промежуточного кода (IL) Промежуточного кода (IL) Ресурсов Ресурсов Благодаря самоописанию, значительно упрощает повторное использование (не нужна сложная COM инфраструктура) Утилиты ILDASM, reflector (
20 Демонстрация
21 CLR (Common Language Runtime) Загрузка сборок Just In Time компиляция Управление памятью Управление безопасностью
22 Демонстрация
23 Типы одинаковые на всех языках Поскольку в силу особенности языков не все языки могут поддерживать все типы (CTS) выделено подмножество типов. Это подмножество типов описано в Общеязыковой спецификации (CLS). Все типы в CLS обязаны поддерживаться всеми.NET языками. CTSCTS CLSCLS Типы описанные в CLS могут использоваться для межязыкового взаимодействия Могут использоваться, но не в публичных интерфейсах (если конечно нужно межязыковое взаимодействие)
24 Расположена в Global Assembly Cache – GAC C:\Windows\assembly Может использоваться всем программами Позволяет сохранять и использовать разные версии одной и той же сборки mscorelib.dll – основная сборка. Используется во всех программах. Содержит пространство имен System.
25 CLR Общеязыковая среда выполнения Common Language Runtime - CLR MSIL JIT-компилятор Сборщик мусора Единая система типов Common Type Specification - CTS Общеязыковая спецификация Common Language Specification - CLS Библиотека базовых классов Base Class Library - BCL Global Assembly Cache - GAC
26 Предыстория Понятие платформы.NET Первая программа на C# Первая программа на C# Отличия от С++ Основные типы
27 using System; namespace HelloWorld { class HelloWorld { /// Entry point static void Main(string[] args) { Console.WriteLine("Hello, C# World!"); } // end of Main() } // end of HelloWorld } // namespace HelloWorld
28 Демонстрация
29 Пространство имен объединяет группу семантически связанных между собой типов Позволяет отделять типы с одинаковыми названиями Варианты метода Main static void Main(){…} static int Main(){… return 0; } static void Main(string[] args){…} static int Main(string[] args){… return 0; } using using позволяет сократить полное название типа (System.Console). Как бы объединяет пространства имен с текущим..NET использует Unicode. Название типов можно заводить и на русском языке (но не рекомендуется) Языки для.NET чувствительны к регистру Main() и main() разные методы Вывод на консоль: System.Console.WriteLine(текст) Чтение данных с консоли: string s = System.Console.ReadLine()
30 Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Отличия от С++ Основные типы
31 Не нужны заголовочные файлы и вообще заголовки. Указателей «нет». Но есть ссылки Нормальный строковый тип string Логический тип bool Нет глобальных полей и функций Любое поле/метод – член класса Нет «провала» в switch() {} Имеет атрибуты, что позволяет использовать аспектноориенированное программирование Контекст вычислений checked / unchecked
32 while(условие-продолжения) оператор do оператор while(условие-продолжения) if (условие) оператор1 else оператор2 if (условие) оператор int i = 10; while (i--) // ошибка! Console.Write(i); Условие должно иметь логический тип! Условие – только тип bool
33 switch(day) { case 1: Console.Write(Понедельник); break; case 2: case 3: Console.Write(Вторник или среда); break; default: Console.Write(Другой день недели); break; } Каждая альтернатива должна завершаться break, return или throw switch() работает и со строками!
34 Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы Основные типы
35 Каждая переменная и экземпляр объекта в системе относится к четко определенному типу !!! object * Все типы происходят от одного корневого предка – типа object * * - точнее приводятся к типу object
36 Типы в C# Ссылочные типыТипы-значения Массивы Классы Интерфейсы ДелегатыСтруктуры Простые типы Перечисления Строки Nullable types * - условная схема, поскольку все ссылочные типы (кроме интерфейсов) – классы, все типы значения - структуры
37 ПризнакСсылкиЗначения ПеременнаяСсылка на объект Сам объект ПамятьКучаКуча или стек ПрисваиваниеКопирование ссылки Копирование объекта default(T)null0, 0.0, \0, false
38 Демонстрация
39 int – 32-битное целое (System.Int32) bool – логический тип (System.Boolean) float, double – вещественные типы (System.Single и System.Double) char – символьный тип Unicode string – строка текста (Unicode)
40 long, ulong – 64-битное целое (System.Int64, System.UInt64) short, ushort – 16-битное целое (System.Int16, System.UInt16) byte, sbyte – 8-битное целое (System.Byte, System.SByte) decimal – десятичное число (System.Decimal, 128 бит) Всегда проверяет диапазон Не имеет аппаратной поддержки
41 ulong long uint int ushort short byte sbyte float double decimal char
42 Синтаксис: (type)expression Пример: double d = 5.5; int i = (int)d; Применяется при преобразованиях типов с возможной потерей точности При «зашкаливании» результат определяется контекстом
43 2 контекста checked – проверяет на переполнение unchecked – не проверяет Устанавливаются Глобально (опции проекта) Локально (блоки checked и unchecked) Не распространяется на вызовы функций
44 Демонстрация
45 Если значение целое и оно помещается в int – то подразумевается int 5 – тип int Если значение вещественное – то подразумевается double 5.6 – тип double Для обозначения конкретных типов служат суффиксы 5l – long 5.4f - float Шестнадцатеричное число 0xЧИСЛО 0x0099 Восьмеричное 0ЧИСЛО Операции Если в выражении присутствует decimal, то результат операции – decimal Если присутствует вещественное число, то результат операции – double ulong, если присутствует тип ulong long, если присутствует тип long Результат операции с целыми числами – int
46 Служит для кодирования возможных значений или магических чисел enum MyEnum { Mondey, Thusday, … } enum OneMoreEnum { Monday = 2, Thusday, Среда = 4, … } По умолчанию наследуются от int, но могут наследоваться от другого целочисленного типа Если не указано значение, то для первого по умолчанию – 0, для каждого последующего – предыдущее +1 Объявление и использование: OneMoreEnum my = OneMoreEnum. Среда ; Возможно приведение типов: int I = (int)my; int j = (int)OneMoreEnum. Среда; enum enum Имя [:базовый целочисленный тип]{ Имя1 [=значение1] [, … ИмяN [=значениеN]]}
47 Содержат элементы только одного типа Бывают Одномерные Многомерные Допускается вложенность Длина Задаётся при выделении Изменить потом нельзя
48 Объявление: type_name [] var_name [= init_expr]; int[] arr1 = {1, 2, 3, 4, 5}; Создание объекта, получение длины: arr1 = new int[5]; arr1 = new int[args.Length]; Индексация: int j = arr1[2]; Компилятор добавляет квазистатическую проверку выхода из диапазона Нумерация начинается с 0
49 Прямоугольные type_name [,…,] var_name [ = init_expr] int [,] matrix1 = new int[m, n]; int m1 = matrix1.GetLength(1); Массивы массивов int [][] matrix2 = new int[m]; int[,,][] grid = new int [n, n, n];
50 Демонстрация
51 Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.