Hernyák Zoltán Magasszintű Programozási Nyelvek I. A számítógép programozása 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
Deklaráció Deklaráció A program írása közben azonosítókat használunk fel. Eleve ismert azonosítók (pl ‘int’) Általunk ‘kitalált’ azonosítók Mielőtt egy azonosítót felhasználnánk a program szövegében, azt meg kell magyaráznunk előtte Ezt DEKLARÁCIÓ-nak nevezzük 2
Adat-deklaráció Adat-deklaráció A programunk futása során adatokkal dolgozunk Literálok (programszövegbe illesztett adatok) Nevesített literálok (konstansok) Változók 3
Konstans-deklaráció Konstans-deklaráció const double Pi = 3.14; kulcsszó értékadó egyenlőség típus típusnak megfelelő kifejezés, kezdőérték az új azonosító (a konstans neve) 4
Konstans deklaráció példák const double Pi = 3.14; const string nev = ”Hernyák Zoltán”; const bool Igaz = true; const char dirSeparator = ‘\\’; const int maxLetszam = 34; const int maxBevetel = maxLetszam * 3000; A kezdőérték kifejezés is lehet! De csak konstansokból és literálokból felépített kifejezés! 5
Konstans-deklaráció Konstansok A konstansoknak van Típusuk (explicit módon megadva) Nevük (azonosító) Értékük (kezdőértékként megadva) A konstansokra a nevükkel hivatkozhatunk a kódban A konstansok nem szerepelhetnek értékadó utasítás bal oldalán, így értékük a program futása során nem változtatható meg 6
Változó-deklaráció Változó-deklaráció double sugar; típus az új azonosító (a változó neve) string jelszo = String.Empty; típus a változó neve kezdőérték (nem kötelező) 7
Változó-deklaráció Változó-deklaráció A változóknak van Típusuk (explicit módon megadva) Nevük (azonosító) Aktuális értékük A változó aktuális értékére a nevével lehet hivatkozni Amíg a változó nem kapott explicit módon a program futása során értéker, addig definiálatlan-nak tekintjük 8
Változó-deklaráció Változó-deklaráció Definiálatlan változó értékére nem hivatkozhatunk! Ha mégis, akkor: (1) Futás közbeni hiba keletkezik, (2) Nemdeterminisztikus programműködést eredményez, (3) Szintaktikai hibát jelez a fordítóprogram 9
Értékadó utasítás Értékadó utasítás A változók értékét értékadó utasítás révén változtathatjuk meg. A változók értékét tetszőleges sokszor megváltoztathatjuk A változó mindig csak a legutolsó ‘belehelyezett’ értékre ‘emlékszik’ Ezt az értéket aktuális értéknek nevezzük 10
Értékadó utasítás Értékadó utasítás változónév = kifejezés ; Futás közben értékelődik ki, így szerepelhet benne - konstans - literál - változó - operátorok - függvényhívások Egy már deklarált változó neve Így ismert a típusa is A végeredmény típusa kikövetkeztethető 11
Értékadó utasítás Értékadó utasítás A kifejezés eredmény-típusa és a változó típusa Meg kell egyezzen Vagy konvertálható kell legyen Léteznek implicit (automatikus) konverziók char string !!!!!!!!!!! NINCS!!!!!! egészeken belül a ‘nagyobb’ típus felé egész lebegőpontos 12
Értékadó utasítás példák benzinAr = alapAr * 1.3; bevetel = eladottMenny * benzinAr; c = a * Math.Sin( alfa ); nev = ”Dr. ” + csaladnev + ‘ ‘ + keresztnev; x = y / 3; p = q % 4; 13
Be-, és kiviteli utasítások I/O utasítások Be-, és kiviteli utasítások A program bizonyos adatokat a futásához nem a program kódjában tárol, hanem külső helyről olvas be Ez lehet Billentyűzet Adatbázis-szerver, disk-file, XML, … Egér, joystick, kormány, … Digitalizáló-pad, … … 14
I/O utasítások C# beviteli utasítás System.Console.ReadLine() fv, ez mindig string-et ad vissza string s = Console.ReadLine(); Más adattípusok esetén konvertálás szükséges ( futási hibát okozhatnak! ): int x = int.Parse( s ); double d = double.Parse( s ); double x = int.Parse( s ); Az egyéb típusok char, bool is működhetnek hasonló konvertálási eljárással! 15
I/O utasítások C# kiviteli utasítás System.Console.WriteLine(…) fv Console.WriteLine(”Hello Vilag!”); Összetett kiírás formátum-string-el: Console.WriteLine(”X={0}, Y={1}, Osszeg={2}”,x,y,x+y); 16
Java kiviteli utasítás I/O utasítások Java kiviteli utasítás System.out.println("Hello World!"); System.out.println(”X=”+3+” Y=”+4); String összefűzés operátora Az egész literálok itt implicit módon típuskonvertálva vannak string-re 17
Példaprogram 2 egész szám összegének kiírására (demó) Működő programok Példaprogram 2 egész szám összegének kiírására (demó) static void Main() { Console.WriteLine(”Kérem az A értékét:”); string s = Console.ReadLine(); int a = int.Parse( s ); Console.WriteLine(”Kérem a B értékét:”); s = Console.ReadLine(); int b = int.Parse( s ); int c = a+b; Console.WriteLine(”Összeg={0}”,c); } 18
Működő programok Szekvencia vezérlési szerkezet … A program utasításait nem tetszőleges sorrendben fogja a rendszer végrehajtani, hanem abban a sorrendben, amelyben azok a forráskódban szerepelnek. Ez a végrehajtási elvet SZEKVENCIA-szabálynak nevezzük. 19
Újradeklarálás gond lenne… Működő programok Újradeklarálás gond lenne… static void Main() { Console.WriteLine(”Kérem az A értékét:”); string s = Console.ReadLine(); int a = int.Parse( s ); Console.WriteLine(”Kérem a B értékét:”); s = Console.ReadLine(); int b = int.Parse( s ); int c = a+b; Console.WriteLine(”Összeg={0}”,c); } 20
Minden azonosítónak van hatásköre Működő programok Minden azonosítónak van hatásköre static void Main() { Console.WriteLine(”Kérem az A értékét:”); string s = Console.ReadLine(); int a = int.Parse( s ); Console.WriteLine(”Kérem a B értékét:”); s = Console.ReadLine(); int b = int.Parse( s ); int c = a+b; Console.WriteLine(”Összeg={0}”,c); } 21
Minden azonosítónak van hatásköre Működő programok Minden azonosítónak van hatásköre A hatáskör lehet lokális: - függvény belsejében deklarált azonosító - a hatáskör a deklaráció helyétől a befoglaló blokk végéig tart - ezen szakaszban az azonosító nem deklarálható újra - az ilyen azonosítókat a befoglaló blokkon kívül nem lehet felhasználni! 22
Működő programok A főprogram: Egy Main() nevű függvényt kell készítenünk A program végrehajtása a Main() első utasításánál kezdődik, A Main() blokk belsejében lévő utasításokat a szekvencia-szabály szerint hajtja végre A program futása befejeződik, ha a végrehajtás eléri a Main() blokkjának végét static void Main() { … } 23