C# develop feladatleírások A C# (kiejtése: szí-sárp) a Microsoft által a.net keretrendszer részeként kifejlesztett objektumorientált programozási nyelv. A nyelv alapjául a C++ és a Java szolgált. A C# fejlesztését döntően befolyásolta, hogy a Microsoft a saját Java keretkörnyezetét a saját operációs-rendszer specifikus függvényeivel és szolgáltatásaival bővítette ki, melyre nem volt engedélye, ezért a Java fejlesztői beperelték őket, mivel így számos Java alkalmazás csak Windows rendszerben volt képes működni. Ezt követően a Microsoft a Java eltávolítására kényszerült a Windows rendszerekből (természetesen a Java-t a továbbiakban is lehet külön rendszerként telepíteni) és egy saját keretrendszer fejlesztésébe kezdett. Ez lett a.net (kiejtése: dotnet), és ezen keretrendszerhez adták ki nyelvként a C# első verzióját. A későbbiekben ezt a nyelvet úgy fejlesztették tovább, hogy meglegyen az egyensúly a programozó nyelvi szabadsága és a gyors alkalmazásfejlesztés lehetősége között. A C# főleg azoknak való, akik gyorsan szeretnének látványos eredményeket elérni, akár minimális programozói tehetséggel és tudással. Rengeteg hivatalosan kiadott bővítmény létezik hozzá, amelyek a kódolást könnyebbé teszik. Bővebben olvasnivaló: A csharp-ekf.pdf 23-27. oldal Telepítés: A SharpDevelop egy nyílt forráskódú fejlesztő rendszer. Azért ezt választottam, az egyébként szintén ingyenes Microsoft C# helyet, mert továbbra is ellenérzésem van a microsoft erőszakos kereskedelmi terjedésével szemben. http://www.icsharpcode.net/opensource/sd/download/ Ennek a dokumentumnak a készítésekor a SharpDevelop 4.1 volt a legfrissebb verzió. A program telepítése előtt telepíteni kell a teljes.net 4.0-as keret rendszert. http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17718 Majd a fejlesztő eszköztárat a windows 7 hez (Microsoft Windows SDK for windows 7) http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8279 Harmadik lépésként a programot. http://sourceforge.net/projects/sharpdevelop/files/sharpdevelop%204.x/4.1/sharpdevelop_4.1.0.8 000_Setup.msi/download Hallgatóimnak a mellékelt könyvtárban a következő telepítő állományokat tettem a hálózati meghajtóra: 1-dotNetFx40_Full_x86_x64.exe 2-winsdk_web.exe * //Ez webinstaller állomány, tehát online kapcsolat kell a telepítő indításához 3-SharpDevelop_4.1.0.8000_Setup.exe A számok a telepítés sorrendjét jelzi. * GRMSDK_EN_DVD.iso állomány a telepítő csomag DVD kép, amely egy virtuális DVD programmal megnyitható és így online internet kapcsolat nélkül is telepíthető az eszközkészlet.
A program indítása A SharpDevelop 4.1 indítása után az indító képernyő jelenik meg, amely felsorolja, az eddig megkezdet megoldásokat (solution) vagy indíthatsz új megoldást (New solution). Most a New solution gombot válaszd. A megjelenő New project ablakban ki kell választanod, milyen típusú felületre szeretnél fejleszteni. A teljesség igénye nélkül néhány: 1) Windows Applications a) Console application szöveges felületen futó alkalmazás b) Windows application windows alkalmazás 2) ASP-NET a) ASP.NET webpage ASP.NET web alkalmazás 3) ASP.NET MVC a) MVC application ASP.NET alapú Modell-View-Controller tervezési alkalmazás A legegyszerűbb az lenne, ha a Console Application fejlesztenénk, hiszen megkímélhetnénk magunkat az eseménykezelés és a bonyolult FORM kezelés valamint objektumok maceráitól és pusztán a jó öreg programozási tételek és algoritmusaik varázslatos világában járhatnánk. Mi azonban nem így teszünk. Hanem egyből Windows Applications fejlesztünk, és közben megismerkedünk a programozási tételekkel.
1. Küldetés: Kezeld az eseményeket! A küldetés célja, hogy néhány alapeseményt, mint például kattintás, dupla kattintás, objektum felé kerülő egérkurzor, objektumot elhagyó egérkurzor eseményekre reagálj. Add az esemenyek nevet (Name), majd tallózd be az a könyvtárat, amelyikben a project könyvtárstruktúráját végre fogod hozni (Location). Mielőtt azonban Create gombot megnyomnánk, állítsuk be, melyik.net keretrendszert akarjuk használni. Nekünk elég a.net Framework 2.0. Kattints a Create gombra ezzel létrehoztad az esemenyek projectet. A project forráskódját látod, a szerkesztő felületen, de mielőtt hozzáfognánk a fejlesztéshez, nézzük meg a kezelőfelületét. Menü és eszköztár felül a szokásos menüpontok a File, ahol a project mentését, nyomtatását tudjuk megoldani és a Project, ahonnan például futtatni tudjak az alkalmazásunkat. A bal oldali panel a Project és a Tools panelt tartalmazza. A Project fülre kattintással megtekintheted a projected szerkezetét. Bármelyik elemére kattintasz a jobb oldali Properties panelban megnézheted a tulajdonságait. A Tools a programozást segítő eszközöket tartalmazza változó tartalommal, ugyanis igazodik ahhoz, hogy a középső szerkesztő panel, a MainForm.cs, milyen nézetben van. Source (forrás kód) vagy Design (megjelenés).
A jobb oldali panel tehát alapértelmezetten a Properties (tulajdonság) panelt tartalmazza, azonban átválthatunk a Classes (osztályok) panelra is, amelyikben az összes projectben alkalmazott objectum osztály megtekinthetjük. A szerkesztő panel alatt az Error panel található, ahol a program fordítása és futása során keletkezett hibaüzeneteket tekintheted meg. Most, hogy megismerkedtél a felülettel, kezdjük meg a feladat megoldását. Jelenítsd meg a jobb oldali panelban a Tools panelt, a szerkesztő ablakban pedig a Design panelt. A Tools panelban nyisd ki a Windows Form csoportot. Az eseményeket különböző objektumokon fogjuk vizsgálni. Ezek rendre Label (cimke), Button (gomb) és TextBox (Beviteli mező). Helyezd el a képen látható objektumokat a Form-on úgy, ahogy a mellékelt kép mutatja. Kijelölöd az objektumot a Tools panelen, majd a Szerkesztő területen rajzold meg az objektumot. Mindegy hogy sikerül megrajzolnod az objektumot, mert utána méretezheted, mozgathatod, sőt az elhelyezéséhez is kapsz segítséget vezető vonalak formájában.
Csak az élvezet kedvéért fordítsd le és futtasd a programod. Mentsd el (CTRL + S) vagy File menü Save, majd a Project menü Run Project menüpontját válaszd. Érdemes megfigyelni a menü elé rajzolt ikont, mert ezt az eszköztáron is megtalálod. Kis gondolkodás után megjelenik (elindul) az esemenyek alkalmazás, amelyen címke, gomb és beviteli mező található és működnek is. lehet nyomogatni, beleírni, de nem történik semmi. Az egyetlen, ami működik a Bezárás gomb az alkalmazás jobb felső sarkában (piros x). Használd! Először az objektumok tulajdonságait állítsuk be. A szerkesztő területen a Form fejlécére kattints. A jobb oldali Properties panelen megjelent az összes tulajdonsága a programablaknak (Form). Nézzünk néhányat: Properties Tulajdonság MainForm Programablak BackColor Háttér szín Font Általános betű típusa, mérete, stb ForeColor Általános betűszín FormBorderStyle Ablak stílusa Sizeable: Méretetezhető FixedSingle: Nem méretezhető Text A fejléc felirata A listában lejjebb még: Enabled - engedélyezett-e a használata? Visible - Látható-e (Name) objektum neve ControlBox Min, Max és Close gombok megjelenése (True vagy False) Opacity - átlátszósága Icon - saját alkalmazás ikon
Módosítsd a következő tulajdonságokat: (Mindig jelöld ki azt az objektumot a Form-on, amelyiknek a tulajdonságát módosítani szeretnéd. MainForm Text Események BackColor 255; 255; 192 (Halványsárga) Label1 (Name) cimke Text (Legyen üres) BackColor 255; 128; 0 (Narancssárga) Button1 (Name) gomb Text Gomb TextBox (Name) szoveg A (Name) tulajdonságnál ügyelj arra, hogy a C# Case Sensitive (Kis és nagybetű érzékeny), valamint, hogy csak az angol abc karakterei használhatók. (ASCII) Illessz be még egy Label-t (címkét), most itt tart a project: A label2 (Name) tulajdonsága legyen esemeny. Ezzel készen is vagy a megjelenés és a projectben használt objektumok tulajdonságainak beállításával. Kezdődhet az események kezelése!
Eseménykezelés A Properties panel nem csak az objektum tulajdonságait mutatja meg, hanem a rajtuk értelmezett eseményeket is. Events (esemény) A felhasználó által kezdeményezett művelet (Action) MouseClick Bal egérgomb kattintás MouseDoubleClick Bal egérgomb duplakattintás (Focus) Enter Az objektum fókuszba került, textbox esetén pl. belekattintasz Leave Elhagyod az objektumot (Mouse) MouseEnter Az egér az objektum felé ér MouseLeave Az egér elhagyta az objektumot MouseDown Lenyomtad a bal egérgombot MouseUp Felengedted a bal egérgombot (Property changed) TextChanged A TextBox-ban lévő szöveg megváltozott. nevű Label. Válaszd ki az objektumot, amelyiknek az eseményét figyelni szeretnéd. Most legyen a címke A Properties panelen kattints duplán arra az eseményre, amelyikre az alkalmazásnak reagálni kell. Először a MouseClick eseményre reagáljon az alkalmazásunk. A dupla kattintásunk eredménye a következő képernyő:
A MainForm.cs kiegészült egy függvénnyel (void). Függvény neve CimkeMouseClick(). A kapcsos zárójelek közé kell írni az okat az utasításokat, amelyeket az alkalmazásnak végre kell hajtani, ha a felhasználó rákattint a címke nevű Label-re. void CimkeMouseClick(object sender, MouseEventArgs e) { esemeny.text = "A címkére kattintottál!"; } Mentsd el a Projectet és futtasd le! Kattints a címkére és láss csodát! Az esemeny nevű címke, amelynek az eredeti Text tulajdonsága az, hogy label2 a kattintás után a A címkére kattintottál! felíratott tartalmazza! Az utasítás amit beírtál megváltoztatatta az esemeny nevű objektum Text tulajdonságát az idézett szövegre.
2. Küldetés Elmélet elolvasni: a prg_elm.pdf 3-7 oldal. A számítógépes feladatmegoldás lépései 1. A feladat meghatározása 2. Algoritmuskészítés 3. Kódolás: programkészítés (a szg. számára érthető algoritmus írása, fordítása) 4. Tesztelés, hibakeresés, javítás 5. Hatékonyságvizsgálat 6. Dokumentálás Sorozathoz érték rendelése T1. Összegzés tétele: Általános feladat: Adott egy N elemű számsorozat. Számoljuk ki az elemek összegét! Tomb(N-1) N elemű sorozatot tartalmazó tömb (vektor) Program Osszegzes: Tomb[] sum:=0 Ciklus i=0 tól N-1-ig sum:=sum+tomb[i] Ciklus vége Program vége Az általános algoritmus kódolását C# Windows Application segítségével oldjuk meg. Ám mielőtt elkezdenénk, nézzük meg egy nyomkövető táblázat segítségével, hogy mi is történik az algoritmus végrehajtása során. Tomb[] = {7,3,5,4,1} N = 5 sum = 0 sum i i<n Tomb[i] 0 0 igaz 7 7 1 igaz 3 10 2 igaz 5 15 3 igaz 4 19 4 igaz 1 20 5 hamis null A táblázat a változók tartalmának változását és a logikai feltételek értékét mutatja. Kezdjük a kódolást! Indítsd el a SharpDevelop programot. Hozz létre egy solution-t osszegzes néven.
A Form fejlécét csak az élvezet kedvéért írjuk át T1 Összegzés tétel -re. Hozzunk létre néhány címkét a Form-on. Rendre fentről lefelé a következő (Name) tulajdonságokkal: focim, adatok, eredmeny Majd egy Összegzés feliratú gombot is helyezzen el a Form-on, amelynek (Name) tulajdonsága osszeg Ez így csak egy buta Form. Ha azt szeretnénk, hogy dolgozzon is, akkor a különböző elemihez feladatokat kell rendelnünk! Jelöld ki az összegzés gombot és a Properties ablakban vált esemény nézetre (kisvillám). Majd írd a MouseClick eseményhez az osszegez szót. Ez lesz annak az eljárásnak a neve, amelyik a gombra kattintáskor meghívódik és végrehajtódik. Az [ENTER+ billentyű leütése után a Source (forrás) nézetben megjeleni a következő programkód: void osszegez(object sender, MouseEventArgs e) { }
A két kapcsos zárójel közé kell írnod az összegzés algoritmusának megfelelő C# kódot. Ha helyesen írtad be a kódot, akkor se történik semmi, mert sehol egy kiíratás, megjelenítés! Írassuk ki először a tömb elemeit az adatok nevű címkébe (Label) Most így néz ki az osszegez eljárásunk: Itt a legfontosabb, hogy a tomb*+ elemei egésszámok és csak akkor tehetjük bele az adatok.text címkébe, ha előtte String-é alakítjuk. Ezt szolgálja a.tostring() eljárás (Ebben az esetben methodus módszer, amely a változó osztályon van deklarálva). Már csak az eredmény kiírása van hátra! eredmeny.text = sum.tostring();
Magyarázat: Az elsősorban deklarálunk egy int típusú elemeket tartalmazó tömböt, melynek a neve tomb. Rögtön le is foglaljuk a memóriában 5 elem helyet és egyúttal elhelyeztünk a tömbben 5 egész értéket. Azon kívül deklaráltunk egy i, N, sum int típusú változót, az utóbbi kettőnek értéket is adtunk. Az i ciklusváltozó, a sum a gyűjtőváltozó lesz, melyben a tomb elemeinek az összeget generáljuk. Ezért ennek a sum nevű változónak a 0 kezdőértéket kell adni. A tömb elemeinek száma N igazából csak azért van rá szükség, mert a tétel általánosításakor is használtuk. A tömb elemeit kiírattuk egy for ciklus segítségével úgy, hogy az adatok.text tulajdonságába összefűztük a tömb elemeit szöveggé alakításuk után. Majd elkezdjük a tömb összegzését. Az összegzést a második for ciklus végzi, végig lépkedve az elemeken, és azok értékével növeli a sum változó pillanatnyi értéket. Pontosan 5-ször fog lefutni. Majd kiíratjuk a végeredményt az eredmeny címke Text tulajdonságának megváltoztatásával. Feladat: 1. Készítsd el elölről kezdve a feladatot csak a számok szorzatát add eredményül. 2. Határozd meg az N! (N faktoriális, vagyis 6! = 6*5*4*3*2*1 = 720)
Forrás: http://hu.wikipedia.org/wiki/c_sharp ebookz.hu: Dr. Kovács Emőd, Hernyák Zoltán, Radványi Tibor, Király Roland: A C# programozasi nyelv a felsıoktatasban Programozas tankonyv