Szóbeli érettségi felkészítő 1

C# legfontosabb jellemzői:

Képtalálat a következőre: „.net keretrendszer”

Legalsó szinten az operációs rendszer található. Mivel egy jól megírt, biztonságos operációs rendszer nem engedi meg, hogy a felügyelete alatt futó programok önállóan kezeljék a számítógép hardware elemeit, ezért a programok csakis az operációs rendszeren keresztül kommunikálhatnak egymással, használhatják fel az erőforrásokat (hálózat, file-rendszer, memória, …) – vagyis az operációs rendszer API-n keresztül. Ez a réteg egy jól megírt operációs rendszer esetén nem kerülhető meg.

A következő szinten van a Common Language Runtime – a közös nyelvi futtató rendszer. Ez az egyik legérdekesebb réteg. A CLR lényegében egy processzoremulátor, ugyanis a dotNet-es programok egy virtuális mikroprocesszor virtuális gépi kódú utasításkészletére van fordítva. Ennek futtatását végzi a CLR. A futtatás maga interpreter módban történik, ugyanakkor a dotNet fejlett futtató rendszere a virtuális gépi kódú utasításokat futás közben az aktuális számítógép aktuális mikroprocesszorának utasításkészletére fordítja le, és hajtja végre.

Előnyök:  a szóban forgó virtuális gépi kódú nyelv típusos, ezért a programkód futtatása közben a memória-hozzáféréseket ellenőrizni lehet – így meggátolható a helytelen, hibás viselkedés. Másrészt az utasítások végrehajtása előtt ellenőrizni lehet a jogosultságot is – vagyis hogy az adott felhasználó és adott program esetén szabad-e végrehajtani az adott utasítást – pl. hálózati kapcsolatot létesíteni, vagy file-ba írni. Ugyanakkor meg kell jegyezni, hogy egy JIT Compiler (JIT=Just In Time) gondoskodik arról, hogy a végrehajtás megfelelő hatékonysággal történjen. Ezért egy dotNet-es program hatékonysága, futási sebessége elhanyagolhatóan kisebb, mint a natív kódú programoké.

A második réteg tartalmazza a dotNet API nagyobb részét. A Base Class Library tartalmazza azokat a szolgáltatásokat, amelyeket egy dotNet-es programozó felhasználhat a fejlesztés közben. Lényeges különbség a megelőző API-kal szemben, hogy ez már nem csak eljárások és függvények halmaza, hanem struktúrált, névterekbe és osztályokba szervezett a sok ezer hívható szolgáltatás. Ez nem csak áttekinthetőbb, de hatékonyabb felhasználhatóságot jelent egy, az objektum orientált programozásban jártas programozó számára. A következő réteg, az ADO.NET és XML a 21. századi adatelérési technológiákat tartalmazza. Ezen technikák ma már egyre hangsúlyosabbak, mivel a mai alkalmazások egyre gyakrabban használják fel e professzionális és szabványos technikákat adatok tárolására, elérésére, módosítására. A rétegek segítségével a programok a háttértárolókon képesek adatokat tárolni, onnan induláskor azokat visszaolvasni.

A következő réteg kétfelé válik – aszerint hogy az alkalmazás felhasználói felületét web-es, vagy hagyományos interaktív grafikus felületen valósítjuk meg. A Windows Forms tartalmazza azon API készletet, melyek segítségével grafikus felületű ablakos, interaktív alkalmazásokat készíthetünk. A másik lehetséges választás a WEB-es felületű, valamilyen browser-ban futó nem kifejezetten interaktív program írása. Ezek futtatásához szükséges valamilyen web szerver, a kliens oldalon pedig valamilyen internetes tallózó program, pl. Internet Explorer vagy Mozilla.

A következő réteg – a Common Language Specification – definiálja azokat a jellemzőket, melyeket a különböző programozási nyelvek a fejlődésük során történelmi okokból különböző módon értelmeztek. Ez a réteg írja le az alaptípusok méretét, tárolási módját - beleértve a string-eket - a tömböket. Fontos eltérés például, hogy a C alapú nyelvekben a vektorok indexelése mindig 0-val kezdődik, míg más nyelvekben ez nem ennyire kötött. A réteg nem kevés vita után elsimította ezeket, a különbségeket.

A CLS réteg fölött helyezkednek el a különböző programozási nyelvek és a fordítóprogramjaik. A dotNet igazából nem kötött egyetlen programozási nyelvhez sem. A dotNet nem épül egyetlen nyelvre sem rá, így nyelvfüggetlen. Elvileg bármilyen programozási nyelven lehet dotNet-es programokat fejleszteni, amelyekhez létezik olyan fordítóprogram, amely ismeri a CLS követelményeit, és képes a CLR virtuális gépi kódjára fordítani a forráskódot.

A fenti két követelmény betartásának van egy nagyon érdekes következménye: elvileg lehetőség van arra, hogy egy nagyobb projekt esetén a projekt egyik felét egyik programozási nyelven írjuk meg, a másik felét pedig egy másikon. Mivel mindkét nyelv fordítóprogramja a közös rendszerre fordítja le a saját forráskódját – így a fordítás során az eredeti forráskód nyelvi különbségei eltűnnek, és a különböző nyelven megírt részek zökkenőmentesen tudnak egymással kommunikálni

