Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 1 · Урок 3

Променливи и типове данни

Деклариране, инициализация и видове променливи. Целочислени, реални, символни, текстови и логически типове в C#.

Какво е променлива

Променливата е именована „кутия" в паметта, в която съхраняваш стойност. Името ѝ ти дава начин да достъпваш и променяш тази стойност, без да помниш на кой точно адрес в RAM е тя.

RAM (опростено)17ageтип: int5.50gradeтип: double"Иван"nameтип: stringtrueactiveтип: bool
Фиг. 1 — Всяка променлива има име, тип и текуща стойност

Всяка променлива в C# има три неща:

  • Тип — какъв вид данни може да съхранява (число, текст, ...).
  • Име — как се обръщаме към нея в кода.
  • Стойност — какво съдържа в момента.

Деклариране и инициализация

В C# казваш типа преди името. Това се нарича статично типизиран език — типът се проверява от компилатора, преди програмата изобщо да тръгне.

// деклариране (още няма стойност):
int age;

// инициализация (даваме стойност):
age = 17;

// двете заедно — обикновено така се прави:
int year = 2026;
string name = "Мария";
double price = 4.99;
bool isAdult = false;

Запомни

Деклариране = казваме „искам променлива от този тип с това име". Инициализация = даваме ѝ първоначална стойност. Присвояване = променяме стойността по-късно с =.

Ключовата дума var

Понякога компилаторът може сам да познае типа по стойността. Тогава пишем var:

var age = 17;          // компилаторът разбира, че е int
var name = "Мария";    // string
var price = 4.99;      // double

Внимание

var не значи „без тип". Типът е определен и не може да се сменя. var x = 5; е завинаги int.

Основни типове в C#

ТипЗа каквоДиапазон / примерРазмер
intЦели числа−2.1 млрд до 2.1 млрд4 байта
longМного големи цели числа≈ ±9 квинтилиона8 байта
doubleДробни числа3.14, −0.001, 1.5e108 байта
decimalТочни дробни (пари!)0.1 + 0.2 = 0.3 точно16 байта
boolИстина/Лъжаtrue или false1 байт
charЕдин символ'A', 'я', '7'2 байта
stringТекст (низ)"Здравей"променлив

Цели срещу дробни числа

При int няма дробна част — 5 / 2 дава 2, не 2.5! Ако искаш точен резултат, поне едно от числата трябва да е double:

int a = 5 / 2;        // 2  (целочислено деление)
double b = 5.0 / 2;   // 2.5
double c = 5 / 2.0;   // 2.5
double d = 5 / 2;     // 2.0  ← внимание, делението е било целочислено!

char срещу string

char е един символ в единични кавички. string е поредица от символи в двойни кавички.

char letter = 'A';
string word = "Алгоритъм";

// това е грешка — единичните кавички приемат само 1 символ:
// char wrong = 'AB';  // ❌

Правила за имената

  • Започват с буква или подчертавка _ (не с цифра).
  • Могат да съдържат букви, цифри и _; никакви интервали или специални символи.
  • Различава големи от малки букви — age и Age са различни.
  • Не може да съвпадат с ключови думи на C# (if, class, int…).
  • По конвенция — пиши на camelCase: firstName, totalCount.

Добри имена = четим код

Вместо int x = 17; пиши int studentAge = 17;. Кодът се чете много по-често, отколкото се пише.

Константи

Понякога имаш стойност, която не трябва да се променя — например броя на дните в седмицата. За това има ключова дума const:

const int DaysInWeek = 7;
const double Pi = 3.14159;

// DaysInWeek = 8;  // ❌ компилационна грешка

Преобразуване между типове

Понякога трябва да минеш от един тип в друг — например да представишint като double, или да прочетеш число от потребителя (което идва като string).

Неявно (имплицитно)

Когато новият тип може да побере стария без загуба на информация, C# прави преобразуването автоматично:

int n = 42;
double d = n;   // OK — 42.0

Изрично (експлицитно)

Когато има риск от загуба (напр. double → int отрязва дробната част), трябва ти да го напишеш с „каст":

double price = 4.99;
int rounded = (int)price;   // 4 — дробната част се изхвърля

От текст към число

Console.ReadLine() връща string. За да работиш с него като с число, ползвай int.Parse или double.Parse:

Console.Write("Възраст: ");
string input = Console.ReadLine();
int age = int.Parse(input);     // "17" → 17
// или късо:
int age2 = int.Parse(Console.ReadLine());

Какво ако потребителят напише „abc"?

int.Parse ще хвърли грешка. По-сигурно е int.TryParse, който връща true/falseдали е успяло — но него ще го разгледаме по-късно.

Стойности по подразбиране

ТипСтойност по подразбиране
int, long, double0
boolfalse
char'\0' (нулев символ)
stringnull (празна препратка)

Това са стойностите, ако не присвоиш нищо при декларация — но вътре в метод C# изисква да присвоиш стойност, преди да ползваш променливата.

Какво трябва да запомниш

  • Променлива = именована кутия с тип и стойност.
  • C# е статично типизиран — типът се проверява при компилация.
  • Основни типове: int, double, bool, char, string.
  • 5 / 2 == 2, защото и двете са цели. За реално деление поне едното трябва да е double.
  • char е един символ в ' ', string е текст в " ".
  • За преобразуване с риск от загуба ползвай каст: (int)3.7.