Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






C# как язык программирования

C# является одним из самых распространённых языков программирования.

Диаграмма распространения на рынке:

C# один из самых развивающихся языков программирования. На следующем гафике показано развитие C# и Java:

Если C# продолжит развиваться с такой скоростью, то он обгонит Java в ближайшие 2 года.


 

 

История C#

История развития языков программирования:

C# унаследовал синтаксис от С++, ограничения от Java, а всю мощь от Object Pascal!

Если пройти вверх по цепочке то можно наблюдать, что его корни – языки Algol-58 (прапрапрапрадедушка, прапрапрадедушка (по двум линиям)) и Pascal (прадедушка). У C# есть знаменитый дядя Objective C и племянник Delphi. Visual Basic далёк от C# происхождением – прапрапраправнук мужа прапрадедушки.

C# создан для работы с платформой .NET. C# является объектно-ориентированным языком.


 

Типы приложений С#

С помощью C# можно создать несколько типов приложений:

Консольное приложение:

Простое приложение с текстовым интерфейсом. В C# поддерживается изменение цвета фона и текста отдельных фрагментов или всего текста.

Приложение Windows Forms:

Приложение с несложным графическим интерфейсом на основе несложных элементов управления, среди которых кнопки, текстовые блоки, элементы для ввода числовой информации, графические блоки, меню и диалоговые окна.

Приложение Windows Presentation Foundation (WPF):

Сложные приложения с графическим интерфейсом. Здесь можно создавать свои элементы управления. Это возможно благодаря использованию XAML (Extensible Application Markup Language), который, в свою очередь основан на XML.

Библиотека классов:

Так как C# основан на классах и структурах их нередко удобнее вынести в отдельный файл. Тогда код становится менее громоздким. Библиотеки классов используют формат .dll(расширение приложения), а не .exe(приложение).


Возможности C#

Одним из главных преимуществ C# является простое использование интернета. Несколькими строками кода можно создать несложную программку, которая обменивается данными с сервером. С помощью класса WebClient использование интернета становится едва ли не проще, чем через браузер.

Следующая программа позволяет обмениваться сообщениями между несколькими компьютерами.

Код программы:

using System;

using System.Net;

using System.IO;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace NetShow

{

class Program

{

static void Main(string[] args)

{

WebClient user = new WebClient();

user.Encoding = Encoding.UTF8;

user.Credentials = new NetworkCredential(" u568994039", " 123456");

Console.WriteLine(" Введите имя");

string name = Console.ReadLine();

for (;;)

{

Console.Clear();

user.DownloadFile(" https://cscprogrammer.hol.es/perepiska.txt", " perepiska.txt");

StreamReader sr = new StreamReader(new FileStream(" perepiska.txt", FileMode.Open, FileAccess.Read));

Console.WriteLine(sr.ReadToEnd());

sr.Close();

Console.Write(" You: ");

string read = Console.ReadLine();

user.DownloadFile(" https://cscprogrammer.hol.es/perepiska.txt", " perepiska.txt");

StreamReader sr1 = new StreamReader(new FileStream(" perepiska.txt", FileMode.Open, FileAccess.Read));

string Say = sr1.ReadToEnd() + Environment.NewLine + name + ": " + read;

user.UploadString(" ftp: //cscprogrammer.hol.es/perepiska.txt", Say);

sr1.Close();

}

}

}

}

 

На паскале только загрузка файла выглядит так:

 

var

fs: TFileStream;

link: string;

myfile: string;

begin

link: =”https://cscprogrammer.hol.es/perepska.txt”;

myfile: =PatchEdit.Text+ExtractFileName(“perepiska.txt”);

fs: =TFileStream.Create(myfile, fmCreate);

with THTTPSend.Create do

begin

if HTTPMethod('GET', link) then

Document.SaveToStream(fs);

else

Free;

end;

Это аналогично выделенным кускам кода. Программа на C# более чем в 2, 6 раза короче!

 


 

Первый аргумент

Важным является использование в программе первого аргумента. Первый аргумент передаётся программе, когда файл открывают с её помощью. Рассмотрим, например, следующую программу:

