C# programmeerimine

1.osa – C# põhikonstruktsioonid: projekti loomine, ikooni lisamine ja arvutamine

Teooria lühidalt

  • C# programm koosneb klassidest ja meetoditest.
  • Programm algab meetodist Main().
  • Muutujad peavad olema deklareeritud konkreetse andmetüübiga (nt int, double, string).
  • Matemaatilised tehted toimivad numbrimuutujatega.
  • Ikooni lisamine toimub projekti omadustes (Project → Properties → Application → Icon and manifest).

Kasutatavad funktsioonid ja süntaks

// Muutuja loomine
int arv = 10;
double komaArv = 5.6;
string tekst = "Tere";

// Väljundi kuvamine
Console.WriteLine("Tere maailm");

// Sisendi lugemine
string sisend = Console.ReadLine();

// Teksti teisendamine arvuks
int number = int.Parse(sisend);
double dNumber = double.Parse(sisend);

// Matemaatilised tehted
int tulemus = 5 + 3;      // Liitmine
int vahe = 10 - 2;        // Lahutamine
int korrutis = 4 * 2;     // Korrutamine
int jagatis = 8 / 2;      // Jagamine
int jaak = 10 % 3;        // Jääk

// Matemaatikafunktsioonid (System.Math)
double ruutjuur = Math.Sqrt(25);
double astendamine = Math.Pow(2, 3); // 2 astmel 3
double absoluut = Math.Abs(-10);

Koodinäide

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Sisesta kaks arvu:");
        int a = int.Parse(Console.ReadLine());
        int b = int.Parse(Console.ReadLine());

        int summa = a + b;
        Console.WriteLine("Summa on: " + summa);
    }
}

2.osa – C# Valikute konstruktsioonid

Teooria lühidalt

  • Valikukonstruktsioone kasutatakse tingimusliku loogika rakendamiseks.
  • Kasutatakse võtmesõnu: if, else if, else, switch.
  • Võimaldab programmil teha otsuseid sisendi või muutujate väärtuste põhjal.

Olulised konstruktsioonid ja süntaks

if (tingimus)
{
    // Kood, kui tingimus on tõene
}
else if (teineTingimus)
{
    // Kood, kui teine tingimus on tõene
}
else
{
    // Kood, kui ükski tingimus pole tõene
}

switch-lausete näide:

switch (valik)
{
    case 1:
        Console.WriteLine("Valisid ühe");
        break;
    case 2:
        Console.WriteLine("Valisid kaks");
        break;
    default:
        Console.WriteLine("Tundmatu valik");
        break;
}

Kasulikud võrdlusoperaatorid:

  • == – võrdne
  • != – mitte võrdne
  • > – suurem kui
  • < – väiksem kui
  • >=, <= – suurem/väiksem või võrdne
  • && – JA (mõlemad tingimused peavad kehtima)
  • || – VÕI (vähemalt üks kehtib)

Koodinäide

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Sisesta vanus:");
        int vanus = int.Parse(Console.ReadLine());

        if (vanus &gt;= 18)
        {
            Console.WriteLine("Oled täisealine.");
        }
        else
        {
            Console.WriteLine("Oled alaealine.");
        }
    }
}

3. osa – C# Kordused, massiivid ja klassid

Teooria

Tsükleid kasutatakse korduvate tegevuste jaoks. C#-is kasutatakse sageli kolme tüüpi tsükleid:

  • for – kui tead täpset korduste arvu
  • while – kuni tingimus kehtib
  • do...while – vähemalt üks kord täidetakse

Süntaks ja näited

Kordused

// for-tsükkel
for (int i = 0; i &lt; 5; i++)
{
    Console.WriteLine("i = " + i);
}

// while-tsükkel
int j = 0;
while (j &lt; 5)
{
    Console.WriteLine("j = " + j);
    j++;
}

// do-while
int k = 0;
do
{
    Console.WriteLine("k = " + k);
    k++;
}
while (k &lt; 5);

Massiivid

