1 / 25

Iteráció

Iteráció. Hernyák Zoltán Web: http://dragon.ektf.hu/aroan , E-Mail: aroan@aries.ektf.hu Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu. 1. Véletlenszám-előállítása. Kezdőérték. Köv. véletlen szám. Köv. véletlen szám.

Download Presentation

Iteráció

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Véletlenszám-előállítása Kezdőérték Köv. véletlen szám Köv. véletlen szám Köv. véletlen szám 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… 2

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

  4. "Rekordok" használata 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 4

  5. "Rekordok" használata Első lépés – a típus leírása classAlkalmazott { publicstringNeve; publicintEletkora; publicintFizetese; publiccharBeosztasa; } 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 5

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

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

  8. "Rekordok" használata Mezőkhöz is lehet kezdőértéked megadni classKor { publicintx_koord = 0; publicinty_koord = 0; publicdouble sugar = 1.0; publicstringszine = ”fekete”; } Kor k = new Kor(); Console.WriteLine(k.sugar); 8

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

  10. Enumeration 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; } 10

  11. Enumeration 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! 11

  12. "Rekordok" használata enumSzinek { Piros, Fekete, Zold } classKor { publicintx_koord = 0; publicinty_koord = 0; publicdouble sugar = 1.0; publicSzinekszine = Szinek.Zold; } Kor k = new Kor(); Console.WriteLine(k.sugar); 12

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

  14. Tömbök 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 14

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

  16. Tömbök int[]jegyek = newint [35]; 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]; } 16

  17. Tömbök int[]jegyek = newint [35]; int osszeg = 0; for(int i=0; i<jegyek.Length; i++) { osszeg += jegyek[i]; } int osszeg = 0; foreach(int a in jegyek) { osszeg += a; } 17

  18. Tömbök int[]jegyek = newint [35]; int osszeg = 0; foreach(int a in jegyek) { osszeg += a; } 60 20 30 40 50 a 18

  19. Tömbök int[]jegyek = newint [35]; 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; } 19

  20. Tömbök Kor[]korok = newKor[20]; for(int i=0;i<korok.Length;i++) korok[i] = new Kor(); for(int i=0;i<korok.Length;i++) korok[i].sugar = 20; foreach(Kor k in korok) k.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(); Ez viszont továbbra sem működik az előző okok miatt! 20

  21. Listák ArrayListlista = newArrayList(); Tetszőleges típusú elemekből alkotott listák változónév Memó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 ); } 21

  22. Listák ArrayListlista = newArrayList(); 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; } 22

  23. Listák ArrayListlista = newArrayList(); 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 23

  24. Listák 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 24

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

More Related