Amit a C# tudni érdemes (2004, 215 oldal)

download Amit a C# tudni érdemes (2004, 215 oldal)

If you can't read please download the document

Transcript of Amit a C# tudni érdemes (2004, 215 oldal)

C# Amit a C# tudni rdemes!

TartalomjegyzkA C#-rl rviden........................................................................................................................7A C# trtnete...................................................................................................................................7 Szerkeszt hasznlata......................................................................................................................7 Forrsfjlok elnevezse....................................................................................................................8 A C# program vgrehajtsrl........................................................................................................8 A C# forrskd fordtsa kztes nyelvre........................................................................................9

C# objektumkzpont nyelv....................................................................................................10Els C# programunk......................................................................................................................10 A C# programok tpusai................................................................................................................11 A C#, mint objektum orientlt programozsi nyelv....................................................................11Egysgbe zrs...............................................................................................................................................11 Tbbalaksg.................................................................................................................................................12 rkls...........................................................................................................................................................12 jrahasznosthatsg.....................................................................................................................................12 Objektumok s osztlyok...............................................................................................................................13 A C# modulris..............................................................................................................................................13

.NET madrtvlatbl.....................................................................................................................13

A C# programok.......................................................................................................................14A C# alkalmazsok felptse........................................................................................................14A megjegyzsekrl........................................................................................................................................15

A C# alkalmazsok alapelemei......................................................................................................17Formzs trkzkkel....................................................................................................................................17 Kulcsszavak a C# nyelv alapkvei.............................................................................................................18 Literlok.........................................................................................................................................................18 Azonostk.....................................................................................................................................................18

A C# alkalmazsok szerkezete.......................................................................................................19Utastsok s kifejezsek a C#-ban................................................................................................................19 Az res utasts..............................................................................................................................................19

Adattrols vltozkkal.................................................................................................................19A vltozk hasznlata....................................................................................................................................20 rtkads a vltozknak................................................................................................................................20 Vltozk kezdrtk nlkl...........................................................................................................................21

A C# adattpusai.............................................................................................................................21Lebegpontos rtkek....................................................................................................................................22 Logikai rtkek..............................................................................................................................................22 Adattpusok a .NET krnyezetben.................................................................................................................22 Literlok vagy vltozk?...............................................................................................................................23 Egsz literlok...............................................................................................................................................23 Lebegpontos literlok..................................................................................................................................24 Logikai literlok.............................................................................................................................................24 Karakterlnc literlok....................................................................................................................................24 llandk ltrehozsa.....................................................................................................................................24 Hivatkozsi tpusok.......................................................................................................................................25

Ksztette: Zstr Csaba III. ves informatikus hallgat

1

C# Amit a C# tudni rdemes!Mveletek a C#-ban.......................................................................................................................25Alapvet adatok megjelentse......................................................................................................................25 Vltozk rtknek mdostsa mveletekkel...............................................................................................26 Egyvltozs mveletek..................................................................................................................................26 Ktvltozs mveletek...................................................................................................................................26 Hromvltozs mveletek.............................................................................................................................27 Egyvltozs aritmetikai mveletek................................................................................................................27 sszehasonlts viszonyt mveletek..........................................................................................................28 Az if utasts..................................................................................................................................................28 A mveletek kirtkelsi sorrendje...............................................................................................................29 Adattpusok talaktsa..................................................................................................................................30 Tpuslptets..................................................................................................................................................31

A program mkdsnek szablyozsa........................................................................................31Kivlaszt utastsok.....................................................................................................................................31 Ismt az if......................................................................................................................................................31 Az if utastsok begyazsa...........................................................................................................................32 Az if utastsok felhalmozsa........................................................................................................................33 A switch utasts............................................................................................................................................33 Egy kd tbb eset........................................................................................................................................35 A switch utasts vezrl tpusai....................................................................................................................36 Bejr utastsok............................................................................................................................................36 A while utasts..............................................................................................................................................36 Kiugrs a while utastsbl s a ciklus folytatsa..........................................................................................37 A do utasts..................................................................................................................................................37 A for utasts..................................................................................................................................................38 A foreach utasts..........................................................................................................................................38 Az tkos goto..............................................................................................................................................39 Utastsok cmkzse.....................................................................................................................................40

A C# programok lelke: az osztlyok.............................................................................................40Osztlyok bevezetse.....................................................................................................................................41 Az osztly tagjai............................................................................................................................................41 Az adattagok, vagy mezk.............................................................................................................................42 Az adattagok elrse......................................................................................................................................42 Statikus vltozk hasznlata..........................................................................................................................44 Az alkalmazs osztly....................................................................................................................................45 Tulajdonsgok ltrehozsa.............................................................................................................................45 A nvterekrl.................................................................................................................................................46 Begyazott nvterek.......................................................................................................................................47

Mveletek egysgbe zrsa: tagfggvnyek.................................................................................47A tagfggvny felptse...............................................................................................................................48 rtkek visszaadsa tagfggvnyekbl.........................................................................................................48 A tagfggvnyek trzsnek felptse...........................................................................................................49 A tagfggvnyek meghvsa..........................................................................................................................49 Adattagok elrse tagfggvnyekbl.............................................................................................................50 rtkads tagfggvnyek szmra.................................................................................................................51 Statikus tagfggvnyek..................................................................................................................................52 Paramterek elrsi jellemzi........................................................................................................................52 rtk szerinti paramtertads.......................................................................................................................52 Hivatkozs szerinti paramtertads..............................................................................................................52 A kimeneti elrs hasznlata.........................................................................................................................54 Az osztly-tagfggvnyek tpusai..................................................................................................................55 Tulajdonsgelrsi tagfggvnyek................................................................................................................55 Konstruktorok................................................................................................................................................55 Pldnykonstruktor........................................................................................................................................55 Statikus konstruktorok...................................................................................................................................56

Ksztette: Zstr Csaba III. ves informatikus hallgat

2

C# Amit a C# tudni rdemes!Destruktorok..................................................................................................................................................57 A destruktor hasznlata..................................................................................................................................58

sszetett adatszerkezetek: struktrk, felsorolsok s tmbk.................................................59Struktrk......................................................................................................................................................59 Az osztlyok s struktrk kzti klnbsg..................................................................................................59 A struktrk tagjai.........................................................................................................................................59 A struktrk tagfggvnyei...........................................................................................................................60 A struktrk konstruktorai.............................................................................................................................60 A struktrk destruktorai...............................................................................................................................61 Felsorolsok...................................................................................................................................................61 A felsorolsok alaprtelmezett rtkeinek mdostsa..................................................................................62 A felsorols alapjul szolgl tpus mdostsa............................................................................................63 Tmbk..........................................................................................................................................................63 A tmbelemek kezdeti belltsa...................................................................................................................65 Tbbdimenzis tmbk.................................................................................................................................65 Klnbz mret tmbket tartalmaz tmbk..........................................................................................66 A tmbk hossznak s hatrainak vizsglata...............................................................................................66 Tmbk hasznlata osztlyokban s struktrkban.......................................................................................67

A tagfggvnyekhez val hozzfrs kifinomult mdozatai........................................................67A tagfggvnyek tlterhelse........................................................................................................................67 Konstruktor tlterhelse.................................................................................................................................69 A tagfggvnyek alrsa..............................................................................................................................71 Vltoz szm paramter hasznlata.............................................................................................................72 A params kulcssz hasznlata tbb klnbz adattpussal..........................................................................73 A params kulcssz mkdsnek mg rszletesebb vizsglata.....................................................................74 A Main tagfggvny hasznlata s a parancssori paramterek kezelse.......................................................75 Hatkrk......................................................................................................................................................76 Munka, helyi hatkrrel rendelkez vltozkkal..........................................................................................76 Az osztlyvltozk s a helyi vltozk megklnbztetse .........................................................................77 Osztly hatkrnek megvltoztatsa mdostkkal.....................................................................................77 Objektumok nlkli osztlyok ltrehozsa ...................................................................................................77 Privt konstruktor hasznlata.........................................................................................................................78 A nvterek hasznlatnak tismtlse...........................................................................................................79 A nvtr elnevezse.......................................................................................................................................80 A nvtr bevezetse.......................................................................................................................................80 A using kulcssz s a nvterek......................................................................................................................81 A teljesen meghatrozott nvtereknek rvidtse..........................................................................................81 lnevek hasznlata a using segtsgvel.......................................................................................................82

Problmk kezelse a programon bell: kivtelek s hibk........................................................82A programok kezelsvel kapcsolatos alapfogalmak....................................................................................82 A hibk kikszblse logikus kdolssal....................................................................................................83 Mi okozhat kivtelt?......................................................................................................................................83 Kivtelkezels................................................................................................................................................84 A try s a catch hasznlata.............................................................................................................................85 A kivtellel kapcsolatos informci elfogsa................................................................................................85 Tbb catch hasznlata egyetlen try paranccsal..............................................................................................86 A kivtelek kezelsnek sorrendje.................................................................................................................86 A vgs megolds: a finally kulcssz............................................................................................................87 A leggyakoribb kivtelek...............................................................................................................................88 Sajt kivtelosztlyok megadsa...................................................................................................................90 Sajt kivtelek kivltsa................................................................................................................................91 Kivtelek tovbbdobsa.................................................................................................................................92 Ellenrztt s ellenrizetlen parancsok hasznlata........................................................................................92 Az elfeldolgoz utastsainak hasznlata....................................................................................................93 Az elfeldolgozssal kapcsolatos deklarcik...............................................................................................94 rtkek megadsa a parancssorban...............................................................................................................96

Ksztette: Zstr Csaba III. ves informatikus hallgat

3

C# Amit a C# tudni rdemes!A #define s az #undef hatsa.......................................................................................................................96 Feltteles feldolgozs (#if, #elif, #endif).......................................................................................................96 Elfeldolgozsi kifejezsek (!, ==,!=, &&, ||) ..............................................................................................97 Hibs s figyelmeztetsek kezelsnek elrsa a kdban (#error, #warning)..............................................97 A sorszmok megvltoztatsa........................................................................................................................97 A rgik rvid ttekintse..............................................................................................................................98

