Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

В си шарп

С# для новичков: развеиваем мифы и пишем простого чат-бота

Рассказываем о С#, даём полезные советы и делаем первые шаги в программировании.

Что такое С#

С# (произносится «си шарп») — это современный язык программирования, созданный компанией Microsoft. На нём можно писать программы любой сложности для любых платформ и операционных систем.

C# устроен так, чтобы программист мог писать меньше кода. Для этого в языке много «магических конструкций» и «синтаксического сахара» — способов выразить идею лаконично.

Это кроссплатформенный язык, то есть ваша программа будет работать не только в той операционной системе, в которой она написана, но и в других.

В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.

Мифы о работе в С#

C# может казаться страшным и сложным, но на самом деле его совсем не стоит бояться. Давайте посмотрим на главные мифы о нём.

  1. Чтобы стать C#-разработчиком, надо учиться долгие годы. Это очень популярный миф, но на самом деле достаточно нескольких месяцев, и вы уже можете работать junior-разработчиком .
  2. Чтобы быть C#-разработчиком, надо разбираться в высшей математике. Это стереотип не только о конкретном языке, но и о программировании в целом. В реальности программисты 99% времени не используют математику — за исключением некоторых областей, прямо с ней связанных. Если вы делаете веб-сайты, создаете мобильные приложения, видеоигры — математика вам не понадобится.
  3. C# — это что-то сверхсложное. Как мы уже сказали, этот язык создавался так, чтобы в нём было удобно работать. Поэтому любой хорошо написанный код читается и понимается так же легко, как текст на английском языке.

Стартовая позиция в программировании. Специалист, который имеет небольшой опыт работы с каким-то языком и выполняет простую работу с перспективой роста.

Почему же стоит учить C#

  • Этот язык популярен и быстро развивается.
  • Разработчики C# востребованы.
  • С ним удобно работать, легко читать код.
  • C# и связанные с ним технологии можно освоить за несколько месяцев.

Что разрабатывают на С#

  • Десктопные приложения.
  • Серверные приложения и веб-сайты.
  • Мобильные приложения.
  • Консольные приложения и утилиты.
  • Универсальные приложения для десктопов, планшетов, смартфонов.

Этот язык создавался специально для разработки под Windows, так что с программами под эту операционную систему у вас не будет проблем. Это касается и Windows Phone, для которого C# — основной язык разработки. Но это не значит, что вы можете писать только для Windows, — C# замечательно работает и с другими операционными системами.

Как эффективнее работать с C#

Для эффективной работы полезно знать о дополнительных инструментах. Вот некоторые из них:

  1. WPF (Windows Presentation Foundation) поможет легко и быстро создать интерфейс для любых экранов, уменьшает количество кода, отображающего интерфейс.
  2. Xamarin — фреймворк для разработки кроссплатформенных приложений для Windows Phone, Andro >ASP.NET помогает просто и быстро связать серверный код с клиентским в серверных приложениях и веб-разработке.
  3. Entity Framework — один из лучших фреймворков для работы с базами данных. Позволяет работать с данными как с объектами.
  4. LINQ (Language Integrated Query) — мини-язык запросов, встроенный в C# и позволяющий легко выбирать, фильтровать, сортировать и группировать любые данные из любых источников: баз данных, массивов, структур, файлов и так далее.
  5. Visual Studio — среда разработки, созданная специально для языка C#.

Писать код в среде разработки удобно. У неё много плюсов, например:

  • подскажет, если в коде есть ошибка;
  • имеет встроенную справку на случай, если вы что-то забыли;
  • генерирует часть кода за вас (дополнит названия функций, шаблонные структуры).

Пишем чат-бота

Теперь пора перейти к практике. Сегодня мы будем работать в онлайн-среде ideone. Серьезные программы в онлайн-средах не пишутся, но для обучения и практики это самое то!

Итак, откроем сайт ideone. Слева будет окошко для кода. Возможно, что по умолчанию там будет выбран другой язык — тогда просто нажмите на его название и выберите C#.

Самые первые слова любого программиста — «Привет, мир!» (Hello, World!), поэтому и мы начнём с них. Хотя не совсем: мы позволили себе заменить «мир» на «Скиллбокс» 😉 Чтобы отобразить наше сообщение, используем команду Console.WriteLine (). Свой текст напишем в скобках и не забудем поставить кавычки. Вот так:

Чтобы запустить свой код и протестировать, работает ли он, нажмём зелёную кнопку RUN в углу.

Чтобы общаться с нашим будущим чат-ботом, нам надо научить его читать — то есть сделать так, чтобы мы могли задавать информацию, с которой он будет работать. Для этого мы используем команду Console.ReadLine (). Она прочитает текст, который написал пользователь.

Давайте уже напишем начало: пусть чат-бот здоровается, а потом читает наше сообщение:

Прочитать-то он прочитает, но память у бота короткая — надо, чтобы он это сообщение запомнил. Для этого сохраним его в переменную — назовём её, например, text. Вместо Console.ReadLine () напишем вот так:

Пусть бот уточняет, что именно мы ему сказали, — вдруг мы забудем. Сделаем мы это той же командой Console.WriteLine (), только в этот раз мы не знаем заранее, что надо будет написать, поэтому используем переменную. Чтобы вставить переменную в текст, обозначим её фигурными скобками, а перед кавычками напишем знак доллара, вот так:

Читать еще:  Strcmp си описание

Важно!
Не забывайте ставить точку с запятой в конце каждой строчки!

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

Снизу откроется окошко с надписью input над ним. То, что вы там напишете, программа использует при следующем запуске.

Сейчас наш чат-бот умеет здороваться и может повторить, что мы ему написали. Давайте научим его реагировать на то, что мы пишем. Для этого нам понадобится конструкция if — она проверяет, соблюдено ли условие, и решает, что делать дальше. На новой строке напишем if и в круглых скобках напишем условие. Пусть в ответ на «Привет» бот отвечает «Здарова!». Мы можем написать вот так:

У нашего решения есть несколько проблем. Первая: если мы напишем весь свой текст маленькими или большими буквами, программа его не опознает. Что с этим делать? Добавим команду ToLower (), которая заменит все буквы на маленькие, и текст, с которым мы сравниваем сообщение пользователя, тоже перепишем маленькими буквами, вот так:

А что, если мы напишем «Привет, как дела?»? Наш бот никак не отреагирует. Чтобы это исправить, используем функцию Contains (), которая проверит, есть ли нужная строка в нашем вводе.

Можем разнообразить словарный запас нашего бота, добавив ещё условий:

Теперь, если мы напишем «Привет! Как тебя зовут? Как дела?», наш бот напишет ответ на все фразы по очереди.

Важно!
Если бы вы писали более сложного «настоящего» бота или другую программу, вы бы не копировали один и тот же код много раз, а использовали файл, базу данных или что-то другое. Когда одна и та же часть повторяется много раз, код неудобно читать и тяжело исправлять.

А что, если мы хотим получать не только такие ответы, но и меняющуюся информацию? Например, нам интересно, какой сегодня день. Если бы мы написали сегодняшнюю дату в такую же конструкцию, как выше, то или нам пришлось бы переписывать код каждый день, или наша программа сразу бы устарела. Нам поможет функция DateTime. Спросим у неё, какая сейчас (Now) дата, переведём это в строку нужного формата (ToString («dd.MM.yyyy»)) и всё это сохраним в переменную date. Вот так это выглядит:

И напоследок ещё одна важная тема.

Конструкция if часто идет в паре с else. Else описывает, что сделать в том случае, если условие из if не выполнится.

Используется else после if — но мы уже не пишем условие, а только действие в фигурных скобках. Вот пример этой конструкции:

Теперь, если мы напишем сообщение боту без слова «привет», он обидится и будет ругаться.

Для первого раза всё! Это были основы основ C#. Вы уже знаете, как отобразить текст (и не только), работать с информацией от пользователя, искать в тексте фразы, и попробовали работать с конструкцией if-else, которая очень важна. Из этих «кирпичиков» можно смело начинать строить!

Если же вас интересует более глубокое погружение в C# и вы хотите научиться работать с этим языком уверенно и профессионально, можно записаться на наш курс «Профессия C#-разработчик».

Профессия С#-разработчик

130 часов — и вы научитесь писать программы на языке, созданном Microsoft. Вы создадите 5 проектов для портфолио, даже если до этого никогда не программировали. После обучения — гарантированное трудоустройство.

Условные операторы

В структурном программировании базовыми являются три структуры: последовательность, ветвление и цикл.

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

В языке C# — два типа условных операторов: двойного выбора (if) и множественного выбора (switch).

Оператор if

Оператор if. Для организации условного ветвления язык C# унаследовал от С и С++ конструкцию if…else (если … иначе).
Ее синтаксис понятен всем, кто программировал на процедурных языках:

if (условие) оператор (операторы) else оператор (операторы);

Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок <…>. Это также касается других конструкций C#, в которых операторы могут быть объединены в блок, таких как циклы for и while, см. далее.
Стоит обратить внимание, что в отличие от языков С и С++, в C# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.
В операторе if могут проверяться сложные логические выражения, и он может содержать операторы else, внутри которых могут вставлены другие операторы if (вложенность операторов).
Рассмотрим следующий пример:

Введем слово ЛОГИКА, тогда:

Как видите количество else if, добавляемых к единственному if, не ограничено.
Один момент, который следует отметить касательно if: фигурные скобки применять не обязательно, если в условной ветви присутствует только один оператор, как показано в примере.

Оператор switch

Оператор switch. Вторым оператором выбора в C# является оператор switch, который обеспечивает множественное ветвление программы.
Следовательно, этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы.
Несмотря на то что многонаправленная проверка может быть организована с помощью последовательного ряда вложенных операторов if, во многих случаях более эффективным оказывается применение именно оператора switch.
Этот оператор действует следующим образом. Значение выражения последовательно сравнивается с константами выбора из заданного списка. Как только будет обнаружено совпадение с одним из условий выбора, выполняется последовательность операторов, связанных с этим условием.
Ниже приведена общая форма оператора switch:

Важно отметить, что заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого (enum) или же строкового (string). А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.

Читать еще:  Телефон загружается в безопасном режиме

Хотя оператор switch…case знаком программистам на С и С++, в C# он немного безопаснее, чем его эквивалент С++. В частности, он запрещает «сквозные» условия почти во всех случаях. Это значит, что если часть case вызывается в начале блока, то фрагменты кода за последующими частями case не могут быть выполнены, если только не используется явно оператор goto для перехода к ним. Компилятор обеспечивает это ограничение за счет требования, чтобы за каждой частью case следовал оператор break, в противном случае он выдает ошибку.
Рассмотрим на примере использование оператора switch:

Результат:

Перейдем к рассмотрению операторов цикла.

C# — Операторы

Оператор — это символ, который сообщает компилятору выполнить определенные математические или логические манипуляции. C # имеет богатый набор встроенных операторов и предоставляет следующие типы операторов:

  • Арифметические операторы
  • Реляционные операторы
  • Логические операторы
  • Побитовые операторы
  • Операторы присваивания
  • Другие операторы

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

Арифметические операторы

В следующей таблице показаны все арифметические операторы, поддерживаемые C #. Предположим, что переменная A содержит 10, а переменная B имеет 20, тогда —

ОператорОписаниеПример
+Добавляет два операндаA + B = 30
Вычитает второй операнд с первогоA — B = -10
*Умножает оба операндаA * B = 200
/Делит числитель на де-числительB / A = 2
%Оператор модуля и остаток после целочисленного деленияB% A = 0
++Оператор приращения увеличивает целочисленное значение на единицуA ++ = 11
Оператор Decrement уменьшает целочисленное значение на единицуA— = 9

Реляционные операторы

В следующей таблице показаны все реляционные операторы, поддерживаемые C #. Предположим, что переменная A имеет место 10, а переменная B имеет 20, тогда —

ОператорОписаниеПример
==Проверяет, равны ли значения двух операндов или нет, если да, то условие становится истинным.(A == B) не соответствует действительности.
знак равноПроверяет, равны ли значения двух операндов или нет, если значения не равны, условие становится истинным.(A! = B) истинно.
>Проверяет, превышает ли значение левого операнда значение правого операнда, если да, тогда условие становится истинным.(A> B) неверно.
=Проверяет, превышает ли значение левого операнда значение правого операнда, если да, тогда условие становится истинным.(A> = B) неверно.
>Двоичный оператор правого сдвига.Значение левых операндов перемещается вправо на количество бит, заданных правым операндом.A >> 2 = 15, что составляет 0000 1111

Операторы присваивания

Существуют следующие операторы присваивания, поддерживаемые C # —

ОператорОписаниеПример
знак равноПростой оператор присваивания, присваивает значения из правых операндов в левый операндC = A + B присваивает значение A + B в C
+ =Добавить AND присваивания, Он добавляет правый операнд в левый операнд и присваивает результат левому операндуC + = A эквивалентно C = C + A
знак равноВычитание и оператор присваивания, он вычитает правый операнд из левого операнда и присваивает результат левому операндуC — = A эквивалентно C = C — A
знак равноОператор умножения и присваивания, Он умножает правый операнд на левый операнд и присваивает результат левому операндуC * = A эквивалентно C = C * A
знак равноОператор Divide AND assign. Он делит левый операнд на правый операнд и присваивает результат левому операндуC / = A эквивалентно C = C / A
знак равноМодуль и оператор присваивания, он принимает модуль с использованием двух операндов и присваивает результат левому операндуC% = A эквивалентно C = C% A
> =Оператор правой смещения и назначенияC >> = 2 совпадает с C = C >> 2
знак равноОператор побитового И присваиванияC & = 2 является таким же, как C = C & 2
^ =побитовое исключающее ИЛИ и оператор присваиванияC ^ = 2 является таким же, как C = C ^ 2
| =побитовое включение OR и оператор присваиванияC | = 2 совпадает с C = C | 2

Есть несколько других важных операторов, включая sizeof, typeof и ? :поддерживается C #.

ОператорОписаниеПример
размер()Возвращает размер типа данных.sizeof (int), возвращает 4.
тип()Возвращает тип класса.TypeOf (StreamReader);
&Возвращает адрес переменной.& А; возвращает фактический адрес переменной.
*Указатель на переменную.* А; создает указатель с именем ‘a’ для переменной.
? :Условное выражениеЕсли условие верно? Тогда значение X: В противном случае значение Y
являетсяОпределяет, имеет ли объект определенный тип.Если (Ford — Car) // проверяет, является ли Ford объектом класса Car.
в видеПередача без создания исключения, если сбой выполняется.Object obj = new StringReader («Hello»);

StringReader r = obj как StringReader;

Приоритет оператора в C #

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

Например, x = 7 + 3 * 2; здесь x назначается 13, а не 20, потому что оператор * имеет более высокий приоритет, чем +, поэтому первая оценка выполняется для 3 * 2, а затем 7 добавляется в нее.

Здесь операторы с наивысшим приоритетом появляются в верхней части таблицы, а нижние — внизу. Внутри выражения сначала оцениваются операторы с более высоким приоритетом.

Для чего нужен язык C#

Вы навер­ня­ка слы­ша­ли о язы­ках про­грам­ми­ро­ва­ния, кото­рые начи­на­ют­ся на «Си»: про­сто «Си», «Си плюс плюс» и «Си шарп». Сей­час хоро­шее вре­мя, что­бы разо­брать­ся, что к чему.

Главное

  • C# — язык про­грам­ми­ро­ва­ния, кото­рый ком­па­ния Мик­ро­софт изна­чаль­но дела­ла для сво­их про­ек­тов.
  • Назва­ние чита­ет­ся как «си-шарп».
  • Мно­гие дума­ют, что это отдель­ная вер­сия язы­ка С, но на самом деле нет. В C# дей­стви­тель­но есть мно­го кон­струк­ций, похо­жих на С и С++, но точ­но так же в нём мож­но най­ти эле­мен­ты Пас­ка­ля и Java. Это не раз­ви­тие линей­ки С, а новый язык, создан­ный с нуля.
  • C# — объектно-ориентированный язык, а зна­чит, вся тео­рия про клас­сы, объ­ек­ты и насле­до­ва­ния рабо­та­ет и в нём, но с неко­то­ры­ми ого­вор­ка­ми.
  • Спрос на про­грам­ми­стов C# не шкваль­ный, этот язык слож­но назвать мод­ным в 2020 году. Но на нём мож­но делать всё, что нуж­но в 2020-м: от игр и при­ло­же­ний до веб-сервисов.
  • Осо­бен­но хоро­шо он соче­та­ет­ся с эко­си­сте­мой Microsoft.

Игры на DirectX

DirectX — набор ком­по­нен­тов, кото­рые исполь­зу­ют­ся для про­грам­ми­ро­ва­ния трёх­мер­ной гра­фи­ки и рабо­ты со зву­ком и видео. С помо­щью C# мож­но лег­ко под­клю­чить­ся к DirectX и напи­сать свой трёх­мер­ный шутер или любую дру­гую игру. Тех­ни­че­ски это выгля­дит так: C# отве­ча­ет за логи­ку и пове­де­ние игры, а DirectX — за гра­фи­ку и зву­ко­вое сопро­вож­де­ние.

Игры на Unity

Unity — это дви­жок для созда­ния дву­мер­ных и трёх­мер­ных игр. Он берёт на себя физи­ку, гра­фи­ку и мно­гие слу­жеб­ные шту­ки, что­бы вы мог­ли сосре­до­то­чить­ся на кон­тен­те и сце­на­рии игры. Всё бы хоро­шо, но без про­грам­ми­ро­ва­ния в Unity всё рав­но не полу­чит­ся, и быва­лые раз­ра­бот­чи­ки реко­мен­ду­ют для Unity выби­рать имен­но C#. Есть и дру­гие вари­ан­ты, напри­мер, соб­ствен­ный язык UnityScript или JavaScript.

