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. Válaszd ki az objektumot, amelyiknek az eseményét figyelni szeretnéd. Most legyen a címke nevű Label. 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. 2. 3. 4. 5. 6.
A feladat meghatározása Algoritmuskészítés Kódolás: programkészítés (a szg. számára érthető algoritmus írása, fordítása) Tesztelés, hibakeresés, javítás Hatékonyságvizsgálat 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
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