Шаталов Юрий. О себе Шаталов Юрий Закончил отделение второго высшего на ВМК в 2010 году Team Lead в крупной российской компании Microsoft Certified Professional.

Презентация:



Advertisements
Похожие презентации
ФИЛОСОФИЯ.NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться.
Advertisements

Язык программирования C# Дмитрий Сошников
1 ©Павловская Т.А. Язык С# Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Веб-технологии и современные средства разработки УЦ ВГТУ & SoftLine Academy.
Вперёд ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЦЕЛИ: ЦЕЛИ: 1. Средство для задания действий, которые должны быть выполнены машиной.(Машинный язык) 1. Средство для задания.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Microsoft.NET Первая лекция. COM Доступ к компонентам только через интерфейсы Назначение уникальных идентификаторов компонентам и интерфейсам Регистрация.
1 ©Павловская Т.А. Язык С# Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 1 Знакомство с ASP.NET Гайдар Магдануров
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 Умение мыслить объектно (проектирование архитектуры) Культура кодирования Знание языка и технологий Знание языка и технологий Понимание процесса Задача.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Платформа.NET Автор Васюткина И.А.. Литература Павловская Т. А. C#. Программирование на языке высокого уровня : [учебник для вузов по направлению "Информатика.
b5_java_s4
©ρŧą Базовые конструкции языка.
Программировани е Сергей Салищев Занятие 1. Введение.
Транксрипт:

Шаталов Юрий

О себе Шаталов Юрий Закончил отделение второго высшего на ВМК в 2010 году Team Lead в крупной российской компании Microsoft Certified Professional Developer (MCPD) Курс читается 4 год. Сильно изменяется от года к году Рассказ о современном положении дел Давайте общаться на ты и по именам

О Вас Представьтесь Каково ваше отношение к IT? работаете в IT, собираетесь, интересуетесь Что знаете / слышали о.NET, C, C++, C# ? Что ожидаете от курса ?

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 (если успеем)

В конце каждого семестра Экзамен Зачет Для зачета необходимо сделать ВСЕ домашние работы Зачет и Экзамен независимые и необязательные Бонус При сдаче любого сертификационного экзамена Microsoft ( – , путь к MCSD по Visual Studio 2012) - зачет и экзамен за семестр автоматом При получении статуса MCSD – автоматом зачеты и экзамены за год

Э.Троелсен. Язык программирования 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 в оригинале (на английском языке) Лекции по отдельным темам

Софт Visual Studio Можно бесплатно получить лицензионную версию в комнате 705. Сайт Почта

Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы

Язык С. Использование Win API Процедурный стиль Не объектный Сложный API Язык C++. Использование различных оберток над Win API Сложная работа с указателями Ручное управление памятью Переносимость, оптимизация Visual Basic 6 Нет классического наследования Трудности с многопоточностью Java Подразумевает использования только языка Java COM Нет наследования Не гарантии совместимость типов Необходимость регистрации в реестре Невозможность использования разных версий одного и того же модуля

Кроссплатформенность Разные версии Windows Частично клоны Unix Mac OS Поддержка нескольких языков программирования C#, VB, Managed C++, F# Общая среда выполнения для различных языков программирования Прозрачное межязыковое взаимодействие Библиотека базовых классов Взаимодействие со старым кодом (COM и т.д.) Упрощенная работа с памятью Простое развертывание (не нужна регистрация в реестре) Безопасность

Обширная библиотека готового кода Простая работа с памятью Быстрое написание сложных программ Простое использование старого кода Возможность использования наиболее удобного языка программирования

С#.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)

Предыстория Понятие платформы.NET Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы

CLR Общеязыковая среда выполнения Common Language Runtime - CLR MSIL JIT-компилятор Сборщик мусора Единая система типов Common Type Specification - CTS Общеязыковая спецификация Common Language Specification - CLS Библиотека базовых классов Base Class Library - BCL Global Assembly Cache - GAC

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 и т.д.) Выполнение

Программный код компилируется в промежуточный код (Intermediate Language – IL, MSIL, CIL) CLR – не интерпретатор. Компиляция происходит 1 раз. Повторно не компилируется, а используется уже откомпилированный код Более медленный старт и работа приложения Экономия памяти Код на IL обычно занимает меньше места Компилируется только тот код, который выполняется JIT компилятор получает высоко оптимизированный код (заточенный под конкретную аппаратную модель) CLR отслеживает частоту вызова и может производить оптимизацию налету

CLR Common Language Runtime - CLR Виртуальная исполняющая среда Отвечает за: Загрузку сборок Just In Time компиляцию Управление памятью Управление безопасностью

Автоматическая сборка мусора // Утечка памяти в 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 может перенести часто используемые объекты для оптимизации доступа к страницам памяти

