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

1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.

Hasonló előadás


Az előadások a következő témára: "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."— Előadás másolata:

1 1 Hernyák Zoltán Web: http://dragon.ektf.hu/aroan, E-Mail: aroan@aries.ektf.huhttp://dragon.ektf.hu/aroan Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu

2 2 Kezdőérték Köv. véletlen szám Ál-véletlen szám: a köv. véletlen számot az előzőből kapjuk valamilyen számítás végeredményeképp…

3 3 Véletlen számok használata Random rnd = new Random(); int a = rnd.Next(10,30); double d = rnd.NextDouble(); int a = rnd.Next(25); rnd változón keresztül lehet majd később véletlen számokat előállítani [10,30) intervallumbeli egész szám [0,25) intervallumbeli egész szám [0,1) intervallumbeli valós szám

4 4 Rekordok használata A rekord egy összetett, felhasználó által definiált adatszerkezet A rekord mezőkből áll Minden mező tetszőleges (más-más) típusú lehet Vagyis a rekord egy inhomogén adatszerkezet A mezők száma nem korlátos

5 5 Első lépés – a típus leírása class Alkalmazott { public string Neve; public int Eletkora; public int Fizetese; public char Beosztasa; } class Alkalmazott { public string Neve; public int Eletkora; public int Fizetese; public char Beosztasa; } A típus neve A mezők felsorolása Kötelező kulcsszó, jelentését a II. félévben (OOP tisztázzuk A mező típusa A mező neve

6 6 Második lépés – változó deklarálása Alkalmazott alk; alk = new Alkalmazott(); Harmadik lépés – változó kezdőértékadása MemóriafoglalásA mezők kezdőértékeinek beállítása Alkalmazott alk = new Alkalmazott();

7 7 Negyedik lépés – a változó használata alk.Neve = ”Kis Barnabás”; alk.Eletkora = 35; alk.Fizetese = 140000; alk.Beosztasa = ‘F’; alk.Neve = ”Kis Barnabás”; alk.Eletkora = 35; alk.Fizetese = 140000; alk.Beosztasa = ‘F’;

8 8 Mezőkhöz is lehet kezdőértéked megadni class Kor { public int x_koord = 0; public int y_koord = 0; public double sugar = 1.0; public string szine = ”fekete”; } class Kor { public int x_koord = 0; public int y_koord = 0; public double sugar = 1.0; public string szine = ”fekete”; } Kor k = new Kor(); Console.WriteLine(k.sugar); Kor k = new Kor(); Console.WriteLine(k.sugar);

9 9 Napok nap = Napok.Hetfo; if (nap==Napok.Kedd)... Console.WriteLine( nap ); Napok nap = Napok.Hetfo; if (nap==Napok.Kedd)... Console.WriteLine( nap ); enum Napok { Hetfo, Kedd, Szerda, Csutortok, Pentek, Szombat, Vasarnap } enum Napok { Hetfo, Kedd, Szerda, Csutortok, Pentek, Szombat, Vasarnap } Kötelező kulcsszóAz új típus neve Változódeklaráció: típus + azonosító

10 10 Napok nap; string s = Console.ReadLine(); if (s==”Hetfo”) nap = Napok.Hetfo; … Napok nap; string s = Console.ReadLine(); if (s==”Hetfo”) nap = Napok.Hetfo; … switch( s ) { case „Hetfo”: nap = Napok.Hetfo;break; case „Kedd” : nap = Napok.Kedd;break;... default: Console.WriteLine(”HIBAS ERTEK!”); break; } switch( s ) { case „Hetfo”: nap = Napok.Hetfo;break; case „Kedd” : nap = Napok.Kedd;break;... default: Console.WriteLine(”HIBAS ERTEK!”); break; }

11 11 string s = Console.ReadLine(); nap = (Napok)Enum.Parse(typeof(Napok),s); string s = Console.ReadLine(); nap = (Napok)Enum.Parse(typeof(Napok),s); Bár ezzel vigyázni kell, mert ha nem megfelelő az ‘s’ string tartalma (nem felismerhető), akkor ez futás közbeni hibát fog okozni!

12 12 class Kor { public int x_koord = 0; public int y_koord = 0; public double sugar = 1.0; public Szinek szine = Szinek.Zold; } class Kor { public int x_koord = 0; public int y_koord = 0; public double sugar = 1.0; public Szinek szine = Szinek.Zold; } Kor k = new Kor(); Console.WriteLine(k.sugar); Kor k = new Kor(); Console.WriteLine(k.sugar); enum Szinek { Piros, Fekete, Zold }

13 13 int[] jegyek = new int [35]; Int alapú tömb változónévMemória- foglalás 35 db int- nek jegyek 20 30 40 50 60 jegyek[0] jegyek[1] jegyek[2]jegyek[34]

14 14 Tömbök A tömb egy összetett, felhasználó által definiált adatszerkezet A tömb elemekből áll Minden elem ugyanazon típusú kell legyen (tömb alaptípusa) Vagyis a tömb egy homogén adatszerkezet Az elemek száma nem korlátos, de a tömb létrehozásakor meg kell adni a maximális elemszámot

15 15 int [ ] jegyek = new int [35]; Egydimenziós tömb – VEKTOR jegyek [ 34 ] int [, ] iskola = new int [10,40]; Kétdimenziós tömb – MÁTRIX Első index 0..9, második index 0..39 10x40 = 400 elem iskola [ 9, 39 ]

16 16 int[] jegyek = new int [35]; for(int i=0; i<jegyek.Length; i++) { string s = Console.ReadLine(); jegyek[i] = int.Parse( s ); } for(int i=0; i<jegyek.Length; i++) { string s = Console.ReadLine(); jegyek[i] = int.Parse( s ); } int osszeg = 0; for(int i=0; i<jegyek.Length; i++) { osszeg += jegyek[i]; } int osszeg = 0; for(int i=0; i<jegyek.Length; i++) { osszeg += jegyek[i]; }

17 17 int[] jegyek = new int [35]; int osszeg = 0; for(int i=0; i<jegyek.Length; i++) { osszeg += jegyek[i]; } int osszeg = 0; for(int i=0; i<jegyek.Length; i++) { osszeg += jegyek[i]; } int osszeg = 0; foreach(int a in jegyek) { osszeg += a; } int osszeg = 0; foreach(int a in jegyek) { osszeg += a; }

18 18 int[] jegyek = new int [35]; int osszeg = 0; foreach(int a in jegyek) { osszeg += a; } int osszeg = 0; foreach(int a in jegyek) { osszeg += a; } 20 30 40 50 60 a a

19 19 int[] jegyek = new int [35]; int osszeg = 0; foreach(int a in jegyek) { a = 0;// hibás!!! } int osszeg = 0; foreach(int a in jegyek) { a = 0;// hibás!!! } A kapcsolat a tömb elemei és a foreach iterációs változója között csak egyirányú, így a változó a foreach ciklus belsejében csak kiolvasható, értéke nem változhatható meg! for(int i=0;i<jegyek.Length;i++) { jegyek[i] = 0; } for(int i=0;i<jegyek.Length;i++) { jegyek[i] = 0; }

20 20 Kor[] korok = new Kor[20]; for(int i=0;i<korok.Length;i++) korok[i] = new Kor(); for(int i=0;i<korok.Length;i++) korok[i] = new Kor(); foreach(Kor k in korok) k.sugar = 20; foreach(Kor k in korok) k.sugar = 20; for(int i=0;i<korok.Length;i++) korok[i].sugar = 20; for(int i=0;i<korok.Length;i++) korok[i].sugar = 20; Ez viszont működik, mert nem magát a k változót változtatjuk (nem rá vonatkozik az értékadás), hanem a k valamely mezőjére foreach(Kor k in korok) k = new Kor(); foreach(Kor k in korok) k = new Kor(); Ez viszont továbbra sem működik az előző okok miatt!

21 21 ArrayList lista = new ArrayList(); Tetszőleges típusú elemekből alkotott listák változónévMemória- foglalás A lista inicializálása (kezdetben 0 elemű üres lista) for(int i=0; i<35; i++) { string s = Console.ReadLine(); int a = int.Parse( s ); lista.Add( a ); } for(int i=0; i<35; i++) { string s = Console.ReadLine(); int a = int.Parse( s ); lista.Add( a ); }

22 22 ArrayList lista = new ArrayList(); int osszeg = 0; for(int i=0; i<lista.Count; i++) { int a = (int)lista[i]; osszeg = osszeg + a; } int osszeg = 0; for(int i=0; i<lista.Count; i++) { int a = (int)lista[i]; osszeg = osszeg + a; } int osszeg = 0; foreach(int x in lista) { osszeg = osszeg + x; } int osszeg = 0; foreach(int x in lista) { osszeg = osszeg + x; }

23 23 ArrayList lista = new ArrayList(); int osszeg = 0; for(int i=0; i<lista.Count; i++) { int a = (int)lista[i]; … } int osszeg = 0; for(int i=0; i<lista.Count; i++) { int a = (int)lista[i]; … } Explicit típuskonverzió! Kötelező elem, e nélkül a lista elemek típusa egy Object nevű típus lesz, amely semelyik típussal nem kompatibilis implicite

24 24 Listák A lista egy előre definiált összetett adatszerkezet A lista elemekből áll Az elemek típusa lehet különböző is … Ennek ellenére a lista egységes módon kezeli az elemeket (referencia-alapon) így a lista valójában egy homogén adatszerkezet Az elemek száma nem korlátos, és nem kell előre definiálni a maximális elemek

25 25 ArrayList lista = new ArrayList(); lista.Add( ”Hello” ); lista.Add( ‘a’ ); lista.Add( 123 ); lista.Add( ”Hello” ); lista.Add( ‘a’ ); lista.Add( 123 ); foreach(???? x in lista) { … } foreach(???? x in lista) { … } for(int i=0; i<lista.Count; i++) { ???? a = (????)lista[i]; …. } for(int i=0; i<lista.Count; i++) { ???? a = (????)lista[i]; …. }


Letölteni ppt "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."

Hasonló előadás


Google Hirdetések