A C# programozási nyelv a felsıoktatásban Programozás tankönyv

 

C# adattípusai: Egyszerű és összetett adatok

Összetett adattípusok:

 

Egyszerű adatok:

Egészek:

C# adattípus .NET
Mérete(byte)
Legkisebb érték Legnagyobb érték
sbyte System.Sbyte
1
-128 127
byte System.Byte
1
0 255
short System.Int16
2
-32 768 32 767
ushort System.UInt16
2
0 65 535
int System.Int32
4
-2 147 483 648 2 147 483 647
uint System.UInt32
4
0 4 294 967 295
long System.Int64
8
-9 223 372 036 854 775 808 9 223 372 036 854 775 807
ulong System.UInt64
8
0 18 446 744 073 709 551 615
char System.Char
2
0 65 535
bool System.Boolean
1
false (0) true (1)
decimal System.Decimal
16
1,0*10-28 kb. 7,9*1028

Valósak:

C# adattípus .NET
Mérete(byte)
Legkisebb érték Legnagyobb érték
float System.Single
4
1,5*10-45 3,4*1038
double System.Double
8
5,0*10-324 1,7*10308

Szöveg típus:

C# adattípus .NET
Mérete(byte)
Legkisebb érték Legnagyobb érték
string System.String 2,147,483,647    
    2G/2byte    

Logikai:

C# adattípus .NET
Mérete(byte)
Legkisebb érték Legnagyobb érték
bool System.Boolean
1
false (0) true (1)

Karakter:

C# adattípus .NET
Mérete(byte)
Legkisebb érték Legnagyobb érték
char System.Char
2
0 65 535

 


Értékkészlet - értéktartomány:

Int típus:

Int előjeles: 1 bit az előjel azaz (31 bit ) decimálisan = 2 147 483 647

Az előjel miatt viszont -2 147 483 647 ----------------+2 147 483 647 ! Értékkészlet !

Számábrázolás:

Fixpontos:

 Általában egész számok ábrázolása. (előjelbittel) A tizedes pont fix helyen, a szám végén van. (valós számok ábrázolása is elképzelhető de nem szokásos)
A pozitív számokat és a nullát egy vezető zérussal, e számok ellentettjét egy vezető egyessel írjuk. Például: +1 = 0001, és -1 = 1001. E kód jellegzetessége a negatív nulla, ami formálisan képezhető a nulla szám 0000 kódjából az előjelbit átváltásával: 1000

Lebegő pontos számábrázolás:

 valós számok kezelése véges tárhely mellett. A lebegőpontos szám lényege, hogy az ábrázolásánál a tizedespont „lebeg”, vagyis az ábrázolható értékes számjegyeken belül bárhova kerülhet. (Példa erre az 1,23, 12,3, 123 számok, melyek mindegyike 3 értékes számjegyet tartalmaz.)
 A számokat ((-2)*b+1)*m*2k alakban írjuk fel.

 Az ábrázolás lehet 4 vagy 8 byte-os. Maga a kód a valós szám előjelbitjéből, utána s biten (8, ill. 11) a karakterisztika 2s-1-1 eltolású többletes kódjából (ekkor -2s-1+1 <= k <= 2s-1), végül a mantissza bináris alakjának törtrészéből (23, illetve 52 biten) áll.

Példa: A -12.25 valós szám lebegőpontos kódja 1 + 11 + 52 biten:

Gond: vannak negatív számok is.
Megoldás:

 Kettes komplemens kód :

 Az egész számok általánosan elterjedt kódolása. A módszer nagyon hasonló az egyes komplemens kódhoz: a pozitív számokat ugyanúgy kódoljuk, a negatív számokhoz pedig itt is vesszük az abszolút érték bináris alakjának komplementerét – majd ehhez hozzáadunk 1-et. A 0 bit-tel kezdődő bináris kód itt is azt jelzi, hogy a szám pozitív, míg az 1-gyel kezdődő azt, hogy negatív.

Példa: -12 kettes komplemens alakja 4 byte-on

1. Először vesszük 12 kettes komplemens alakját: 1210 = 00000000 00000000 00000000 000011002

2. Vegyük a bináris alak komplementerét: 11111111 11111111 11111111 11110011

3. Adjunk hozzá binárisan 1-et, így megkapjuk a végeredményt: -1210 = 11111111 11111111 11111111 11110100 b

Eltolásos (többletes):

A számokhoz, mielőtt binárisan ábrázoljuk őket, hozzáadunk egy rögzített értéket (eltolás). Az eltolás értékét úgy választjuk meg, hogy az ábrázolni kívánt számok az eltolás után ne legyenek negatívak. Például ha s biten akarjuk a számokat ábrázolni, akkor az eltolás lehet a 2s-1. Ennek bináris alakja (100...00) jelenti a nullát és az ábrázolható számok -2s-1 és 2s-1-1 közé esnek. (Az első számjegy most is a szám előjelét jelzi, de itt az 1 jelenti azt, hogy a szám pozitív, a 0 pedig, hogy negatív, ellentétben az eddigiekkel.) Elsősorban számok nagyság szerinti összehasonlításához, számok összegének és különbségének kiszámolásához alkalmas ábrázolás.

 

Jellemző műveletek az egyes adattípusokon

......