ЛЕКЦИЯ 18.NET Framework и язык C# 1. Независимое программирование К концу прошлого столетия в сфере компьютеров утвердилось несколько программно-аппаратных.

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



Advertisements
Похожие презентации
ДЕЛЕГАТЫ Лекция 7 1. Зачем нужны делегаты 2 И данные, и код располагаются в памяти компьютера по определенным адресам. Передача адресов данных в C# происходит.
Advertisements

Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ НАЧАЛА ПРОГРАММИРОВАНИЯ.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
Язык программирования C# Дмитрий Сошников
Тест классы По программированию Pascal.
1 Программирование на языке Паскаль Тема 1. Введение.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
1 Программирование на языке Паскаль Циклы. 2 Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным числом шагов.
Программирование на Pascal. Темы Повторение. Составные логические условия Повторение. Составные логические условия Повторение. Составные логические условия.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Массивы в С#. Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов.
Основы программирования Паскаль. Паскаль ( англ. Pascal) язык программирования общего назначения. Язык Паскаль был создан Никлаусом Виртом в
Урок 6 Turbo Pascal Язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623–1662) и разработан.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Транксрипт:

ЛЕКЦИЯ 18.NET Framework и язык C# 1

Независимое программирование К концу прошлого столетия в сфере компьютеров утвердилось несколько программно-аппаратных платформ, и это затрудняло распространение настольных приложений и разработку распределенных, т.е. таких, части которых исполняются на разных компьютерах. Для написания переносимых программ в 1995 году Sun Microsystems предложила язык Java и набор виртуальных машин для всех платформ. Лозунг Java: «Написано однажды – выполняется везде». Компания Microsoft с 1993 года продвигала свою технологию межпрограммного взаимодействия – Component Object Model (COM). Хотя все основные продукты MS выполнены по технологии COM, она оказалась слишком сложна для массового применения. В 2001 году Microsoft объявила о своей новой инициативе, которую она назвала.NET. 2

Internet Microsoft.NET 3

Состав.NET Framework Common Language Infrastructure Python Pascal Ruby J# F# C++ VB.NET C# 4 Framework Class Library

Common Language Infrastructure 5

FCL – библиотека классов 6

Base Class Library System.Int32 int (C#) Integer (VB) int (C++) Integer (Pascal) 7

Pascal Язык С# Андерс Хейлсберг – разработал Turbo Pascal и Delphi. C 1996 г. работает в Microsoft над.NET и C#. Java C# C++ Visual Basic C# относится к семейству языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов, делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. 8

С# vs Python 9 Типы переменных объявляются до выполнения программы и не меняются во время выполнения. В процессе работы программы переменная может принимать значения любого типа. Программа состоит из классов. Функций нет, есть только методы. Программа состоит из файлов. Есть свободные функции. Две модели памяти: простая и ссылочная. Одна модель памяти – ссылочная. Нет интерактивного режима.Есть интерактивный режим.

Установить Microsoft Visual Studio 10

11 Запустить Microsoft Visual Studio

Проекты и решения Проект В профессиональном программировании для изготовления программы не достаточно единственного файла с исходным кодом. В профессиональной среде разработки объединены множество различных программ – компилятор, редактор кода, отладчик, редактор ресурсов и др. В файле проекта *.csproj содержится перечень необходимых файлов и настроек программ. 12 Решение Но единицей разработки в Студии является не проект (project), а решение (solution). В файле решения *.sln содержится перечень проектов.

Проект консольного приложения Внутри каталога проекта находятся: 1)папка bin – в ней результат компиляции проекта; 2)папка obj – в ней промежуточные файлы, которые создает Cтудия в процессе компиляции; 3)папка Properties – содержит файл с настройками, касающимися откомпилированной программы, ее в.NET называют сборкой (assembly). 1)файл ConsoleApplication1.csproj – настройками проекта; 2)файл Program.cs – заготовка для будущей программы. 13

