$ sudo teach IT
Модуль 2 · Примитивные операции

Урок 2.2 — Ввод и типы данных

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

До этого момента наши программы только выводили информацию. Но программа, которая не умеет слушать пользователя — как телевизор: вещает, но не слышит ответа. Сегодня мы дадим программам уши — научим их принимать ввод от пользователя.

⌨️

Ввод данных: Console.ReadLine()

Console.ReadLine() — это метод, который читает строку текста, введённую пользователем в консоли. Программа приостанавливается и ждёт, пока пользователь нажмёт Enter.

C# · Базовый ввод
Console.Write("Введите ваше имя: ");
string name = Console.ReadLine();
Console.WriteLine($"Привет, {name}!");

Что здесь происходит:

  1. Console.Write() выводит приглашение (без переноса строки)
  2. Console.ReadLine() ждёт, пока пользователь введёт текст и нажмёт Enter
  3. Введённый текст сохраняется в переменную name (всегда string!)
  4. Программа выводит приветствие с именем пользователя

💡 Console.ReadLine() всегда возвращает строку (string). Даже если пользователь ввёл число — это будет строка "25", а не число 25. Чтобы работать с числом, строку нужно преобразовать.

🔄

Преобразование типов

Пользователь ввёл "25" — это строка. Чтобы сложить с другим числом, нужно превратить её в int. В C# есть несколько способов:

1. Convert.ToInt32() — универсальный способ

Может преобразовывать разные типы: string, double, и даже bool в int.

Console.Write("Введите возраст: ");
string input = Console.ReadLine();
int age = Convert.ToInt32(input);

Console.Write("Введите цену: ");
double price = Convert.ToDouble(Console.ReadLine());

2. int.Parse() / double.Parse() — прямой способ

Работает только со строками. Если строка не является числом — выбрасывает исключение.

string text = "42";
int number = int.Parse(text);      // → 42

string piText = "3.14";
double pi = double.Parse(piText);  // → 3.14

// ❌ int.Parse("abc") — ОШИБКА! Выбросит FormatException

3. int.TryParse() — безопасный способ

Пытается преобразовать строку в число. Если не получается — возвращает false и не выбрасывает исключение. Это лучший способ для реальных программ.

Console.Write("Введите число: ");
string input = Console.ReadLine();

bool success = int.TryParse(input, out int number);
if (success)
{
    Console.WriteLine($"Вы ввели число {number}");
}
else
{
    Console.WriteLine("Это не число!");
}

⚠️ out int number — это модификатор out. TryParse не возвращает число, а кладёт его в переменную, переданную с ключевым словом out. Результат операции (успех/неудача) возвращается как bool. Мы подробно разберём out в уроке про параметры методов.

Таблица преобразований:

Исходный тип
Метод
Пример
string → int
int.Parse()
int.Parse("42")
string → double
double.Parse()
double.Parse("3.14")
string → int (безопасно)
int.TryParse()
int.TryParse("42", out int x)
любой → любой
Convert.ToXxx()
Convert.ToInt32("42")
🛡️

Проверка через TryParse

TryParse — это самый безопасный способ преобразования. Он не «падает» с ошибкой, а возвращает true или false. Давай рассмотрим реальный пример — калькулятор возраста:

C# · Калькулятор возраста
Console.Write("Введите год вашего рождения: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int birthYear))
{
    int currentYear = 2026;
    int age = currentYear - birthYear;
    Console.WriteLine($"Вам {age} лет (или будет в этом году).");
}
else
{
    Console.WriteLine("Ошибка! Введите число, а не текст.");
}

💡 Используй TryParse всегда, когда ввод поступает от пользователя. Люди ошибаются — вводят буквы вместо цифр. TryParse превратит эту ошибку в обычное условие, а не в аварию программы.

📝

Практика — складываем два числа

Напишем программу, которая просит два числа и выводит их сумму:

C# · Сумма двух чисел
using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите первое число: ");
        string firstInput = Console.ReadLine();

        Console.Write("Введите второе число: ");
        string secondInput = Console.ReadLine();

        if (int.TryParse(firstInput, out int a) &&
            int.TryParse(secondInput, out int b))
        {
            int sum = a + b;
            Console.WriteLine($"{a} + {b} = {sum}");
        }
        else
        {
            Console.WriteLine("Одно из значений — не число!");
        }
    }
}
💡 Обрати внимание на && — логический оператор «И». Мы проверяем оба условия в одной строке. Если хоть один TryParse вернул false — сумма не считается. Мы изучим логические операторы подробнее в уроке 3.4.
📌

Что важно запомнить

1️⃣
Console.ReadLine() возвращает строку, даже если ввели число.
2️⃣
int.Parse() и double.Parse() преобразуют строку в число. Если строка не число — исключение (ошибка).
3️⃣
int.TryParse() — безопасный способ. Возвращает bool и кладёт результат в out-параметр.
4️⃣
Convert.ToInt32() — универсальный преобразователь. Работает с разными типами.
5️⃣
Всегда проверяй пользовательский ввод. Люди ошибаются. TryParse — твой друг.

Тест: 2.2: Ввод и типы данных

5 вопросов

Ввод данных

Premium