C# pentru începători

Variabile și tipuri în C#: int, double și bool

Înțelege int, double și bool în C#: valori, împărțire întreagă, medie cu zecimale și comparații. Exemple complete și verificări explicate.

O variabilă păstrează o valoare pe care programul o poate folosi și modifica. Declarația precizează tipul și numele, iar inițializarea îi oferă prima valoare. În C#, tipul stabilește ce fel de date sunt permise și ce operații au sens.

int reprezintă un întreg cu semn pe 32 de biți. double reprezintă numere în virgulă mobilă, inclusiv multe valori cu parte fracționară, folosind o precizie finită. bool are numai două valori: true și false. Nu este un număr care poate primi arbitrar zero, unu sau doi.

Ideea pe care o folosim

Calculăm media a două rezultate întregi și verificăm dacă media este cel puțin cinci. Expresia (a + b) / 2 face împărțire întreagă atunci când toți operanzii sunt int. Atribuirea rezultatului într-un double după acest calcul nu recuperează fracția pierdută. Folosim 2.0 pentru ca împărțirea să fie făcută în virgulă mobilă.

O comparație precum average >= 5.0 produce o valoare bool. Operatorul = atribuie o valoare; operatorul == testează egalitatea. Aceste operații au scopuri diferite.

Intrare și rezultat

Citim două întregi, fiecare pe propria linie, cu valori între 0 și 10. Afișăm pe prima linie media cu exact o zecimală și punct separator, iar pe a doua true sau false, după condiția medie≥5. Pentru text neconvertibil, lipsa unei linii sau o valoare în afara intervalului, afișăm INVALID și oprim. Gardul cu TryParse este explicat în lecția următoare.

Exemplu urmărit

Pentru 4 și 7, suma este 11. Împărțirea întreagă 11/2 ar produce 5; împărțirea 11/2.0 produce 5.5. Comparația 5.5≥5.0 este adevărată, deci a doua linie este true. Pentru 4 și 5, media este 4.5 și rezultatul comparației este false. Cazul 5 și 5 verifică egalitatea cu pragul și trebuie acceptat.

Pentru a=4 și b=7, împărțirea întreagă produce 5, iar împărțirea cu 2.0 produce media 5.5.Pentru a=4 și b=7, împărțirea întreagă produce 5, iar împărțirea cu 2.0 produce media 5.5.Mărește schema ↗

De ce obținem acest rezultat

Variabilele a și b sunt int, suma lor este cel mult 20, deci nu există risc de depășire la limitele declarate. Variabila average este double, iar meetsThreshold este bool. Formatarea cu F1 păstrează o zecimală la afișare. CultureInfo.InvariantCulture fixează punctul separator, astfel încât rezultatul să nu depindă de setările regionale ale calculatorului. Formatarea schimbă textul afișat, nu tipul sau valoarea stocată în average.

Program complet C#

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        if (!int.TryParse(Console.ReadLine(), out int a) ||
            !int.TryParse(Console.ReadLine(), out int b) ||
            a < 0 || a > 10 || b < 0 || b > 10)
        {
            Console.WriteLine("INVALID");
            return;
        }

        double average = (a + b) / 2.0;
        bool meetsThreshold = average >= 5.0;
        Console.WriteLine(average.ToString("F1", CultureInfo.InvariantCulture));
        Console.WriteLine(meetsThreshold ? "true" : "false");
    }
}

Greșeli de evitat

Nu scrie double average = (a + b) / 2; dacă dorești fracția. Nu presupune că double reprezintă exact orice fracție zecimală; aici mediile sunt multipli de 0.5, convenabili pentru exemplu. Operatorul condițional condiție ? valoare1 : valoare2 alege textul true sau false pentru afișare, fără să transforme variabila bool într-un număr.

Exersează

  1. Ce rezultat obții pentru 0 și 1? Media 0.5 și false.
  2. Pentru 10 și 10? Media 10.0 și true.
  3. De ce double x = 7 / 2; produce 3.0? Împărțirea între doi întregi se face înaintea conversiei către double.

Continuă parcursul C#

Vezi Primul program C#: Console.WriteLine și Main. Vezi Citirea datelor în C# cu Console.ReadLine și TryParse. Vezi Condiții în C#: if, else și operatori logici.

Documentație de referință: Microsoft Learn.

Întrebări frecvente

De ce 7 împărțit la 2 poate produce 3 în C#?

Dacă ambii operanzi sunt întregi, împărțirea este întreagă și partea fracționară se elimină spre zero.

Ce valori poate avea bool?

Doar true și false. O comparație numerică poate produce una dintre aceste două valori.

F1 schimbă valoarea numerică?

Nu. Specifică afișarea cu o zecimală. Variabila păstrează tipul și valoarea calculată anterior.

Un pas mai departe

Autentifică-te pentru a păstra progresul în cont.

Exersează cu o problemă →