Mr meglv kdrszletek jrahasznostsa rkls segtsgvel..............................................98Az rkls alapja...........................................................................................................................................98 Az egyszeres s a tbbszrs rkls............................................................................................................99 Az rkls egyszer formja.........................................................................................................................99 Alaptagfggvnyek hasznlata rkltt tagfggvnyekben........................................................................103 A tbbalaksg felfedezse s a szrmazott osztlyok................................................................................103 Munka virtulis tagfggvnyekkel..............................................................................................................105 Munka elvont osztlyokkal..........................................................................................................................107 Osztlyok lezrsa.......................................................................................................................................109 Az Object, avagy a legvgs alaposztly....................................................................................................110 Az Object osztly tagfggvnyeinek ttekintse.........................................................................................110 Becsomagols s kicsomagols...................................................................................................................111 Az is s as kulcsszavak hasznlata osztlyok tpusnak talaktsa.........................................................112 Az is kulcssz hasznlata.............................................................................................................................112 Az as kulcssz hasznlata............................................................................................................................114 Klnbz objektumtpusok tmbjei..........................................................................................................114

Informci formzsa s bekrse..............................................................................................117A konzolon keresztl megvalstott bemenet s kimenet............................................................................117 Az informci formzsa.............................................................................................................................117 Szmok formzsa.......................................................................................................................................118 Egyedi formtumok ltrehozsa kplerk segtsgvel..............................................................................119 A dtum s id formzsa............................................................................................................................120 A dtum s id lekrdezse.........................................................................................................................120 A dtum s id formzsa............................................................................................................................121 Felsorolsok tagjainak megjelentse..........................................................................................................122 A karakterlncokkal vgezhet kifinomultabb mveletek..........................................................................123 Karakterlncokkal kapcsolatos tagfggvnyek...........................................................................................124 @ - a klnleges karakterlnc formz.......................................................................................................126 Karakterlncok ptse.................................................................................................................................126 Informci bekrse a konzolrl.................................................................................................................128 A Read tagfggvny hasznlata...................................................................................................................128 A ReadLine tagfggvny hasznlata...........................................................................................................129 A Convert osztly hasznlata.......................................................................................................................129

Bevezets az objektumkzpont programozsba: felletek......................................................131Felletek: elzetes.......................................................................................................................................131 Az osztlyok s a felletek kapcsolata........................................................................................................132 A felletek hasznlata..................................................................................................................................132 Mirt hasznljunk felleteket?.....................................................................................................................133 Felletek meghatrozsa..............................................................................................................................133 Fellet meghatrozsa tagfggvnyekkel....................................................................................................133 Tulajdonsgok megadsa a felleteken bell..............................................................................................136 Tbb fellet hasznlata................................................................................................................................137 Kifejezett fellettagok hasznlata................................................................................................................138 j felletek levezetse mr ltez felletekbl...........................................................................................140 Felletek tagjainak elrejtse........................................................................................................................140

A program vlaszol kpessgnek kialaktsa kpviselk, esemnyek s indexelk segtsgvel....................................................................................................................................142Hogyan hasznljunk egy indexelt?............................................................................................................142 A kpviselk felfedezse.............................................................................................................................143

Ksztette: Zstr Csaba III. ves informatikus hallgat

4

C# Amit a C# tudni rdemes!Esemnyek hasznlata.................................................................................................................................147 Esemnyek ltrehozsa................................................................................................................................147 Az esemnykpviselk mkdse...............................................................................................................148 Szrmaztats az EventArgs osztlybl........................................................................................................148 Az Event osztly kdjnak hasznlata.........................................................................................................149 Esemnykezelk ltrehozsa.......................................................................................................................150 Az esemnyek s esemnykezelk egymshoz rendelse...........................................................................150 Tbb esemnykezel egyetlen esemnyhez................................................................................................152 Esemnykezelk eltvoltsa.......................................................................................................................154

Parancsaink vgrehajtatsa mveletekkel: tlterhels.............................................................155Ismtls: fggvnyek tlterhelse................................................................................................................155 Mveletek tlterhelse.................................................................................................................................156 Az alapvet kttnyezs matematikai mveletek tlterhelse....................................................................156 Az alapvet egytnyezs matematikai mveletek tlterhelse...................................................................158 Az sszehasonlt s logikai mveletek tlterhelse...................................................................................159 A logikai mveletek tlterhelse.................................................................................................................162 sszefoglals: A C# tlterhelhet mveletei..............................................................................................164 sszefoglals: A C# nem tlterhelhet mveletei.......................................................................................164

A .NET alaposztlyok eljrsai...................................................................................................164Osztlyok a .NET krnyezetben..................................................................................................................164 A kzs nyelvlers (CLS)...........................................................................................................................164 A tpusok szervezse nvterekkel................................................................................................................165 Az ECMA szabvnyok hasznlata...............................................................................................................165 Tjkozds a krnyezet osztlyairl..........................................................................................................166 Knyvtr- s rendszeradatok kezelse.........................................................................................................166 Matematikai eljrsok hasznlata................................................................................................................166 Fjlkezels...................................................................................................................................................167 A fjlok adatai..............................................................................................................................................169 Egyszer adatfjlok kezelse.......................................................................................................................170 Ismerkeds a folyamokkal...........................................................................................................................170 A fjlolvass menete....................................................................................................................................170 Fjlok ltrehozsa s megnyitsa.................................................................................................................171 Szveg fjlba rsa.......................................................................................................................................171 Szveg olvassa fjlbl................................................................................................................................172 Binris adatok fjlba rsa...........................................................................................................................172 Binris adatok olvassa fjlokbl................................................................................................................173

Windows alkalmazsok ksztse..........................................................................................174Windows ablakok ksztse.........................................................................................................174Fordtsi belltsok.....................................................................................................................................175 Az Application.Run tagfggvny mkdse...............................................................................................176 Ablakok testreszabsa..................................................................................................................................177 Ablakok tmretezse..................................................................................................................................180 Az ablak szneinek s htternek megvltoztatsa......................................................................................182 Az ablak szeglynek mdostsa...............................................................................................................183 Vezrlk elhelyezse az ablakon.................................................................................................................184 Cmkk s szvegmegjelents....................................................................................................................185 Gombok hasznlata......................................................................................................................................186 Gombesemnyek..........................................................................................................................................187 OK gomb ksztse......................................................................................................................................189 Szvegmezk hasznlata.............................................................................................................................190

Windows alkalmazsok ksztse................................................................................................193Vlasztgombok hasznlata.........................................................................................................................193 Trolk hasznlata.......................................................................................................................................195 Listamezk hasznlata.................................................................................................................................198 Menk az ablakokon....................................................................................................................................201

Ksztette: Zstr Csaba III. ves informatikus hallgat

5

C# Amit a C# tudni rdemes!Bejellhet menelemek.............................................................................................................................204 Helyi men ksztse...................................................................................................................................207 A MessageBox osztly................................................................................................................................209 A Microsoft Windows beptett prbeszdablakainak hasznlata...............................................................211 Sajt prbeszdablak ksztse....................................................................................................................213

Felhasznlt irodalom.............................................................................................................216

Ksztette: Zstr Csaba III. ves informatikus hallgat

6

C# Amit a C# tudni rdemes!

A C#-rl rviden

A C# trtneteA C# bta vltozathoz elszr 2000 jniusban juthatott hozz a nagykznsg, a hivatalos kiads pedig 2002 tavaszn ltott napvilgot, gy a nyelv valban nincs tl rgen jelen a kztudatban. A C# (c kereszt vagy C sharp) szlatyja a Microsoft, szabvnyostsrl pedig az ECMA gondoskodott. Kszti kztt vezetkent feltnik az az Andres Hejlsberg is, aki a korbbiakban mr ms programozsi nyelek ksztsnl Borland C++, Borland Delphi megmutatta oroszlnkrmeit. A C# fejlesztsnl a Microsoft programozi csoportja megprblta tvenni a mr ltez programnyelvek j tulajdonsgait, itt-ott tovbbi javtsokat, fejlesztseket eszkzlve. Jllehet a C# a Microsoft fejlesztsnek eredmnye, hasznlata mgsem korltozhat Microsoft rendszerekre. Lteznek C# fordtk a FreeBSD, a Linux s a Macintosh rendszereken, tovbb szmos Microsoft felleten. A C# igen hatkony s rugalmas programozsi nyelv, mellyel szmos nyelvekhez hasonlan alkalmazsok szles krt kszthetjk el. Maga a nyelv nem korltozza a programozt tevkenysgben, gy fantzink hatrtalanul szrnyalhat. Mindezt mi sem mutatja jobban, mint az, hogy a C#-ot hasznltk mr dinamikus webhelyek, fejleszteszkzk, st fordtprogramok ksztshez is.

Szerkeszt hasznlataA Microsoft a C# lehetsgeit elrhetv tette a Microsoft Visual Studio .NET-ben, amely gy tartalmazza a Microsoft Visual Studio C# .NET-et is. Ezzel a legismertebb szerkeszt a C# programozshoz mindazonltal ahhoz, hogy C# programokat ksztsnk, nincs felttlenl szksgnk a Visual Studio .NET-re vagy a Visual C# .NET-re. Lteznek ugyanis ms szerkesztk is, melyek nmelyike a Visual Studio .NET-hez hasonlan lehetv teszi, hogy a szerkeszt elhagysa nlkl vgezzk el a fejleszts folyamatnak sszes lpst. Tbbsgk emellett ms szolgltatsokat is nyjt, gy pldul a bert szvegek sznkdolst ezzel, sokkal knnyebben rbukkanhatunk az esetleges hibkra. Szmos szerkeszt mg abban is segt, mit rjunk be egy adott helyen, tovbb sokoldal sgval kedveskedik szmunkra. Azonban C# programot lehet kszteni akr a Microsoft Windows rendszereken tallhat Jegyzettmb vagy a WordPad nev alkalmazs, Linux s Unix rendszereken pedig a jl hasznlhat az ed, az ex, az edit, az emacs, vagy a vi.

Ksztette: Zstr Csaba III. ves informatikus hallgat

7

