Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaNándor Péter Megváltozta több, mint 10 éve
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]; …. }
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.