Урок 2: Переменные и типы данных в C#
Введение: Почему это важно?
Представь, что ты играешь в компьютерную игру. У тебя есть здоровье, количество монет, имя персонажа. Все эти данные где-то хранятся. В программировании мы используем переменные — это как коробки с наклейками, в которых можно хранить информацию.
Аналогия: Представь, что переменная — это пластиковый контейнер для еды. У него есть имя (наклейка «Обед») и содержимое (бутерброд). Ты можешь заменить бутерброд на яблоко, но наклейка останется той же.
На прошлом уроке мы научились выводить текст на экран. Теперь пришло время научиться хранить данные и работать с ними. Без переменных любая программа была бы бесполезной — как калькулятор, который умеет только показывать надпись «Привет!».
Теория: Что такое переменная?
Переменная — это именованная область памяти, которая хранит значение определённого типа. У каждой переменной есть три главных характеристики:
- Имя — как мы будем обращаться к данным (например,
playerHealth) - Тип — какие данные можно хранить (числа, текст, да/нет)
- Значение — что именно хранится в данный момент
Правила именования переменных
В C# есть строгие правила, как называть переменные. Нарушать их нельзя — компилятор будет ругаться!
- Имя может содержать только буквы (в том числе русские), цифры и символ подчёркивания
_ - Имя не может начинаться с цифры
- Нельзя использовать зарезервированные слова (например,
int,class,if) - Регистр важен:
myVarиmyvar— разные переменные - Используй camelCase: первое слово с маленькой, каждое следующее с большой —
myBestScore
Совет: Давай переменным осмысленные имена.a— плохое имя,playerScore— хорошее. Через месяц ты сам забудешь, что значитa!
Основные типы данных в C#
В C# есть множество типов данных. Мы рассмотрим самые важные для начала:
| Тип | Описание | Пример | Размер |
|---|---|---|---|
int | Целые числа | 42, -7, 0 | 4 байта |
double | Дробные числа | 3.14, -2.5 | 8 байт |
float | Дробные числа (меньше точность) | 3.14f, -2.5f | 4 байта |
char | Один символ | 'A', '7', '+' | 2 байта |
string | Строка текста | "Привет", "123" | Зависит от длины |
bool | Логическое значение | true, false | 1 байт |
Объявление и инициализация переменных
Чтобы создать переменную, нужно сначала её объявить (сказать компилятору: «Я хочу коробку такого-то типа с таким-то именем»), а потом инициализировать (положить туда значение). Можно сделать это сразу:
// Объявляем переменную типа int с именем age
int age;
// Теперь инициализируем — присваиваем значение
age = 15;
// А можно сразу объявить и инициализировать
int score = 100;
// Дробное число
double pi = 3.14159;
// Символ (обрати внимание на одинарные кавычки!)
char grade = 'A';
// Строка (двойные кавычки!)
string name = "Алексей";
// Логическое значение
bool isStudent = true;
Вывод переменных на экран
Теперь самое интересное — мы можем выводить значения переменных! Используем знакомый Console.WriteLine():
int health = 100;
string playerName = "Герой";
Console.WriteLine(health); // Выведет: 100
Console.WriteLine(playerName); // Выведет: Герой
А что, если нужно вывести текст вместе с переменной? Используем конкатенацию (склеивание) строк:
int level = 5;
Console.WriteLine("Ваш уровень: " + level); // Выведет: Ваш уровень: 5
string item = "меч";
Console.WriteLine("Вы нашли " + item + "!"); // Выведет: Вы нашли меч!
Есть и более современный способ — интерполяция строк. Просто поставь перед строкой знак $ и пиши переменные в фигурных скобках:
string city = "Москва";
int population = 12_000_000; // Подчёркивания для удобства чтения
Console.WriteLine($"Население {city} — {population} человек.");
// Выведет: Население Москвы — 12000000 человек.
Изменение значений переменных
Переменные потому и называются переменными, что их значения можно менять:
int lives = 3;
Console.WriteLine($"У вас {lives} жизни.");
// Ой, потеряли жизнь!
lives = 2;
Console.WriteLine($"Теперь у вас {lives} жизни.");
// Можно использовать текущее значение для вычисления нового
lives = lives + 1; // Теперь lives = 3
Console.WriteLine($"А теперь снова {lives} жизни!");
// Есть сокращённая запись:
lives += 2; // То же самое, что lives = lives + 2
lives -= 1; // lives = lives - 1
lives *= 2; // lives = lives * 2
Арифметические операции с переменными
C# умеет выполнять все основные математические операции:
int a = 10;
int b = 3;
int sum = a + b; // Сложение: 13
int diff = a - b; // Вычитание: 7
int product = a * b; // Умножение: 30
int quotient = a / b; // Деление: 3 (почему не 3.33? Узнаем ниже!)
int remainder = a % b; // Остаток от деления: 1
Console.WriteLine($"Сумма: {sum}");
Console.WriteLine($"Разность: {diff}");
Console.WriteLine($"Произведение: {product}");
Console.WriteLine($"Целая часть от деления: {quotient}");
Console.WriteLine($"Остаток: {remainder}");
Важно! При делении целых чисел (int) результат тоже будет целым числом. Дробная часть просто отбрасывается! Если нужен точный результат, используйdouble.
double x = 10.0;
double y = 3.0;
double result = x / y; // Результат: 3.33333333333333
Console.WriteLine($"Точное деление: {result}");
Преобразование типов
Иногда нужно превратить один тип данных в другой. Например, число в строку или наоборот. Это называется преобразованием типов.
Явное преобразование
double price = 19.99;
int wholePart = (int)price; // Явное преобразование double → int
Console.WriteLine(wholePart); // Выведет: 19 (дробная часть отброшена)
Преобразование через методы
string numberStr = "42";
int number = Convert.ToInt32(numberStr); // Превращаем строку в число
Console.WriteLine(number + 8); // Выведет: 50
// И наоборот — число в строку
int score = 100;
string scoreStr = score.ToString();
Console.WriteLine("Ваш счёт: " + scoreStr);
Константы — неизменяемые переменные
Иногда нужно, чтобы значение никогда не менялось. Например, число Пи или количество дней в неделе. Для этого используют константы:
const int DAYS_IN_WEEK = 7;
const double PI = 3.14159;
// DAYS_IN_WEEK = 8; // Ошибка! Константу нельзя изменить
Console.WriteLine($"В неделе {DAYS_IN_WEEK} дней.");
Console.WriteLine($"Число Пи примерно равно {PI}");
Практический пример: Калькулятор здоровья
Давай напишем небольшую программу, которая симулирует здоровье персонажа в игре:
// Начальное здоровье
int maxHealth = 100;
int currentHealth = 100;
Console.WriteLine($"Максимальное здоровье: {maxHealth}");
Console.WriteLine($"Текущее здоровье: {currentHealth}");
// Персонаж получил урон
int damage = 25;
currentHealth = currentHealth - damage;
Console.WriteLine($"Вы получили {damage} урона!");
Console.WriteLine($"Теперь здоровье: {currentHealth}");
// Персонаж нашёл аптечку
int healAmount = 15;
currentHealth += healAmount;
Console.WriteLine($"Вы восстановили {healAmount} здоровья!");
Console.WriteLine($"Теперь здоровье: {currentHealth}");
// Проверка: не превышает ли здоровье максимум?
if (currentHealth > maxHealth)
{
currentHealth = maxHealth;
Console.WriteLine("Здоровье восстановлено до максимума!");
}
Console.WriteLine($"Итоговое здоровье: {currentHealth}");
Практика: Задания для самостоятельной работы
А теперь попробуй сам! Вот несколько заданий разной сложности. Постарайся выполнить все.
Задание 1: Визитка
Создай программу, которая хранит и выводит информацию о тебе:
- Имя (string)
- Возраст (int)
- Любимый предмет в школе (string)
- Средний балл (double)
Выведи всё в формате: "Привет! Меня зовут [Имя]. Мне [Возраст] лет. Мой любимый предмет — [Предмет], и мой средний балл — [Балл]."
Задание 2: Конвертер валют
Напиши программу, которая:
- Хранит курс доллара к рублю (например, 90.5)
- Хранит количество долларов (например, 100)
- Вычисляет и выводит, сколько это будет в рублях
Используй константу для курса.
Задание 3: Счётчик предметов
Представь, что ты собираешь монеты в игре. Напиши программу, которая:
- Показывает начальное количество монет (0)
- Добавляет 5 монет
- Добавляет ещё 3 монеты
- Теряет 2 монеты (потратил на зелье)
- Выводит итоговое количество монет
Задание 4: Площадь прямоугольника
Создай программу для вычисления площади прямоугольника:
- Объяви переменные для длины и ширины
- Присвой им значения (например, 5 и 3)
- Вычисли площадь по формуле: длина * ширина
- Выведи результат в формате: "Площадь прямоугольника [длина]x[ширина] равна [площадь]"
Задание 5 (повышенной сложности): Среднее арифметическое
Напиши программу, которая:
- Хранит три оценки: 4, 5, 3
- Вычисляет их среднее арифметическое
- Выводит результат с точностью до двух знаков после запятой
Подсказка: Используй тип double для точности.
Итог урока
Сегодня мы узнали самое важное:
- Переменные — это именованные контейнеры для данных
- У каждой переменной есть тип:
int,double,string,char,bool - Переменные можно объявлять, инициализировать и изменять
- Для вывода используем
Console.WriteLine()с конкатенацией или интерполяцией - С числами можно выполнять арифметические операции
- Константы (
const) — это переменные, которые нельзя изменить
Золотое правило: Всегда выбирай правильный тип данных для своей задачи. Не храни возраст какstring— ты не сможешь с ним математически работать. И не используйintдля денег — потеряешь копейки!
На следующем уроке мы научимся принимать данные от пользователя с помощью Console.ReadLine() и сделаем наши программы интерактивными. А пока — практикуйся с переменными! Чем больше напишешь кода, тем увереннее будешь себя чувствовать.