You are on page 1of 23

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ó

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ó

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ó

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
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ó

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ó

• 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ó

• 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

• 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

változónév = kifejezés ;

Egy már Futás közben értékelődik ki, így


deklarált szerepelhet benne
változó neve - konstans
- literál
- változó
- operátorok
- függvényhívások

Így ismert a A végeredmény típusa


típusa is kikövetkeztethető

11
É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

• 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
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
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

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

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

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

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

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
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() static void Main()
blokkjának végét {

}
23

You might also like