C# Amit a C# tudni rdemes! Ha ms szerkesztt szeretnnk hasznlni, arra is van lehetsg. Ilyen szerkesztk akr ingyen is beszerezhetk: SharpDevelop A SharpDevelop egy ingyenes szerkeszt, melyet a C# s a VB.NET projektekhez hasznlhatunk a Microsoft .NET felleten. Mivel a szerkeszt nylt forrs (GPL), a www.icsharpcode.net cmrl a futtathat fjlok mellett a forrskdot is letlthetjk. CodeWright A CodeWright olyan szerkeszt, amely kln tmogatst biztost az ASP, az XML, a HTML, a C#, a Perl, a Python s ms formtumokhoz. A 30 napos prbavltozatt letlthetjk a www.premia.com cmrl. A CodeWright jelenleg a Borlandhoz tartozik. JEdit A JEdit egy nylt forrs Java szerkeszt, amely azonban egyttal hasznlhat C# programok szerkesztsre is, a kd sznezsnek lehetsgvel. A programot a http://jedit.sourceforge.net cmen tallhatjuk meg.

Forrsfjlok elnevezseHa elkszlt a forrsfjl, termszetesen nevet kell adnunk neki ennek a nvnek pedig le kell rnia, mit is tesz a program. Forrsfjljaink kiterjesztst szabadon megvlaszthatjuk, de jobban jrunk, ha megmaradunk az ltalnosan elismert, szabvnyos .cs-nl. A nvnek le kell rnia a program mkdst. Sokan vlik gy, hogy ez a nv j, ha megegyezik az adott C# osztly nevvel.

A C# program vgrehajtsrlFontos, hogy nmikpp tisztban legynk azzal, miknt trtnik a C# programok vgrehajtsa ezek a programok ugyanis e tren eltrnek a szoksos programnyelveken rt trsaiktl. A C# programokat a .NET Common Language Runtime (CLR) krnyezetben futtathatjuk. Ez azt jelenti, hogy ha elksztnk egy futtathat C# programot, s megksreljk elindtani egy olyan gpen, melyen nincs jelen a CLR, vagy ms, vele sszeegyeztethet futsidej krnyezet, a futs nem sikerl. A futsidej krnyezet hasznlatnak elnye a hordozhatsg. Ha korbban olyan programot szerettnk volna kszteni valamely rgebbi programnyelven mondjuk C-ben vagy C++-ban -, ami kpes klnbz opercis rendszereken s felleteken futni, mindegyikk esetben kln futtathat programot kellett ksztennk a fordtval. Ha pldul, ksztnk egy C alkalmazst, s egy Linux s egy Windows gpen is futtatni akartuk, kt futtathat programot kellett ksztennk egyet a Linuxhoz, egyet a Windowshoz. A C# esetben csak egyre van szksgnk, s ez mkdik mindkt rendszeren. Ha programunkat a lehet leggyorsabban szeretnnk futtatni, valdi futtathat fjlt kell belle ksztennk. Ehhez a forrskdot gpi kdra kell fordtanunk egy fordtprogrammal. A fordtprogram teht fogja a forrsfjlunkat, s utastsait gpi kd utastsokk alaktja t. Ksztette: Zstr Csaba III. ves informatikus hallgat 8

C# Amit a C# tudni rdemes! A C, C++ s hasonl programnyelveken kszlt programok esetben a fordtprogram olyan fjlt ad, amely minden tovbbi erfeszts nlkl egyszeren futtathat. A C# esetben fordtprogramunk nem kzvetlenl gpi kdra fordt, hanem egy kztes nyelvre (Intermediate Language - IL). Az gy kapott IL fjlt ezutn tmsolhatjuk brmely .NET CLR krnyezettel rendelkez gpre. Mivel ez az IL fjl kzvetlenl nem futtathat, tovbbi fordtsra van szksg a mkdshez ezt teszi meg a CLR, vagy ms C# futsidej krnyezet. A CLR, ha IL fjlt lt, els dolga, hogy lefordtsa. Ilyenkor a hordozhat IL kdot talaktja gpi kdd, amit a szmtgp mr kpes rtelmezni s futtatni. A dolog persze ennl egy kicsit sszetettebb, a CLR ugyanis valjban csak a program ppen hasznlatban lv rszt fordtja le, hogy idt takartson meg. Ezt a vgs fordtst nevezik Just In Time (JIT) fordtsnak. Mivel teht az IL fjlokat futs idben kell fordtani, a program kezdetben lassabban fut, mintha egy teljes fordts nyelven, pldul C++-ban rtk volna. Ha azonban egy adott rszt mr futtattunk, a klnbsg eltnik, ugyanis innentl kezdve a rendszer a teljes lefordtott kdot hasznlja. Az esetek tbbsgben ez a kezdeti idkiess elhanyagolhat, st lehetsgnk van arra is, hogy C# programunkat rgtn lefordtsuk a JIT-tel, mihelyt teleptjk egy rendszerbe.

A C# forrskd fordtsa kztes nyelvreAz IL fjlok ksztshez hasznljuk a C# fordtt. Amennyiben a Microsoft :NET Framework SDK-t hasznljuk, alkalmazhatjuk a csc parancsot, feltntetve utna a forrsfjl nevt. gy, ha pldul a Radius.cs forrsfjlt szeretnnk lefordtani, az albbiakat kell a parancssorba rnunk: csc Radius.cs Ha nem a Microsoft .NET krnyezett hasznljuk, esetleg ms parancs hasznlatra szorulunk. Ez a mono esetben a mcs, gy ha itt szeretnnk az elz fordtsi mveletet elvgezni, a kvetkezt kell bernunk: mcs Radius.cs Amennyiben grafikus fejlesztkrnyezetet hasznlunk, mint a Microsoft Visual C# .NET, a fordts mg egyszerbb. A legtbb grafikus krnyezetben elg a Compile gombra kattintani vagy a megfelel menpontot vlasztani. Ha a fordts megtrtnt, akkor a Run gombbal, vagy a megfelel menpont kivlasztsval futtathatjuk a programot. A fordts vgeztvel egy IL fjlt kapunk. Ha krlnznk a fordts helyl szolgl knyvtrban, illetve mappban, biztosan tallunk egy j fjlt, melynek neve megegyezik a forrsfjlval, kiterjesztse azonban nem .cs, hanem .exe. Ez az .exe kiterjeszts fjl a lefordtott programunk, melyet futtathatunk a CLR-ben. E fjl tartalmaz minden adatot, amire

Ksztette: Zstr Csaba III. ves informatikus hallgat

9

C# Amit a C# tudni rdemes! a CLR-nak szksge van a futtatshoz. A .NET szhasznlata szerint az e fjlban tallhat kd neve kezelt kd (managed code). Miutn programunkat IL fjll fordtottuk, futtathatjuk gy, hogy berjuk a nevt a parancssorba, vagy brhogy, ahogyan ms programot szoktunk. Azt viszont nem szabad elfelejtennk, hogy a programnak a futshoz szksge van a .NET CLR-re ha nem teleptjk ezt a krnyezetet, futtatskor csak egy hibazenetet kapunk. Ha ellenben teleptjk a Microsoft .NET krnyezett, a futs pontosan gy zajlik, mint brmely ms program esetben.

C# objektumkzpont nyelvEls C# programunkPldnkban egy Hello.cs nev programot hasznlunk, mely mindssze a Hello, World! feliratot rja ki a kpernyre: 2.1 kdszveg Hello.cs

class Hello { public static void Main() { System.Console.WriteLine("Hello, World!"); } }

Gpeljk be a fenti kdszveget a szerkesztnkbe s mentsk Hello.cs nven. gyeljnk arra, hogy a C#-nl a Main() nagybetvel rdik, mg ms programnyelveken ilyen a C, vagy a C++ - kisbetvel. Ha nem nagy M-et hasznlunk fordtsi hibt kapunk. Ha ezen kis programocskt futtatni szeretnnk, nincs ms dolgunk, mint a lefordtani a Hello.cs fjl. Ehhez rjuk be a kvetkezt a parancssorba: csc Hello.cs Ha egyestett fejleszti krnyezetet hasznlunk (IDE), vlasszuk a megfelel gombot (ikont), gyorsbillentyt vagy menpontot. Ha minden jl vgeztnk, egy zenetet kell kapjunk arrl, hogy nincs figyelmeztets, vagy fordtsi hiba. Ha lefordtottuk, akkor a fordts helyl szolgl knyvtrban, illetve mappban tallunk egy Hello.exe nev fjlt. Futtatshoz egyszeren rjuk be a Hello szt a parancssorba; ekkor kpernynkn megjelenik a Hello, World! felrat. Ksztette: Zstr Csaba III. ves informatikus hallgat 10

C# Amit a C# tudni rdemes!

A C# programok tpusaiMieltt tovbb folytatnnk utunkat a C# rejtelmei kzt, fontos dolog, hogy megismerkedjnk, hogy pontosan milyen programokat kszthetnk a C#-al: Konzolalkalmazsok A konzolalkalmazsokat a parancssorbl indthatk. Ablakos alkalmazsok Kszthetnk olyan Windows-alkalmazsokat is, melyek kihasznljk a rendszer nyjtotta grafikus felhasznli felletet (GUI). Webszolgltatsok Ezek olyan eljrsok, melyeket a Vilghln keresztl lehet meghvni. Webes formok / ASP.NET alkalmazsok Az ASP.NET alkalmazsokat webkiszolglkon futtathatjuk, segtsgkkel dinamikus weblapokat kszthetnk. Az albbi tpus programok ksztse mellett a C# nyelvet szmos ms feladatra is hasznlhatjuk, gy kszthetnk a segtsgvel knyvtrakat, vezrlket s ms egyebeket.