Program.cs – заготовка программы 14 using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { }

Пример программы Задача. Сложить все квадраты чисел от 1 до 999. using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int sum = 0; int i = 1; while (i < 1000) { sum += i * i; i += 1; } Console.WriteLine(sum); } 15

Статическая типизация 16 Тип – это множество допустимых значений + множество операций над этими значениями. В языках со статической типизацией: 1) тип есть не только у значений, но и у переменных; 2) переменной можно присваивать только однотипные с нею значения.

ЛЕКЦИЯ 19 Структурное программирование 17

ulonguintushortbyte Числовые типы С# 18 Все типы ЗначимыеСсылочные Числовые intshortlong Целые Вещественные sbyte floatdouble Простая модель памяти Ссылочная модель памяти

Присваивание 19 // объявление int i; long l; // присваивание i = 5; l = ; // преобразование типа l = i; i = l; Если типы правой и левой частей присваивания не совпадают, всегда делается преобразование типа правой части, явное или неявное. // объявление и инициализация int i = 5; long l = ;

Составной оператор (блок) 20 { a = 1; b = 2; } { int a, b; a = 1; b = 2; } 1.Точка с запятой не является разделителем, как в Питоне, а делает выражение командой. выражения: команды: a = b a = b; a + b a + b; 2. Блок является также и областью видимости. Переменные, объявленные внутри блока, вне блока не видны.

Условный оператор 21 PythonС#С# if a > 0: b = 1 c = 2 if (a > 0) { b = 1; c = 2; } if a > 0: b = 1 c = 2 else: b = 3; c = 4; if (a > 0) { b = 1; c = 2; } else { b = 3; c = 4; }

Операторы цикла 22 PythonС#С# while i < 10: print(i) i += 1 while (i < 10) { Console.Write(i); i += 1; } for x in L: print (x) foreach (int x in L) { Console.Write(x); } for … do … while

Кризис программирования 70-х 23 Никлаус Вирт, Эдсгер Дейкстра, Чарльз Хоар В 70-х годах большое число дорогостоящих программных проектов заканчивались неудачей или во много раз превышали свою запланированную стоимость. Причина была в том, что программисты не справлялись со сложностью написанного ими кода. Чтобы победить сложность, Э. Дейкстра предложил наложить на кодирование ряд ограничений, которые получили название структурного программирования. Главным объектом критики Дейкстра избрал команду безусловного перехода, или оператор GOTO.

Так говорил Дейкстра 24 1.Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации. 2.Вопрос «умеет ли компьютер думать» имеет не больше смысла, чем вопрос «умеет ли подводная лодка плавать». 3.Проекты, предлагающие программирование на естественном языке, гибельны по своей сути. 4.Программирование на КОБОЛе калечит мозг, поэтому обучение ему должно трактоваться как преступление. 5.На любом языке можно написать фортрановскую программу. 6.Средства не виноваты в том, что их безграмотно используют. 7.Тестирование программы может весьма эффективно продемонстрировать наличие ошибок, но никогда не покажет их отсутствие.

Структурное программирование 25 1.Структурный код состоит из блоков с только одним входом и только одним выходом. 2.Каждый блок структурного кода также является структурным кодом. 3.Функция – это тоже блок, только именованный и с параметрами. Функции необходимы для с.п. if … else … while … { … } Функция

Структурная программа 26 int sum = 0; int i = 1; while (i < 1000) { sum += i * i; i += 1; } Console.WriteLine(sum);

