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

Slides:



Advertisements
Hasonló előadás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Advertisements

Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Mutatók, tömbök, függvények
Java programozási nyelv 3. rész – Osztályok I.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
Programozás I Függvények általános jellemzői
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Összetett adattípusok
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Feladat: 1.Írjunk eljárást amely egy paraméterként megadott stringből kitörli az összes ‘b’ betűt. 2.Írjunk eljárást amely beolvassa egy személy adatait.
Az F# programozási nyelv
Hernyák Zoltán XML Schema sémadefiníció.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Programozási tételek.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Programozás III KOLLEKCIÓK.
Programozás III KOLLEKCIÓK.
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás III KOLLEKCIÓK.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Excel programozás (makró)
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Programozási Nyelvek II.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz

2 Paraméterek típusai: Bemenő paraméter: az értéket az alprogram felhasználja Átmenő paraméter: az érték helyén egy egyező típusú változót kell megadni, az alprogram felhasználja a benne lévő értéket, és meg is változtatja Kimenő paraméter: az érték helyén egy egyező típusú változót kell megadni, az alprogram nem használja fel a benne levő értéket, de megváltoztatja

3 Bemenő paraméter: static int Osszege( int[] tomb ) { int sum=0; foreach(int x in tomb) sum+=x; return sum; } static int Osszege( int[] tomb ) { int sum=0; foreach(int x in tomb) sum+=x; return sum; } static void Main() { int[] a = new int[300]; … feltöltés elemekkel … int x = Osszege(a); int[] b = new int[15]; … feltöltés elemekkel … int z = Osszege(b); } static void Main() { int[] a = new int[300]; … feltöltés elemekkel … int x = Osszege(a); int[] b = new int[15]; … feltöltés elemekkel … int z = Osszege(b); }