A C#, mint objektum orientlt programozsi nyelvA C# eleve objektumkzpont programozsi nyelvnek kszlt. Ms nyelvekben is tallhatunk objektumkzpont lehetsgeket, de csak kevs pl valban objektumkzpont alapokra. A C# sei a C s a C++, de sszelltst ksztik valjban az alapoktl kezdtk. A Microsoft azokbl az elemekbl indult ki, melyek e kt nyelvben sikeresen mkdtek, s olyan lehetsgekkel egsztettk ki ezeket, melyek megknnytettk a hasznlatukat. sokuk a Javbl mr ismers lehet. A Microsoftot a C# megtervezsnl hatrozott clkitzsek vezreltk olyan programnyelvet szerettek volna ltrehozni, ami egyszer, emellett azonban modern s objektumorientlt is. A C#-ban eltnik a Java s a C++ nhny bonyolultabb s sokszor csapdkat rejt eleme, mint a makrk, a tbbszrs rklds s a virtulis alaposztlyok. Ezek mind olyan pontok, melyek folyamatosan zavart s hibalehetsgeket okoznak a C++ fejleszts sorn. Az jtsok kztt talljuk a felesleges ismtlsek visszanyesst, vagy bizonyos nyelvtani vloztatsokat. A C++ pldul klnbz mveleti jeleket (::, . s ->) hasznl, ha struktrk tagjaival dolgozunk. Nos a C#-ban csak egyetlen mveleti jel ltezik e clra , a pont. A C# mindemellett korszer programnyelv. Kivtelkezels, szemtgyjts, bvthet adattpusok s kdbiztonsg e lehetsgek biztostst mindenki elvrja egy modern programnyelvtl, s a C# esetben rendelkezsre is llnak. A C# objektumkzpont Amint az mr emltettk a C# objektumkzpont nyelv. Ennek alapjai, pedig az egysgbe zrs (betokozs, encapsulation), az rkls s a tbbalaksg, melyet a C# termszetesen megvalst.

Egysgbe zrsAz egysgbe zrs gyakorlatilag annyit jelent, hogy csomagokat ksztnk, melyekbe mindent beletesznk, ami az adott feladathoz szksges. Az objektumkzpont programozs Ksztette: Zstr Csaba III. ves informatikus hallgat 11

C# Amit a C# tudni rdemes! esetben objektumokat (csomagokat) ksztnk, pldul egy krt, amely maga kpes elvgezni mindent, amit egy krrel megtehetnk. Ebbe beletartozik a kr adatainak sugr s kzppont nyilvntartsa, de ki kell tudnia szmtani pldul ms adatokbl a sugarat, vagy ppen kirajzolni a krt. A kr egysgbe zrsval teht elrhet, hogy a felhasznlnak ne kelljen ismernie a kr mkdst, elg legyen tudnia, miknt bnjon vele. gy elrejthetjk elle a bels mveleteket.

TbbalaksgA tbbalaksg az objektumkzpont programozs kt (ha nem tbb) klnbz terletn is alkalmazhat. Elszr is, segtsgvel egy objektumot vagy eljrst tbbfle mdon meghvhatunk, mgis azonos eredmnyt kapunk. A kr pldjnl maradva, ez azt jelenti, hogy he meg szeretnnk hatrozni a kr terlett, megadhatjuk hrom pontjt, vagy a kzppontjt s a sugart. Termszetesen minkt esetben ugyanazt az eredmnyt kapjuk. Eljrs alap nyelvekben, mint a C, kt, eltr nev eljrsra van szksg a terlet e kt mdon trtn kiszmtshoz C# is kettre van szksg, de ezek neve megegyezhet. Ha ezutn egy program a terletet szeretn kiszmolni, akkor csak meghvja ezt az eljrst, tadva a paramtereket, s program automatikusan eldnti, hogy melyik mdszerrel szmtsa ki az eredmnyt. A felhasznlnak gy nem kell foglalkoznia azzal, hogy melyik eljrst hvja meg az a program feladata. A tbbalaksg msik s taln fontosabb felhasznlsa az alkalmazkodst teszi lehetv, olyan adatok kezelst, melyekrl esetleg elzleg semmit sem tudunk. Tegyk fel, hogy klnbz alakzataink vannak hromszgek, ngyzetek s krk. Programunk a tbbalaksg segtsgvel kpes lehet ltalban az alakzatokkal dolgozni. Mivel hromszgek, ngyzetek s krk alakzatok, programunk kpes mindegyikk hasznlathoz alkalmazkodni. Az itt hasznlt programozsi mdszerek bonyolultabbak a szoksosnl, de hasznlatuk hihetetlen lehetsgeket adhat.

rklsAz rkls az objektumkzpont programozs legsszetettebb fogalma. Krkkel mr dolgoztunk mi legyen, ha gmbkkel kell foglalkoznunk? Nos, a gmb bizonyos rtelemben a kr tovbbfejlesztse, hiszen rendelkezik a kr jellemzivel, csak eggyel tbb dimenzija van. Azt is mondhatnnk, hogy a gmb egy klnleges krflesg, egy jabb dimenzival kiegsztve. Ha teht a kr segtsgvel ksztjk el a gmbnket, a gmb rklheti a kr tulajdonsgait. Az itt lertakat nevezzk ltalnossgban rklsnek.

jrahasznosthatsgAz objektumkzpont programozs hasznlatnak egyik legfontosabb clja az jrahasznosthatsg biztostsa. Ha ksztnk egy osztlyt, jrafelhasznlva ltrehozhatunk belle tbb objektumot is. Az rkls s ms korbban bemutatott lehetsgek hasznlatval eljrsokat kszthetnk, melyeket ksbb ms programokban, klnflekppen hasznlhatunk fel. Az egyes szolgltatsok egysgbe zrsval olyan eljrsokat hozhatunk ltre, melyek helyessgt j elre ellenrizhetjk, gy a ksbbiekben nem kell trdnnk a Ksztette: Zstr Csaba III. ves informatikus hallgat 12

C# Amit a C# tudni rdemes! mkds rszleteivel csak a helyes hasznlatra kell gyelni. gy ezen eljrsok jrafelhasznlsa egyszer s gyors lesz.

Objektumok s osztlyokAz osztly valjban egy ksbb ksztend elem meghatrozsa, szban forg elem pedig az objektum. Gyakran hasznlt prhuzam a stemnyforma. Ez a forma meghatrozza a sti alakjt, de nmaga nem stemny mg csak nem is ehet. A stemnyforma csak egy eszkz, mellyel stemnyeket kszthetnk. Hasznlatnl biztosak lehetnk abban, hogy a stik egyformk lesznek, s abban hogy nem fog elkopni akrmennyi stemnyt is ksztsnk. A stemnyformhoz hasonlan az osztlybl is tbb objektumot kszthetnk. gy, ha van pldul egy kr osztlyunk, ezzel szmos krt ltrehozhatunk. Amennyiben egy rajzprogramot ksztnk, elg, ha csak egyetlen kr osztllyal rendelkeznk a kr objektumok sokasga ennek segtsgvel ltrehozhat.

A C# modulrisA modulris azt jelenti, hogy a C# kdot, osztlyoknak nevezett kdrszletekbl kell sszelltanunk, melyek eljrsokat, gynevezett tagfggvnyeket (metdusokat) tartalmaznak. Ezeket az osztlyokat s tagfggvnyeket tbb helytt is felhasznlhatjuk, gy elkerlhetjk a felesleges, tbbszri kdolst. Egy msik, a C#-hoz kapcsold kifejezs a komponens. A C# segtsgvel ugyanis kszthetnk komponenseket (jrahasznosthat programelemeket) is, melyek ms alkalmazsokba gyazhat programok. A komponensek melyek nem felttlenl C# kdbl llnak sszetett programok ptelemeiknt szerepelhetnek.

.NET madrtvlatblA C# nyelv tervezsekor a .NET krnyezettel val egyttmkdst tartottk szem eltt. Ez a krnyezet tbb rszbl ll, kztk egy futsidej krnyezetbl, nhny elre meghatrozott eljrsbl, valamint az adatok trolsnak meghatrozott mdjaibl. A C# programok kpesek kihasznlni mindezek elnyeit. A futsidej krnyezetrl (CLR) mr volt sz a korbbiakban rviden rla csak annyit, hogy feladata a lefordtott C# program s az adott opercis rendszer sszektse. Az adatok szabvnyostott trolsrt a Common Type System (CTS), kzs tpusrendszer felel. Ez valjban trolsi tpusok egy csaldja, melyeket brmely hasznlhat. Pontosabban szlva, mindent, a .NET krnyezettel egyttmkd programnyelv ezeket a kzs tpusokat hasznlja. A kzs tpusok alkalmazsa lehetv teszi, hogy klnbz programok megosszk adataikat.

Ksztette: Zstr Csaba III. ves informatikus hallgat

13

C# Amit a C# tudni rdemes! A .NET krnyezet msik lnyeges eleme az elre meghatrozott eljrsok csaldja. Ezeket a .NET alaposztly-knyvtr (BCL) rszeiknt rhetjk el. Itt eljrsok ezrei segtenek C# programozsi feladataink megvalstsban gy tettek Hello, World! programunkban is, ahol agy ilyen eljrs vgezte a kiratst a konzolablakra, de az ablakok s vezrlk ksztsnl is ezek kapnak szerepet. Tovbbi eljrsok llnak rendelkezsre a fjlkezels feladataihoz, az XML kezelshez, a tbbfeladatossghoz s ms egyb feladatokhoz. A CTS, a BCL eljrsai, valamint a .NET krnyezet ms elemei ugyangy elrhetk ms .NET programozsi nyelvekben, mint a C#-ban. gy pldul a BCL eljrsai ugyanazok, mint a Microsoft VisualBasic.NET, a Microsoft J#.NET, vagy a JScript.NET ltal hasznltak.

A C# programokA C# alkalmazsok felptse3.1. kdszveg App.cs

// App.cs Bemutat C# alkalmazs // Nem baj, ha mg nem rtnk mindent, // ksbb vlaszt kapunk krdseinkre //----------------------------------------------using System; class App { public static void Main() { int radius = 4; const double PI = 3.14159; double area; area = PI * radius * radius; Console.WriteLine("Radius = {0}, PI = {1}", radius, PI ); Console.WriteLine("The area is {0}", area); } }

Kimenet: Radius = 4, PI = 3.14159 The area is 50.26544 Ismerkedjnk meg a 3.1.-es kdszveg rszleteivel:

Ksztette: Zstr Csaba III. ves informatikus hallgat

14

C# Amit a C# tudni rdemes!

