Posted in

C# põhikonstruktsioonid

1. Põhi ja projekti loomine

C# programm koosneb nimiruumist (namespace), klassist ja meetoditest. Peamine käivituskoht on Main() meetod.
Muutujad saavad erinevaid andmetüüpe: täisarvud (int), ujukomaarvud (float, double), tekst (string), tõeväärtus (bool), märk (char).
Arvutamine toimub põhioperaatoritega (+, -, *, /, %).
Lisaks toetab C# stringide ühendamist (+ ja interpoleerimine)

Näide kood:

int a = 1000;
Console.WriteLine("Tere tulemast!");
string tekst = Console.ReadLine();
Console.WriteLine($"Teie sisestatud tekst on: {tekst}");

Console.Write($"Esimene arv on {a}, siseta b: ");
int b = int.Parse(Console.ReadLine());
Console.WriteLine($"Summa on: {a + b}");

Uued funktsioonid:

  • Console.WriteLine() ja Console.ReadLine() – sisend/väljund.
  • int.Parse() / double.Parse() – teisendamine tekstist arvuks.
  • String interpolation $»{…}».
  • Random rnd = new Random(); rnd.Next(1, 11); – juhuarvu genereerimine.

2. Valikukonstruktsioonid

Valikukonstruktsioonid juhivad programmi kulgu tingimuste alusel.

Switch-case: kasulik, kui on palju diskreetseid valikuid (nt kuunimed, menüü valikud).
Loogikaoperaatorid (&&, ||, !) kombineerivad tingimusi.
If-else: kontrollib, kas tingimus on tõene või väär.
Else-if: võimaldab mitmeid astmelisi valikuid.

Näide kood:

if (vanus > 0 && vanus < 6)
    hinnatyyp = "Tasuta";
else if (vanus >= 6 && vanus <= 14)
    hinnatyyp = "Lastepilet";
else if (vanus >= 15 && vanus <= 65)
    hinnatyyp = "Täispilet";
else
    hinnatyyp = "Vale vanus";
switch (kuunr)
{
    case 1: kuu = "jaanuar"; break;
    case 2: kuu = "veebruar"; break;
    ...
    default: kuu = "Vale kuu number"; break;
}

Uued funktsioonid:

  • if, else if, else.
  • switch (value) { … }.
  • Loogikaoperaatorid (&&, ||, !).

3. Kordused, massiivid ja klassid

Kordused võimaldavad sama koodi plokki korduvalt täita:

  • for tsükkel, kui korduste arv on teada.
  • while, kui korduste arv sõltub tingimusest.
  • do-while, kui tuleb tingimust kontrollida alles pärast esimest käivitust.
  • foreach, kui soovitakse läbida kogumit, nt massiiv või List.

Massiiv on kindla suuruse ja ühtlase andmetüübiga elementide kogum.
Klassid kirjeldavad objekte, neil võivad olla omadused (fields, properties) ja meetodid. See on OOP (objektorienteeritud programmeerimise) põhi.

Näide kood:

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i + 1);
}

int[] arvud = new int[10];
for (int i = 0; i < 10; i++)
{
    arvud[i] = Random.Shared.Next(1, 101);
}
foreach (int arv in arvud)
{
    Console.WriteLine(arv);
}

Klassi näide:

public class Inimene
{
    public string Nimi;
    public int Vanus;
    public void PrindiAndmed()
    {
        Console.WriteLine($"Nimi: {Nimi}, Vanus: {Vanus}");
    }
}

Uued funktsioonid:

  • for, while, do … while, foreach.
  • Massiiv (int[]).
  • OOP põhi – class, konstruktor, omadused (public string Nimi).

4. Failitöötlus

Failid võimaldavad andmete püsivat salvestamist ja lugemist.

Faili teega töötamiseks kasutatakse Path.Combine().
Failitöötlus tuleb alati panna try-catch plokki vigade vältimiseks.

Tekstifailid: lugemine (StreamReader, File.ReadAllText(), File.ReadAllLines()), kirjutamine (StreamWriter, File.WriteAllText()).

Näide kood:

// Faili kirjutamine
StreamWriter text = new StreamWriter(path, true);
text.WriteLine("Uus rida");
text.Close();

// Faili lugemine
string laused = File.ReadAllText(path);
Console.WriteLine(laused);

// Faili reahaaval lugemine
foreach (string rida in File.ReadAllLines(path))
{
    Console.WriteLine(rida);
}

Uued funktsioonid:

  • File.ReadAllText(), File.ReadAllLines().
  • StreamReader, StreamWriter.
  • Sõne töötlemine rea kaupa (foreach rida failist).
  • Faili tee ühendamine: Path.Combine().

5. Kollektsioonid, Listid ja sõnastikud

Kollektsioonid on paindlikumad kui tavalised massiivid.

LINQ laiendmeetodid (nt Sum(), Average(), First()), mis lubavad kogumeid analüüsida.
List<T>: sarnane massiivile, kuid elementide arvu saab muuta. Toetab meetodeid nagu Add(), Remove(), Sort().
Dictionary<TKey,TValue>: andmestruktuur võtme-väärtuse paaridega. Võimaldab kiiresti andmeid otsida võtme järgi.

Näide kood:

List<string> nimed = new List<string>();
nimed.Add("Mari");
nimed.Add("Kati");
nimed.Sort();

Dictionary<string, string> maakonnad = new Dictionary<string, string>();
maakonnad["Harjumaa"] = "Tallinn";
maakonnad["Tartumaa"] = "Tartu";

if (maakonnad.ContainsKey("Harjumaa"))
    Console.WriteLine(maakonnad["Harjumaa"]);

Uued funktsioonid:

  • Kollektsioonid: List<T>, Dictionary<TKey, TValue>.
  • Meetodid: Add(), Remove(), Sort(), ContainsKey().
  • LINQ meetodid (nt Sum(), Average()).