Ülesanned
//Ülesanne 1: Kalorite kalkulaator klassidega
static void KaloriteKalkulaator()
{
Console.Clear();
Console.WriteLine("Kalorite kalkulaator");
// Loome nimekiri toodetest (manuaalselt, aga hiljem saab lugeda failist)
List<Toode> tooted = new List<Toode>
{
new Toode("Õun", 52),
new Toode("Kartul", 77),
new Toode("Riis", 130),
new Toode("Kana", 165),
new Toode("Šokolaad", 546)
};
// Küsimine kasutajalt tema andmed
Console.Write("Sisesta nimi: ");
string nimi = Console.ReadLine();
Console.Write("Vanus: ");
int vanus = int.Parse(Console.ReadLine());
Console.Write("Sugu (M/N): ");
string sugu = Console.ReadLine();
Console.Write("Pikkus (cm): ");
double pikkus = double.Parse(Console.ReadLine());
Console.Write("Kaal (kg): ");
double kaal = double.Parse(Console.ReadLine());
Console.Write("Aktiivsustase (1.2 - 1.9): ");
double aktiivsus = double.Parse(Console.ReadLine());
// Loome objekti ja arvutame energiavajaduse
Inimene inimene = new Inimene(nimi, vanus, sugu, pikkus, kaal, aktiivsus);
double vajadus = inimene.ArvutaKalorivajadus();
Console.WriteLine($"\n{inimene.Nimi} päevane energiavajadus: {vajadus:F0} kcal\n");
// Arvutame iga toote puhul, mitu grammi võib süüa
foreach (var toode in tooted)
{
double grammid = (vajadus / toode.Kalorid100g) * 100;
Console.WriteLine($"{toode.Nimi,-10} → {grammid:F0} g");
}
Console.WriteLine("\nVajuta Enter, et jätkata...");
Console.ReadLine();
}
//Ülesanne 2: Maakonnad ja pealinnad
static void MaakonnadJaPealinnad()
{
Console.Clear();
Console.WriteLine("Maakonnad ja pealinnad");
Dictionary<string, string> maakonnad = new Dictionary<string, string>()
{
{"Harjumaa", "Tallinn"},
{"Tartumaa", "Tartu"},
{"Pärnumaa", "Pärnu"}
};
Console.WriteLine("1 - Leia pealinn maakonna järgi");
Console.WriteLine("2 - Leia maakond pealinna järgi");
Console.WriteLine("3 - Mängurežiim");
Console.Write("Vali: ");
string valik = Console.ReadLine();
if (valik == "1")
{
Console.Write("Sisesta maakond: ");
string mk = Console.ReadLine();
if (maakonnad.ContainsKey(mk))
Console.WriteLine("Pealinn: " + maakonnad[mk]);
else
{
Console.Write("Ei leitud. Lisa pealinn: ");
string pl = Console.ReadLine();
maakonnad[mk] = pl;
}
}
else if (valik == "2")
{
Console.Write("Sisesta pealinn: ");
string pl = Console.ReadLine();
bool leitud = false;
foreach (var kvp in maakonnad)
{
if (kvp.Value == pl)
{
Console.WriteLine("Maakond: " + kvp.Key);
leitud = true;
break;
}
}
if (!leitud)
{
Console.Write("Ei leitud. Lisa maakond: ");
string mk = Console.ReadLine();
maakonnad[mk] = pl;
}
}
else if (valik == "3")
{
Random rnd = new Random();
List<string> keys = new List<string>(maakonnad.Keys);
string mk = keys[rnd.Next(keys.Count)];
Console.Write($"Mis on {mk} pealinn? ");
string vastus = Console.ReadLine();
if (vastus == maakonnad[mk])
Console.WriteLine("Õige!");
else
Console.WriteLine("Vale! Õige vastus: " + maakonnad[mk]);
}
Console.WriteLine("\nVajuta Enter, et jätkata...");
Console.ReadLine();
}
//Ül 3 Õpilased ja hinnete analüüs
static void ÕpilasedAnalüüs()
{
Console.Clear();
Console.WriteLine("Õpilased ja hinnete analüüs");
List<Õpilane> õpilased = new List<Õpilane>()
{
new Õpilane("Mari", new List<int>{5, 4, 3}),
new Õpilane("Juhan", new List<int>{4, 5, 5, 4}),
new Õpilane("Kati", new List<int>{3, 2, 4, 5})
};
Console.WriteLine("\nÕpilaste keskmised hinded:");
foreach (var õp in õpilased)
{
Console.WriteLine($"{õp.Nimi}: {õp.Keskmine():F2}");
}
var parim = õpilased.OrderByDescending(o => o.Keskmine()).First();
Console.WriteLine($"\nParima keskmisega õpilane: {parim.Nimi}, keskmine {parim.Keskmine():F2}");
Console.WriteLine("\nÕpilased sorteeritud keskmise järgi:");
var sorteeritud = õpilased.OrderByDescending(o => o.Keskmine()).ToList();
foreach (var õp in sorteeritud)
{
Console.WriteLine($"{õp.Nimi}: {õp.Keskmine():F2}");
}
Console.WriteLine("\nVajuta Enter, et jätkata...");
Console.ReadLine();
}
//Ül 4 Filmide kogu
static void FilmideKogu()
{
Console.Clear();
Console.WriteLine("Filmide kogu\n");
// Loome filmide listi
List<Film> filmid = new List<Film>
{
new Film("Inception", 2010, "Sci-Fi"),
new Film("The Dark Knight", 2008, "Action"),
new Film("Interstellar", 2014, "Sci-Fi"),
new Film("The Godfather", 1972, "Drama"),
new Film("Avengers: Endgame", 2019, "Action")
};
// 1) Leia kõik Sci-Fi filmid
Console.WriteLine("=== Sci-Fi filmid ===");
var scifi = filmid.Where(f => f.Zanr == "Sci-Fi").ToList();
foreach (var f in scifi)
Console.WriteLine($"{f.Pealkiri} ({f.Aasta})");
// 2) Leia uusim film
Console.WriteLine("\n=== Uusim film ===");
var uusim = filmid.OrderByDescending(f => f.Aasta).First();
Console.WriteLine($"{uusim.Pealkiri} ({uusim.Aasta})");
// 3) Grupeerime žanri järgi
Console.WriteLine("\n=== Filmid žanrite kaupa ===");
var grupp = filmid.GroupBy(f => f.Zanr);
foreach (var g in grupp)
{
Console.WriteLine($"\nŽanr: {g.Key}");
foreach (var f in g)
Console.WriteLine($" - {f.Pealkiri} ({f.Aasta})");
}
Console.WriteLine("\nVajuta Enter, et jätkata...");
Console.ReadLine();
}
//ül5 Arvude massiivi statistika
static void Arvude_massiivi_statistika()
{
Console.Clear();
Console.WriteLine("Arvude massiivi statistika\n");
// Küsi kasutajalt arvud
double[] arvud = Tekstist_arvud();
// Arvuta maksimum, miinimum, summa, keskmine
double max = arvud.Max();
double min = arvud.Min();
double sum = arvud.Sum();
double avg = arvud.Average();
// Loeme, mitu arvu on suuremad kui keskmine
int rohkemKuinKeskmine = arvud.Count(a => a > avg);
// Väljasta tulemused
Console.WriteLine($"\nMaksimaalne arv: {max}");
Console.WriteLine($"Minimaalne arv: {min}");
Console.WriteLine($"Arvude summa: {sum}");
Console.WriteLine($"Keskmine: {avg:F2}");
Console.WriteLine($"Arve suuremaid kui keskmine: {rohkemKuinKeskmine}");
// Boonus: järjestatud massiiv
Array.Sort(arvud);
Console.WriteLine("\nArvud järjestatuna:");
foreach (double a in arvud)
{
Console.Write(a + " ");
}
Console.WriteLine("\n\nVajuta Enter, et jätkata...");
Console.ReadLine();
}
//ül6 Lemmikloomade register
static void Lemmikloomade_register()
{
Console.Clear();
Console.WriteLine("Arvude massiivi statistika\n");
Console.Clear();
Console.WriteLine("=== Lemmikloomade register ===\n");
List<Lemmikloom> lemmikud = new List<Lemmikloom>();
// Küsi vähemalt 5 lemmiklooma andmed
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"Sisesta {i + 1}. lemmiklooma andmed:");
Console.Write("Nimi: ");
string nimi = Console.ReadLine();
Console.Write("Liik (nt kass, koer): ");
string liik = Console.ReadLine();
Console.Write("Vanus: ");
int vanus = int.Parse(Console.ReadLine());
lemmikud.Add(new Lemmikloom(nimi, liik, vanus));
Console.WriteLine();
}
// Lisa valik veel andmeid lisada
while (true)
{
Console.Write("Kas soovid lisada veel lemmikloomi? (jah/ei): ");
string vastus = Console.ReadLine().ToLower();
if (vastus == "jah")
{
Console.WriteLine($"Sisesta lemmiklooma andmed:");
Console.Write("Nimi: ");
string nimi = Console.ReadLine();
Console.Write("Liik: ");
string liik = Console.ReadLine();
Console.Write("Vanus: ");
int vanus = int.Parse(Console.ReadLine());
lemmikud.Add(new Lemmikloom(nimi, liik, vanus));
Console.WriteLine();
}
else
break;
}
// Kuvab kõik kassid
Console.WriteLine("\n=== Kõik kassid ===");
var kassid = lemmikud.Where(l => l.Liik.ToLower() == "kass").ToList();
if (kassid.Count > 0)
{
foreach (var kass in kassid)
Console.WriteLine($"{kass.Nimi}, {kass.Vanus} aastat");
}
else
Console.WriteLine("Ei leitud ühtegi kassi.");
// Arvuta keskmine vanus
double keskmineVanus = lemmikud.Average(l => l.Vanus);
Console.WriteLine($"\nKeskmine vanus: {keskmineVanus:F2} aastat");
// Leia vanim lemmikloom
var vanim = lemmikud.OrderByDescending(l => l.Vanus).First();
Console.WriteLine($"Vanim lemmikloom: {vanim.Nimi} ({vanim.Liik}), {vanim.Vanus} aastat");
// Boonus: otsing nime järgi
Console.Write("\nOtsi looma nime järgi: ");
string otsiNimi = Console.ReadLine().ToLower();
var leitud = lemmikud.Where(l => l.Nimi.ToLower().Contains(otsiNimi)).ToList();
if (leitud.Count > 0)
{
Console.WriteLine("Leitud lemmikloomad:");
foreach (var l in leitud)
Console.WriteLine($"{l.Nimi}, {l.Liik}, {l.Vanus} aastat");
}
else
Console.WriteLine("Ei leitud ühtegi looma selle nimega.");
Console.WriteLine("\nVajuta Enter, et tagasi menüüsse...");
Console.ReadLine();
}
//ül7 Valuutakalkulaator
static void Valuutakalkulaator()
{
Console.Clear();
Console.WriteLine("Arvude massiivi statistika\n");
// Loome valuutad
List<Valuuta> valuutad = new List<Valuuta>
{
new Valuuta("USD", 1.05), // 1 EUR = 1.05 USD
new Valuuta("GBP", 0.87), // 1 EUR = 0.87 GBP
new Valuuta("JPY", 145.0), // 1 EUR = 145 JPY
new Valuuta("CHF", 0.97), // 1 EUR = 0.97 CHF
new Valuuta("EUR", 1.0)
};
// Boonus: mugavam otsing Dictionary abil
Dictionary<string, Valuuta> valuutaDict = valuutad.ToDictionary(v => v.Nimetus.ToUpper(), v => v);
Console.WriteLine("Valuutad: " + string.Join(", ", valuutad.Select(v => v.Nimetus)));
// Küsi kasutajalt summa ja valuutanimi
Console.Write("\nSisesta summa: ");
double summa = double.Parse(Console.ReadLine());
Console.Write("Sisesta valuutanimi (nt USD): ");
string nimetus = Console.ReadLine().ToUpper();
if (!valuutaDict.ContainsKey(nimetus))
{
Console.WriteLine("Sellist valuutat ei leitud!");
Console.WriteLine("\nVajuta Enter, et tagasi menüüsse...");
Console.ReadLine();
return;
}
Valuuta val = valuutaDict[nimetus];
// Arvuta mitu EUR-i see summa on
double eurid = summa / val.KurssEurSuhte;
Console.WriteLine($"\n{summa} {val.Nimetus} = {eurid:F2} EUR");
// Arvuta vastupidi: mitu USD saab EUR-i eest
if (valuutaDict.ContainsKey("USD"))
{
double usd = eurid * valuutaDict["USD"].KurssEurSuhte;
Console.WriteLine($"{eurid:F2} EUR = {usd:F2} USD");
}
Console.WriteLine("\nVajuta Enter, et tagasi menüüsse...");
Console.ReadLine();
}
//Klassid
// Lemmikloom klass
class Lemmikloom
{
public string Nimi { get; set; }
public string Liik { get; set; }
public int Vanus { get; set; }
public Lemmikloom(string nimi, string liik, int vanus)
{
Nimi = nimi;
Liik = liik;
Vanus = vanus;
}
}
// Klass Film
class Film
{
public string Pealkiri { get; set; }
public int Aasta { get; set; }
public string Zanr { get; set; }
public Film(string pealkiri, int aasta, string zanr)
{
Pealkiri = pealkiri;
Aasta = aasta;
Zanr = zanr;
}
}
// Klass Õpilane (jääb samaks)
class Õpilane
{
public string Nimi { get; set; }
public List<int> Hinded { get; set; }
public Õpilane(string nimi, List<int> hinded)
{
Nimi = nimi;
Hinded = hinded;
}
public double Keskmine()
{
return Hinded.Average();
}
}
// Valuuta klass
class Valuuta
{
public string Nimetus { get; set; }
public double KurssEurSuhte { get; set; } // 1 EUR = x valuutat
public Valuuta(string nimetus, double kurssEurSuhte)
{
Nimetus = nimetus;
KurssEurSuhte = kurssEurSuhte;
}
}
- Projekti loomine, ikooni lisamine ja arvutamine. Teoria+Praaktika
- Ava Visual Studio 2019 → Create a new Project → vali Console App (.NET Framework).
- Määra projekti nimi (näiteks:
Kordamine). - Loo fail
StartClass.cs.
Lihtsaim C# programm:
class StartClass
{
public static void Main(string[] args)
{
Console.WriteLine("Tere tulemast!");
}
}
Mainon programmi stardikoht.Console.WriteLine()kuvab teksti ekraanile.
2. Käivituskirje ja ikooni määramine
- Menüü: Project → Properties
- Startup object: valime
StartClass.cs - Icon: valime sobiva
.icofaili.
3. Tekstisisendi kasutamine
- Muutujate abil saab talletada kasutaja sisestust.
- Näide:
class StartClass
{
public static void Main(string[] args)
{
Console.WriteLine("Tere tulemast!");
string eesnimi = Console.ReadLine(); // kasutaja sisend
Console.WriteLine("Tere, " + eesnimi);
Console.ReadLine(); // peatab programmi ekraanil
}
}
Console.ReadLine()loeb teksti sisendi.- Teksti ühendamiseks stringiga kasutatakse
+.
4. Arvutamine
- Näide kahe arvu korrutamiseks:
class StartClass
{
public static void Main(string[] args)
{
Console.WriteLine("Tere tulemast!");
string eesnimi = Console.ReadLine();
Console.WriteLine("Tere, " + eesnimi);
Console.Write("Sisesta esimene arv: ");
int arv1 = int.Parse(Console.ReadLine());
Console.Write("Sisesta teine arv: ");
int arv2 = int.Parse(Console.ReadLine());
int korrutis = arv1 * arv2;
Console.WriteLine("Arvude {0} ja {1} korrutis on {2}", arv1, arv2, korrutis);
Console.ReadLine();
}
}
int.Parse()teisendab stringi täisarvuks.Console.WriteLinevõimaldab kasutada formaaditud stringe{0}, {1}, {2}.
5. Täiendused ja head praktikad
- Tüüpide teisendamine:
double arv = double.Parse(Console.ReadLine()); - Töö kasutaja valikuga (menüü või tsükkel):
while(true) { Console.WriteLine("Vali tegevus: 1-Korrutamine, 0-Lõpeta"); string valik = Console.ReadLine(); if(valik == "0") break; } - Muutujate nimed peaksid olema kirjeldavad (
eesnimi,vanus,summa). - Kommentaarid aitavad koodi selgitada:
//ühe rea kommentaar,/* ... */mitme rea.
6. Boonusidee
- Sisse- ja väljundfunktsioonide eraldamine:
static int LoeArv(string tekst) { Console.Write(tekst); return int.Parse(Console.ReadLine()); } - Võimaldab koodi modulaarsemaks muuta ja vähendab korduvat koodi.
2. osa C# Valikute konstruktsionid
1. Valikute mõiste
- Valikud võimaldavad programmil käituda erinevalt sõltuvalt tingimustest.
- Peamised konstruktsioonid:
if/else if/elseswitch
2. If / Else näide
public static void Main(string[] args)
{
Console.WriteLine("Tere tulemast!");
string eesnimi = Console.ReadLine();
Console.WriteLine("Tere, " + eesnimi);
if (eesnimi.ToLower() == "juku") // tingimus
{
Console.WriteLine("Tule minu juurde külla!");
}
else
{
Console.WriteLine("Täna mind kodus pole!");
}
int arv1 = int.Parse(Console.ReadLine());
int arv2 = int.Parse(Console.ReadLine());
Console.WriteLine("Arvude {0} ja {1} korrutis võrdub {2}", arv1, arv2, arv1 * arv2);
Console.ReadLine();
}
Selgitus:
.ToLower()teisendab teksti väikesteks tähtedeks, et tingimus ei sõltuks kasutaja sisestusest (Juku=juku).ifkontrollib tingimust,elsekäivitub, kui tingimus pole tõene.- Võib kasutada ka
else ifmitme tingimuse jaoks.
3. Switch näide: kuu nimetuse dekodeerimine
public static string Kuu_nimetus(int kuu_nr)
{
string kuu = "";
switch (kuu_nr)
{
case 1: kuu = "Jaanuar"; break;
case 2: kuu = "Veebruar"; break;
case 3: kuu = "Märts"; break;
case 4: kuu = "Aprill"; break;
case 5: kuu = "Mai"; break;
case 6: kuu = "Juuni"; break;
case 7: kuu = "Juuli"; break;
case 8: kuu = "August"; break;
case 9: kuu = "September"; break;
case 10: kuu = "Oktoober"; break;
case 11: kuu = "November"; break;
case 12: kuu = "Detsember"; break;
default: kuu = "???"; break; // vigane sisend
}
return kuu;
}
Selgitus:
switchvalib ühe konkreetse väärtuse põhjal.breaklõpetab iga case’i täitmise.defaultkäsitleb kõiki teisi väärtusi.
4. If/Else näide: hooaja määramine
public static string Hooaeg(int kuu_nr)
{
string hoo = "";
if (kuu_nr == 12 || kuu_nr == 1 || kuu_nr == 2) // Talv
{
hoo = "Talv";
}
else if (kuu_nr >= 3 && kuu_nr <= 5) // Kevad
{
hoo = "Kevad";
}
else if (kuu_nr >= 6 && kuu_nr <= 8) // Suvi
{
hoo = "Suvi";
}
else if (kuu_nr >= 9 && kuu_nr <= 11) // Sügis
{
hoo = "Sügis";
}
else
{
hoo = "???"; // Vigane kuu
}
return hoo;
}
Selgitus:
||tähendab või (or)&&tähendab ja (and)- Tingimusi saab kombineerida ja järjestada, et katta kõik võimalikud olukorrad.
5. Täiendused ja head praktikad
- Sisendi kontrollimine:
bool ok = int.TryParse(Console.ReadLine(), out int kuu_nr);
if (!ok) Console.WriteLine("Vale sisend!");
- If/Else vs Switch:
ifsobib keerukate tingimuste jaoks.switchsobib ühe muutuja konkreetsete väärtuste kontrolliks.
- Koodi selgus:
- Kasuta selgeid muutujanimesid (
kuu_nr,hoo,eesnimi). - Kommentaarid aitavad mõista, millist tingimust kontrollitakse.
- Kasuta selgeid muutujanimesid (
3. osa C# Kordused, massiivid ja klassid
1.1 while – tingimus kontrollitakse enne ploki täitmist
int nr = 1;
while (nr <= 5)
{
Console.WriteLine("Tere, {0}. matkaja!", nr);
nr = nr + 1; // või nr++
}
- Kasutatakse, kui korduste arvu ei pruugi ette teada.
- Tingimus
nr <= 5määrab, mitu korda plokk täidetakse.
1.2 for – lühike kordusformaad
for (int nr = 1; nr <= 5; nr++)
{
Console.WriteLine("Tere, {0}. matkaja!", nr);
}
- Algväärtus →
nr=1 - Tingimus →
nr <= 5 - Iteratsioon →
nr++
1.3 do…while – plokk täidetakse vähemalt üks kord
int nr = 0;
do
{
Console.WriteLine("Tere, {0}. matkaja!", nr);
nr++;
} while (nr != 5);
- Tingimus kontrollitakse pärast ploki täitmist.
- Sobib, kui soovitakse vähemalt ühte läbimist (näiteks sisendkontroll).
2. Massiivid (Arrays)
string[] nimed = new string[8] {"A","B","C","D","E","F","G","H"};
nimed[2] = "Anna";
Massiivi läbimine
int nr = 0;
while (nr < nimed.Length)
{
Console.WriteLine("Tere, {0} õpilane", nimed[nr]);
nr++;
}
for (int i = 0; i < nimed.Length; i++)
{
Console.WriteLine("Tere, {0} õpilane", nimed[i]);
}
foreach (var nimi in nimed)
{
Console.WriteLine("Tere, {0} õpilane", nimi);
}
nr = 0;
do
{
Console.WriteLine("Tere, {0} õpilane", nimed[nr]);
nr++;
} while (nr != nimed.Length);
Selgitus:
nimed.Lengthannab massiivi pikkuse.foreachon mugav lugemiseks ja lihtsustab koodi.
3. Klassid ja objektid
class Isik
{
public string Nimi;
public int Vanus;
public void Tervita()
{
Console.WriteLine("Tere, minu nimi on " + Nimi);
}
}
static void Main()
{
List<Isik> inimesed = new List<Isik>();
for (int i = 0; i < 3; i++)
{
Console.Write("Sisesta nimi: ");
string nimi = Console.ReadLine();
Console.Write("Sisesta vanus: ");
int vanus = int.Parse(Console.ReadLine());
Isik uusIsik = new Isik();
uusIsik.Nimi = nimi;
uusIsik.Vanus = vanus;
inimesed.Add(uusIsik);
}
Console.WriteLine("\nKõik inimesed tervitavad:\n");
foreach (Isik isik in inimesed)
{
isik.Tervita();
}
}
- Klassid sisaldavad andmeid (väljad) ja meetodeid (funktsioonid).
- Objekte saab talletada List või massiividesse.
4. Tuples – mitme väärtuse talletamine ilma klassita
Tuple<float, char, string> minuTuple = new Tuple<float, char, string>(3.14f, 'A', "Programmeerimine");
Console.WriteLine("Esimene: " + minuTuple.Item1); // 3.14
Console.WriteLine("Teine: " + minuTuple.Item2); // A
Console.WriteLine("Kolmas: " + minuTuple.Item3); // Programmeerimine
- Sobib väikeste andmehulkade jaoks, kui eraldi klassi loomine oleks liiga mahukas.
Item1,Item2,Item3viitavad vastavatele väärtustele.
5. Head praktikad
- Korduste konstruktsioonide valik sõltub korduste arvust ja tingimustest:
while– tundmatu korduste arvfor– teadaolev korduste arvdo…while– vähemalt üks kord peab läbima
- Muutujate selged nimed (
nr,nimi,vanus) parandavad koodi loetavust. - Massiive ja List-e saab kombineerida klassidega mugavamaks andmete haldamiseks.
- Tuple sobib väikesteks andmekogumiks, ilma et peaks klassi looma.
4. osa C# Failitöötlus
1. Faili kirjutamine (StreamWriter)
try
{
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
// Faili kirjutamine, lisades sisu lõppu (true)
using (StreamWriter sw = new StreamWriter(path, true))
{
Console.WriteLine("Sisesta mingi tekst:");
string lause = Console.ReadLine();
sw.WriteLine(lause);
} // Fail suletakse automaatselt
}
catch (Exception)
{
Console.WriteLine("Mingi viga failiga!");
}
Selgitus:
true→ lisab faili lõppu, ei kirjutata üle.usingplokis fail suletakse automaatselt.- Fail salvestatakse projektikausta.
2. Faili lugemine (StreamReader)
try
{
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
using (StreamReader sr = new StreamReader(path))
{
string sisu = sr.ReadToEnd();
Console.WriteLine(sisu);
}
}
catch (Exception)
{
Console.WriteLine("Viga failiga, ei saa lugeda!");
}
ReadToEnd()loeb kogu faili korraga.- Fail tuleb alati sulgeda või kasutada
using.
3. Ridade lugemine List<string> abil
List<string> kuude_list = new List<string>();
try
{
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
foreach (string rida in File.ReadAllLines(path))
{
kuude_list.Add(rida);
}
}
catch (Exception)
{
Console.WriteLine("Viga failiga!");
}
4. Listi muutmine ja kuvamine
foreach (string kuu in kuude_list)
{
Console.WriteLine(kuu);
}
// Eemalda "Juuni"
kuude_list.Remove("Juuni");
// Muuda esimest elementi
if (kuude_list.Count > 0)
kuude_list[0] = "Veeel kuuu";
Console.WriteLine("--------------Kustutasime juuni-----------");
foreach (string kuu in kuude_list)
{
Console.WriteLine(kuu);
}
5. Otsing nimekirjast
Console.WriteLine("Sisesta kuu nimi, mida otsida:");
string otsitav = Console.ReadLine();
if (kuude_list.Contains(otsitav))
Console.WriteLine("Kuu " + otsitav + " on olemas.");
else
Console.WriteLine("Sellist kuud pole.");
6. Listi salvestamine tagasi faili
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Kuud.txt");
File.WriteAllLines(path, kuude_list);
Console.WriteLine("Andmed on salvestatud.");
7. Faili olemasolu kontroll
if (!File.Exists(path))
{
File.WriteAllLines(path, new string[] { "Jaanuar", "Veebruar", "Märts" });
}
- Kasuta
Path.Combinefailitee koostamiseks – töötab igal süsteemil. - Failid alati sulgeda või kasutada
using.
✅ Kokkuvõte – oskused
| Oskus | Õpitud tegevus |
|---|---|
| Failikirjutus | StreamWriter, WriteLine() |
| Faililugemine | StreamReader, ReadToEnd(), File.ReadAllLines() |
| Vigade käsitlemine | try-catch |
| Andmestruktuurid | List<string>, lisamine, muutmine, kustutamine |
| Failitee kasutamine | Path.Combine, AppDomain.CurrentDomain.BaseDirectory |
| Otsing ja salvestus | Contains(), WriteAllLines() |
5. osa C# Kollektsioonid. Listid ja sõnastikud. Meetodid ja näidised
1. ArrayList (System.Collections)
- Dünaamiline kogumik, mille suurust ei pea ette määrama.
- Elementide tüüp ei ole piiratud (ei ole tugevalt tüübistatav).
Peamised meetodid:
| Meetod | Selgitus |
|---|---|
Add(item) | Lisa element lõppu |
Contains(item) | Kontrolli, kas element on olemas |
Count | Tagastab elementide arvu |
Insert(index, item) | Lisa element kindlasse kohta |
IndexOf(item) | Leiab indeksi |
Sort() | Järjestab elemendid kasvavalt |
Näide:
ArrayList nimed = new ArrayList();
nimed.Add("Kati");
nimed.Add("Mati");
nimed.Add("Juku");
if (nimed.Contains("Mati"))
Console.WriteLine("Mati olemas");
nimed.Insert(1, "Sass");
Console.WriteLine("Mati indeks: " + nimed.IndexOf("Mati"));
foreach (string nimi in nimed)
Console.WriteLine(nimi);
Märkus: ArrayList on vanem struktuur, tänapäeval eelistatakse List<T>.
2. Tuple
- Kindla suuruse ja tüübitüübiga andmestruktuur.
- Elemendid võivad olla erinevat tüüpi.
Näide:
Tuple<float, char> route = new Tuple<float, char>(2.5f, 'N');
Console.WriteLine($"Vahemaa: {route.Item1}, Suund: {route.Item2}");
Item1,Item2… viitavad elementidele.- Sobib ajutiseks mitme väärtuse salvestamiseks ilma klassita.
3. List<T> (System.Collections.Generic)
- Tugevalt tüübistatav geneeriline kogumik.
- Kõige sagedamini kasutatav andmestruktuur igapäevases arenduses.
Peamised meetodid:
| Meetod | Selgitus |
|---|---|
Add(item) | Lisa üks element |
AddRange(collection) | Lisa mitu elementi korraga |
IndexOf(item) | Leia element |
Remove(item) | Eemalda element |
RemoveAt(index) | Eemalda element kindlast kohast |
Insert(index, item) | Lisa kindlasse kohta |
Sort() | Järjesta |
BinarySearch(item) | Kiire otsing (peab olema sorteeritud) |
Näide:
class Person { public string Name { get; set; } }
List<Person> people = new List<Person>();
people.Add(new Person() { Name = "Kadi" });
people.Add(new Person() { Name = "Mirje" });
foreach (Person p in people)
Console.WriteLine(p.Name);
4. LinkedList<T> (System.Collections.Generic)
- Jada (linked list), kus iga element viitab järgmisele.
- Sobib hästi, kui on vaja sageli lisada või eemaldada elemente keskel või alguses.
Peamised meetodid:
| Meetod | Selgitus |
|---|---|
AddFirst(value) | Lisa alguses |
AddLast(value) | Lisa lõppu |
AddBefore(node, value) | Lisa enne sõlme |
AddAfter(node, value) | Lisa pärast sõlme |
RemoveFirst() | Eemalda esimene |
RemoveLast() | Eemalda viimane |
Remove(value) | Eemalda konkreetne element |
Näide:
LinkedList<int> loetelu = new LinkedList<int>();
loetelu.AddLast(5);
loetelu.AddLast(3);
loetelu.AddFirst(0);
foreach (int arv in loetelu)
Console.WriteLine(arv);
loetelu.RemoveFirst();
loetelu.RemoveLast();
loetelu.AddLast(555);
loetelu.Remove(555);
5. Dictionary<TKey, TValue> – Sõnastik
- Võtme-väärtuse paaride hoidmiseks.
- Kiire otsing võtme alusel.
Peamised meetodid:
| Meetod | Selgitus |
|---|---|
Add(key, value) | Lisa paar |
Remove(key) | Eemalda paar võtme alusel |
ContainsKey(key) | Kontrolli võtme olemasolu |
ContainsValue(value) | Kontrolli väärtuse olemasolu |
Keys, Values | Võtmete ja väärtuste kogum |
dictionary[key] = newValue | Muuda väärtust võtme alusel |
Näide:
Dictionary<int, string> riigid = new Dictionary<int, string>();
riigid.Add(1, "Hiina");
riigid.Add(2, "Eesti");
riigid.Add(3, "Itaalia");
foreach (var paar in riigid)
Console.WriteLine($"{paar.Key} - {paar.Value}");
string pealinn = riigid[2]; // "Eesti"
riigid[2] = "Eestimaa";
riigid.Remove(3);
Klasside näide:
Dictionary<char, Person> inimesed = new Dictionary<char, Person>();
inimesed.Add('k', new Person() { Name = "Kadi" });
inimesed.Add('m', new Person() { Name = "Mait" });
foreach (var entry in inimesed)
Console.WriteLine($"{entry.Key} - {entry.Value.Name}");
Kokkuvõte – millal millist kasutada
| Andmetüüp | Millal kasutada |
|---|---|
| ArrayList | Lihtsaks prototüüpimiseks (vanem kood, mitte soovitatav) |
| List<T> | Enamiku tavaliste andmekogumite jaoks |
| LinkedList<T> | Kui vaja palju lisada või muuta elemente jada keskel või alguses |
| Dictionary<K,V> | Kiire võtme alusel andmete leidmine |
| Tuple<T1,T2,…> | Ajutiselt mitme eri tüübi väärtuse salvestamiseks |
18.09 OOP
Näide:
- Loome klassi Inimene
namespace TARpv24_Ckeel
{
public class StartClassOOP
{
public ctatic void Main(string[] args)
{
Inimene inimenel = new Inimene();
inimenel.Nimi = "Juku";
inimenel.Vanus = 12;
inimenel.Tervita();
inimenel inimene2 = new inimene("kati", 28);
Töötaja töötajal = new Töötaja();
töötajal.Nimi = "Mati";
töötajal.Vanus = 45;
töötajal.Ametikoht = "Autojuht";
töötajal.Tervita();
töötajal.Töötan();
//3 Tee ise vähemalt 2 alamklassi ja kasuta neid siin
//4-5 Tee enda põhiklass ja 2 alamklass ning kasuta neid siin
Ehitaja ehitajal = new Ehitaja();
ehitajal.Nimi = "Andor";
ehitajal.Vanus = 52;
ehitajal.Tervita();
ehitajal.objektiAsukoht = "Ehitaja tee 48";
ehitajal.Töötan();
ehitajal.tööandja = "Mati";
}
}
}
using System;
public class Inimene
{
public string Nimi;
public int vanus;
public Inimene(string nimi, int vanus)
{
Nimi = nimi;
Vanus = vanus;
public Inimene()
{
Nimi = "Mati"
Vanus = 20
}
}
public void Tervita()
{
}
}
2.
3. Abstraktsioon
Mis on abstraktsioon?
Peidab keeruline loogika ja näitab ainult vajalikku infot.
using System;
namespace TARpv24_Ckeel
{
public class Õpilane : Inimene
{
public string Rühm_Klass;
public string Kool;
public override void Mida_teeb()
{
Console.WriteLine($"{Nimi} õpib koolis."
}
}
}
using System;
public abstract class Inimene
{
public string Nimi;
public int vanus;
public Inimene(string nimi, int vanus)
{
Nimi = nimi;
Vanus = vanus;
public Inimene()
{
Nimi = "Mati"
Vanus = 20
}
public void Tervita()
{
Console.WriteLine("Tere! Mina olen " + Nimi);
}
public abstract void Mida_teeb();
}
}
4. Kapseldamine