Машинное обучение

Так как C# — это про­ект Мик­ро­соф­та, то у него всё в поряд­ке с под­держ­кой и с биб­лио­те­ка­ми. В мире C# биб­лио­те­ки есть прак­ти­че­ски для все­го, в том чис­ле и для рабо­ты с ней­ро­се­тя­ми и машин­ным обу­че­ни­ем — ML.NET.

Это зна­чит, что вы може­те исполь­зо­вать все воз­мож­но­сти ней­ро­нок в при­ло­же­ни­ях и объ­еди­нять их с помо­щью одно­го и того же язы­ка про­грам­ми­ро­ва­ния. А так как C# — муль­ти­плат­фор­мен­ный язык, то машин­ное обу­че­ние мож­но встро­ить прак­ти­че­ски во что угод­но, от мобиль­ных при­ло­же­ний до носи­мой элек­тро­ни­ки.

Игры и программы для разных мобильных платформ

Что­бы один и тот же C#-код рабо­тал на раз­ных плат­фор­мах, исполь­зу­ют Mono и Xamarin — про­дук­ты для кросс-платформенной раз­ра­бот­ки под раз­ные опе­ра­ци­он­ные плат­фор­мы.

  1. Вы пише­те про­грам­му для одной плат­фор­мы, напри­мер Windows.
  2. Берё­те Mono, загру­жа­е­те туда свой код и выби­ра­е­те новую плат­фор­му — напри­мер iOS.
  3. Mono смот­рит и гово­рит — вот тут нуж­но под­клю­чить дру­гую биб­лио­те­ку, вот здесь немно­го пере­пи­сать код, а это место вооб­ще мож­но уда­лить и напи­сать зано­во, что­бы всё рабо­та­ло.
  4. В ито­ге про­грам­мист не пишет софт с нуля для каж­дой опе­ра­ци­он­ной систе­мы, а пра­вит его так, что­бы он соот­вет­ство­вал её тре­бо­ва­ни­ям.
  5. Это сокра­ща­ет вре­мя раз­ра­бот­ки в несколь­ко раз, пото­му что осно­ва кода одна и та же, а раз­ни­ца толь­ко в дета­лях.

Программы и сервисы для веба

C# мож­но исполь­зо­вать для созда­ния веб-приложений. Рабо­та­ет так:

  1. У вас есть компьютер-сервер, на кото­ром рабо­та­ет сер­вер­ный софт Microsoft.
  2. Сер­вер­ный софт уме­ет испол­нять код на несколь­ких язы­ках, сре­ди них — C#.
  3. Где-то из интер­не­та в этот сер­вер при­ле­та­ет запрос, напри­мер «выдай мне глав­ную стра­ни­цу».
  4. Сер­вер­ный софт ком­по­ну­ет веб-страницу и пуля­ет обрат­но поль­зо­ва­те­лю. Как и из чего ком­по­ну­ет­ся эта стра­ни­ца — это и есть то, что нуж­но раз­ра­бо­тать в веб-приложении.

Тео­ре­ти­че­ски вы може­те напи­сать при­ло­же­ние для п. 2 на любом язы­ке, кото­рый под­дер­жи­ва­ет сер­вер­ные реше­ния Microsoft, в неко­то­рых слу­ча­ях это может быть и PHP. Но экс­пер­ты гово­рят, что для соф­та Microsoft есть смысл писать на их язы­ке C#.

Сра­зу ска­жем: в боль­шин­стве быто­вых и люби­тель­ских про­ек­тов вам будет доста­точ­но даже не при­ло­же­ния на C# (или Python, Ruby или PHP), а уже гото­во­го реше­ния. Напри­мер, если нужен блог, луч­ше запу­стить его на хостин­ге WordPress и про­сто начать им поль­зо­вать­ся. Это не самый быст­рый софт и не самый гиб­кий, но его запуск зай­мёт у вас 15 минут, а не 15 недель.

А вот на слож­ных высо­ко­на­гру­жен­ных сай­тах WordPress уже не потя­нет — нуж­ны дру­гие тех­но­ло­гии. И тут уже тре­бу­ют­ся глу­бо­кие зна­ния: на одном желе­зе и с одним сте­ком тех­но­ло­гий луч­ше все­го будет рабо­тать C#, на дру­гом — PHP, на тре­тьем — Ruby и т. д.

Ссылка на основную публикацию
Adblock
detector