Выберите какой либо файл, и, используя «открыть с помощью» выберите эту программу. Текст файла будет выведен в консоль.

Код программы:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

 

namespace filereader

{

class Program

{

static void Main(string[] args)

{

if (args.Length == 0) return;

StreamReader file = new StreamReader(new FileStream(args[0], FileMode.Open, FileAccess.Read));

Console.WriteLine(file.ReadToEnd());

Console.ReadKey();

}

}

}

 

Как видите, используется массив элементов, передаваемый программе системой args.

Для практически любой программы важна эта возможность. Например, все текстовые редакторы и браузеры используют первый аргумент.


 

Кроссплатформенность C#

С# - кроссплатформенный язык программирования. В отличие от большинства языков, C# при компиляции создаёт не машинный код, а IL код. Это позволяет переносить программу C# в рамках операционной системы. Сделал четыре версии – под Windows, Linux, MacOS и Android, и всё! Программа запустится на любом компьютере.

Плюсы и минусы IL-кода:

· Минусы:

Ø Некоторая задержка при запуске

· Плюсы:

Ø Экономия физической памяти

Ø Переносимость в рамках системы (компиляция до машинного кода – при запуске)

Плюсов, очевидно, больше.


 

 

Создание Windows Forms приложений на C#

В среде разработки Visual Studio панель элементов Windows Forms имеет много стандартных элементов управления, благодаря чему создать приложение несложно. Сейчас мы создадим браузер.

Для начала откроем среду разработки Visual Studio, открываем Файл -> Создать проект, выбираем приложение Windows Forms, вводим имя проекта и нажимаем «ок».

Далее откроется конструктор. Растянем форму до удобного нам размера.

Откроем панель элементов. С помощью поля поиска будем находить элементы управления.

Найдём элементы textbox, Button, WebBrowser и расположим их следующим образом:

textBox в левом верхнем углу, растягиваем почти на всю ширину.

Button занимает оставшееся по ширине место.

WebBrowser должен занять остальную часть формы.

Далее установим свойства элементов.

Свойства выставляются на панели свойств в правом нижнем углу.

Выставляем свойство Text у элемента Button в «Пуск»

Устанавливаем свойство Anchor:

Left, Top, Right у textBox

Top, Right у Button

Left, Top, Right, Bottom у WebBrowser

После этого дважды нажимаем на кнопку.

После этого в месте, где установлен курсор, пишем код:

WebBrowser1.Url = new Uri(textBox1.Text);


Всё! Браузер готов!

Как вариант развития браузера сделаем некоторое подобие IE. На разработку ушло около часа.


C# сегодня

Самая новая версия C# - C# 6.0, поддерживаемая версией среды .NET Framework 4.6, была выпущена в июле этого года.

К этому самому C# 6.0 вышла новая версия Visual Studio. О ней стоит поговорить.


 

Visual Studio 2015

Несомненно, делать приложения C# можно в любом текстовом редакторе типа блокнота и позже компилировать их в командной строке. Но используя Visual Studio можно значительно сократить время на разработку. Поговорим непосредственно о Visual Studio 2015.

В Visual Studio 2015 включён компилятор следующего поколения – Roslyn.

Добавлены функции, облегчающие разработку. Например, функция Light Bulbs предлагает варианты исправления повреждённого кода и оптимизирует код разработчика. Благодаря Roslyn теперь можно настраивать уведомления и предупреждения. Можно получать информацию о производительности программы прямо из окна редактора. Используя функцию PerfTips можно устанавливать точки прерывания не на строках, а на конкретных операторах. Продолжается введение новых скриптовых языков. Теперь в Visual Studio можно создавать Web-приложения, используя JavaScript. Также добавлен Python. Теперь можно используя привычные языки писать приложения не только для Windows, но и для Linux, MacOS, Android, iOS. Так что Visual Studio выходит за рамки Windows. Упрощено соединение с облаком. Теперь можно сохранить проект на Microsoft Azure в один клик. Добавлен Team Foundation Server 2015.


 

C# 6.0

Сейчас я расскажу о некоторых нововведениях C# 6.0.

Раньше чтобы включить выражение в запись строки, нужно было делать так:

Console.WriteLine(“…{0}{1}”, _выражение№1_, _выражение№2_);

 

А теперь выражение можно(но не обязательно) записывать прямо в скобках. То есть следующая запись – то же, что и предыдущая:

Console.WriteLine(“…\{_выражение№1_}\{_выражение№2_}”);

 

Следует отметить, что, во-первых второй вариант короче, а во вторых, когда аргументов не 2, а, например 100, то в них можно запутаться, а во втором случае практически невозможно.

Автоматически реализуемые свойства: значение по умолчанию.

Раньше в C# чтобы передать свойству значение по умолчанию, нужно было объявлять переменную, и присваивать ей значение по умолчанию. Код выглядит примерно так:

private variable = “initial”;

public string property {get{ return variable; } set{ variable = value}};

А теперь значение можно передать непосредственно свойству:

public string property {get; set; } = “initial”;

 

Второй вариант, во-первых, короче, а во-вторых не нагружает оперативную память лишними переменными.

Методы через лямбда-выражения:

Теперь некоторые методы можно записывать короче:

_модификатор_ _возвращаемое_не_void_ _имя_ => _возвращаемое_выражение_;

А с параметрами:

_модификатор_ _возвращаемое_не_void_ _имя_ (_параметры_)=> _возвращаемое_выражение_;

 

Так можно избавиться от скобок и return.

Это не весь список, но и это показывает, что C# остаётся динамично развивающимся языком программирования.


 

Практика:

Пора попрактиковаться. Итак, будет:

1) Диалоговые окна в Windows Forms.

2) Создание своих диалоговых окон в Windows Forms

3) Создание IE с не очень красивыми кнопками


 

Диалоговые окна в Windows Forms

Диалоговые окна – наиболее распространённый способ уведомления пользователя о произошедших событиях. Опробуем их на практике.

Для начала откроем Visual Studio.

После создадим приложение Windows Forms. Для этого проследуем по инструкции: Файл-> Новый проект-> C#-> Windows-> Приложение Windows Forms. Введём имя проекта и подтвердим создание.

Теперь пора добавить наше диалоговое окно. Для этого откроем файл Form.cs. В метод Form1() добавляем текст: MessageBox.Show(“Привет! ”, “Окно с приветом”);

 

Если вы хотите добавить кнопки, то нужно использовать третий аргумент:

MessageBox.Show(“Привет! ”, “Окно с приветом”, MessageBoxButton.OK);

MessageBoxButton может принимать следующие значения:

AbortRetryIgnore Содержит кнопки прервать, повторить и пропустить
OK Содержит кнопку ок
OKCancel Содержит кнопки ок и отменить
RetryCancel Содержит кнопки повторить и отменить
YesNo Содержит кнопки да и нет
YesNoCancel Содержит кнопки да, нет и отменить

Если присвоить значение результата переменной типа DialogResult, то можно получить кнопку, которую нажал пользователь:

DialogResult result = MessageBox.Show(“Привет! ”, “Окно с приветом”, MessageBoxButton.YesNoCancel);

DialogResult – перечисление, которое может принимать следующие значения:

Abort Означает, что была нажата кнопка прервать
Cancel Означает, что была нажата кнопка отменить
Ignore Означает, что была нажата кнопка пропустить
No Означает, что была нажата кнопка нет
Yes Означает, что была нажата кнопка да
OK Означает, что была нажата кнопка ок
Retry Означает, что была нажата кнопка повторить
None Означает, что окно ещё не закрыто

 

После можно сравнив результат с заданными значениями можно выполнять разные действия. Можно использовать if:

if(result==DialogResult.Retry)

{

//повторить

}

Или switch:

switch(result)

{

case DialogResult.Yes:

/*да*/break;

Case DialogResult.No:

/*нет*/break;

}

Теперь задача:

Создайте программу, которая выводит диалоговое окно с заголовком «???» и текстом «Поздравить тебя?» с кнопками да и нет. Если нажимают кнопку да, программа выведет окно с заголовком «Поздравление» и текстом «Поздравляю» и одной кнопкой ок.


 

Создание собственных диалоговых окон

