Найти тему
Помоги себе сам

Программирование (С#) для тех, кто хочет научиться, но не знает с чего начать

Оглавление

Это статья будет полезна людям, которые хотят получить новые навыки (писать программы), но не знают с чего начать или плохо понимают самые простые термины связанные с программированием. Людям абсолютно любого возраста и образования (достаточно среднего уровня знакомства с операционной системой Windows).

Я много лет программировал на языке С++, но мне захотелось (как хобби,а не для работы) сделать модель системы с хорошей визуализацией процесса. И тут я осознал, что надо использовать другой язык. Выбор пал на С# (читается Си Шарп), потому что потом его удобно стыковать будет с графикой Unity. Я полез в документацию к языку и подумал: это мне легко начать программировать на новом языке, имея опыт других языков и сред разработки, а кто-то может хочет научиться, но бросает потому что просто не знает куда печатать код программы или как организовать программу, чтобы она делала то, зачем её писали. Поэтому я решил параллельно со своим обучением писать статью, в которой буду рассказывать что и как делать, видя проблемы, с которыми сталкивается новичок, изнутри.

Итак у нас есть компьютер с Windows и желание программировать. Программирование - это создание программы (чаще всего в текстовом виде). Потом эта программа выполняет то, что мы от неё хотим. Сам текст программы надо написать в редакторе. Затем этот текст при необходимости подвергается отладке (дебаг) и упаковывается в файл-программу (компиляция). Редактор, который умеет делать отладку и компиляцию называется средой разработки (IDE). Я предлагаю использовать одну из самых крутых IDE (которая к тому же предоставляется бесплатно самими Microsoft) Visual Studio. Скачиваем её (версию Community, читается как комъюнити и переводится как "сообщество") с официального сайта и устанавливаем (на диске C желательно иметь около 20 Гб свободного места). Процесс установки интуитивно понятен. Ставим галочку в блоке C# и устанавливаем (для первых уроков хватит одной галочки "разработка классических приложений .NET"). Я поставил галочку ещё и в Unity, чтобы не качать и устанавливать его отдельно.

По процессу установки есть огромный кусок документации. Язык в документации переключается в левом нижнем углу, слева в колонке выбор тем, сверху в строке текущий раздел - всё в одном месте интуитивно понятно. Вообще С# имеет документацию, уроки и примеры почти на всех языках и это очень удобно, потому что на все вопросы можно найти ответы, в отличии от многих других языков программирования. Так же у языка имеется развитое комъюнити, так что типичные вопросы можно найти уже заданными кем-то на форумах просто воспользовавшись поиском Яндекса или самому задать, зарегистрировавшись на каком-то форуме по этому языку. Программирование это больше поиск способа решения, чем набор самого кода (текста программы), поэтому зачастую больше времени уходит (даже у опытного программиста) на чтение документации, поиск и изучение вариантов решения похожих задач (библиотек и шаблонов).

Пока скачивается и устанавливается расскажу чуть теории, а потом продолжим.

Основной принцип написания программ

Далее без теории всё равно не обойтись, поэтому я расскажу основной принцип написания программ. Алгоритм работы - это порядок действий сформулированный так, что не допускает домыслов или разных способов выполнения одного и тоже действия. Многие не любят конкретные примеры, но для того чтобы человек понял как работает программа следует поставить программу на место человека, тогда станет понятно отличие логики работы программы от человеческой.

Например жена хочет что-то приготовить и посылает Вас в магазин за продуктами и говорит: купи батон, молоко, если будут зелёные яблоки, то купи один килограмм, если будут красные, то сходи в магазин столько раз, сколько надо, пока не скупишь все красные яблоки.

Человек услышав такое, скорее всего увидев на полке и зелёные и красные яблоки, не купит килограмм зелёных, а скупит все красные. С точки зрения программы все команды выполняются последовательно и если сначала сказано взять килограмм зелёных яблок, то наличие красных будет проверено только после этого. Чтобы были или зелёные или красные следует сказать " если будут зелёные яблоки, то купи один килограмм, если будут красные, то вместо покупки зелёных сходи в магазин столько раз ". Но тогда программа убедится, что зелёные яблоки есть, но отложит выполнение или отмену до тех пор пока не проверит наличие красных яблок. Эффективнее сказать сначала про красные, а потом про зелёные. На уроках информатики принято рисовать блок-схемы алгоритмов, но на практике к ним прибегают очень редко и они содержат много придуманных только что, но наглядных элементов. Нарисуем алгоритм этой задачи от жены (после дебага), используя для действий прямоугольник, для условий ромб.

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

Мы видим что в такой простой задаче использованы условия (если), повторы или циклы (пока). Алгоритм выглядит компактнее записи в виде слов, но программы чаще всего пишутся словами. Попробуем написать эту программу сначала словами нашего языка:

1. Попытайся купить батон.
2. Попытайся купить молоко.
3. Есть ли в магазине красные яблоки?
4. Если да, тогда купи красных яблок сколько унесёшь.
5. В магазине остались красные яблоки?
6. Если да, тогда вернись в магазин и продолжай покупки с третьей строки списка.
7. Если в ответе на третью строке списка первый раз было "нет", тогда есть ли в магазине зелёные яблоки?
8. Если да, тогда Купи один килограмм зелёных яблок.

Строки "Попытайся купить батон" можно заменить на "Есть ли в магазине батон? Если есть Купи батон.", но можно и не менять, так как в большинстве языков программирования существует оператор попытки. Эти 8 строк нельзя выполнить двумя разными способами и они не нуждаются в додумывании действия, если что-то пошло не так. Такой алгоритм можно перевести на любой язык программирования высокого уровня.

Сам алгоритм можно составить несколькими способами. Следует выбирать наиболее простой с точки зрения выполнения компьютера и объёма текста, учитывая возможную необходимость вносить изменения (то есть чтобы был понятным и легко масштабируемым, если так не получается, то программисты такой код называют костылём). Повторяющиеся операции следует объединять в процедуры (или функции), чтобы не копировать уже написанное, и ставить комментарии по работе сложных фрагментов (даже для самого себя).

Первая программа на C#

Обычно примером первой программы становится вывод на экран текста "Hello, World!". Раздел изучения C# на официальном сайте с этого и начинается. Далее там рассказываются основы синтаксиса и примеры использования. Со знанием этого словесный алгоритм из "Если А равно Б Тогда Действие" переводится в "if(a==b)действие;" . Справа вверху примеров есть зелёная кнопка для того чтобы пробовать фрагмент кода прямо в браузере. Либо для консольных приложений можно пользоваться сторонними сайтами, например первой же строкой найденной в Яндексе.

Например, я хочу, чтобы моя программа угадывала какую логическую операцию я выполнил (И или ИЛИ) над парой двоичных чисел. Для начала сделаем консольную программу (приложение). Вот её алгоритм (не такой подробный как с яблоками):

1. Запросим ввод трёх чисел. Проверим, чтобы введённое было тем, что мы ждём (три двоичных числа одинаковой длины).

2. Попытаемся конвертировать то, что нам ввели в двоичный формат (числа, состоящие из нулей и единиц). Если вы приступили к созданию первой программы сложнее "Hello World", то наверняка прочитали основы языка до циклов включительно (занимает около двух часов времени). Если ещё нет и предпочитаете разведку боем, то я буду делать комментарии, но помните, что язык намного шире того, что я использовал.

3. Выполняем операцию И, если это не И, то выполняем операцию ИЛИ, если это не ИЛИ, то признаёмся, что не знаем какая это операция. Такая конструкция называется условным оператором или ветвлением или ифчиком.

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

5. Программа должна вывести на экран сообщение о предполагаемой логической операции.

При первом запуске программа предложит открыть сторонний проект (потом будет предлагать из Ваших проектов плюс эти же варианты). В самом низу есть ссылка по которой просто открывается программа. В самой программе нажимаем Файл->Создать->Проект. Выбираем "Консольное приложение C# ".

Как видите нам открылся не пустой лист, а шаблон полностью настроенного консольного приложения, выводящего на экран приветствие миру. Чтобы запустить его достаточно нажать зелёную стрелочку на панели. Для сохранения изменений есть кнопка "Сохранить всё". После того как программа запустится автоматически выполнится функция Main, поэтому весь код поначалу можно писать в неё. Есть языки (например Python) которые не требуют настройки точки входа и других параметров, а просто последовательно выполняют все строки начиная с первой, но C# не из них.

Ниже приведу код программы. Несколько замечаний: после "//" пишутся комментарии, программа их игнорирует. Если нажать ".", то появится подсказка с доступными методами (тем, что можно сделать с предыдущим написанным), но можно печатать и по памяти. Если нажать слева от номера строки, то программа выполнится до этой строки, станет на паузу и продолжится при нажатии кнопки продолжения, это надо для отладки. Если кликнуть на переменную или функцию с зажатой кнопкой Ctrl, то перейдём к её объявлению.

_______________________

В следующей статье я расскажу как делать интерфейс оконного приложения Windows (кнопки, поля ввода и вывода) и как использовать более сложные элементы языка, например функции и классы. Заодно постараюсь простыми словами объяснить смысл некоторых важных терминов и принципов в программировании.