C# SZINTAKTIKÁJA Az egyes utasítások végén pontosvessző áll A kis és nagybetűk különböző jelentőséggel bírnak A program egységeit (blokkokat) kapcsos zárójelekkel jelöljük ({}) Kulcsszavak Megjegyzések: // egy sor komment, /* */ többsoros komment Névtér: virtuális doboz, amelyben a logikailag összefüggő osztályok, metódusok, stb. vannak
Változó típusok Egész típusok típus méret Leírás byte 1 Előjel nélküli 8 bites egész szám (0..255) sbyte Előjeles 8 bites szám (-128..127) short 2 Előjeles 16 bites egész szám (-32768..32767) ushort Előjel nélküli 16 bites egész szám (0..65535) int 4 Előjeles 32 bites egész szám (-147483648..2147483647) uint Előjel nélküli 32 bites egész szám (0..4294967295) long 8 Előjeles 64 bites szám Ulong Előjel nélküli 64 bites szám
Változó típusok Valós és egyéb típusok Változó = Convert.to…(); típus méret Leírás bool 1 Logikai típus, értéke igaz vagy hamis char 2 Egy Unicode karakter string Unikcode karakter szekvenciája float 4 Egyszeres pontosságú lebegőpontos szám double 8 Kétszeres pontosságú lebegőpontos szám object Minden típus őse Változó = Convert.to…();
Input, Output Input: Output: Változó = Console.Read(); Változó = Console.ReadLine(); b = int.TryParse(Console.ReadLine(), out g), ahol b bool, g egész típus Output: Console.WriteLine("{0:C}", 2.5); //2,5 Ft Console.WriteLine("{0:C}", -2.5); //-2,5 FT Console.WriteLine("{0:D5}", 25); //00025 Console.WriteLine("{0:E}", 250000); //2.500000E+005 Console.WriteLine("{0:F2}", 25); //25,00 Console.WriteLine("{0:F0}", 25); //25 Console.WriteLine("{0:G}", 2.5); //2.5
Output Output: Console.Write(”szöveg ”); Console.WriteLine(”szöveg”); Console.WriteLine(”{0} {1}”, a,b); Console.WriteLine("{0,6} {1,6}", 123, 456); //jobbra Console.WriteLine("{0,-6} {1,-6}", 123, 456); //balra
Egyszerű elágazás
Kétirányú elágazás
Többirányú elágazás
if (feltétel1) { utasítás1; ..utasításn; } else if (feltétel2) else Elágazás1 if (feltétel1) { utasítás1; ..utasításn; } else if (feltétel2) else
Elágazás2 switch(változó) { case érték1: utasítás1; ..utasításn; break; case érték2: utasítás1; default: utasítás1; }
Ciklusok1
Ciklusok2
Ciklusok3
Ciklusok4
Ciklusok5
Ciklusok6
Ciklusok7
Ciklusok8
Ciklusok9
Ciklusok10
Ciklusok11
Ciklusok12
Ciklusok13 while(feltétel) { utasítás1; .. utasításn; } do .. utasítasn; } while(feltétel); for (ini ; feltétel; léptetés) ..utasításn; foreach(típusnév változónév in kollekciónév) utasítás; break; continue;
Hozzáférési szintek private : csak struktúrán belülről érhető el public : bárki elérheti ezt a mezőt internal : programon belülről (assembly) elérhető
String string s = ”alma”; Összefűzés: s = s + ”fa”; //almafa Nagybetűs: s = s.ToUpper(); //ALMAFA Kisbetűs: s = s.ToLower(); //almafa Kivágás: string s1 = s.SubString(0,2); //al, ha nincs második paraméter a hosszáig Hossza: int l= s.Length; //6 Keresés: int l1= string.Indexof(’l’) //1, ha nincs, akkor az értéke -1 Összehasonlítás: int a = string.Compare(s1,s2) //1, ha a s2 előrébb van, mint s1, 0, ha egyforma, -1, ha s1 előrébb van, mint s2
Tömb, struktúra Tömbök: int[] szamok= new int[4]; int[,] numbers = new int[3, 2]; int[,] numbers = new int[3, 2] {{1,2}, {3,4}, {5,6}}; Struktúra: struct tanulo { public string nev; public double atlag; }; tanulo hallgato; hallgato.nev = ” Kis Pista”; hallgato.atlag = 5;
Alprogram Önálló feladattal rendelkező programegység Azonosító, paraméter Eljárás, függvény Alprogram hívása
Alprogramok végrehajtása
Függvény, metódus FÜGGVÉNY: Metódus: Láthatóság(static) visszatérési típus név(paraméterek) { Alprogram utasítástörzse return érték; } Metódus: Láthatóság(static) void név(paraméterek)
Paraméterek Bemenő Referencia Kimenő
Fájl kezelés System.IO StreamWriter StreamReader Exists Write(string), Writeln(string) Read(), ReadLine() Close()
Objektum
Osztály Adatok, műveletek Alapelv: Egységbezárás Öröklés Sokoldalúság
Osztály2 Egységbezárás: egyértelműen jelölve van, hogy milyen adatok és műveletek jellemzik metódus (eljárások, függvények) Öröklés Ős osztály Gyerek osztály
Feladat Írjon egy progamot hallgatói adatok rendezésére! Hozzon létre egy tanulo nevű struktúrát, ami tartalmazza a hallgató nevét és átlagát! Írjon egy Beolvas nevű paraméter nélküli függvényt, ami beolvassa a hallgatók adatait egy „nevsor.txt” nevű text típusú fájlból. Visszatérési értéke a beolvasott hallgatók darabszáma. Írjon egy csere nevű metódust, ami a bemenő paraméterében megadott két hallgató adatát megcserélve adja vissza. Írjon egy Rendez nevű metódust, ami a paraméterében (mi szerint rendezze: névsor/átlag) megadott mód szerint rendezi az adatokat. Írjon egy Fajlbair paraméter nélküli metódust, ami az adatokat beírja egy text típusú fájlba.
1.Hozzon létre egy tanulo nevű struktúrát, ami tartalmazza a hallgató nevét és átlagát! struct tanulo { public string nev; public double atlag; } static tanulo[] tankor = new tanulo[20]; static int n;
2.Írjon egy Beolvas nevű paraméter nélküli függvényt, ami beolvassa a hallgatók adatait egy „nevsor.txt” nevű text típusú fájlból. Visszatérési értéke a beolvasott hallgatók darabszáma. static int Beolvas() { StreamReader sr = new StreamReader("nevsor.txt"); string line; string s; byte i = 0; int h; while ((line = sr.ReadLine()) != null) h = line.IndexOf(";"); s = line.Substring(0, h); tankor[i].nev = s; s = line.Substring(h + 1); tankor[i].atlag = Convert.ToDouble(s); ++i; } sr.Close(); return i; static void Main(string[] args) n = Beolvas();
static void csere(ref tanulo a, ref tanulo b) { tanulo cs; 3. Írjon egy csere nevű metódust, ami a bemenő paraméterében megadott két hallgató adatát megcserélve adja vissza. static void csere(ref tanulo a, ref tanulo b) { tanulo cs; cs = a; a = b; b = cs; }
4. Írjon egy Rendez nevű metódust, ami a paraméterében (mi szerint rendezze: névsor/átlag) megadott mód szerint rendezi az adatokat. static void Rendez(int mi) { //Rendezés átlag és név szerint szerint for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - 1; j++) if (mi == 1) if (tankor[j].atlag > tankor[j + 1].atlag) csere(ref tankor[j], ref tankor[j + 1]); } else if (string.Compare(tankor[j].nev, tankor[j + 1].nev) == 1)
Főprogramba a Rendez meghívása static void Main(string[] args) { byte mi; n = Beolvas(); Console.Write("Mi szerint rendezzek (1: átlag, 2: névsor"); mi = Convert.ToByte(Console.ReadLine()); Rendez(mi); }
5. Írjon egy Fajlbair paraméter nélküli metódust, ami az adatokat beírja egy text típusú fájlba. static void Fajlbair() { StreamWriter sw = new StreamWriter("nevsor.txt"); string s; for (int i = 0; i < n; i++) s = tankor[i].nev + ";" + tankor[i].atlag; sw.WriteLine(s); } sw.Close();
Végső főprogram static void Main(string[] args) { byte mi; n = Beolvas(); Console.Write("Mi szerint rendezzek (1: átlag, 2: névsor"); mi = Convert.ToByte( Console.ReadLine()); Rendez(mi); Fajlbair(); Console.ReadLine(); }