4 Átmenő paraméter: static void Rendezes( int[] tomb ) { for(int i=0;i<tomb.Length-1;i++) for(int j=i+1;j<tomb.Length;j++) if( tomb[i]>tomb[j]) { int z=tomb[i]; tomb[i] = tomb[j]; tomb[j]=z; } static void Rendezes( int[] tomb ) { for(int i=0;i<tomb.Length-1;i++) for(int j=i+1;j<tomb.Length;j++) if( tomb[i]>tomb[j]) { int z=tomb[i]; tomb[i] = tomb[j]; tomb[j]=z; } static void Main() { int[] a = new int[300]; … feltöltés elemekkel … Rendezes (a); } static void Main() { int[] a = new int[300]; … feltöltés elemekkel … Rendezes (a); }

5 Kimenő paraméter: static void Feltoltes( int[] tomb ) { Random rnd = new Random(); for(int i=0;i<tomb.Length;i++) tomb[i] = rnd.Next(10,100); } static void Feltoltes( int[] tomb ) { Random rnd = new Random(); for(int i=0;i<tomb.Length;i++) tomb[i] = rnd.Next(10,100); } static void Main() { int[] a = new int[300]; Feltoltes (a); } static void Main() { int[] a = new int[300]; Feltoltes (a); }

6 Paraméterek típusai: Bemenő paraméter: az értéket az alprogram felhasználja Alapértelmezett paraméterátadás, nem kell semmilyen extra jelölést használni A hívás helyén egyszerű adattípus esetén akár kifejezést is lehet írni

7 Bemenő paraméter: static int Osszead( int a, int b ) { return a+b; } static int Osszead( int a, int b ) { return a+b; } static void Main() { int x = 13; int f = Osszead( 3, x ); int g = Osszead( f-1, f*2 ); int h = Osszead( Szoroz(2,8)+1,f*2 ); } static void Main() { int x = 13; int f = Osszead( 3, x ); int g = Osszead( f-1, f*2 ); int h = Osszead( Szoroz(2,8)+1,f*2 ); }

8 Kimenő paraméter: static void ElsoUtolso( int[] t, int elso, int utolso ) { elso=-1; utolso=-1; for(int i=0;i<t.Length;i++) { if (t[i]==0 && elso==-1) elso=i; if (t[i]==0) utolso=i; } static void ElsoUtolso( int[] t, int elso, int utolso ) { elso=-1; utolso=-1; for(int i=0;i<t.Length;i++) { if (t[i]==0 && elso==-1) elso=i; if (t[i]==0) utolso=i; } static void Main() { int[] h = new int[30]; int a,b; ElsoUtolso(h, a, b); Console.WriteLine(”{0},{1}”,a,b); } static void Main() { int[] h = new int[30]; int a,b; ElsoUtolso(h, a, b); Console.WriteLine(”{0},{1}”,a,b); }

9 Kimenő paraméter: static void ElsoUtolso( int[] t, int elso, int utolso ) { } static void ElsoUtolso( int[] t, int elso, int utolso ) { } int a=0,b=0; ElsoUtolso(h, a, b); int a=0,b=0; ElsoUtolso(h, a, b); 0 0 a 0 0 b 0 0 elso 0 0 utolso elso = a; utolso = b; elso = a; utolso = b; a = elso ; b = utolso; a = elso ; b = utolso; elindul az alprogram nincs ilyen

10 Kimenő paraméter: static void ElsoUtolso( int[] t, out int elso, out int utolso ) { } static void ElsoUtolso( int[] t, out int elso, out int utolso ) { } int a,b; ElsoUtolso(h, out a, out b); int a,b; ElsoUtolso(h, out a, out b); 0 0 a 0 0 b elsoutolso Az ‘out’ kulcsszót mindkét helyen alkalmazni kell!

11 Kimenő paraméter: static void ElsoUtolso( int[] t, out int elso, out int utolso ) { … } static void ElsoUtolso( int[] t, out int elso, out int utolso ) { … } A formális paraméterlistában az ‘out’ azt jelenti, hogy ezen változót nem akárhol kell a memóriában létrehozni, hanem pontosan azon a helyen, ahol az aktuális paraméterlistában megadott változó is van A két változó egy helyen szerepel a memóriában!

12 Kimenő paraméter: int a,b; ElsoUtolso(h, out a, out b); int a,b; ElsoUtolso(h, out a, out b); Az aktuális paraméterlistában az ‘out’ azt jelenti, hogy ezen változóknak nem szükséges megelőzően értéket adni, mivel a bennük lévő értékeket az alprogram nem kívánja felhasználni majd Ezen változók értékét az al-program kötelezően meg kell változtassa!

13 Kimenő paraméter: static void ElsoUtolso( int[] t, out int elso, out int utolso ) { for(int i=0;i<t.Length;i++) { if (t[i]==0 && elso==-1) elso=i; if (t[i]==0) utolso=i; } static void ElsoUtolso( int[] t, out int elso, out int utolso ) { for(int i=0;i<t.Length;i++) { if (t[i]==0 && elso==-1) elso=i; if (t[i]==0) utolso=i; } The out parameter ‘elso’ must be assigned to before control leaves the current method. Az ‘out’ paramétereknek kötelező értéket adni! A C# fordító nem biztos benne, hogy ez bekövetkezik ebben az esetben (pl ha a t tömb 0 elemszámú, vagy nincs nulla a tömbön belül)!

14 Referencia típusú paraméter: static void Oregedes( Hallgato akarki ) { akarki.eletkor++; } static void Oregedes( Hallgato akarki ) { akarki.eletkor++; } Hallgato h = new Hallgato(); h.Eletkor = 20; Oregedes(h); Console.WriteLine(h.eletkor); Hallgato h = new Hallgato(); h.Eletkor = 20; Oregedes(h); Console.WriteLine(h.eletkor); 1 1 hakarki eletkor | nev | ferfi akarki = h;

15 Referencia típusú paraméter: static void Oregedes( Hallgato akarki ) { akarki.eletkor++; } static void Oregedes( Hallgato akarki ) { akarki.eletkor++; } Oregedes(h); A referencia-típusú paraméter- változókra is ugyanaz a szabály, de… A híváskor a kezdőérték beállításakor a memóriacímet veszik át Így rajtuk keresztül elérhető a másodlagos memóriaterület, és meg is változtatható

16 Referencia típusú paraméter: static void Feltoltes( int[] t ) { for(int i=0;i<t.Length;i++) t[i] = i+1; } static void Feltoltes( int[] t ) { for(int i=0;i<t.Length;i++) t[i] = i+1; } int[] a = new int[20]; Feltoltes(a); int[] a = new int[20]; Feltoltes(a);

17 Referencia típusú paraméter: static void Feltoltes( int[] t ) { t = new int[20]; for(int i=0;i<t.Length;i++) t[i] = i+1; } static void Feltoltes( int[] t ) { t = new int[20]; for(int i=0;i<t.Length;i++) t[i] = i+1; } int[] a=null; Feltoltes(a); int[] a=null; Feltoltes(a); int[] b=new int[30]; Feltoltes(b); int[] b=new int[30]; Feltoltes(b);

18 Referencia típusú paraméter: static void Feltoltes( out int[] t ) { t = new int[20]; for(int i=0;i<t.Length;i++) t[i] = i+1; } static void Feltoltes( out int[] t ) { t = new int[20]; for(int i=0;i<t.Length;i++) t[i] = i+1; } int[] a; Feltoltes( out a ); int[] a; Feltoltes( out a ); int[] b=new int[30]; Feltoltes( out b ); int[] b=new int[30]; Feltoltes( out b );

19 Átmenő paraméter: static void Csere( ref int a, ref int b ) { int z = a; a = b; b = z; } static void Csere( ref int a, ref int b ) { int z = a; a = b; b = z; } int x=2, y=3; Csere( ref x, ref y ); int x=2, y=3; Csere( ref x, ref y ); A referencia-típusú paraméterátadás gyakorlatilag megegyezik a kimenő paraméterek kezelésével De a fordítóprogram megköveteli, hogy hívás előtt már legyen értéke az adott változónak, akit átadunk az eljárásnak!

20 Átmenő paraméter: static void Csere( ref int a, ref int b ) { if (a!=b) { int z = a; a = b; b = z; } static void Csere( ref int a, ref int b ) { if (a!=b) { int z = a; a = b; b = z; } int x=2, y=3; Csere( ref x, ref y ); int x=2, y=3; Csere( ref x, ref y ); Az átmenő paramétereket az eljárás nem kötelezően kell megváltoztatnia! (ellentétben a kimenő paraméterekkel)