A megjegyzsekrlA 3.1. kdszveg els ngy sora megjegyzs, vagyis olyan tjkoztat szveg, melyet a fordt figyelmen kvl hagy. Haszna a megjegyzsnek, hogy ezltal dokumentlni tudjuk a programunkat, ezltal knnyebb lesz majd a ksbbi fejleszts, hibajavts, s bvts, illetve msok szmra megjegyzseket tehetnk, hogy eligazodjanak a programunkban. A C#-ban hromfle megjegyzs van: Egysoros megjegyzs Ilyeneket tallunk a 3.1. kdszveg 1-4., valamint 12., 18. s 22. sorban. Alakjuk a kvetkez: // megjegyzs A kt perjel adja a megjegyzs kezdett innen a sor vgig a fordt mindent megjegyzsknt kezel. Az egysoros megjegyzseknek nem kell a sor elejn kezddnik, st llhat elttk C# kd is. A kt perjel utn azonban minden megjegyzsnek szmt. Tbbsoros megjegyzs A fenti pldban nem tallhat ilyen, de hasznlatra szksg lehet, ha azt szeretnnk, hogy egy megjegyzs tbb sorra terjedjen ki. Ilyenkor persze megtehetjk, hogy minden sor elejre kitesszk a kt perjelet, de hasznlhatunk valdi tbbsoros megjegyzseket is. A tbbsoros megjegyzseknek egy nyit s egy zr jelz hatrolja. Megjegyzs kezdetn egy perjelet, majd egy csillagot kell bernunk: /* Minden, amit ezutn kvetkezik, a megjegyzshez tartozik, egszen a vg jelzjig ez pedig egy csillag s egy perjel egymsutnja: */ Megjegyzs pldul a kvetkez: /* Ez egy megjegyzs */ vagy /* Ez szintn egy megjegyzs csak tbb sorban */ A tbbsoros megjegyzsek nem gyazhatk egymsba. Ez azt jelenti, hogy egy tbbsoros megjegyzs nem helyezhet el egy msik belsejben. Dokumentcis megjegyzs A C# rendelkezik egy klnleges megjegyzstpussal, ami lehetv teszi az automatikus kls dokumentlst. Ksztette: Zstr Csaba III. ves informatikus hallgat 15

C# Amit a C# tudni rdemes! Ezeket a megjegyzseket hrom perjellel vezeti be, s bennk hasznlhatjuk az XML stlus kdokat. Az XML egy adatok jellsre szolgl szabvny. Jllehet brmely XML kdot hasznlhatjuk, a C#-ban jellemzen a kvetkezk fordulnak el: ,,,,,,,< paramref>,,,,,, s . Ezeket megjegyzseket a 3.2 kdszveghez hasonlan helyezhetjk el kdunkban: 3.2 kdszveg Az XML megjegyzsek hasznlata Xmlapp.cs__________________________// Xmlapp.cs Bemutat C# alkalmazs // XML dokumentcival //----------------------------------------------/// /// sszefoglal lers az osztlyrl. /// /// Ez egy hosszabb megjegyzs melyben /// rszletesebben lerhatjuk az osztlyt. class Xmlapp { /// /// Az alkalmazs kezdpontja. /// /// paracssori paramterek felsorolsa public static void Main(string[] args) { System.Console.WriteLine("An XML Documented Program"); } } ____________________________________________________________________

Ha lefordtjuk s futtatjuk ezt a kdot, az albbi eredmnyt kapjuk: An XML Documented Program Ha hozz akarunk jutni az XML dokumentcihoz, a fordtst a korbbiaktl eltren kell elvgezni. A korbbi parancssorban el kell helyezni a /doc kapcsolt. Teht a kvetkezt kell begpelni: csc /doc:xmlfile Xmlapp.cs A fordts utn az elzvel megegyez kimenetet kapunk, de emellett hozzjutunk egy xmlfile nev fjlhoz, amely XML dokumentcit tartalmaz. A 3.2 kdszveg esetn a kapott file tartalma a kvetkez: Xmlapp

Ksztette: Zstr Csaba III. ves informatikus hallgat

16

C# Amit a C# tudni rdemes!sszefoglal lers az osztlyrl. Ez egy hosszabb megjegyzs melyben rszletesebben lerhatjuk az osztlyt. Az alkalmazs kezdpontja. paracssori paramterek felsorolsa

A C# alkalmazsok alapelemeiA programnyelvek alapja egy csokrnyi kulcssz, melyek klnleges jelentssel brnak. A szmtgpprogramok e kulcsszavak rendezett halmazbl llnak, kiegsztve nhny tovbbi szval s jellel. A C# nyelv kulcsfontossg rszei a kvetkezk: Trkzk C# kulcsszavak Literlok Azonostk

Formzs trkzkkelA 3.1 kdszveget gy formztuk, hogy a kd sorai igazodjanak egymshoz, megknnytve az olvasst. A formzshoz beillesztett res helyeket hvjuk trkzknek. Ezek lehetnek szkzk, tabultorok, jsor karakterek s kocsivisszk. A fordt szinte minden esetben figyelmen kvl hagyja a trkzket, gy akrmennyi szkzt, tabultort, vagy jsor karaktert beilleszthetnk a kdba. Nzzk pldul a 3.1 kdszveg 14. sort: int radius = 4; Ez egy jl formzott sor az elemek kztt egy-egy szkzzel. Ezeket a szkzket azonban tovbbiakkal is megtoldhatjuk: int Radius = 4 ;

Szt is trdelhetjk a sorokat: int radius = 4 ;

Ksztette: Zstr Csaba III. ves informatikus hallgat

17

C# Amit a C# tudni rdemes! Nos ez nem valami olvashat, de mkdik. A trkzket egyetlen esetben kell figyelembe vennnk az idzjelek kztt ll szvegekben. Ilyenkor ugyanis pontosan az jelenik meg a kpernyn, amit bertunk.

Kulcsszavak a C# nyelv alapkveiA kulcsszavak klnleges kifejezsek egyedi jelentssel, melyek a programnyelvek alapjt adjk. A C# kulcsszavait a 3.1. tblzatban soroljuk fel: 3.1. tblzat A C# kulcsszavai.abstract byte class delegate event fixed if internal new override readonly short struct try unsafe while as case const do explicit float implicit is null params ref sizeof switch typeof ushort base catch continue double extern for in lock object private return stackalloc this uint using bool char decimal else false foreach int long operator protected sbyte static throw ulong virtual break checked default enum finally goto interface namespace out public sealed string true unchecked void

Vannak ezen kvl a C# programokban nhny sz get, set s a value -, melyek nem kulcsszavak, csak foglaltak. Kezeljk ket kulcsszavakknt. A C# jvbeni vltozataiban vrhat, hogy a partial, a yield s a where is kulcsszavakk vlnak. Mivel mindegyiknek jelentse van a nyelv szempontjbl, termszetesen foglaltak, vagyis nem hasznlhatjuk ket sajt cljainkra.

LiterlokA literlok egyszer, rgztett rtkek. Jelentsk pontosan az, amit lerva ltunk bellk. gy a 4 s a 3.14159 egyarnt literlok, de literl az idzjelek kztt elhelyezett szveg is.

AzonostkA C# kulcsszavai s a literlok mellett vannak ms szavak is, melyeket hasznlhatunk C# programjainkban. E szavakat a fordt azonostknak tekinti. A 3.1. kdszveg szmos ilyet tartalmaz. Plda erre a 6. sorban a System, a 8. sorban a sample, a 14. sorban a radius, a 15. sorban a PI, a 16. sorban az area.

Ksztette: Zstr Csaba III. ves informatikus hallgat

18

C# Amit a C# tudni rdemes!

A C# alkalmazsok szerkezeteA szavakbl s kifejezsekbl mondatokat lltunk ssze, a mondatokbl pedig bekezdseket szerkesztnk. A trkzk, kulcsszavak, literlok s azonostk ugyangy az utastsok s kifejezsek alapjul szolglnak. Ezekbl pedig sszell maga a program.

Utastsok s kifejezsek a C#-banA kifejezs olyan kdrszlet, amelyek kulcsszavakbl llnak. A kvetkezk pldul egyszer kifejezsek: PI = 3.14159 PI * radius * radius Az utastsok a mondatokhoz hasonlthatk egy teljes gondolatot rnak le. Az utastsok vgt rendszerint egy rsjel jelzi nevezetesen egy pontosvessz ( ; ).

Az res utastsVan egy utasts, amelyet kln kell emltennk: ez az res utasts. Amint korbbam mondtuk, az utastsok pontosvesszvel vgzdnek megtehetjk azonban azt is, hogy egy sorba egyetlen, nmagban ll pontosvesszt tesznk. A kapott utasts nem csinl semmit hiszen nincs benne semmilyen vgrehajthat kifejezs.

Adattrols vltozkkalA vltozk voltakppen szmtgpnk memrijnak nvvel elltott rszei, gy ha programunk egy vltozra hivatkozik, voltakppen e trterlet tartalmt hasznljuk fel. Ha vltozkat akarunk hasznlni, tudnunk kell, miknt nevezzk el ket. A nvadskor az albbi szablyokat kell figyelembe venni: A nv betket, szmjegyeket s alhzs karaktereket ( _ ) tartalmazhat. A vltoznv els karaktere csak bet vagy alhzs karakter lehet, br az utbbi nem ajnlott, mivel gyakran hasznljk klnleges utastsoknl, s az olvashatsgot is rontja. A kis- s nagybetk klnbznek szmtanak, vagyis a Szamlalo s a szamlalo kt klnbz vltozt jell. A C# kulcsszavai nem hasznlhatk vltoznvknt, hiszen a C# nyelv rszei Nhny helyes s helytelen plda vltoznevekre: Vltoznv Szazalek y2x5_w7h3 eves_koltseg _2010_ado szamlalo#ell Helyessge helyes helyes helyes helyes, de nem ajnlott helytelen a # nem hasznlhat karakter 19

Ksztette: Zstr Csaba III. ves informatikus hallgat

C# Amit a C# tudni rdemes! double 9byte helytelen, hiszen C# kulcssz helytelen, ugyanis az els karakter szmjegy

A tiszta nagybets neveket ltalban llandknak adjuk.

