05 Tipusok es literalok

Download Report

Transcript 05 Tipusok es literalok

Hernyák Zoltán
Web: http://dragon.ektf.hu/aroan, E-Mail: [email protected]
Magasszintű
Programozási Nyelvek I.
Eszterházy Károly Főiskola
Számítástudományi tsz
http://aries.ektf.hu
1
Fejlesztői környezetek
Parancssori eszközök
• Forráskód begépelése tetszőleges editorral
• Parancssori fordító (compiler) indítása
• Parancssori szerkesztő (linker) indítása
• Parancssori nyomkövető (debugger) indítása
2
Fejlesztői környezetek
IDE = Integrált Fejleszőti Környezet
(Integrated Development Environment)
• Forráskód begépelése belső editorral
• Belső fordító aktivizálása menüpontból
• Belső linker aktivizálása menüpontból
• Belső debugger indítása, események követése
a forráskód ablakban
• Beépített súgó olvasása aktivizálása
(környezetérzékeny módon)
3
Input adatok
Billentyűzet
Helyi file (.xml, .dat, .txt, …)
Adatbázis (SQL)
Program
Output adatok
Memória
Processzor
Képernyő
Helyi file (.xml, .dat, .txt, …)
Adatbázis (SQL)
4
Adatok megjelenési formája
Az adatoknak mindig van típusuk is!
A program szövegében:
• Nevesített konstans
• Literál
• Változó
5
Alapvető típusok
• Azok a típusok, melyeket a programozási
nyelv eleve tartalmaz
• Alapvető építőkövek további típusok
létrehozásához
• De már közvetlenül is felhasználhatóak
• Általában igazodnak a processzor és a
memória szervezéséhez, az alapvető gépi
kódú utasításokhoz
6
Egészek
Valósak
Logikai
Karakter
Referenciatípusok
Érték-típusok
Típusok
String
Tömbök
Osztályok
7
Egész szám típusok
• Csak egész számokat jelölhetnek
• Különböznek méretben
• Hány byte-t foglalnak el a memóriában
(1 byte, 2 byte, 4 byte, 8 byte, …)
• Előjeles számok is lehetnek, vagy
csak nemnegatív számok
• Mekkora számokat jelölhetnek
(az előzőekből meghatározható)
8
Egész szám típusok C#
Előjeles Előjel nélküli
-128 ..127
sbyte
byte
-32.768 .. 32.767
short
ushort
-2.147.483.648 ..
int
-9.223.372.036.854.775.808 ..
long
uint
ulong
0 ..255
0 .. 65.535
0 .. 4.294.967.295
0 .. 18.446.744.073.709.551.615
9
Valós szám típusok C#
float
double
±1.5 * 10-45 .. 3.4 * 1038
7 szjegy
±5.0 * 10-324 .. 1.7 * 10308
15 szjegy
Egyéb típusok C#
char
1 karakter
bool
logikai
true / false
string
szöveg
Unicode karakterlánc
DateTime
dátum + idő
16 bites Unicode
0001.01.01 –től eltelt idő
10
Típus-alias nevek C#
11
Literál
• Nincs neve
• Van értéke -> ez a típusát meghatározza
• Van típusa (implicit módon kerül
meghatározásra, fordító végzi)
• A program szövegében ugyanazon érték
használata esetén többször is ki kell írni a
literált.
kerulet = 2 * sugar * 3.14;
12
Logikai literálok C#
• true
= IGAZ
• false
= HAMIS
13
Egész szám literálok C#
• Egész számok megadása a program szövegében
• Alapvetően 10-es számrendszer, pl -14
• Lehetőség 16-os számrendszer használatára ( pl:
0x1F )
• Az egész literálok típusát a fordítóprogram
határozza meg:
• A lehető legkisebb tárolási típus
(int-el kezdve)
• Lehetőleg előjeles
• int
uint
long
ulong
14
Egész szám literálok C#
• A fordítóprogram típusmeghatározása
befolyásolható típusjelekkel a szám végén.
• A típusjelek kis és nagybetűs változatban is
használhatóak
• Mindkét jel esetén a sorrend nem számít
• L l
= long
-> long, ulong
• Uu
= unsigned
-> uint, ulong
• mindkét betű
-> ulong
Pl:
123U
123u
123LU
123Lu
123uL
123ul
15
Valós szám literálok C#
• Valós számok megadása a program szövegében
• Alapvetően 10-es számrendszer, pl -14
• Tizedespont használata (tizedesvessző nem jó!)
• Vagy tizedestört alakban írjuk fel, vagy normál
alakban
• Tizedestört:
-12.2321
• Normál alak:
1.123E-12
• Típusa mindig double
• Típusjelekkel lehet eltérni tőle:
• F,f : float
12.21F
• D,d : double
12.32D
16
Karakter literálok C#
• Egyetlen karakter megadása
• Aposztrófok között kell megadni
• Karakter értékének megadása
‘A’
• Vezérlő karakter
‘\n’
• Hexadecimális karakterkód
‘\x1F’
• Unicode karakterkód
‘\u0F12’
‘\U1F010F12’
17
Karakter literálok C#
18
String literálok C#
• Közönséges szöveg idézőjelek között
• Betű szerinti szöveg
”hello”
@”C:\hello.txt”
A közönséges szöveg karakterliterálok sorozata
”C:\\Program\x20Files\World of Warcraft\\wow.exe”
”c:\\x20”
”C:\x20”
A betű szerinti szövegben nincs speciális karakterliterál felismerés:
@”c:\x20\n”
@”c:\w20\w”
19
Nevesített konstans
• Van neve (azonosító, azonosító névképzési
szabályai)
• Van típusa (egész, tört, logikai, …)
• Van értéke (típusának megfelelően)
• Értéke a program futása során nem
változhat meg
• A program szövegében az értékre a
konstans nevével hivatkozhatunk
const double Pi = 3.14;
20
Változó
• Van neve (azonosító)
• Típusát deklarálni kell
• Értékét többször is meg lehet változtatni
értékadó utasítás segítségével
• A program szövegében a neve a
legutoljára ‘belehelyezett’ értéket jelöli
(aktuális érték) double sugar;
sugar = 13.43;
• Nincs
kerulet = 2 * sugar * 3.14;
kezdőértéke!!
21
Numerikus kifejezések C#
• Konstansok, változók, literálok + OPERÁTOROK
• összeadás
+
• kivonás
-
• szorzás
*
• osztás
/
• maradékképzés %
22
Összeadás, kivonás, szorzás
• long + int eredménye ??
• Nincs minden variációra kidolgozva
• automatikus (implicit) típuskonverzió
a számítás idejére
• mindig a nagyobb (tartalmazó) típus felé
• long + int
• int + double
long + long
long
double + double
double
23
Osztás, maradékképzés
• Maradékképzés ( % ) csak két egész között lehet!
• 8%5
3
(az eredmény mindig int)
• Osztás két egész között = egész osztás
• 8/3
2
(az eredmény mindig int)
• Osztás ha valamelyik nem egész = tényleges osztás
• 8.1 / 3
2.7
• 8.0 / 3
2.66666666666
• 9 / 3.3
2.72727272727
(mindig double)
24
Összehasonlító operátorok
< >
==
<=
>=
!=
Infix bináris operátor
operandus operátor operandus
Eredménye logikai típusú adat (igaz vagy hamis)
Példák:
sugar <= 10
a_oldal > 0
szam != 2
25
Logikai operátorok
• Tagadás
!
• ÉS
&&
• VAGY
||
• true && false
false
• true || false
true
• !true
false
• 10<sugar<20
hibás
• 10<sugar && sugar<20
jó
26
Karakter és string operátorok
• Összefüzés
+
karakter + karakter
string
string + karakter
string
karakter + string
string
string + string
string
• Valójában nincs ennyiféle összefüzés operátor, de
van implicit típuskonverzió karakter
string
irányban
27
Karakter és string operátorok
• Összehasonlító operátorok
<=
>=
==
!=
Összehasonlító operátorok
karakterek között
<
>
stringek között
• Egyenlőségvizsgálat
==
• Nem-egyenlőség vizsgálata
!=
• (két string egyenlő, ha rendre megegyeznek a
karakterek (kis-nagybetű is számít!)
• Az egyéb összehasonlítások: sok nyelvben
függvényekkel vannak megvalósítva
28