érzékeny karakterek  fontosabb függvények… később  Érdekesség:  string s = „vmi” + a; // a integer  (a –ra a ToString meghívódik ilyenkor) Elemi típusok (34-39)">

Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)” könyv 2008-as kiadásának nyomdokain… Az alábbi diákon felvetődő számok, a könyvbeli oldalszám(oka)t.

Hasonló előadás


Az előadások a következő témára: "C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)” könyv 2008-as kiadásának nyomdokain… Az alábbi diákon felvetődő számok, a könyvbeli oldalszám(oka)t."— Előadás másolata:

1 C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)” könyv 2008-as kiadásának nyomdokain… Az alábbi diákon felvetődő számok, a könyvbeli oldalszám(oka)t jelölik.

2  Változók/állandók definiálása  char ch;  int egy, tizenegy;  const float g=9.81; // valós konstans  g=2.3; // !! HIBA  const int min = 0; // egész konstans  Változók inicializálása  char s = ’a’;  int []a = {1,2,3};  char[]b = „Egy”; Változók / állandók (32-34)

3  char (2 byte -> unikód ábrázolás)  char c = ’a’;  string  fontosabb operátorok: +,  [] a string indexelése: pl. "szia"[1] = z // read-only. -> érzékeny karakterek  fontosabb függvények… később  Érdekesség:  string s = „vmi” + a; // a integer  (a –ra a ToString meghívódik ilyenkor) Elemi típusok (34-39)

4  int (4 byte)  long (8), short (2), sbyte, float (4), double (8), decimal (16)  u előjel: unsigned, nem előjeles uint, ulong, ushort, byte  void (fv. visszatérő paramétere)  bool (1 byte)  true/false  us/library/s1ax56ch(v=vs.110) us/library/s1ax56ch(v=vs.110) Elemi típusok (34-39)

5  new int[]a; a = new int(); // egy egész számára elegendő hely foglalás a = new int[5]; // 5 egész szám  !, ++, --  a = ++b -> // hatása: b=b+1; a=b; // b=3 akkor b=4 és a = 4  a = b++ -> // hatása: a=b; b=b+1; // b = 3 akkor b=4 és a =3 Egy operandusú operátorok (45-46)

6  (típus) kifejezés // típuskényszerítés (cast) int a = (int)9.81F; Console.WriteLine(a); // 9  Másik lehetőség a konvertálásra int a = int.Parse("1"); // a = 1 int b = Convert.ToInt32("1"); // b = 1 Egy operandusú operátorok (45-46)

7  A Convert használható minden gyakori típus átkonvertálásához.  Létezik Convert.ToInt32() … Convert.ToFloat()  CTS = Common Type System  CTS  Boolean, Int16, Int32, Int64, Float, Double, String, Decimal, Byte, Char Convert.ToCTSTípusnév

8  *, /, % (maradékképzés)  +, -  i is int // i az int típusból van-e létrehozva var a = 16; if (a is int) { Console.WriteLine("Szám!"); } if (a is String) { Console.WriteLine("Szöveg!"); } i as int // két operandusú típuskényszerítés (csak referenciákra és nullablekre) Két operandusú operátorok (46-52)

9  Három operandusú  e1 ? e2 : e3  Két operandusú értékadó operátorok:  +=,  -=,  *=  Továbbiak:  Egyéb operátorok ( )

10 int[]numbers; // vektordefiníció numbers = new int[10]; numbers = new int[20];// automatikus szemétgyűjtés  Kézzel inicializált tömb: int[] n = {3,4,5,6}; int[] n = new int[]{3,4,5,6}; int[]n = new int[4]{3,4,5,6};  Logikai vektor automatikus elemei: false,  Referencia vektor-é : null  Továbbá: Multidimenziós vektor, Vektorok vektora,… Adattípusok, Tömbök (57-61)

11 struct név{ típus mezőnevek; függvénydefiníció; }  Hozzáférési szintek: private, public, internal (assemblyn belül érhető el) Adattípusok, Struktúrák (62-66)

12  Fontos megjegyezni: 1.Nem lehet struktúrából származtatni 2.Nem lehet a mezőket deklaráláskor inicializálni 3.Van beépített, default konstruktor (paraméter nélkül) de az sem inicializálja a mezőket. (saját kell) 4.Bár érték típusú a struktúra, ha saját konstruktorral szeretnénk inicializálni, azért a new operátorral kell létrehozni. Bár ekkor is a vermen (stack) fog tárolódni. Adattípusok, Struktúrák (62-66)

