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

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
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
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.
Mutatók, tömbök, függvények
Programozás I. Horváth Ernő.
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.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
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
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
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.
Összetett adattípusok
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
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
Java programozási nyelv Adatbekérés konzolról
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.
Objektum orientált programozás
A Visual Basic nyelvi elemei
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
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.
Algoritmizálás, adatmodellezés
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.
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
Gépészeti informatika (BMEGEMIBXGI)
Az átlátható programok kellékei
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.
Az átlátható programok kellékei
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 class Akarmi { //……………………………………………………………………. static void Main() { Adatbekeres(); Console.WriteLine(”X={0}”,x); } //……………………………………………………………………. static void Adatbekeres() { Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); } //……………………………………………………………………. } class Akarmi { //……………………………………………………………………. static void Main() { Adatbekeres(); Console.WriteLine(”X={0}”,x); } //……………………………………………………………………. static void Adatbekeres() { Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); } //……………………………………………………………………. } Az alprogram deklarációja. Az alprogram definíciója (utasítástörzs) Az alprogram aktiválása!

3 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…

4 Alprogramok (eljárások)

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

6 class Akarmi { //……………………………………………………………………. static void Main() { Adatbekeres(); Console.WriteLine(”X={0}”, x ); } //……………………………………………………………………. static void Adatbekeres() { Console.WriteLine(”X=”); int x = int.Parse( Console.ReadLine()); } //……………………………………………………………………. } 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

7 class Akarmi { //……………………………………………………………………. static void Main() { int x; Adatbekeres(); Console.WriteLine(”X={0}”, x ); } //……………………………………………………………………. static void Adatbekeres() { Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); } //……………………………………………………………………. } 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

8 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()); } //……………………………………………………………………. } 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ó!

9 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()); } //……………………………………………………………………. } 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!

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

12 class Akarmi { static int x; static void Adatbekeres() { Console.WriteLine(”X=”); x = int.Parse( Console.ReadLine()); } static void Main() { Adatbekeres(); Console.WriteLine(”X={0}”, x ); } class Akarmi { static int x; 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!

13 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()); } 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!

14 namespace EgyikNevTer { class Akarmi { public static void Adatbekeres() { … } } namespace MasikNevTer { class Masik { static void Main() { EgyikNevTer.Akarmi.Adatbekeres(); Console.WriteLine(”X={0}”, x ); } 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ó!

15 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 ); } 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.

16 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

17 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; … } static void Main() { int x = Console.ReadLine(); if (x==0) return; … }

18 static bool Adatbekeres() { Console.WriteLine(”Logikai érték=”); string s = Console.ReadLine(); if (s.ToUpper()==”IGEN”) return true; return false; } 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!

19 static bool Adatbekeres() { Console.WriteLine(”Logikai érték=”); string s = Console.ReadLine(); if (s.ToUpper()==”IGEN”) return true; if (s.ToUpper()==”NEM”) return false; } 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”

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

21 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

22 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…

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

24 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!

25 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

26 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; } 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)

27 Formális paraméterlista: -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 static bool Van_e_zero( int[] tomb, int ertek ) { … } static bool Van_e_zero( int[] tomb, int ertek ) { … }

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

29 Aktuális paraméterlista – értékeket tartalmaz static bool Van_e ( int[] tomb, int ertek ) bool b = Van_e( elemek, 0 ); tomb = elemek ertek = 0 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.

30 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)

31 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) static bool Akarmi ( double ertek ) bool b = Akarmi( 0 );