A vltozk hasznlataMieltt egy vltozt hasznlatba vehetnnk, be kell vezetnnk. Ezzel elruljuk a fordtnak a vltoz nevt, valamint az ltala trolt adatok tpust. Ha olyan vltozt prblunk meg programunkban hasznlni, amit eltte nem vezettnk be, fordtsi hibt kapunk. A vltoz bevezetsvel a rendszer memrit foglal le szmra, a trolt adatok tpusnak azonostsa pedig lehetv teszi, hogy a rendszer a lehet legjobb teljestmnyt rje el, s ne pocskolja a memrit. A vltozkat a kvetkez alakban vezetjk be: tpusnv vltoznv; A tpusnv az alkalmazott adattpus nevt adja meg, a vltoznv jelentse pedig az ltalunk adott nevet jelenti, amivel hivatkozunk a vltozra. Pldul: int my_number; Tbb azonos tpus vltozt egy sorban is bevezethetnk, csak soroljuk fel ket a tpusnv utn vesszvel elvlasztva. Ezzel tmrebb tehetjk a kdot: int count, number, start;

rtkads a vltozknakA vltozk bevezetse utn vgre kvetkezhet a lnyeg: az rtkek trolsa. rtkads alakja a kvetkez: vltoznv = rtk; A vltoznv az ltalunk ltrehozott vltoz neve, az rtk pedig a benne trolni kvnt rtk. Ha pldul az 5-t szeretnnk trolni egy tarolt_szam nev vltozban a kvetkezt kell bernunk: int tarolt_szam = 5; Termszetesen az rtkads trtnhetett volna kt sorban is: int tarolt_szam; tarolt_szam = 5; A vltozk rtkt termszetesen meg is vltoztathatjuk csak rendeljnk hozz j rtket. Ksztette: Zstr Csaba III. ves informatikus hallgat 20

C# Amit a C# tudni rdemes!

Vltozk kezdrtk nlklHa egy vltozt gy hasznlunk, hogy eltte nem adtunk neki kezdrtket, hibt kapunk. A legegyszerbben akkor rendelhetnk rtket a vltozkhoz, amikor bevezetjk azokat. Ezt mindenkppen tegyk meg, mg ha ez az rtk idleges is. Ms nyelveken mint a C vagy a C++ - a fordts ilyen esetekben is vgbemegy, s a kirsnl, vagy a hasznlatnl megjelenik a memriban az adott helyen tallhat szemt. A C# meggtolja, hogy ilyesmi bekvetkezzen.

A C# adattpusaiKorbban lttuk, hogy egy vltoz bevezetsekor egyttal a tpust is meg kell adnunk. A C#ban a kvetkez tpus vltozkat vezethetjk be:Sbyte Byte Short Ushort Int Uint Long

8 bit eljeles 8 bit eljel nlkli 16 bit eljeles 16 bit eljel nlkli 32 bit eljeles 32 bit eljel nlkli 64 bit eljeles 64 bit eljel nlkli

-128 127 0 255 -32768 32767 0 65535 -2147483648 2147483647 0 4294967295 - 92233720368547758 92233720368547758 07 08 0 18446744073709551 615

Ulong

Lthatjuk, hogy a klnbz tpusoknak, klnbz memria igny van, illetve a rajtuk vgezhet matematikai mveletek vgrehajtsa is klnbz nehzsg lehet. A megfelel vltoztpust hasznlva biztosthatjuk, hogy programunk a lehet leghatkonyabban mkdjn. A kvetkezkben a szmszer adatokat ngy kategrira osztjuk: Egszek Lebegpontos szmok Tizedestrtek Logikai rtkek

Ksztette: Zstr Csaba III. ves informatikus hallgat

21

C# Amit a C# tudni rdemes!

Lebegpontos rtkekNem minden szm egsz, gy ha olyan szmokat szeretnnk trolni, melyekben tizedesjegyek szerepelnek, akkor itt is vlaszthatjuk a szm nagysgtl fgg tpust. Ezek a tpusok a kvetkezk:Float 7 1.5x10-45 Double 15 5x10-324

3.4x1038 1.7x10308

C#-ban ltezik egy tovbbi adattpus, melyben tizedes szmokat trolhatunk ez a decimal, melynek feladata a nagyobb pontossg biztostsa. Ha float vagy double rtkben troljuk a szmrtkeket, kerektsi hibkat kapunk, gy pldul, ha 10,00-bl kivonunk -,90et double vltozkat hasznlva az eredmny 0,99999999999999645 lehet a vrt 0,10 helyett. Ha a mveletet decimal rtkekkel vgezzk el, a kapott szm valban 0,10 lesz. A decimal tpus 16 bjton trolja a szmokat. rdekessge, hogy nem rendelkezik eljel nlkli alakkal, trolsi korltai pedig nagyjbl 1,0 x 10-28 s 7,9 x 10-28, emellett pontossga 28 jegyig terjed. A vltoz trolsra hasznlt memriamennyisg a tpustl fgg. A szmszer adatok mellett vannak a karakterek, melynek tpusa char. char karakter = a;

Logikai rtkekLogikai vagy Boole-rtkek. Sokszor tudnunk kell valamirl, hogy igaz-e vagy hamis a logikai rtkekkel ezt a tudst trolhatjuk a 0 vagy az 1 rtk formjban. A C# logikai adattpusnak neve bool, mely a memribl egy bjtot hast ki. rtke true (igaz) vagy false (hamis) lehet, ezek egyttal C# kulcsszavak is.

Adattpusok a .NET krnyezetbenA C# edig megismert adattpusait bool, sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, bool s decimal egyszer tpusoknak tekintettk. Tudjuk, hogy a C# programok a CLR krnyezetben futnak, ennek megfelelen minden eddig ismert adattpus megfelel egy, a CLR-ben, s gy a .NET krnyezetben hasznlt tpusnak. Ezeket az adattpusokat ppen e kzvetlen megfeleltets miatt mondjuk egyszereknek. A kvetkez tblzat mutatja be, hogy milyen C# adattpus milyen .NET krnyezetbeli adattpusnak felel meg. Egymsnak megfeleltetett adattpusok a C#-ban s a .NET-ben. C# adattpus sbyte byte short Ksztette: Zstr Csaba III. ves informatikus hallgat 22 .NET adattpus System.SByte System.Byte System.Int16

C# Amit a C# tudni rdemes! ushort int uint long ulong char float double bool decimal System.UInt16 System.Int32 System.UInt32 System.Int64 System.UInt64 System.Char System.Single System.Double System.Boolean System.Decimal

Ha egy egsz tpus vltozt .NET megfelelsvel szeretnnk bevezetni jllehet semmi okunk r -, a kvetkezkppen tehetjk meg: System.Int32 szam = 5; Megjegyzs: A CTS olyan szablyok csoportja, melyeknek a CLR adattpusai meg kell feleljenek. A C# egyszer adattpusai s a .NET tpusok kielgtik ezt a kvetelmnyt. Ha egy programnyelv kveti a CTS szablyait adattpusai elksztsben, a bennk trolt adatok sszeegyeztethetk lesznek ms, a CTS szablyainak megfelel nyelvekkel.

Literlok vagy vltozk?Sokszor elfordul, hogy a forrskdunkban konkrt szmot vagy rtket szeretnnk megadni. Az ilyen rtkek a literl rtkek vagyis pontosan azt tartalmazzk, amit a kpernyn lthatunk bellk. A kvetkez kt kdrszlet is egy literl: int x = 10; ez_igaz_string = Minden GAMF-os okos!; Szmos pldban tallhattunk mr szmrtk literlokkal. Egy ilyen rtk alaprtelmezs szerint int tpusnak szmt, ha egsz, s double tpusnak, ha lebegpontos. szam = 10; // 10 int tpus szmliterl, fggetlenl attl, // hogy a szam milyen tpus vltoz szamd = 99.9; szam_vegyes = // A 99.9 szintn szmliterl, most // azonban double 100.; // Ez tizedespont is double // miatt tpus a

Egsz literlokHa egsz rtket hasznlunk, ez nagysg szerint int, uint, long vagy ulong tpusok valamelyikbe kerl, attl fggen, hogy melyik adattpusba fr bele. Ksztette: Zstr Csaba III. ves informatikus hallgat 23

C# Amit a C# tudni rdemes! Ha magunk szeretnnk megadni a literl adattpust, megtehetjk csak biggyessznk hozz egy uttagot. Ha pldul a 10-et long tpusknt szeretnnk hasznlni, a kvetkezt rhatjuk: 10L. Az eljelnlklisget egy u uttag jelzi, ami a tpusra ural uttaggal kombinlhat.

Lebegpontos literlokAmint a korbbiakban emltettk, a tizedespontot tartalmaz literlok alaprtelmezs szerint double tpusak ha float tpusakk szeretnnk tenni valamelyiket, csak rjuk utna az f vagy az F bett: my_float = 4.4f; Ha decimal tpust szeretnnk hasznlni, a megfelel uttag az m, illetve az M. Ezt az albbiak szerint hasznlhatjuk: my_decimal = 1.32m;

Logikai literlokA logikai (Boole) literlokrl mr ejtettnk szt a korbbiakban csak kt ilyen ltezik a true s a false, melyek egyttal kulcsszavak is a C#-ban.

Karakterlnc literlokA karakterek csoportjaibl szavakat, kifejezseket, majd mondatokat llthatunk ssze. A karakterek csoportjait karakterlncoknak nevezzk, megadsuk idzjelek kztt trtnhet.. Pldnak okrt a Console.WriteLine eljrs karakterlncokat fogad. A karakterlnc literl brmilyen, idzjelek kz helyezett karaktercsoport lehet: Hell vilg! 123456789

llandk ltrehozsaA literlok mellet sokszor szksg van olyan vltozkra is, melyek rtkt befagyasztjuk. gy ha pldul bevezetnk egy PI nev vltozt, s elhelyezzk benne a 3.14159 rtket, kvnhatjuk tle, hogy ettl kezdve ne vltozzon, hiszen semmi nem indokolja a mdostst st, ez krt is okozna a programunk mkdsben. Ha azt szeretnnk, hogy vltoznk rtke lland (konstans) maradjon, vezessk be a const kulcsszval.: const float PI = 3.14159;