13 struct Pont { public int x; public int y; } Pont p; // OK p.x = 5; p.y = 6; Struktúra példa

14 struct Pont { private int x; private int y; public Pont(int a, int b) { x = a; y = b; } Pont p(2,3); // HIBÁS, bár C++-ban jó lenne. Pont p = new Pont(2, 3); // OK, de így a stacken jön létre Struktúra példa (2)

15  Kifejezés utasítás  kifejezés;  Létezik a kifejezés nélküli ; utasítás, és értelme is van, például végtelen ciklus írása:  for(;;){ // végtelen ciklus } Utasítások, kifejezések (67)

16  Alapvetően: if(kifejezés){ utasítás; } if(kifejezés){ utasítás; } else { utasítás; }  Többirányú elágazás: switch(kifejezés ){ case érték1: utasítás1; ; case érték2: utasítás2; ;.. default: utasítás; ; } Elágazás utasítás (68-69)

17  Minden elágazás végére kötelező (nem úgy mint C/C++-ban) a befejező utasítás (break|goto|return) ahol aktuálisan valamilyen utasításokat is közlünk a címke után. Elágazás utasítás (2)

18  Ha mégis több címkéhez szeretnénk valamilyen aktivitást rendelni, például így tehetjük meg: switch (1) { case 1: case 2: MessageBox.Show("1"); MessageBox.Show("1 és 2"); break; default: break; } Elágazás utasítás (3)

19  While (elöl tesztelős) while(kifejezés igaz){ utasítás; } while(true) {…} // végtelen ciklus  Do (hátul tesztelős) do{…}while(kifejezés igaz){utasítás;} do{…}while(false){utasítás} // biztosan egyszer lefut  For for(int i =0; i <5; i++){ utasítás1;..}  Foreach foreach(azonosító in vektor){ utasítás; } Ciklusok (70-75)

20  break; A legbelső while, do, for utasítást hagyja abba (vagy switchet).  continue; Folytatja.. int i = 1; while(true){ i++; if(i<10) continue; // következő ciklusmag if(i==11) break; // Ciklus vége Console.WriteLine(i); }  goto címke; NEM AJÁNLOTT, de létezik. Ugró utasítások (75-82)

21  Könyvtárak használata using névtér_vagy_osztály  vagy using(objektum){utasítások;}  Disposable objektumokhoz, pl StreamReader/StreamWriter  A kivételkezeléshez is kapcsolódik (később…) Egyéb utasítások (75-82)

22  Érték szerinti paraméter átadás (83) static int maxfv(int a, int b) { return a > b ? a : b; } int c = maxfv(1, 2); MessageBox.Show(c.ToString()); // out: 2 Függvények

23  Rekurzív függvény példa: static int factor(int a) { return ((a <= 1) ? 1 : a * factor(a - 1)); }  Érdemes meggondolni hogy milyen adattípussal számolunk/adunk vissza  Ez a függvény hamar túllépi az int megengedhető tartományát (exponenciális)! Függvények

24  Referencia szerinti paraméter átadás (ref) (84. o.) void csere(ref int x, ref int y) { int t = x; x = y; y = t; } int a = 2, b = 3; csere(ref a, ref b); // fontos a ref kulcsszó! MessageBox.Show("{0}, {1}", a, b); // out: 3, 2 Függvények

25  Függvény eredmény paramétere (out) (85) void csere(out int x, out int y) { int t = x; x = y; y = t; } int a = 2, b = 3; csere(ref a, ref b); MessageBox.Show("{0}, {1}", a, b); Függvények

26  Függvény eredmény paramétere (out) (85) void osszead(int x, int y, out int osszeg) { osszeg = x + y; } int a = 2, b = 3, c = 0; osszead(a, b, out c); MessageBox.Show("{0} ", c); // 5 Függvények

27  Tömbök paraméterben (86) void csere(int []cserelendo) { int t = cserelendo[0]; cserelendo[0] = cserelendo[1]; cserelendo[1] = t; } int[] cserelj = {2, 3}; csere(cserelj); MessageBox.Show("{0}, {1}", cserelj[0], cserelj[1]); // 3, 2 Függvények

28  Változó számú paraméter átadása (89-91) void csere(params int[] list) { int t = list[0]; list[0] = list[1]; list[1] = t; }  Fog-e látszani a csere a hívó fél számára? Függvények

29  Változó számú paraméter átadása  Ekkor „rendes” paramétert is megadhatunk, de szigorúan csak a változó számú paraméter definiálása előtt.  void rendez(int n, params int[] miket)  void rendez(params int[] miket, int n) // hiba Függvények

30  Függvények túlterhelése (91-92)  Cél: Ugyanazt a funckiót ne kelljen máshogy elnevezni, csak mert más típusokra szeretnénk végrehajtani.  double maximum(double x, double y)  int maximum(int x, int y) Függvények

31  Osztályok definiálása class Pont { private int x; // adattagok private int y; public Pont() { // konstruktor } public Pont(int a, int b) { // felüldefiniált konstruktor x = a; y = b; } Osztályok (102)

32  Tulajdonságok class Pont { private int x; public int y; public int X { get { return x; } set { x = value; } …. } Osztályok / tulajdonságok (118)

33 class Pont { private int x; // automat. letrejon, nem is kell public int y; public int X { get; set; } // automatikus tulajdonság public Pont() { } public Pont(int a, int b) { x = a; y = b; } Osztályok / tulajdonságok (118)

34  Alapvetően (a Törtek érettségi feladathoz) int sz1 = 0; // számláló változó try { sz1 = int.Parse(Console.ReadLine()); } catch (Exception) { Console.WriteLine("Hiba a beolvasás közben!"); } Kivétel kezelés ( )

35  Ha tudjuk a konkrét hiba típusát. try { sz1 = int.Parse(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("A megadott érték felismerhetetlen számként!"); } catch (OverflowException) { Console.WriteLine("A megadott érték túl nagy/kicsi!"); } catch (Exception) { // biztos ami biztos  Console.WriteLine("Ismeretlen hiba!"); } Kivételkezelés ( )

36 int sz1 = 0; try { sz1 = int.Parse(Console.ReadLine()); } catch (Exception) { Console.WriteLine("Ismeretlen hiba!"); } finally { Console.WriteLine("Ez a blokk biztosan lefut!"); } Kivételkezelés ( )

37  checked/unchecked – miért van rá szükség? int a = Int32.MaxValue; // az intek maximum értéke try { a += 1; } catch (OverflowException) { Console.WriteLine("'a' értéke túl nagy!"); // nem váltódik ki } finally { Console.WriteLine("a: {0}", a); // } Kivételkezelés ( )

38 int a = Int32.MaxValue; // maximum érték try { checked { a += 1; } catch (OverflowException) { Console.WriteLine("'a' értéke túl nagy!"); // kiváltódik! } finally { Console.WriteLine("a: {0}", a); // marad Int32.MaxValue } Kivételkezelés ( )

39  Length – a karakterlánc hossza  CompareTo(string) – ha az eredmény 0, akkor azonos  Equals(string) – eredmény boolean  IndexOf(string) – eredmény egy index v. -1  Insert(int,string) – a második paraméterül kapott szöveget beszúrja az elsőbe, az adott indextől  Fontos: Ezek nem módosítják az eredeti karakterláncot, max. visszatérési értékbe adják az újat.  Ha mégis ez a cél: StringBuilder. Fontosabb String függvények

40  Math.Sin(x),  Math… // a következők elé mind kell a Math.  Cos(x), Tan(x), Exp(x), Log(x), Sqrt(x), Abs(x), Round(x), Ceiling(x), Floor(x), Pow(x,y)  Konstansok  Math.PI  Math.E Fontosabb fv.-ek a Math névtérben

41  String   Math  További függvények…

42  Illés Zoltán.: Programozás C# nyelven JOS, 2008, Második, átdolgozott kiadás  Internetes:  (érettségi feladatok)   Teljes C# referencia  us/library/618ayhy6(v=vs.110) us/library/618ayhy6(v=vs.110) Felhasznált irodalom


Letölteni ppt "C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)” könyv 2008-as kiadásának nyomdokain… Az alábbi diákon felvetődő számok, a könyvbeli oldalszám(oka)t."

Hasonló előadás


Google Hirdetések