Интереснее и полезнее создавать свои диалоговые окна. Действительно, предположим, вам необходимо запросить у пользователя дату рождения для его гороскопа. Невозможно сделать это с базовыми диалоговыми окнами. Здесь придётся делать своё окно.

Итак, создадим новое приложение Windows Forms. Во вкладке обозреватель решений выполняем следующие действия: ПКМ-> Добавить-> Форма Windows. Добавим текстовое поле и кнопку с текстом подтвердить. Далее откройте файл Program.cs и в класс Program добавьте поле строки и назовите его Name. Для этого напишите public string Name; Добавьте обработчик на нажатие кнопки. Он должен сохранить имя, введённое в поле ввода в поле Name и закрыть диалоговое окно. Чтобы вывести созданное окно введите Application.Run(new _имя_формы_()); После этого пусть выскочит обычное диалогове окно с введённым именем.


 

Internet Explorer

И наконец, попробуем создать свой IE. Кнопки, конечно, такими красивыми не будут, но в общем интерфейс сохранится.

Для начала создадим проект Windows Forms. Слева добавляем три кнопки (Button). На панели свойств есть поле Name в категории разработка. Им мы будем пользоваться, чтобы изменять имя переменной объекта в программе. У первой кнопки пусть будет имя Back, второй Forward, а третьей Home. В поле Text должно быть значения “< -“, “-> ” и “|^|” соответственно. Это будут кнопки перемещения по истории и перехода на домашнюю страницу.

Далее добавим текстовое поле (textBox) и поместим его рядом с кнопками. Ему дадим имя location. Свойство Anchor должно принять значение Left, Top, Right. Ещё правее должна стоять кнопка с текстом “Go! ” и именем Go. Свойство Anchor в этом и позже описанных элементах управления будет принимать значение Top, Right. Эта кнопка перехода по указанному адресу. Потом добавим кнопку с текстом “R” для перезагрузки страницы. Ей дадим имя Reload.

Я думаю все обращали внимание на характерные панели поиска во всех версиях IE. Мы должны его реализовать. Для этого добавим текстовое поле (textBox) и дадим ему имя request. Рядом должна стоять кнопка с текстом “S” и именем Search.

Мы расставили элементы управления окном браузера. Нужно придать им нужные пропорции. Для этого нужно перетягивать края элементов и сами элементы. При этом поле location растягивается, элементы слева от него остаются слева, а остальные уходят вправо. Само поле занимает пространство между этими группами (это достигнуто с помощью свойства Anchor).

И, наконец добавим элемент браузер(Web browser) и включим Anchor на все четыре направления. Дадим ему имя browser. Его нужно растянуть на свободное пространство формы.

Все элементы расставлены на форме. Пора связать их программной логикой. Сначала нужно дважды нажать на кнопку Back. Это добавит обработчик события Click, возникающего при нажатии на кнопку. В открывшемся коде в месте, куда установлен курсор (метод Back_click) нужно добавить код browser.GoBack(); Это будет возвращать наш браузер назад по истории. В обработчик на нажатие кнопки Forward нужен код browser.GoForward();, а на кнопку Home – browser.GoHome();

Далее реализуем поиск. Поиск представляет из себя передачу запроса на страницу. В большинстве поисковых систем запрос передаётся в адресной строке.

По умолчанию IE использует для поиска Bing. Добавим обработчик на нажатие кнопки Search. В него добавляем код: browser.Uri = new Uri(“https://bing.com/search? q=”+request.Text);

Пора перейти к самому сложному – коду перехода по URL. Разумеется нужно добавить обработчик на кнопку Go. В него добавляем код:

try{ browser.Uri = new Uri(location.Text); }

catch(){ try{ browser.Uri = new Uri(“https://”+location.Text); }

catch(){ browser.Uri = new Uri(“https://bing.com/search? q=”+request.Text);

}

}

Выглядит страшно, но на самом деле ничего страшного нет. Готово!

 

Список источников и литературы:

1. Герберт Шилдт

C# 4.0 полное руководство

2. Сайты

https://msdn.microsoft.com

https://habrahabr.ru

https://subscripe.ru

 

 

<== предыдущая лекция | следующая лекция ==>
 | 
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.026 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал