HTML Diff
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>