C#: Быстрый старт для новичков

Этот курс предназначен для абсолютных новичков, желающих освоить основы языка C# и платформы .NET. Вы пройдете путь от установки среды разработки до понимания базовых принципов объектно-ориентированного программирования.

1. Введение в C#: установка Visual Studio и первая программа Hello World

Введение в C#: установка Visual Studio и первая программа Hello World

Добро пожаловать в курс C#: Быстрый старт для новичков! Это первая статья, с которой начнется ваше путешествие в мир программирования. Сегодня мы не просто напишем код, мы подготовим профессиональное рабочее место и разберемся, как работает одна из самых популярных технологий в мире.

Многие новички боятся начать, думая, что программирование — это сложная магия, доступная только избранным. На самом деле, это просто навык общения с компьютером на языке, который он понимает. И C# (читается как «Си-шарп») — один из лучших языков для этого диалога.

Почему именно C#?

Прежде чем мы начнем установку инструментов, давайте разберемся, зачем нам вообще нужен этот язык. C# был разработан компанией Microsoft и является основным языком платформы .NET.

Вот несколько причин, почему вы сделали правильный выбор:

* Универсальность. На C# можно написать практически всё: от офисных программ для Windows до мобильных приложений на Android и iOS, от веб-сайтов до сложных корпоративных систем. * Игровая индустрия. Если вы мечтаете создавать игры, C# — это стандарт де-факто для движка Unity, на котором создана половина всех мобильных и инди-игр в мире. * Строгая типизация. Язык помогает вам избегать ошибок еще на этапе написания кода. Он «подсказывает», если вы пытаетесь сложить число со словом, что очень полезно для новичков. * Востребованность. C# стабильно входит в топ-5 самых популярных языков программирования в мире.

!Иллюстрация универсальности языка C#: от десктопа до игр и веба

Инструментарий: Что такое IDE?

Программировать можно даже в «Блокноте», но это так же неудобно, как копать котлован чайной ложкой. Профессионалы используют IDE (Integrated Development Environment) — Интегрированную Среду Разработки.

IDE — это ваш верстак, на котором разложены все необходимые инструменты:

* Редактор кода (умный блокнот с подсветкой синтаксиса). * Компилятор (переводчик с языка C# на язык машинных кодов). * Отладчик (инструмент для поиска и исправления ошибок).

Для C# лучшей средой разработки является Visual Studio от Microsoft. Мы будем использовать версию Visual Studio Community — она абсолютно бесплатна для обучения и индивидуальной разработки.

> Важно не путать Visual Studio (мощная IDE) и Visual Studio Code (легкий редактор кода). Для начала обучения нам нужна именно полноценная Visual Studio (фиолетовая иконка), так как она берет на себя 90% рутинной настройки.

Шаг 1: Установка Visual Studio

Давайте подготовим ваше рабочее место. Следуйте этой инструкции шаг за шагом:

  • Перейдите на официальный сайт visualstudio.microsoft.com.
  • Найдите раздел Visual Studio IDE и нажмите кнопку Download (Скачать).
  • В выпадающем меню выберите Community 2022 (или более новую версию, если она доступна).
  • Скачается небольшой файл-установщик (Visual Studio Installer). Запустите его.
  • Выбор рабочих нагрузок (Workloads)

    Это самый важный момент установки. Visual Studio — это огромный комбайн, и нам не нужно устанавливать его целиком (это займет сотни гигабайт). Нам нужно выбрать только те компоненты, которые потребуются для курса.

    Когда откроется окно выбора компонентов, вы увидите множество плиток с галочками. Вам нужно найти раздел Desktop & Mobile (Настольная и мобильная разработка) и поставить галочку напротив пункта:

    Разработка классических приложений .NET (в английской версии — .NET desktop development).

    !Окно выбора компонентов при установке Visual Studio

    Справа вы увидите список выбранных компонентов. Убедитесь, что общий размер установки составляет примерно 6-8 ГБ. Нажмите кнопку Install (Установить).

    Пока идет установка, вы можете заварить чай — это может занять от 10 до 30 минут в зависимости от скорости вашего интернета и мощности компьютера.

    Шаг 2: Создание первого проекта

    Когда установка завершится, нажмите Launch (Запустить). При первом запуске Visual Studio может попросить вас войти в учетную запись Microsoft (можно пропустить этот шаг) и выбрать цветовую тему (рекомендую темную — глаза будут меньше уставать).

    Теперь создадим нашу первую программу:

  • В стартовом окне выберите Create a new project (Создание нового проекта).
  • В строке поиска сверху напишите: Console.
  • В результатах поиска выберите Console App (Консольное приложение). Обратите внимание: иконка должна иметь метку C#, а не Visual Basic или F#.
  • Нажмите Next (Далее).
  • В поле Project name (Имя проекта) введите: HelloWorld.
  • Поле Location (Расположение) оставьте как есть или выберите удобную папку.
  • Нажмите Next.
  • В поле Framework выберите последнюю доступную версию (например, .NET 6.0, .NET 7.0 или .NET 8.0). Нажмите Create (Создать).
  • Шаг 3: Анатомия вашей первой программы

    Поздравляю! Вы видите перед собой редактор кода. Visual Studio уже написала за вас минимальный шаблон программы. Давайте посмотрим на код, который сгенерировался автоматически (в старых версиях .NET он может выглядеть чуть объемнее, мы разберем классическую полную структуру):

    Если у вас новая версия .NET, вы можете увидеть всего одну строку:

    Это называется Top-level statements (инструкции верхнего уровня). Для обучения мы будем подразумевать полную структуру, чтобы вы понимали, как всё устроено «под капотом».

    Разбор кода по строкам

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

  • using System; — это подключение библиотеки. Представьте, что System — это ящик с инструментами. Мы говорим программе: «Открой ящик System, нам понадобятся инструменты оттуда».
  • namespace HelloWorld — это Пространство имен. Это как фамилия для вашего кода или папка, в которой он лежит. Это нужно, чтобы ваш класс Program не перепутался с классом Program из другой библиотеки.
  • class Program — это Класс. В C# весь код живет внутри классов. Класс — это чертеж или контейнер для данных и методов.
  • static void Main(string[] args) — это Метод Main. Это самая важная часть. Это «входная дверь» в программу. Когда вы запускаете приложение, компьютер ищет именно метод Main и начинает выполнять команды, написанные внутри его фигурных скобок { ... }.
  • Console.WriteLine("Hello, World!"); — это сама команда.
  • * Console — обращение к системной консоли (черному окну). * WriteLine — команда «напиши строку» (Write Line). * "Hello, World!" — текст, который мы хотим вывести. Текст в программировании всегда пишется в двойных кавычках. * ; — точка с запятой. Это очень важно! В C# каждая команда должна заканчиваться точкой с запятой. Это как точка в конце предложения в русском языке. Если её забыть, программа не запустится.

    Шаг 4: Запуск программы

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

    Найдите в верхней панели зеленый треугольник с надписью HelloWorld (или просто зеленый треугольник Play). Нажмите на него.

    Альтернативный способ (и более быстрый) — нажать клавиши Ctrl + F5 на клавиатуре.

    !Процесс превращения кода в работающую программу

    Если вы всё сделали правильно, на экране появится черное окно консоли, в котором будет написано:

    Поздравляю! Вы официально написали и запустили свою первую программу.

    Эксперименты

    Программирование — это практика. Давайте немного изменим код. Попробуйте заменить текст в кавычках на свое имя:

    Запустите программу снова. Консоль теперь приветствует вас!

    А теперь попробуем добавить вторую строку. Напишите следующий код:

    Обратите внимание, что WriteLine каждый раз переводит курсор на новую строку. Если бы мы использовали команду Write (без Line), текст слипся бы в одну строчку.

    Частые ошибки новичков

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

  • Забытая точка с запятой ;. Компилятор сразу подчеркнет строку красной волнистой линией. Наведите мышку на ошибку, и Visual Studio подскажет: ; expected.
  • Регистр букв. C# — регистрозависимый язык. Это значит, что Console, console и CONSOLE — это три разных слова для компьютера. Команды нужно писать строго так, как они задуманы: Console.WriteLine (с большой буквы).
  • Незакрытые кавычки. Если вы открыли кавычку ", вы обязаны её закрыть.
  • Лишние или недостающие скобки { }. Все, что открылось, должно закрыться. Следите за парностью скобок.
  • Заключение

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

    В следующей статье мы углубимся в понятие переменных и узнаем, как программы могут запоминать информацию и работать с числами. Не удаляйте Visual Studio, она нам скоро понадобится!

    2. Основы синтаксиса: переменные, типы данных и работа с консолью

    Основы синтаксиса: переменные, типы данных и работа с консолью

    Рад видеть вас снова! В прошлой статье мы установили Visual Studio и написали нашу первую программу, которая выводила «Hello, World!». Это было круто, но, честно говоря, программа была глуповата: она умела только говорить одну фразу и сразу закрывалась.

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

    Что такое переменная?

    Представьте, что вы переезжаете. У вас есть куча вещей: книги, одежда, посуда. Чтобы перевезти их, вы используете коробки. На каждой коробке вы пишете маркером, что внутри: «Книги», «Кухня», «Зимняя одежда».

    В программировании переменная — это и есть такая коробка. Она нужна, чтобы хранить данные в оперативной памяти компьютера, пока программа работает.

    У каждой переменной (коробки) есть три важных свойства:

  • Имя (то, что написано маркером на коробке).
  • Значение (то, что лежит внутри).
  • Тип данных (размер и форма коробки).
  • !Визуальная метафора переменных как коробок с разными типами данных

    Типы данных: каждому предмету своя коробка

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

    Вот основные типы данных, которые вы будете использовать в 90% случаев:

    1. Целые числа (int)

    Используется для счета предметов, возраста, количества дней. Диапазон: от -2 миллиардов до +2 миллиардов.

    2. Дробные числа (double)

    Используется для денег, веса, точных измерений. В коде дробная часть отделяется точкой, а не запятой.

    3. Строки (string)

    Используется для текста. Значение обязательно берется в двойные кавычки.

    4. Символы (char)

    Используется для хранения одного символа. Значение берется в одинарные кавычки. Это важно: двойные — для строк, одинарные — для символов.

    Это намного чище и понятнее.

    Простая математика и конвертация

    Давайте попробуем узнать возраст пользователя и посчитать, сколько ему будет через 5 лет.

    Запустите и заполните анкету. Обратите внимание: когда вводите рост, используйте запятую или точку в зависимости от настроек вашей системы (в русской Windows обычно запятая).

    Заключение

    Поздравляю! Вы научились работать с памятью компьютера. Теперь вы знаете, как создавать переменные разных типов, считывать данные от пользователя и красиво выводить результат.

    В следующей статье мы научим нашу программу принимать решения. Мы разберем условные конструкции if и else, чтобы программа могла реагировать по-разному в зависимости от ответов пользователя. До встречи!

    3. Логика программы: условные операторы if-else и циклы

    Логика программы: условные операторы if-else и циклы

    Приветствую, будущие разработчики! В прошлых статьях мы научились создавать «коробки» для данных (переменные) и общаться с пользователем через консоль. Но пока наши программы похожи на поезд, идущий по прямым рельсам: они выполняют команды строго по порядку, одна за другой, и всегда приходят в одну и ту же точку.

    Сегодня мы превратим этот поезд в вездеход. Мы научим программу принимать решения, выбирать путь и выполнять рутинную работу за нас. Это и есть логика — сердце любого алгоритма.

    Искусство задавать вопросы: Логический тип данных

    Прежде чем учить программу выбирать, нужно понять, как она «думает». Компьютер понимает только конкретику: либо Да, либо Нет. В C# для этого существует специальный тип данных bool (логический), который мы упоминали ранее. Он может хранить только два значения:

    * true (Истина / Да) * false (Ложь / Нет)

    Чтобы получить эти значения, мы используем операторы сравнения. Это как весы, на которые мы кладем два значения.

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

    | Оператор | Значение | Пример | Результат | | :--- | :--- | :--- | :--- | | == | Равно | 5 == 5 | true | | != | Не равно | 5 != 3 | true | | > | Больше | 10 > 20 | false | | < | Меньше | 10 < 20 | true | | >= | Больше или равно | 5 >= 5 | true | | <= | Меньше или равно | 4 <= 3 | false |

    > Важно: Новички часто путают == (сравнение) и = (присваивание). Запомните: один знак равенства = кладет значение в переменную, а два == — сравнивают значения.

    Условный оператор if-else

    Теперь, когда мы умеем сравнивать, давайте научим программу действовать по ситуации. Самая главная конструкция в программировании — это if (если).

    Представьте жизненную ситуацию: Если на улице дождь, то я беру зонт. Иначе (если дождя нет), я иду в кепке.

    !Блок-схема работы условного оператора: программа выбирает путь в зависимости от условия

    В коде C# это выглядит так:

    Блок else (иначе) не обязателен. Если вам нужно сделать что-то только при выполнении условия, а в противном случае ничего не делать, else можно пропустить.

    Цепочка условий: else if

    Иногда вариантов больше, чем два. Например, светофор.

    Программа проверяет условия сверху вниз. Как только она находит первое true, она выполняет код внутри этого блока и пропускает все остальные проверки в этой цепочке.

    Логические операторы: И, ИЛИ, НЕ

    Часто решение зависит сразу от нескольких факторов. Например, чтобы купить игру, нужно: (Есть деньги) И (Магазин открыт).

    В C# есть специальные символы для объединения условий:

  • && (Логическое И / AND)
  • Условие истинно, только если оба выражения истинны. * true && true -> true * true && false -> false

  • || (Логическое ИЛИ / OR)
  • Условие истинно, если хотя бы одно из выражений истинно. * true || false -> true * false || false -> false

  • ! (Логическое НЕ / NOT)
  • Переворачивает значение. Делает из правды ложь, и наоборот. * !true -> false

    Пример: Проверка доступа в секретную лабораторию.

    Циклы: Заставь компьютер работать за тебя

    Представьте, что вам нужно вывести фразу «Я не буду болтать на уроках» 100 раз. Писать Console.WriteLine 100 раз — это долго и глупо. Для повторения действий существуют циклы.

    Цикл while (Пока)

    Это самый простой цикл. Он работает по принципу: «Пока условие истинно — делай это».

    !Цикл выполняет код снова и снова, пока выполняется заданное условие

    Разбор:

  • int i = 1 — Создаем счетчик, начинаем с 1.
  • i <= 5 — Проверяем: мы еще не дошли до 5?
  • i++ — Это сокращение от i = i + 1. Увеличиваем счетчик на 1 после каждого круга.
  • Операторы break и continue

    Иногда нужно вмешаться в работу цикла: * break — немедленно остановить цикл и выйти из него (как стоп-кран). * continue — пропустить текущий круг и сразу перейти к следующему.

    Практика: Игра «Угадай число»

    Давайте объединим if, while и ввод данных, чтобы написать нашу первую настоящую игру.

    Задача: Компьютер загадывает число от 1 до 100, а пользователь пытается его угадать. Программа должна подсказывать «Больше» или «Меньше».

    Создайте новый проект и напишите этот код:

    Разбор логики игры

  • Мы используем класс Random, чтобы получить случайное число.
  • Мы создаем переменную userGuess (догадка пользователя) и даем ей значение 0, чтобы цикл while запустился хотя бы один раз (ведь 0 точно не равен числу от 1 до 100).
  • Внутри цикла мы каждый раз спрашиваем число.
  • С помощью цепочки if-else мы сравниваем введенное число с загаданным и даем подсказку.
  • Как только userGuess станет равен secretNumber, условие цикла userGuess != secretNumber станет ложным (false), и цикл завершится.
  • Заключение

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

    Условные операторы и циклы — это фундамент алгоритмического мышления. Поэкспериментируйте с игрой: добавьте счетчик попыток или ограничьте их количество (например, дайте игроку только 7 жизней).

    В следующей статье мы разберемся, как хранить списки данных (массивы), чтобы не создавать сотню переменных для сотни значений. До встречи!

    4. Методы, массивы и работа со строками

    Методы, массивы и работа со строками

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

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

    Массивы: Шкаф с пронумерованными ящиками

    Представьте, что вы пишете программу для учителя, которому нужно сохранить оценки 30 учеников. Создавать 30 переменных (grade1, grade2, grade3...) — это безумие. А если учеников станет 100?

    Здесь нам на помощь приходят массивы. Массив — это переменная, которая может хранить не одно значение, а целый набор значений одного типа.

    !Визуализация массива как ряда ячеек с индексами, начинающимися с нуля

    Создание массива

    Чтобы объявить массив, мы добавляем квадратные скобки [] к типу данных.

    Индексация: Самое важное правило

    В программировании счет почти всегда начинается с нуля.

    * Первый элемент массива имеет индекс 0. * Второй элемент — индекс 1. * Последний элемент массива длиной имеет индекс , где — количество элементов.

    Давайте обратимся к элементам нашего массива фруктов:

    > Если вы попытаетесь обратиться к элементу, которого нет (например, fruits[10]), программа упадет с ошибкой IndexOutOfRangeException. Это классическая ошибка новичка.

    Массивы и циклы — лучшие друзья

    В прошлой статье мы изучали цикл for. Он идеально подходит для перебора массивов. У каждого массива есть свойство .Length, которое подскажет, сколько в нем элементов.

    В скобках (string name, int age) мы объявляем переменные, которые метод ожидает получить при вызове.

    Возвращаемые значения

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

    Вместо void мы пишем тип данных, который метод вернет (например, int), и используем ключевое слово return.

    Заключение

    Сегодня вы получили мощнейшие инструменты.

    * Массивы позволяют вам работать с большими объемами данных. * Методы помогают структурировать код и делать его чистым. * Функции строк дают контроль над текстовой информацией.

    В следующей статье мы коснемся самой важной темы в C# — Объектно-Ориентированного Программирования (ООП). Мы узнаем, что такое Классы и Объекты, и как моделировать реальный мир внутри компьютера. До встречи!

    5. Введение в классы и объекты: основы ООП

    Введение в классы и объекты: основы ООП

    Приветствую вас в новой главе нашего курса! В предыдущих статьях мы научились писать код, используя переменные, циклы и методы. Мы создавали массивы строк и чисел, чтобы хранить данные. Но давайте будем честны: реальный мир устроен сложнее, чем просто набор чисел и слов.

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

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

    Здесь на сцену выходит ООП — Объектно-Ориентированное Программирование. Это подход, который позволяет нам объединять разрозненные данные и функции в единые сущности, похожие на реальные предметы.

    Главная концепция: Класс и Объект

    В основе ООП лежат два понятия: Класс и Объект. Новички часто их путают, но разница очень проста.

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

    !Иллюстрация различия между Классом (чертеж) и Объектом (реальный робот)

    Пример из жизни

    * Класс: «Кошка». В биологии описано, что у кошки есть 4 лапы, хвост, и она умеет мяукать. * Объект: Ваш конкретный кот Барсик, который сейчас спит на диване.

    Создаем свой первый класс

    В C# классы создаются с помощью ключевого слова class. Давайте создадим класс Robot. Обычно классы описываются в отдельных файлах, но для обучения мы можем написать его в том же файле, но за пределами класса Program.

    Давайте разберем, что мы написали:

  • class Robot — мы объявили новый тип данных. Теперь C# знает, что такое «Робот».
  • public string name; — это поле (field). По сути, это переменная, которая живет внутри класса. Слово public означает, что мы сможем менять это имя снаружи.
  • SayHello() — это метод. Теперь каждый наш робот будет уметь здороваться.
  • Создание объектов (Инстанцирование)

    Теперь, когда у нас есть чертеж (класс), давайте соберем реального робота в методе Main.

    Для создания объекта используется ключевое слово new.

    Когда вы пишете new Robot(), компьютер выделяет место в оперативной памяти под все поля, которые вы описали в классе.

    Множество объектов

    Самое прекрасное в ООП — мы можем создать сколько угодно роботов, и они не будут мешать друг другу. У каждого будет свое имя и свой заряд батареи.

    Конструкторы: Рождение объекта

    В коде выше есть неудобство: после создания робота нам приходится вручную заполнять его поля (bot1.name = ..., bot1.speed = ...). Если мы забудем задать имя, робот будет безымянным.

    Чтобы упростить этот процесс, используются Конструкторы. Конструктор — это специальный метод, который запускается автоматически в момент создания объекта (в момент вызова new).

    Правила конструктора:

  • Его имя совпадает с именем класса.
  • У него нет возвращаемого типа (даже void писать не нужно).
  • Давайте улучшим наш класс Robot:

    Теперь мы можем моделировать жизнь робота:

    Это называется Инкапсуляция (в упрощенном виде). Данные (заряд батареи) и методы работы с ними (трата заряда) находятся в одном месте — внутри объекта.

    Массивы объектов

    Помните проблему с автосалоном в начале статьи? Теперь мы можем решить её элегантно. Мы можем создать массив, который хранит не числа или строки, а наших роботов.

    Ключевое слово this

    Иногда имена аргументов в конструкторе совпадают с именами полей класса. Чтобы компьютер понял, где есть что, используют ключевое слово this. Оно означает «этот конкретный объект».

    Использование this считается хорошим тоном, так как делает код более понятным.

    Заключение

    Сегодня вы перевернули свое представление о программировании. Вы перестали мыслить просто переменными и начали мыслить сущностями.

    * Класс — это шаблон. * Объект — это конкретный экземпляр. * Поля хранят данные объекта. * Методы определяют поведение объекта. * Конструктор помогает правильно создать объект.

    В следующей статье мы углубимся в тему ООП и узнаем про Наследование — механизм, который позволяет создавать новые классы на основе уже существующих, не переписывая код заново. До встречи!