0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#Руководства</a></p>
1
<p><a>#Руководства</a></p>
2
<ul><li>9 янв 2020</li>
2
<ul><li>9 янв 2020</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><h2>С# для новичков: развеиваем мифы и пишем простого чат-бота</h2>
4
</ul><h2>С# для новичков: развеиваем мифы и пишем простого чат-бота</h2>
5
<p>Рассказываем о С#, даём полезные советы и делаем первые шаги в программировании.</p>
5
<p>Рассказываем о С#, даём полезные советы и делаем первые шаги в программировании.</p>
6
<p> vlada_maestro / shutterstock</p>
6
<p> vlada_maestro / shutterstock</p>
7
<p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
7
<p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
8
<p><strong>С#</strong><em>(произносится "си шарп")</em>- это современный язык программирования, созданный компанией Microsoft. На нём можно писать программы любой сложности для любых платформ и операционных систем.</p>
8
<p><strong>С#</strong><em>(произносится "си шарп")</em>- это современный язык программирования, созданный компанией Microsoft. На нём можно писать программы любой сложности для любых платформ и операционных систем.</p>
9
<p>C# устроен так, чтобы программист мог писать<strong>меньше кода.</strong>Для этого в языке много "магических конструкций" и "синтаксического сахара" - способов выразить идею лаконично.</p>
9
<p>C# устроен так, чтобы программист мог писать<strong>меньше кода.</strong>Для этого в языке много "магических конструкций" и "синтаксического сахара" - способов выразить идею лаконично.</p>
10
<p>Это<strong>кроссплатформенный язык,</strong>то есть ваша программа будет работать не только в той операционной системе, в которой она написана, но и в других.</p>
10
<p>Это<strong>кроссплатформенный язык,</strong>то есть ваша программа будет работать не только в той операционной системе, в которой она написана, но и в других.</p>
11
<p>C# может казаться страшным и сложным, но на самом деле его совсем не стоит бояться. Давайте посмотрим на главные мифы о нём.</p>
11
<p>C# может казаться страшным и сложным, но на самом деле его совсем не стоит бояться. Давайте посмотрим на главные мифы о нём.</p>
12
<ul><li><strong>Чтобы стать C#-разработчиком, надо учиться долгие годы.</strong>Это очень популярный миф, но на самом деле достаточно<strong>нескольких месяцев,</strong>и вы уже можете работать junior-разработчиком.</li>
12
<ul><li><strong>Чтобы стать C#-разработчиком, надо учиться долгие годы.</strong>Это очень популярный миф, но на самом деле достаточно<strong>нескольких месяцев,</strong>и вы уже можете работать junior-разработчиком.</li>
13
<li><strong>Чтобы быть C#-разработчиком, надо разбираться в высшей математике.</strong>Это стереотип не только о конкретном языке, но и о программировании в целом. В реальности программисты<strong>99% времени не используют математику</strong>- за исключением некоторых областей, прямо с ней связанных. Если вы делаете веб-сайты, создаете мобильные приложения, видеоигры - математика вам не понадобится.</li>
13
<li><strong>Чтобы быть C#-разработчиком, надо разбираться в высшей математике.</strong>Это стереотип не только о конкретном языке, но и о программировании в целом. В реальности программисты<strong>99% времени не используют математику</strong>- за исключением некоторых областей, прямо с ней связанных. Если вы делаете веб-сайты, создаете мобильные приложения, видеоигры - математика вам не понадобится.</li>
14
<li><strong>C# - это что-то сверхсложное</strong>. Как мы уже сказали, этот язык создавался так, чтобы в нём было удобно работать. Поэтому любой хорошо написанный код читается и <strong>понимается так же легко, как текст на английском языке.</strong></li>
14
<li><strong>C# - это что-то сверхсложное</strong>. Как мы уже сказали, этот язык создавался так, чтобы в нём было удобно работать. Поэтому любой хорошо написанный код читается и <strong>понимается так же легко, как текст на английском языке.</strong></li>
15
</ul><ul><li>Этот язык популярен и быстро развивается.</li>
15
</ul><ul><li>Этот язык популярен и быстро развивается.</li>
16
<li>Разработчики C# востребованы.</li>
16
<li>Разработчики C# востребованы.</li>
17
<li>С ним удобно работать, легко читать код.</li>
17
<li>С ним удобно работать, легко читать код.</li>
18
<li>C# и связанные с ним технологии можно освоить за несколько месяцев.</li>
18
<li>C# и связанные с ним технологии можно освоить за несколько месяцев.</li>
19
</ul><ul><li>Десктопные приложения.</li>
19
</ul><ul><li>Десктопные приложения.</li>
20
<li>Серверные приложения и веб-сайты.</li>
20
<li>Серверные приложения и веб-сайты.</li>
21
<li>Мобильные приложения.</li>
21
<li>Мобильные приложения.</li>
22
<li>Консольные приложения и утилиты.</li>
22
<li>Консольные приложения и утилиты.</li>
23
<li>Универсальные приложения для десктопов, планшетов, смартфонов.</li>
23
<li>Универсальные приложения для десктопов, планшетов, смартфонов.</li>
24
</ul><p>Этот язык создавался специально для разработки под Windows, так что с программами под эту операционную систему у вас не будет проблем. Это касается и Windows Phone, для которого C# - основной язык разработки. Но это не значит, что вы можете писать только для Windows, - C# замечательно работает и с другими операционными системами.</p>
24
</ul><p>Этот язык создавался специально для разработки под Windows, так что с программами под эту операционную систему у вас не будет проблем. Это касается и Windows Phone, для которого C# - основной язык разработки. Но это не значит, что вы можете писать только для Windows, - C# замечательно работает и с другими операционными системами.</p>
25
<p>Для эффективной работы полезно знать о дополнительных инструментах. Вот некоторые из них:</p>
25
<p>Для эффективной работы полезно знать о дополнительных инструментах. Вот некоторые из них:</p>
26
<ul><li><strong>WPF</strong><em>(Windows Presentation Foundation)</em>поможет легко и быстро создать интерфейс для любых экранов, уменьшает количество кода, отображающего интерфейс.</li>
26
<ul><li><strong>WPF</strong><em>(Windows Presentation Foundation)</em>поможет легко и быстро создать интерфейс для любых экранов, уменьшает количество кода, отображающего интерфейс.</li>
27
<li><strong>Xamarin</strong> - фреймворк для разработки кроссплатформенных приложений для Windows Phone, Android и iOS. То есть вы напишете один код, и он сразу будет работать на всех основных платформах.</li>
27
<li><strong>Xamarin</strong> - фреймворк для разработки кроссплатформенных приложений для Windows Phone, Android и iOS. То есть вы напишете один код, и он сразу будет работать на всех основных платформах.</li>
28
<li><strong>ASP.NET</strong>помогает просто и быстро связать серверный код с клиентским в серверных приложениях и веб-разработке.</li>
28
<li><strong>ASP.NET</strong>помогает просто и быстро связать серверный код с клиентским в серверных приложениях и веб-разработке.</li>
29
<li><strong>Entity Framework</strong> - один из лучших фреймворков для работы с базами данных. Позволяет работать с данными как с объектами.</li>
29
<li><strong>Entity Framework</strong> - один из лучших фреймворков для работы с базами данных. Позволяет работать с данными как с объектами.</li>
30
<li><strong>LINQ</strong><em>(Language Integrated Query)</em> - мини-язык запросов, встроенный в C# и позволяющий легко выбирать, фильтровать, сортировать и группировать любые данные из любых источников: баз данных, массивов, структур, файлов и так далее.</li>
30
<li><strong>LINQ</strong><em>(Language Integrated Query)</em> - мини-язык запросов, встроенный в C# и позволяющий легко выбирать, фильтровать, сортировать и группировать любые данные из любых источников: баз данных, массивов, структур, файлов и так далее.</li>
31
<li><strong>Visual Studio</strong>- среда разработки, созданная специально для языка C#.</li>
31
<li><strong>Visual Studio</strong>- среда разработки, созданная специально для языка C#.</li>
32
</ul><p>Писать код в среде разработки удобно. У неё много плюсов, например:</p>
32
</ul><p>Писать код в среде разработки удобно. У неё много плюсов, например:</p>
33
<ul><li>подскажет, если в коде есть ошибка;</li>
33
<ul><li>подскажет, если в коде есть ошибка;</li>
34
<li>имеет встроенную справку на случай, если вы что-то забыли;</li>
34
<li>имеет встроенную справку на случай, если вы что-то забыли;</li>
35
<li>генерирует часть кода за вас (дополнит названия функций, шаблонные структуры).</li>
35
<li>генерирует часть кода за вас (дополнит названия функций, шаблонные структуры).</li>
36
</ul><p>Теперь пора перейти к практике. Сегодня мы будем работать в онлайн-среде<a>ideone</a>. Серьезные программы в онлайн-средах не пишутся, но для обучения и практики это самое то!</p>
36
</ul><p>Теперь пора перейти к практике. Сегодня мы будем работать в онлайн-среде<a>ideone</a>. Серьезные программы в онлайн-средах не пишутся, но для обучения и практики это самое то!</p>
37
<p>Итак, откроем сайт<a>ideone</a>. Слева будет окошко для кода. Возможно, что по умолчанию там будет выбран другой язык - тогда просто нажмите на его название и выберите C#.</p>
37
<p>Итак, откроем сайт<a>ideone</a>. Слева будет окошко для кода. Возможно, что по умолчанию там будет выбран другой язык - тогда просто нажмите на его название и выберите C#.</p>
38
В окошке уже будет написано несколько строчек основы, а свой код мы будем писать под надписью "your code goes here".<p>Самые первые слова любого программиста - "Привет, мир!" (Hello, World!), поэтому и мы начнём с них. Хотя не совсем: мы позволили себе заменить "мир" на "Скиллбокс" ;) Чтобы отобразить наше сообщение, используем команду<em>Console.WriteLine ()</em>. Свой текст напишем в скобках и не забудем поставить кавычки. Вот так:</p>
38
В окошке уже будет написано несколько строчек основы, а свой код мы будем писать под надписью "your code goes here".<p>Самые первые слова любого программиста - "Привет, мир!" (Hello, World!), поэтому и мы начнём с них. Хотя не совсем: мы позволили себе заменить "мир" на "Скиллбокс" ;) Чтобы отобразить наше сообщение, используем команду<em>Console.WriteLine ()</em>. Свой текст напишем в скобках и не забудем поставить кавычки. Вот так:</p>
39
<em>Console.WriteLine ()</em> - команда для отображения информации.<p>Чтобы запустить свой код и протестировать, работает ли он, нажмём зелёную кнопку<em>RUN</em>в углу.</p>
39
<em>Console.WriteLine ()</em> - команда для отображения информации.<p>Чтобы запустить свой код и протестировать, работает ли он, нажмём зелёную кнопку<em>RUN</em>в углу.</p>
40
<p>Чтобы общаться с нашим будущим чат-ботом, нам надо научить его читать - то есть сделать так, чтобы мы могли задавать информацию, с которой он будет работать. Для этого мы используем команду<em>Console.ReadLine ().</em>Она прочитает текст, который написал пользователь.</p>
40
<p>Чтобы общаться с нашим будущим чат-ботом, нам надо научить его читать - то есть сделать так, чтобы мы могли задавать информацию, с которой он будет работать. Для этого мы используем команду<em>Console.ReadLine ().</em>Она прочитает текст, который написал пользователь.</p>
41
<p>Давайте уже напишем начало: пусть чат-бот здоровается, а потом читает наше сообщение:</p>
41
<p>Давайте уже напишем начало: пусть чат-бот здоровается, а потом читает наше сообщение:</p>
42
Console.WriteLine(“Приветствую, задавай свой вопрос!”); Console.ReadLine();<p>Прочитать-то он прочитает, но память у бота короткая - надо, чтобы он это сообщение запомнил. Для этого сохраним его в переменную - назовём её, например,<em>text</em>. Вместо<em>Console.ReadLine ()</em>напишем вот так:</p>
42
Console.WriteLine(“Приветствую, задавай свой вопрос!”); Console.ReadLine();<p>Прочитать-то он прочитает, но память у бота короткая - надо, чтобы он это сообщение запомнил. Для этого сохраним его в переменную - назовём её, например,<em>text</em>. Вместо<em>Console.ReadLine ()</em>напишем вот так:</p>
43
var text = Console.ReadLine();<em>Console.ReadLine ()</em> - команда, читающая сообщение пользователя;<em>var</em> - команда, которая отмечает, что мы создаём новую переменную. После неё мы пишем название переменной.<p>Пусть бот уточняет, что именно мы ему сказали, - вдруг мы забудем. Сделаем мы это той же командой<em>Console.WriteLine (),</em>только в этот раз мы не знаем заранее, что надо будет написать, поэтому используем переменную. Чтобы вставить переменную в текст, обозначим её фигурными скобками, а перед кавычками напишем знак доллара, вот так:</p>
43
var text = Console.ReadLine();<em>Console.ReadLine ()</em> - команда, читающая сообщение пользователя;<em>var</em> - команда, которая отмечает, что мы создаём новую переменную. После неё мы пишем название переменной.<p>Пусть бот уточняет, что именно мы ему сказали, - вдруг мы забудем. Сделаем мы это той же командой<em>Console.WriteLine (),</em>только в этот раз мы не знаем заранее, что надо будет написать, поэтому используем переменную. Чтобы вставить переменную в текст, обозначим её фигурными скобками, а перед кавычками напишем знак доллара, вот так:</p>
44
Console.WriteLine(“Приветствую, задавай свой вопрос!”); var text = Console.ReadLine(); Console.WriteLine($”Ваш вопрос: {text}”);<em>$</em>позволяет вставить переменную в текст. Пишем его перед кавычками, а саму переменную в тексте обозначаем фигурными скобками.<p><strong>Важно!</strong><em>Не забывайте ставить точку с запятой в конце каждой строчки!</em></p>
44
Console.WriteLine(“Приветствую, задавай свой вопрос!”); var text = Console.ReadLine(); Console.WriteLine($”Ваш вопрос: {text}”);<em>$</em>позволяет вставить переменную в текст. Пишем его перед кавычками, а саму переменную в тексте обозначаем фигурными скобками.<p><strong>Важно!</strong><em>Не забывайте ставить точку с запятой в конце каждой строчки!</em></p>
45
<p>Чтобы задать свой<em>input</em>, запустите программу, а потом нажмите кнопку<em>edit</em>слева вверху над кодом.</p>
45
<p>Чтобы задать свой<em>input</em>, запустите программу, а потом нажмите кнопку<em>edit</em>слева вверху над кодом.</p>
46
<p>Снизу откроется окошко с надписью<em>input</em>над ним. То, что вы там напишете, программа использует при следующем запуске.</p>
46
<p>Снизу откроется окошко с надписью<em>input</em>над ним. То, что вы там напишете, программа использует при следующем запуске.</p>
47
<p>Сейчас наш чат-бот умеет здороваться и может повторить, что мы ему написали. Давайте научим его реагировать на то, что мы пишем. Для этого нам понадобится конструкция<em>if</em> - она проверяет, соблюдено ли условие, и решает, что делать дальше. На новой строке напишем<em>if</em>и в круглых скобках напишем условие. Пусть в ответ на <em>"Привет"</em>бот отвечает<em>"Здарова!"</em>. Мы можем написать вот так:</p>
47
<p>Сейчас наш чат-бот умеет здороваться и может повторить, что мы ему написали. Давайте научим его реагировать на то, что мы пишем. Для этого нам понадобится конструкция<em>if</em> - она проверяет, соблюдено ли условие, и решает, что делать дальше. На новой строке напишем<em>if</em>и в круглых скобках напишем условие. Пусть в ответ на <em>"Привет"</em>бот отвечает<em>"Здарова!"</em>. Мы можем написать вот так:</p>
48
if (text == “Привет”) { Console.WriteLine(“Здарова!”); }<em>Для сравнения</em>пишется<em>двойной знак =</em>. Обычный мы используем, если надо сохранить значение в переменную. Не путайте!<p>У нашего решения есть несколько проблем. Первая: если мы напишем весь свой текст маленькими или большими буквами, программа его не опознает. Что с этим делать? Добавим команду<em>ToLower ()</em>, которая заменит все буквы на маленькие, и текст, с которым мы сравниваем сообщение пользователя, тоже перепишем маленькими буквами, вот так:</p>
48
if (text == “Привет”) { Console.WriteLine(“Здарова!”); }<em>Для сравнения</em>пишется<em>двойной знак =</em>. Обычный мы используем, если надо сохранить значение в переменную. Не путайте!<p>У нашего решения есть несколько проблем. Первая: если мы напишем весь свой текст маленькими или большими буквами, программа его не опознает. Что с этим делать? Добавим команду<em>ToLower ()</em>, которая заменит все буквы на маленькие, и текст, с которым мы сравниваем сообщение пользователя, тоже перепишем маленькими буквами, вот так:</p>
49
Console.WriteLine(“Приветствую, задавай свой вопрос!”); var text = Console.ReadLine().ToLower(); if (text == “привет”) { Console.WriteLine(“Здарова!”); }<p>А что, если мы напишем "Привет, как дела?"? Наш бот никак не отреагирует. Чтобы это исправить, используем функцию<em>Contains ()</em>, которая проверит, есть ли нужная строка в нашем вводе.</p>
49
Console.WriteLine(“Приветствую, задавай свой вопрос!”); var text = Console.ReadLine().ToLower(); if (text == “привет”) { Console.WriteLine(“Здарова!”); }<p>А что, если мы напишем "Привет, как дела?"? Наш бот никак не отреагирует. Чтобы это исправить, используем функцию<em>Contains ()</em>, которая проверит, есть ли нужная строка в нашем вводе.</p>
50
if (text.Contains(“привет”)) { Console.WriteLine(“Здарова!”); }<p>Можем разнообразить словарный запас нашего бота, добавив ещё условий:</p>
50
if (text.Contains(“привет”)) { Console.WriteLine(“Здарова!”); }<p>Можем разнообразить словарный запас нашего бота, добавив ещё условий:</p>
51
if (text.Contains(“как дела”)) { Console.WriteLine(“Да нормалёк”); } if (text.Contains(“как тебя зовут”)) { Console.WriteLine(“Я - чат-бот Иннокентий”); }<p>Теперь, если мы напишем "Привет! Как тебя зовут? Как дела?", наш бот напишет ответ на все фразы по очереди.</p>
51
if (text.Contains(“как дела”)) { Console.WriteLine(“Да нормалёк”); } if (text.Contains(“как тебя зовут”)) { Console.WriteLine(“Я - чат-бот Иннокентий”); }<p>Теперь, если мы напишем "Привет! Как тебя зовут? Как дела?", наш бот напишет ответ на все фразы по очереди.</p>
52
<p><strong>Важно!</strong></p>
52
<p><strong>Важно!</strong></p>
53
<p><em>Если бы вы писали более сложного "настоящего" бота или другую программу, вы бы не копировали один и тот же код много раз, а использовали файл, базу данных или что-то другое. Когда одна и та же часть повторяется много раз, код<strong>неудобно читать и тяжело исправлять.</strong></em></p>
53
<p><em>Если бы вы писали более сложного "настоящего" бота или другую программу, вы бы не копировали один и тот же код много раз, а использовали файл, базу данных или что-то другое. Когда одна и та же часть повторяется много раз, код<strong>неудобно читать и тяжело исправлять.</strong></em></p>
54
<p>А что, если мы хотим получать не только такие ответы, но и меняющуюся информацию? Например, нам интересно, какой сегодня день. Если бы мы написали сегодняшнюю дату в такую же конструкцию, как выше, то или нам пришлось бы переписывать код каждый день, или наша программа сразу бы устарела. Нам поможет функция<em>DateTime</em>. Спросим у неё, какая сейчас<em>(Now)</em>дата, переведём это в строку нужного формата<em>(ToString ("dd.MM.yyyy"))</em>и всё это сохраним в переменную<em>date</em>. Вот так это выглядит:</p>
54
<p>А что, если мы хотим получать не только такие ответы, но и меняющуюся информацию? Например, нам интересно, какой сегодня день. Если бы мы написали сегодняшнюю дату в такую же конструкцию, как выше, то или нам пришлось бы переписывать код каждый день, или наша программа сразу бы устарела. Нам поможет функция<em>DateTime</em>. Спросим у неё, какая сейчас<em>(Now)</em>дата, переведём это в строку нужного формата<em>(ToString ("dd.MM.yyyy"))</em>и всё это сохраним в переменную<em>date</em>. Вот так это выглядит:</p>
55
if (text.Contains(“какой сегодня день”)) { var date = DateTime.Now.ToString(“dd.MM.yyyy”); Console.WriteLine($“Сегодня {date}”); }<p>И напоследок ещё одна важная тема.</p>
55
if (text.Contains(“какой сегодня день”)) { var date = DateTime.Now.ToString(“dd.MM.yyyy”); Console.WriteLine($“Сегодня {date}”); }<p>И напоследок ещё одна важная тема.</p>
56
<p>Конструкция<em>if</em>часто идет в паре с <em>else</em>.<em>Else</em>описывает, что сделать в том случае, если условие из <em>if</em>не выполнится.</p>
56
<p>Конструкция<em>if</em>часто идет в паре с <em>else</em>.<em>Else</em>описывает, что сделать в том случае, если условие из <em>if</em>не выполнится.</p>
57
<p>Используется<em>else</em>после<em>if</em> - но мы уже не пишем условие, а только действие в фигурных скобках. Вот пример этой конструкции:</p>
57
<p>Используется<em>else</em>после<em>if</em> - но мы уже не пишем условие, а только действие в фигурных скобках. Вот пример этой конструкции:</p>
58
if (text.Contains(“привет”)) { Console.WriteLine(“Здарова!”); } else { Console.WriteLine(“Грубиян, даже не поздоровался!”); }<p>Теперь, если мы напишем сообщение боту без слова "привет", он обидится и будет ругаться.</p>
58
if (text.Contains(“привет”)) { Console.WriteLine(“Здарова!”); } else { Console.WriteLine(“Грубиян, даже не поздоровался!”); }<p>Теперь, если мы напишем сообщение боту без слова "привет", он обидится и будет ругаться.</p>
59
<p>Для первого раза всё! Это были основы основ C#. Вы уже знаете, как отобразить текст (и не только), работать с информацией от пользователя, искать в тексте фразы, и попробовали работать с конструкцией<em>if-else</em>, которая очень важна. Из этих "кирпичиков" можно смело начинать строить!</p>
59
<p>Для первого раза всё! Это были основы основ C#. Вы уже знаете, как отобразить текст (и не только), работать с информацией от пользователя, искать в тексте фразы, и попробовали работать с конструкцией<em>if-else</em>, которая очень важна. Из этих "кирпичиков" можно смело начинать строить!</p>
60
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
60
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>