Независимая единица кода Файл с расширением dll или exe Сборка может состоять из нескольких модулей (netmodule). Не поддерживается Visual Studio Состоит из: Манифеста Манифеста Содержит информацию о текущей версии сборки, культуре, перечень ссылок на все внешние сборки, необходимые для работы сборки Метаданных типов Метаданных типов Описание всех типов внутри сборки, их публичных членов Промежуточного кода (IL) Промежуточного кода (IL) Ресурсов Ресурсов Благодаря самоописанию, значительно упрощает повторное использование (не нужна сложная COM инфраструктура) Утилиты ILDASM, reflector (

Демонстрация

CLR (Common Language Runtime) Загрузка сборок Just In Time компиляция Управление памятью Управление безопасностью

Демонстрация

Типы одинаковые на всех языках Поскольку в силу особенности языков не все языки могут поддерживать все типы (CTS) выделено подмножество типов. Это подмножество типов описано в Общеязыковой спецификации (CLS). Все типы в CLS обязаны поддерживаться всеми.NET языками. CTSCTS CLSCLS Типы описанные в CLS могут использоваться для межязыкового взаимодействия Могут использоваться, но не в публичных интерфейсах (если конечно нужно межязыковое взаимодействие)

Расположена в Global Assembly Cache – GAC C:\Windows\assembly Может использоваться всем программами Позволяет сохранять и использовать разные версии одной и той же сборки mscorelib.dll – основная сборка. Используется во всех программах. Содержит пространство имен System.

CLR Общеязыковая среда выполнения Common Language Runtime - CLR MSIL JIT-компилятор Сборщик мусора Единая система типов Common Type Specification - CTS Общеязыковая спецификация Common Language Specification - CLS Библиотека базовых классов Base Class Library - BCL Global Assembly Cache - GAC

Предыстория Понятие платформы.NET Первая программа на C# Первая программа на C# Отличия от С++ Основные типы

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

Демонстрация

Пространство имен объединяет группу семантически связанных между собой типов Позволяет отделять типы с одинаковыми названиями Варианты метода 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()

Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Отличия от С++ Основные типы

Не нужны заголовочные файлы и вообще заголовки. Указателей «нет». Но есть ссылки Нормальный строковый тип string Логический тип bool Нет глобальных полей и функций Любое поле/метод – член класса Нет «провала» в switch() {} Имеет атрибуты, что позволяет использовать аспектноориенированное программирование Контекст вычислений checked / unchecked

while(условие-продолжения) оператор do оператор while(условие-продолжения) if (условие) оператор1 else оператор2 if (условие) оператор int i = 10; while (i--) // ошибка! Console.Write(i); Условие должно иметь логический тип! Условие – только тип bool

switch(day) { case 1: Console.Write(Понедельник); break; case 2: case 3: Console.Write(Вторник или среда); break; default: Console.Write(Другой день недели); break; } Каждая альтернатива должна завершаться break, return или throw switch() работает и со строками!

Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы Основные типы

Каждая переменная и экземпляр объекта в системе относится к четко определенному типу !!! object * Все типы происходят от одного корневого предка – типа object * * - точнее приводятся к типу object

Типы в C# Ссылочные типыТипы-значения Массивы Классы Интерфейсы ДелегатыСтруктуры Простые типы Перечисления Строки Nullable types * - условная схема, поскольку все ссылочные типы (кроме интерфейсов) – классы, все типы значения - структуры

ПризнакСсылкиЗначения ПеременнаяСсылка на объект Сам объект ПамятьКучаКуча или стек ПрисваиваниеКопирование ссылки Копирование объекта default(T)null0, 0.0, \0, false

Демонстрация

int – 32-битное целое (System.Int32) bool – логический тип (System.Boolean) float, double – вещественные типы (System.Single и System.Double) char – символьный тип Unicode string – строка текста (Unicode)

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 бит) Всегда проверяет диапазон Не имеет аппаратной поддержки

ulong long uint int ushort short byte sbyte float double decimal char

Синтаксис: (type)expression Пример: double d = 5.5; int i = (int)d; Применяется при преобразованиях типов с возможной потерей точности При «зашкаливании» результат определяется контекстом

2 контекста checked – проверяет на переполнение unchecked – не проверяет Устанавливаются Глобально (опции проекта) Локально (блоки checked и unchecked) Не распространяется на вызовы функций

Демонстрация

Если значение целое и оно помещается в int – то подразумевается int 5 – тип int Если значение вещественное – то подразумевается double 5.6 – тип double Для обозначения конкретных типов служат суффиксы 5l – long 5.4f - float Шестнадцатеричное число 0xЧИСЛО 0x0099 Восьмеричное 0ЧИСЛО Операции Если в выражении присутствует decimal, то результат операции – decimal Если присутствует вещественное число, то результат операции – double ulong, если присутствует тип ulong long, если присутствует тип long Результат операции с целыми числами – int

Служит для кодирования возможных значений или магических чисел 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]]}

Содержат элементы только одного типа Бывают Одномерные Многомерные Допускается вложенность Длина Задаётся при выделении Изменить потом нельзя

Объявление: 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

Прямоугольные 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];

Демонстрация

Предыстория Понятие платформы.NET Первая программа на C# Отличия от С++ Основные типы