Ksztette: Zstr Csaba III. ves informatikus hallgat

24

C# Amit a C# tudni rdemes!

Hivatkozsi tpusokA C# az adatok trolsnak alapveten ktfle mdjt ismeri: az rtk s a hivatkozs szerinti trolst. Az eddigiekben megismert alapvet adattpusok rtk szerinti trolsak. Ha egy vltoz rtk szerint trolja az adatokat, akkor valban kzvetlenl az adatokat tartalmazza. A hivatkozs szerinti trols ennl bonyolultabb ilyenkor ugyanis nem kzvetlenl az adatokat, hanem azok cmt troljuk a vltozban, vagyis egy hivatkozst rjuk. A C#-ban a kvetkez adattpusok hasznlnak hivatkozs szerinti trolst: Osztlyok Karakterlncok Felletek Tmbk Kpviselk

Mveletek a C#-banAlapvet adatok megjelentseKt szban forg eljrst kell megismernnk, melyet mr eddig is hasznlunk a pldk sorn, melyekkel brmit a kpernyre rhattunk. Ez a kt eljrs a kvetkez: System.Console.WriteLine() System.Console.Write()

Mindkett adatokat r a kpernyre, egy apr klnbsggel. A WriteLine() az adatok kirsa utn j sort kezd, mg a Write() nem. Hasznlata: System.Console.WriteLine(Hell vilg!!); Az idzjelek kz helyezett szvegek kirsa mellett msfajta rtkeket is megjelenthetnk. int nbr = 456; System.Console.WriteLine(me egy szm: {0},nbr); Ez eredmny a kvetkez lesz a kpernyn: me egy szm: 456 Lthatjuk, hogy a {0} helyt az idzjelbe tett szveget kvet rtk vette t. De nem csak egy rtk helyettesthet be egyms utn sorszmokkal behelyettesthetjk a tovbbi megadott rtkeket is: System.Console.WriteLine(Az 1.rtk {0}, a 2.pedig {1},123, Csaba);

Ksztette: Zstr Csaba III. ves informatikus hallgat

25

C# Amit a C# tudni rdemes! A kpernyn a kvetkez jelenik meg: Az 1.rtk 123, a 2.pedig Csaba A szmozs mindig nullval kezddik!

Vltozk rtknek mdostsa mveletekkelA mveletek a kvetkez kategrikba sorolhatk: Az alapvet rtkad mveletek Matematikai mveletek Viszonyt mveletek (sszehasonlt mveletek) Feltteles mveletek Egyb mveletek

Emellett meg kell ismerkednnk a mveleti jelek hasznlatval is eszerint hromfle mvelet ismeretes a C# nyelvben: Egyvltozs mvelet (unris mvelet) Ktvltozs mvelet (binris mvelet) Hromvltozs mvelet (ternris mvelet)

Egyvltozs mveletekAz egyvltozs mveletek a nevkbl kvetkezen egyetlen vltozra hatnak. ltalnos alakja: [mveleti jel] [vltoz] vagy [vltoz][mveleti jel] Plda: -x;

Ktvltozs mveletekNem meglep mdon a ktvltozs mveletek mkdshez kt vltozra van szksg ilyen pldul az sszeads mvelete. Hasznlatul ltalnos alakja a kvetkez: [vltoz1][mveleti jel][vltoz2] Plda:

Ksztette: Zstr Csaba III. ves informatikus hallgat

26

C# Amit a C# tudni rdemes! 3.3. Kt vltoz sszege OsszApp.csusing System; namespace OsszApp { class Class1 { static void Main(string[] args) { int valt1=15; int valt2=20; int eredmeny; eredmeny = valt1+valt2; } } } Console.WriteLine("A kt tag sszege: {0}",eredmeny);

Hromvltozs mveletekAz ide tartoz mveletek a hrom kategria kzl a legsszetettebbek. A C# egyetlen egy ilyet tartalmaz a feltteles mvelet. Alakja a kvetkez: Felttel ? utasts_ha_igaz : utasts_ha_hamis;

sszetett aritmetikai rtkad mveletekMveleti jel += -= *= /= %= Hasznlati alakja x += 4 x -= 4 x *= 4 x /= 4 x %= 4 Kifejtse x=x +4 x=x4 x=x*4 x=x/4 x=x%4

Ezek az sszetett mveletek lehetv teszik, hogy egyszerre vgezznk el egy aritmetikai mvelet s egy rtkadst.

Egyvltozs aritmetikai mveletekAz eddig ltott aritmetikai mveletek mind ktvltozsak voltak. Ltezik azonban kt olyan is, melynek csak egyetlen vltozra van szksgk a nvels (++) s a cskkents (--) Ezek eggyel nvelik, illetve cskkentik a vltozk rtkt. ++x; //x rtkt eggyel megnveltk

Ksztette: Zstr Csaba III. ves informatikus hallgat

27

C# Amit a C# tudni rdemes! --y, //y rtkt eggyel cskkentettk

Meg kell jegyezni, hogy a ++x nem ugyanaz, mint a x++. Ugyanis a ++x-nl elzetes , mg az x++-nl utlagos nvelst vgeztnk. Ez azt jelenti, hogy az els esetben megnveljk az x rtkt eggyel s gy vehetjk hasznlatba, mg a msodiknl elbb hasznlatba veszzk, majd utna nveljk meg eggyel az rtket. Termszetesen ez vonatkozik a cskkent mveletre is. (--)

sszehasonlts viszonyt mveletekProgramjainkban sokszor fontos szerep jut rtkek sszehasonltsnak, amihez viszonyt mveleteket (sszehasonlt mveleteket, relcis opertorokat) hasznlhatunk. Ezek pedig a kvetkezk:

Viszonyt mveletek Mveleti jel > < == != >= 10 5 = = 10 5 != 10 5 kisebb, mint a 10, teht igaz 5 nem nagyobb, mint a 10, teht hamis 5 nem egyenl 10, teht hamis 5 nem egyenl 10, teht igaz

Az if utastsA viszonyt mveletek valdi rtke az, hogy segtsgkkel dntseket hozhatunk, melyek befolysolhatjk a program futsnak menett. Mindebben az if kulcssz siet segtsgnkre. Az if kulcsszval kt rtket hasonltunk ssze; hasznlati alakja a kvetkez: if (val1 [mveleti jel] val2) utasts(ok); Ha a val1 s a val2 kzti sszehasonlts eredmnye true, a program vgrehajtja a megadott utasts, ellenkez esetben tugorja azt. Ksztette: Zstr Csaba III. ves informatikus hallgat 28

C# Amit a C# tudni rdemes! Megeshet, hogy egyszerre tbb felttel teljeslst kell ellenriznnk. Erre a feladatra szolgl az AND (&&) s az OR (||). Nzznk erre egy egyszer pldt: if(sex = = female && age >=21) { //Az adott szemly legalbb 21 ves s n(female). } vagy if(sex = = female || age >=21) { //Az adott szemly n, vagy legalbb 21 ves }

A mveletek kirtkelsi sorrendjeA mveleteket igen ritkn hasznljuk magukban, gyakoribb, hogy egyetlen utastsban tbb is szerepel. Ilyenkor azonban figyelni kell arra, hogy a mveleteknek megvan a maga prioritsi sorrendje. Teht megvan, hogy melyik mvelet vgzdik el elbb, ez nevezik a mveletek kirtkelsi sorrendjnek (opertor-precedencia). Ezen sorrendet mutatja be a kvetkez tblzat: A mveletek kirtkelsi sorrendje. Szint 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Mvelettpus Elsdleges Egyvltozs Multiplikatv Additv Eltolsi Viszonyt Egyenlsgi Logikai AND Logikai XOR Logikai OR Feltteles AND Feltteles OR Feltteles mvelet rtkads Mveletek ( ) . [ ] x++ xnew typeof sizeof checked unchecked + - ! ~ ++x x * / % + > < > = is == != & ^ | && || ?: = *= /= %= += -= = &= ^=

____________________________________________________________________________

Ksztette: Zstr Csaba III. ves informatikus hallgat

29

C# Amit a C# tudni rdemes! A kirtkelsi sorrendet megvltoztathatjuk a zrjelek segtsgvel ( ). Mivel a zrjelek magasabb szinten vannak, mint a mveletek, bennk tallhat kifejezsek kirtkelse elbb trtnik meg, mint a rajtuk kvl lvk.

Adattpusok talaktsaHa ttrnk egy adattpusrl egy msikra, t kell alaktani az adatainkat, st, erre az talaktsra akkor is szksg lehet, ha egy mveletben kt klnbz tpus adat is rszt vesz. Az talaktsnak kt tpusa ismeretes: az automatikus (rejtett, belertett, implicit) s a knyszertett (kifejezett, meghatrozott, explicit) talakts. Az automatikus talaktsok nmkden, hiba nlkl vgbemennek. A knyszertett talaktsok esetben az talaktst a programoz knyszerti ki. Ennek alakja a kvetkez: ClVltoz (adattpus) KiindulsiVltoz; Plda erre: int intszam = 0; long longszam = 1234; intszam = (int)longszam; A tpusknyszerts hasznlatnl a programoz felelssge annak ellenrzse, hogy a vltoz valban kpes befogadni az talaktott rtket. Ha nem kpes, az adatok csonkolst, vagy ms mdostst szenvednek. Knyszertett talaktsra szmos esetben lehet szksgnk: Ahol knyszertett talaktsra van szksg Kiindulsi tpus sbyte byte short ushort int uint long ulong char float double decimal Cltpus byte, ushort, uint, ulong, char sbyte, char sbyte, byte, ushort, uint, ulong, char sbyte, byte, short, char sbyte, byte, short, ushort, uint, ulong, char sbyte, byte, short, ushort, int, char sbyte, byte, short, ushort, int, uint, ulong, char sbyte, byte, short, ushort, int, uint, long, char sbyte, byte, short sbyte, byte, short, ushort, int, uint, long, ulong, char, decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double

Ksztette: Zstr Csaba III. ves informatikus hallgat

30

C# Amit a C# tudni rdemes!