Massiiv on fikseeritud pikkusega andmestruktuur, mis hoiab üht tüüpi andmeid järjestikuselt.

int[] numbrid = {1, 2, 3, 4, 5};
Console.WriteLine(numbrid[0]); // Väljund: 1

// Läbimine for-tsükliga
for (int i = 0; i &lt; numbrid.Length; i++)
{
    Console.WriteLine(numbrid[i]);
}

Klassid

Klassid on objektorienteeritud programmeerimise põhikomponendid. Need kirjeldavad objekti omadusi (väljad) ja käitumist (meetodid).

class Auto
{
    public string mark;
    public int aasta;

    public void Tervita()
    {
        Console.WriteLine("Tere! Olen " + mark + ", aastast " + aasta);
    }
}

class Program
{
    static void Main()
    {
        Auto minuAuto = new Auto();
        minuAuto.mark = "Toyota";
        minuAuto.aasta = 2015;
        minuAuto.Tervita(); // Väljund: Tere! Olen Toyota, aastast 2015
    }
}

4.osa – C# Failitöötlus

Teooria

Failitöötlus C#-is võimaldab andmete salvestamist ja lugemist tekstifailidest (.txt jne). Kasutatakse peamiselt System.IO nimiruumi.

Olulisemad funktsioonid

string tekst = File.ReadAllText("failinimi.txt");
string[] read = File.ReadAllLines("failinimi.txt");

Faili kirjutamine

File.WriteAllText("uusfail.txt", "Tere maailm!");
File.AppendAllText("logi.txt", "Lisa see lõppu\n");

Faili ridade kaupa läbimine

foreach (string rida in File.ReadLines("fail.txt"))
{
    Console.WriteLine(rida);
}

Koodinäide – Failist lugemine ja faili kirjutamine

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // Kirjutame faili
        File.WriteAllText("andmed.txt", "Tere! See on test.");

        // Loeme faili sisu
        string sisu = File.ReadAllText("andmed.txt");
        Console.WriteLine("Faili sisu: " + sisu);
    }
}

5.osa – C# Kollektsioonid: List ja Dictionary

Teooria

Kollektsioonid võimaldavad dünaamiliselt hallata andmeid, erinevalt massiividest, mille suurus on fikseeritud.

  • List – järjestatud andmekogu, kuhu saab elemente lisada, eemaldada ja sorteerida.
  • Dictionary – võtme-väärtuse paaridel põhinev andmestruktuur, kiire otsinguga.

List – dünaamiline nimekiri

Tüüpilised meetodid

List&lt;string&gt; nimed = new List&lt;string&gt;();

nimed.Add("Mari");             // Lisa element
nimed.Remove("Mari");          // Eemalda element
bool sisaldab = nimed.Contains("Mari"); // Kontrolli olemasolu
nimed.Sort();                  // Sorteeri
int kogus = nimed.Count;       // Elementide arv

foreach (string nimi in nimed)
{
    Console.WriteLine(nimi);
}

Dictionary <TKey, TValue> – võtme-väärtuse paarid

Tüüpilised meetodid

Dictionary&lt;string, int&gt; hinnad = new Dictionary&lt;string, int&gt;();

hinnad.Add("Õun", 2);
hinnad["Banaan"] = 3;            // Võib ka otse määrata
hinnad.Remove("Õun");
bool olemas = hinnad.ContainsKey("Õun");

foreach (var paar in hinnad)
{
    Console.WriteLine(paar.Key + ": " + paar.Value);
}

Koodinäide – List ja Dictionary koos

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List&lt;string&gt; tooted = new List&lt;string&gt;() { "Piim", "Leib", "Juust" };
        Dictionary&lt;string, double&gt; hinnad = new Dictionary&lt;string, double&gt;()
        {
            {"Piim", 1.2 },
            {"Leib", 0.8 },
            {"Juust", 2.5 }
        };

        foreach (string toode in tooted)
        {
            Console.WriteLine(toode + " maksab " + hinnad[toode] + " €");
        }
    }
}