Hernyák Zoltán Magasszintű Programozási Nyelvek I.

Slides:



Advertisements
Hasonló előadás
Osztály leszármaztatás
Advertisements

1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Jt Java Feltételek, logikai kifejezések. jt 2 Logikai operátorok Logikai kifejezésekre alkalmazhatók a következő műveletek: 1. nem! 2. és&ill.&& 3. kizáró.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
JavaScript.
© 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.
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
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I Függvények általános jellemzői
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozás Az adatokról C# -ban.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Operátorok Értékadások
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.
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 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 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 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Java programozási nyelv Metódusok
A Visual Basic nyelvi elemei
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ú,
C Programozási alapok.
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.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
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.
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][,
a programegységek között
Kifejezések C#-ban.
Gépészeti informatika (BMEGEMIBXGI)
Programozási nyelvek típusossága.
Az átlátható programok kellékei
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Programozási Nyelvek II.
Az átlátható programok kellékei
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Függvénysablonok használata
Előadás másolata:

Hernyák Zoltán Magasszintű Programozási Nyelvek I. Alprogramok 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

Alprogramok class Akarmi { static void Main() Adatbekeres(); //……………………………………………………………………. static void Main() Adatbekeres(); Console.WriteLine(”X={0}”,x); } static void Adatbekeres() Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); Az alprogram aktiválása! Az alprogram deklarációja. Az alprogram definíciója (utasítástörzs) 2

Alprogramok Alprogramok Van neki neve Utasítástörzse (utasításblokk) Nevével és két zárójellel lehet őket aktivizálni a bennük lévő utasítássorozatot Az utasítások végrehajtása után a program fut tovább az eredeti környezetben… 3

Alprogramok Alprogramok (eljárások) 4

Alprogramok class Akarmi { static void Main() Adatbekeres(); //……………………………………………………………………. static void Main() Adatbekeres(); Console.WriteLine(”X={0}”,x); } static void Adatbekeres() Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); 5

kívül vagyunk ‘x’ hatáskörén Alprogramok class Akarmi { //……………………………………………………………………. static void Main() Adatbekeres(); Console.WriteLine(”X={0}”, x ); } static void Adatbekeres() Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); ‘x’ itt deklarálatlan, kívül vagyunk ‘x’ hatáskörén 6

kívül vagyunk ‘x’ hatáskörén Alprogramok class Akarmi { //……………………………………………………………………. static void Main() int x; Adatbekeres(); Console.WriteLine(”X={0}”, x ); } static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); ‘x’ itt deklarálatlan, kívül vagyunk ‘x’ hatáskörén 7

Ez két különböző ‘x’ változó! Alprogramok class Akarmi { //……………………………………………………………………. static void Main() int x; Adatbekeres(); Console.WriteLine(”X={0}”, x ); } static void Adatbekeres() Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); Ez két különböző ‘x’ változó! 8

A STATIC változók közösek az alprogramokban! class Akarmi { static int x; static void Main() Adatbekeres(); Console.WriteLine(”X={0}”, x ); } //……………………………………………………………………. static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); A STATIC változók közösek az alprogramokban! 9

Alprogramok static int x; class Akarmi { static void Main() Adatbekeres(); Console.WriteLine(”X={0}”, x ); } static int x; static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); A STATIC változók a teljes CLASS-on belül közösek, függetlenül a deklaráció helyétől! Ellentétben az alprogramok belsejében lévő változódeklarációval, ahol is a deklaráció helyétől LEFELÉ tart a hatáskör. 10

Alprogramok static int x; class Akarmi { static void Main() Adatbekeres(); Console.WriteLine(”X={0}”, x ); } static int x; static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); A STATIC változók a teljes CLASS-on belül közösek, függetlenül a deklaráció helyétől! Ellentétben az alprogramok belsejében lévő változódeklarációval, ahol is a deklaráció helyétől LEFELÉ tart a hatáskör. 11

Alprogramok static int x; class Akarmi { static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); } static void Main() Adatbekeres(); Console.WriteLine(”X={0}”, x ); Az osztályon belül a STATIC elemek (változók, eljárások) deklarálási sorrendje lényegtelen! 12

De csak ha PUBLIC jelöléssel is el van látva! Alprogramok class Masik { static void Main() Akarmi.Adatbekeres(); Console.WriteLine(”X={0}”, Akarmi.x ); } class Akarmi public static int x; public static void Adatbekeres() Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); Másik osztályban lévő STATIC alprogram minősített névvel aktivizálható! De csak ha PUBLIC jelöléssel is el van látva! PUBLIC: a deklaráció hatáskörének kiterjesztése az osztályon kívülre is! 13

Alprogramok namespace EgyikNevTer { class Akarmi { public static void Adatbekeres() { … } } namespace MasikNevTer class Masik static void Main() EgyikNevTer.Akarmi.Adatbekeres(); Console.WriteLine(”X={0}”, x ); Másik osztályban lévő STATIC alprogram névtér + osztály + alprogram minősített névvel aktivizálható! 14

Alprogramok class Akarmi { static int Adatbekeres() Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); return x; } static void Main() int x = Adatbekeres(); Console.WriteLine(”X={0}”, x ); Az alprogram a végén egy számértéket fog előállítani, és visszaadni! return + egy int típusú kifejezés! Az alprogram aktiválása, és a visszatérési érték tárolása változóban. 15

Alprogramok Azt az alprogramot, aki értéket állít elő – függvénynek nevezzük A függvényeknél meg kell adni, milyen típusú értéket állítanak elő A nem függvény típusú alprogramokat eljárásoknak nevezzük Az eljárásoknál a visszatérési típust ‘void’ kulcsszóval kell jelölni A void szó a típusnélküliséget jelöli 16

Alprogramok A függvényekben a return használata kötelező! Az eljárárásokban is használható a return, de a return mögé ilyenkor semmit sem szabad már írni! static void Main() { int x = Console.ReadLine(); if (x==0) return; … } 17

Alprogramok minden függvény legalább 1 db return-t static bool Adatbekeres() { Console.WriteLine(”Logikai érték=”); string s = Console.ReadLine(); if (s.ToUpper()==”IGEN”) return true; return false; } return hatására a függvény azonnal befejezi a futását, és visszaadja a megadott értéket! minden függvény legalább 1 db return-t kell tartalmazzon A return egyfajta ugró utasításként viselkedik, azonnal kiugrik a függvény törzséből! 18

Alprogramok static bool Adatbekeres() { Console.WriteLine(”Logikai érték=”); string s = Console.ReadLine(); if (s.ToUpper()==”IGEN”) return true; if (s.ToUpper()==”NEM”) return false; } A C# fordító szerint nem garantált hogy minden esetben (minden ágon) lesz return ebben az alprogramban. ”Not all code paths returns a value” 19

A ‘tomb’ egy közös változó a függvények között. Alprogramok static bool Van_e_zero() { foreach(int x in tomb) if (x==0) return true; return false; } A ‘tomb’ egy közös változó a függvények között. static int Oszeg() { int sum = 0; foreach(int x in tomb) sum += x; return sum; } 20

Alprogramok Paraméterek Az alprogramok valamely al-feladat megoldására vannak kialakítva Az alfeladat megoldásához szükséges adatokat … Az alprogram maga kéri be Közös static változók tartalmazzák Paraméterekben kapja meg 21

Alprogramok Paraméterek … Az alprogram maga kéri be Általában nagyon gyenge, nagyon rossz megoldás! Így az alprogram kommunikál is a felhasználóval valamilyen interface-n És számolási műveleteket is végez… 22

Alprogramok Three-tier (three-layer) applications Data Storage Data files XML SQL servers Data Storage Application Logic User Interface WAP Windows Console WEB Alprogramok 23

Alprogramok Az alprogram maga kéri be a működéséhez szükséges adatokat Data Storage Application Logic User Interface Az az alprogram amelyik egy időben több rétegbe is tartozik – NEM JÓ! Mivel amennyiben cserélődik a user interface, úgy bele kell javítani az alprogramba is! 24

Alprogramok Az alprogram a közös változókban találja meg az adatokat Egy kicsivel jobb megoldás De a közös változó neve több eljárásban is bele van égetve Módosítás esetén sok helyen kell átírni A közös változók élettartama STATIC, vagyis a program elejétől a végéig életben vannak Szorítsuk a minimumra a közös változók használatát 25

Alprogramok Az alprogram paraméterekben kapja meg az adatokat A lehető legjobb megoldás (egyelőre) static bool Van_e_zero( int[] tomb, int ertek ) { foreach(int x in tomb) if (x==ertek) return true; return false; } Formális paraméterlista Formálisan változódeklaráció-lista (típus + név párosok) 26

Alprogramok Formális paraméterlista: static bool Van_e_zero( int[] tomb, int ertek ) { … } A paraméter-változók hatásköre csak az alprogramra terjed ki! Csak az alprogram futási idejében léteznek Kezdőértéküket a hívás helyén kell megadni 27

Alprogramok Paraméter-átadás: static void Main() { int[] elemek = new int[20]; bool b = Van_e( elemek, 0 ); } static bool Van_e ( int[] tomb, int ertek ) { for(int i=0;i<tomb.Length;i++) if (tomb[i]==ertek) return true; return false; } 28

Alprogramok Aktuális paraméterlista – értékeket tartalmaz bool b = Van_e( elemek, 0 ); tomb = elemek ertek = 0 static bool Van_e ( int[] tomb, int ertek ) A hívás során a formális paraméterlistában deklarált változók automatikusan felveszik az aktuális paraméterlistában megadott értéket az értékadás szabályainak megfelelően. 29

Alprogramok Aktuális és formális paraméterlista A háttérbeni értékadó utasítás miatt: Az aktuális paraméterlista pontosan annyi elemet kell tartalmazzon, mint a formális paraméterlista (ugyanis nincs alapértelmezett kezdőérték a paraméterváltozókra) 30

Alprogramok Aktuális és formális paraméterlista A háttérbeni értékadó utasítás miatt: Az aktuális paraméterlistában megadott érték az értékadó utasításoknál is megbeszélt típus-kompatibilitási szabályok szerinti típusúnak kell lennie (vagyis vagy megegyezik az érték típusa a fogadó változó típusával, vagy implicit típuskonverzió kell legyen a két típus között) bool b = Akarmi( 0 ); static bool Akarmi ( double ertek ) 31