TpuslptetsAz automatikus talaktsok szerepet kapnak a mveletek mkdse sorn is hasznlatukra a tpuslptetsnl (operator promotion) kerl sor. Erre akkor van szksg, amikor kt vltozn valamilyen matematikai alapmveletet vgznk, s tpusuk nem azonos. Pldul, ha egy byte tpus vltozt egy int tpushoz szeretnnk adni, a program elbb int tpusv alaktja. Minden int-nl kisebb szmvltoz int tpusv vlik, az int-nl bvebb tpusok pedig az albbi sorrendet veszik t egyms szerept: int uint long ulong float double decimal

A program mkdsnek szablyozsaA program menetnek egyszer megvltoztatsa szmos elnnyel kecsegtet, ahogy pedig egyre tbb programozsi tapasztalatot szerznk, ltni fogjuk, hogy milyen nagy szksg van kdrszletek ismtlsre, tugrsra, vagy tbb kdrszlet kzti vlasztsra. Akrmilyen mdon szeretnnk is beleszlni a program menetbe, a C# lehetsget ad tletnk megvalstsra. E lehetsgek alapveten kt csoportba tartoznak: Kivlaszt utastsok Bejr utastsok

Kivlaszt utastsokA kivlaszt utastsok lehetv teszik, hogy egy felttel eredmnytl fggen vlasszunk bizonyos kdrszletek vgrehajtsa kztt. Ide tartozik a korbban mr megismert if, de a ksbbiekben trgyalt switch is ilyen utasts.

Ismt az ifEleventsk fel, hogy hogyan is mkdik az if utasts: if(gender == m || gender == f) { System.Console.WriteLine(The gender is valid); } if(gender != m && gender != f) { System.Console.WriteLine(The gender value, {0} valid,gender); Ksztette: Zstr Csaba III. ves informatikus hallgat 31

is

not

C# Amit a C# tudni rdemes! } Ezen kd hatkonysgnak nvelse rdekben a C# hasznlatba veszi az if-else utasts szerkezet, melynek hasznlata a kvetkez: if(felttel) { //utasits(ok); } else { //ha az if felttele hamis a program vgrehajtja az itt ll kdot } Lthat, hogy az else lehetsget ad arra, hogy megadjuk egy kdrszletet, melyet a program akkor hajt vgre, ha az if felttele nem teljesl, vagyis hamis eredmnyt szolgltat.

Az if utastsok begyazsaA begyazs egyszeren azt jelenti, hogy egy utastst egy msikon bell helyeznk el. A C#ban szinte minden vezrl utasts begyazhat trsaiba. Ha if utastst szeretnnk egy msikba gyazni, egyszeren helyezzk el a msik kdblokkjban. Pldul: if(gender == m) { //frfirl van sz } else { if(gender == m) { //nrl van sz } else { //se nem n, se nem frfi } } A begyazs sokszor leegyszersti a programozst, de lehetsgnk van arra is, hogy az if utastsokat felhalmozzuk.

Ksztette: Zstr Csaba III. ves informatikus hallgat

32

C# Amit a C# tudni rdemes!

Az if utastsok felhalmozsaAz if utastsok halmozsnl az else utastst jabb if-fel egyestjk. Nzznk erre egy pldt: 3.3 Az if-else utastsok felhalmozsaclass Stacked { static void Main() { char gender = 'x'; if( gender == 'm' ) { System.Console.WriteLine("The gender is male"); } else if ( gender == 'f' ) { System.Console.WriteLine("The gender is female"); } else { System.Console.WriteLine("The gender value, {0}, is not valid", gender); } System.Console.WriteLine("The if statement is now over!"); } } ___________________________________________________________________________________________

A switch utastsA C# lehetsget ad arra is, hogy egy vltoz rtke alapjn dntseket hozzunk rendelkezsnkre bocstja a switch utastst. Hasznlatnak alakja a kvetkez: switch(rtk) { case eredmny_1: //az eredmny_1-hez tartoz kd break; case eredmny_2: //az eredmny_2-hez tartoz kd break; ... case eredmny_n: //az eredmny_n-hez tartoz kd break; default: //az alaprtelmezsben vgrehajtott kd break; }

Ksztette: Zstr Csaba III. ves informatikus hallgat

33

C# Amit a C# tudni rdemes! Lthatjuk, hogy ebben az utastsban nincsenek felttelek egy rtk szerepel helyettk. Ez az rtk lehet egy kifejezs eredmnye, vagy akr egy vltoz is. Ezt hasonltja ssze a program a case utastsoknl megadott rtkekkel, mg egyezst nem tall. Ha nincs egyezs, vgrehajtja a default utastsban megadott kdot vagy ha ilyen nincs, tovbblp a switch utni els kdsorra. Ha a program, egyezst tallt, vgrehajtja az ott megadott kdot, ha pedig egy jabb case utastshoz r, a switch utastsnak vge szakad. gy legfeljebb egy case tartalma hajthat vgre, ezutn a vezrls a switch utni els utastshoz kerl. Nzznk erre is egy pldt: 3.4 Kockadobs a switch utastssalclass roll { public static void Main() { int roll = 0; // A kvetkez kt sorban a dobas (roll) rtkt egy 1 s 6 kzti //vletlen szmmal azonostjuk System.Random rnd = new System.Random(); roll = (int) rnd.Next(1,7); System.Console.WriteLine("Starting the switch... "); switch (roll) { case 1: System.Console.WriteLine("Roll is 1"); break; case 2: case 3: case 4: case 5: case 6: default: System.Console.WriteLine("Roll is 2"); break; System.Console.WriteLine("Roll is 3"); break; System.Console.WriteLine("Roll is 4"); break; System.Console.WriteLine("Roll is 5"); break; System.Console.WriteLine("Roll is 6"); break; System.Console.WriteLine("Roll is not 1 through 6"); break; } System.Console.WriteLine("The switch statement is now over!"); } }

Ksztette: Zstr Csaba III. ves informatikus hallgat

34

C# Amit a C# tudni rdemes!

Egy kd tbb esetSokszor addhat olyan helyzet, hogy tbb rtk esetben ugyanazt a kdrszletet szeretnnk futtatni. gy ha az elz pldnl maradva a pros oldalakat szeretnnk kiratni, mikor azt dobunk, csoportosthatjuk a case utastsokat. Alakja a kvetkez: switch (roll) { case 1: case 3: case 5: System.Console.WriteLine(A dobs pratlan!); break; case 2: case 4: case 6: System.Console.WriteLine(A dobs pros!); Break; default: System.Console.WriteLine(A kztt); } Ms nyelvekben gy a C++-ban is tbb case utastssal futtathatjuk ugyanazt a kdot, ha elhagyjuk a break utastsokat. Ilyenkor a tugrik a kvetkez case utastsra. Fontos tudnunk, hogy a C#-ban ez nem megengedett a program nem ugorhat t egyik case utastsrl a msikra. Ez azt jelenti, hogy ha csoportokba szeretnnk rendezni a case utastsokat, nem helyezhetnk el kzttk kdot. Ezt csak egy csoport utols case utastsa utn tehetjk meg. Lehetsgnk van arra is, hogy egy switch utastson bell tbb case-hez tartoz kdrszletet is vgrehajtsunk. Erre a goto utasts ad lehetsget, amellyel valamelyik case-hez vagy a default parancshoz ugorhatunk. Az albbi kdrszlet a korbban megismert switch utastst mutatja ezttal a goto hasznlatval kiegsztve:switch (roll) { case 1: case 2: case 3: goto case 5; break; goto case 6; break; goto case 5; break;

dobs

nincs

1

s

6

Ksztette: Zstr Csaba III. ves informatikus hallgat

35

C# Amit a C# tudni rdemes!case 4: goto case 6; break; case 5: System.Console.WriteLine(A dobs pratlan!); break; case 6: System.Console.WriteLine(A dobs nincs 1 s 6 kztt); Break; }

A switch utasts vezrl tpusaiA switch utastsok vezrlsre csak meghatrozott tpusok hasznlhatk ezek a kvetkezk: sbyte,byte,short,ushort,int,uint,long,ulong, s char, valamint karakterlncok, s egy msik tpus, melynek neve enum. Ha a dntshez hasznlt kifejezs eredmnye nem e tpusokbl val, kell hogy legyen egy egyrtelm bels talakts, amely talaktja ezek valamelyikre. Ha nincs ilyen, vagy tbb van, a fordt hibazenetet ad.

Bejr utastsokA kivlaszt utastsok mellett a program menetr gy is mdosthatjuk, ha egyes rszleteket megismtlnk. E clra a C# szmos bejr utastst bocst rendelkezsnkre, amelyek egy adott kdrszletet tbbszr kpesek vgrehajtani. Ezt nevezzk bejrknak (iterci). A C# bejr utastsai a kvetkezk: while do for foreach

A while utastsA while segtsgvel egy kdrszletet mindaddig ismtelhetnk, mg egy megadott felttel igaz. Hasznlati alakja a kvetkez: while (felttel) { utasts(ok); }

Ksztette: Zstr Csaba III. ves informatikus hallgat

36

C# Amit a C# tudni rdemes!

Kiugrs a while utastsbl s a ciklus folytatsaLehetsges a while utasts befejezse, mieltt a felttel hamiss vlna, de arra is mdunk van, hogy egy bejrst a hozz tartoz utastsok mindegyiknek vgrehajtsa eltt befejezznk. Ha ki szeretnnk lpni a while utastsbl, a break parancsot hasznlhatjuk, ami azonnal tadja a vezrlst a while utni els utastsnak. A while utastsban tovbbugorhatunk a kvetkez bejrsra is erre szolgl a continue. Hasznlata esetn a vezrls visszakerl a while felttelhez. A kvetkez plda a while, a break s a continue hasznlatt mutatja be: 3.5 A while, a break s a continue hasznlataclass even { public static void Main() { int ctr = 0; while (true) { ctr++; if (ctr > 10 ) { break; } else if ( (ctr % 2) == 1 ) { continue; } else { System.Console.WriteLine("...{0}...", ctr); }

} }

} System.Console.WriteLine("Done!");

A do utastsHa a while utasts felttele az els ellenrzskor hamis, az utastshoz tartoz kdblokk vgrehajtsra soha nem kerl sor. G