В этой главе вы запустите первую программу на C#, научитесь хранить значения в переменных, читать ввод пользователя, выводить результаты и выполнять вычисления.
Где писать и запускать программы
Можно начать в браузере на NET Fiddle. Для работы на своём компьютере используйте Visual Studio Community. В обоих случаях программа будет выполнять команды C# и показывать результат в консоли — текстовом окне ввода и вывода.
Установка Visual Studio и создание проекта
- Скачайте установщик Visual Studio Community.
- В установщике выберите рабочую нагрузку .NET desktop development. Для консольных упражнений этого курса дополнительные средства веб-разработки не требуются.
- После установки выберите Create a new project, затем шаблон Console App для C#.
- Дайте проекту понятное имя на английском, например
FirstProgram, и выберите папку, в которой сможете найти его позже. - Если есть флажок Do not use top-level statements, установите его: в примерах курса команды находятся внутри
Main.
На иллюстрации из исходного урока показан выбор рабочих нагрузок в Visual Studio 2026. Для начала найдите .NET desktop development.

Видеодемонстрации ниже — на иврите, для дополнительного просмотра. Все необходимые шаги описаны выше.
Первая программа
Откройте NET Fiddle или консольный проект Visual Studio. Используйте такую программу:
1
2
3
4
5
6
7
8
9
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Привет, мир!");
}
}
Нажмите кнопку запуска ▶. В Visual Studio можно нажать F5. Результат:
Привет, мир!
Console.WriteLine выводит текст и переводит курсор на следующую строку. Текст записывается в двойных кавычках. Команда заканчивается точкой с запятой ;.
Пока сохраняйте внешнюю структуру Program и Main, а новые команды пишите внутри фигурных скобок метода Main. Каждой открывающей скобке { нужна закрывающая }.
Попробуйте:
- Добавьте команду, которая напечатает ваше имя под приветствием.
- Наберите
Console.и посмотрите, предлагает ли среда завершить имя команды. - Замените первый
WriteLineнаWrite. Предскажите, где появится ваше имя, и запустите программу.
Переменные и присваивание
Переменная — именованное место в памяти для хранения значения. Во время выполнения программы значение может изменяться.
int age = 16; // Целое число
double average = 85.5; // Число с дробной частью
string name = "Sara"; // Строка текста
Сначала указывается тип переменной, затем её имя. Знак = присваивает значение. В этих примерах объявление переменной сразу сопровождается начальной инициализацией.
Тип переменной остаётся одним и тем же. Например, переменная age типа int не может позднее стать строкой.
Объявление и присваивание — разные действия
Объявление создаёт переменную с заданным именем и типом. Присваивание помещает в неё значение. Эти действия можно записать отдельно:
int age; // Объявляем переменную age
age = 16; // Присваиваем ей значение
age = 17; // Заменяем прежнее значение новым
Локальной переменной нужно присвоить значение до того, как программа прочитает её, например в вычислении или при выводе.
Несколько переменных в одной строке
Переменные одного типа можно объявить через запятую:
int a = 5, b = 10, c = 0; // Объявление и инициализация
double x, y, z; // Только объявление
При присваивании сначала вычисляется правая часть, затем результат записывается в переменную слева. В a = b; значение b копируется в a; значение b не меняется. Запись a = a + 1; увеличивает прежнее значение a на один.
Основные типы
| Тип | Что хранит | Пример |
|---|---|---|
int |
Целое число | 16, -3, 0 |
double |
Число с дробной частью | 85.5, -2.75 |
char |
Одну кодовую единицу символа | 'A', '%', '9' |
string |
Строку — последовательность символов | "Sara", "Привет" |
bool |
Логическое значение: истина или ложь | true, false |
Для имён переменных используйте понятные английские слова в стиле camelCase: первое слово со строчной буквы, следующие — с заглавной, например firstName и totalPrice. C# различает регистр: name и Name — разные имена.
Вывод и ввод пользователя
Console.Write("Введите имя: "); // Приглашение остаётся на той же строке
string name = Console.ReadLine(); // Читаем введённую строку
Console.WriteLine("Привет, " + name); // Соединяем текст и значение name
Если пользователь введёт Dan, в консоли будет:
Введите имя: Dan
Привет, Dan
Знак + между строками соединяет их. Такое соединение называется конкатенацией.
В примерах сообщения переведены на русский. Если ваша консоль показывает их неверно, можно временно заменить текст внутри кавычек английским; имена команд и логика программы при этом не меняются.
Преобразование ввода из текста в число
Console.ReadLine() читает строку. Чтобы выполнить числовые вычисления, преобразуйте её с помощью int.Parse для целого числа или double.Parse для дробного.
1
2
3
4
5
6
7
8
Console.Write("Введите возраст: ");
int age = int.Parse(Console.ReadLine());
// Скобки заставляют сначала выполнить сложение чисел.
Console.WriteLine("Через год вам будет " + (age + 1));
// Без скобок выполняется последовательное соединение со строкой.
Console.WriteLine("Неверный результат: " + age + 1);
Для введённого возраста 16 первая строка покажет 17, а вторая — 161. Запустите программу и объясните, почему скобки изменили результат.
Пример ввода дробного числа:
Console.Write("Введите цену: ");
double price = double.Parse(Console.ReadLine());
Console.WriteLine("Две такие покупки стоят " + (price * 2));
В коде дробная часть числа отделяется точкой: 85.5. При вводе для double.Parse разделитель зависит от языковых настроек среды: это может быть точка или запятая.
Если ввести hello вместо целого числа, int.Parse не сможет выполнить преобразование, и программа завершится с ошибкой. В этих упражнениях вводите значения указанного типа и диапазона.
Целочисленное деление
Если оба операнда имеют тип int, / выполняет целочисленное деление: дробная часть результата отбрасывается.
Console.WriteLine(10 / 3); // 3
Console.WriteLine(13 / 5); // 2
Если хотя бы один операнд имеет тип double, выполняется деление с дробным результатом:
Console.WriteLine(13.0 / 5); // 2.6
Console.WriteLine(13 / 5.0); // 2.6
Для отрицательных целых чисел дробная часть также отбрасывается в направлении нуля: -13 / 5 равно -2.
Попробуйте Console.WriteLine("Результат: " + 13 / 5);, а затем замените 13 на 13.0. Сравните вывод.
Явное и автоматическое преобразование типов
Приведение типа, или cast, явно меняет тип значения в выражении. Например, (double)a даёт значение a в типе double:
1
2
3
4
5
6
int a = 5;
int b = 2;
double result = (double)a / b; // 2.5: сначала преобразование, затем деление
double result2 = a / b; // 2: сначала целочисленное деление
Console.WriteLine(result);
Console.WriteLine(result2);
Сам тип переменной a остаётся int. Приведение действует на значение в этом выражении.
Присваивание результата переменной double не возвращает уже отброшенную дробную часть. Чтобы получить 2.5, один из операндов должен стать double до деления.
Из int в double значение можно преобразовать автоматически. В обратном направлении требуется явное приведение; дробная часть отбрасывается:
int count = 7;
double value = count; // Автоматическое преобразование: 7.0
double length = 7.9;
int whole = (int)length; // Явное преобразование: 7
Арифметические операторы
| Оператор | Действие | Пример |
|---|---|---|
+ |
Сложение | int c = a + b; |
- |
Вычитание | int d = a - b; |
* |
Умножение | int e = a * b; |
/ |
Деление | double f = a / (double)b; |
% |
Остаток от деления | int r = a % b; |
Например, 13 / 5 равно 2, а 13 % 5 равно 3: в числе 13 помещаются две пятёрки, и остаётся 3. Делитель в этих примерах должен быть ненулевым.
Умножение, деление и остаток выполняются раньше сложения и вычитания. Операции одного приоритета выполняются слева направо. Скобки позволяют изменить порядок: 2 + 3 * 4 равно 14, а (2 + 3) * 4 равно 20.
Справка: сокращённые операции присваивания
Эти записи часто встречаются в примерах. Сначала прочитайте их как обычное присваивание.
| Оператор | Действие | Короткая запись | Соответствующая полная запись |
|---|---|---|---|
++ |
Увеличить на 1 | count++; |
count = count + 1; |
-- |
Уменьшить на 1 | count--; |
count = count - 1; |
+= |
Прибавить значение | price += 5; |
price = price + 5; |
-= |
Вычесть значение | price -= 9; |
price = price - 9; |
*= |
Умножить на значение | price *= 1.17; |
price = price * 1.17; |
/= |
Разделить на значение | sum /= 5; |
sum = sum / 5; |
В примере price *= 1.17; используйте double price. Для переменной int sum запись sum /= 5; выполняет целочисленное деление.
Справка: допустимые имена переменных
В простых именах используйте латинские буквы, цифры и подчёркивание. Имя не должно начинаться с цифры, содержать пробел или дефис. Ключевые слова языка, например class, нельзя использовать как обычные имена.
Допустимые примеры:
int myVar;
int _index;
int count2;
Примеры с ошибками — не добавляйте их в рабочую программу:
int 1stValue; // Начинается с цифры
int my-var; // Содержит дефис
int class; // Ключевое слово языка
int full name; // Содержит пробел
int %value; // Содержит недопустимый знак
C# допускает буквы других алфавитов, например int число = 7;, а префикс @ позволяет использовать ключевое слово как имя: int @int;. В упражнениях выбирайте обычные понятные английские имена, например number и total.
У C# есть и другие типы: byte, short, long, float, decimal и другие. Для первых упражнений достаточно типов из основной таблицы.
Если программа не запускается или окно исчезает
- Не узнаётся имя
Console. Проверьте наличиеusing System;в начале файла. Некоторые шаблоны подключают его автоматически. - В шаблоне есть только одна строка вывода. Это вариант с командами верхнего уровня. Чтобы получить структуру как в курсе, создайте Console App с флажком Do not use top-level statements, если он доступен, или замените содержимое
Program.csполной первой программой выше. Не вставляйте вторую программу рядом с уже имеющимися командами. - Написано
internal class Program, а в примере —public class Program. Для запуска наших консольных примеров подходят оба варианта; оставьте структуру своего шаблона. - Окно закрывается слишком быстро. Запустите через Ctrl+F5 без отладки либо добавьте последней командой внутри
MainстрокуConsole.ReadLine();, чтобы программа ждала нажатия Enter. - Не удаётся записать выходной файл при сборке. Закройте оставшееся окно предыдущего запуска, остановите отладку и попробуйте снова. Если ошибка сохраняется, прочитайте полное сообщение: причина может быть иной.
- Ошибка компиляции. Откройте список ошибок, начните с первой и проверьте указанную строку: кавычки, скобки, точку с запятой, имена и типы переменных.
Сохраняйте программы в доступной вам папке или в своей учётной записи онлайн-среды. Если работаете за общим компьютером, заранее сохраните копию своей работы там, откуда сможете открыть её дома.
Практика
Если ваш класс работает в CodeClassroom, войдите в систему и используйте код присоединения к классу, полученный на уроке. При отправке решения соблюдайте формат ввода и вывода из условия: лишние приглашения к вводу могут мешать автоматической проверке.
Для самостоятельной практики откройте выбранные упражнения курса. Сначала составьте решение сами, затем сравните с разбором, если он есть.
Дополнительные видео на иврите
Плейлист к главе 1. Просмотр необязателен: основные объяснения и задания приведены на этой странице.