Оператор goto 27 Задача. Даны две последовательности. Установить, есть ли у них хотя бы один общий элемент. static void Main(string[] args) { int[] a = { 1, 2, 3 }, b = { 3, 4, 5 }; bool flag; foreach (int x in a) { foreach (int y in b) { if (x == y) { flag = true; goto END; } flag = false; END: ; }

Литература 28 Троельсен Э. – Язык программирования C# 5.0 и платформа.NET 4.5 – М. Издательство Вильямс, 2013 г. – 1311 с. В.М.Бондарєв. Навчальний посібник з дисципліни «Основи програмування». – Харків, XНУРЕ 2011, 124 c.

Самостоятельно 29 1.Напечатать натуральные числа в порядке убывания, начиная с N и заканчивая 1. 2.Посчитать сумму ряда x – x 3 /3! + x 5 /5! – x 7 /7! +… = sin(x) 3.Напечатать все правильные дроби между 0 и 1, в числителе и знаменателе которых только одноразрядные числа: 1/2, 1/3, 1/4, … 2/3, 2/4, …8/9. 4.Подсчитать выражение

Объявления Контрольную пишем и переписываем: по понедельникам, 16:30, ауд. 285, 1,2 группы по четвергам, 16:30, ауд. 285, 3,5,6 группы 2. Открываются соревнования по крестикам ноликам на поле 10х10. Бонусы победителям – до 25 баллов за первую контрольную. Главный судья – Станислав Задорожний. Допускаются участники, набравшие 60 баллов и выше.

ЛЕКЦИЯ 20 Массивы 31

Статические методы 32 Статические методы больше всего похожи на функции Питона. Отличие в том, что они объявлены внутри класса. Класс – управляемая область видимости (public, private). Взаимная видимость методов внутри одного класса не зависит от порядка их объявления. Почему порядок объявления важен в Питоне и не важен в С#? Почему это не распространяется на переменные в блоке? Метод A Класс X Метод B Метод C Класс Y

Пример статического метода 33 // Нахождение НОД, a >= b. static int Gcd(int a, int b) { while (b != 0) { int t = a % b; a = b; b = t; } return a; }

Массивы 34 Массив – низкоуровневая структура данных, которая представляет собой пронумерованную последовательность однотипных значений. Массивы в С# напоминают списки в Питоне (более полным аналогом списков являются коллекции). Массивы это ссылочный тип данных, поэтому у них ссылочная модель памяти. int[] m; m m = new int[6]; m m[2] = 5; m // распечатать// распечатать foreach (int x in m) i = 0; Console.Write(x);while(i < m.Length) { Console.Write(m[i]); i += 1; } null

Статические методы класса Array 35 BinarySearch Clear IndexOf LastIndexOf Reverse Sort Add Insert Remove Array.

Цикл for 36 for ( стартовая команда ; условие ; изменение условия ) вложенная команда стартовая команда while условие { вложенная команда изменение условия } Эквивалентный цикл while

Примеры цикла for 37 int[] m = new int[100]; // заполнение массива for (int i = 0; i < m.Length; ++i) m[i] = i; // последовательный поиск int key = 6; int i = 0; for (; i < m.Length && m[i] != key; ++i) ; if (i == m.Length) i = -1; // бесконечный цикл for (;;) Идиомы

Операторы break и continue 38 Операторы break и continue – это структурные goto. goto M; continue; break;

Решето Эратосфена 39 Алгоритм поиска простых чисел, не превышающих N 1.Заполнить массив числами от 2 до N. 2.Пройти массив, перебирая все числа от первого до последнего. Если число x не вычеркнуто, вычеркнуть все числа с шагом x. static int[] Eratosphen(int n) {...} Род.в 276 г. до н.э. Первый доказал, что земля имеет форму шара.

Логический тип 40 && (and) || (or) ! (not) & | ~ bool flag; Логические операции Арифметические операции 2 & 3 = ? 2 | 3 = ? ~1 = ?

Самостоятельно 41 1.В массиве находятся числа, среди которых есть и нули. Сдвинуть все ненулевые числа к левому краю массива. 2.Записать на С# алгоритм частичной сортировки и сортировки Хоара. 3.Запрограммировать алгоритм бинарного поиска в рекурсивной форме. 4.Имеется два упорядоченных массива. Слить их в третий, тоже упорядоченный. 5.Определить, составляют ли числа в массиве геометрическую прогрессию.