Bevezetés a Visual C# 2008 használatába
|
|
|
- Magda Némethné
- 10 évvel ezelőtt
- Látták:
Átírás
1 Szakmacsoportos alapozó gyakorlatok informatika területre Bevezetés a Visual C# 2008 használatába 11. évfolyam TANULÓI JEGYZET A TISZK rendszer továbbfejlesztése Petrik TISZK TÁMOP /1-2F A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg.
2 Szakmacsoportos alapozó gyakorlatok informatika területre Informatikai gyakorlatok TÁMOP /1-2F BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA Informatikai gyakorlatok 11. évfolyam tanulói jegyzet
3 A kiadvány a TÁMOP /1-2F azonosító számú projekt keretében jelenik meg. Szerző: Czigléczky Gábor Lektor: Madarász Péter Borító és tipográfia: Új Magyarország Fejlesztési Terv Arculati kézikönyv alapján A mű egésze vagy annak részletei az üzletszerű felhasználás eseteit ide nem értve oktatási és tudományos célra korlátozás nélkül, szabadon felhasználhatók. A tananyagfejlesztés módszertani irányítása: Observans Kft. Budapest, Igazgató: Bertalan Tamás Tördelés: Király és Társai Kkt. Cégvezető: Király Ildikó
4 Tartalomjegyzék Bevezetés...5 A Visual C# Express 2008 beszerzése, telepítése, felfedezése...7 A Visual C# 2008 környezet letöltése, telepítése...7 A Visual C# 2008 környezet megismerése, testre szabása...9 A Súgó használata Windows Forms alkalmazás készítése Windows Forms alkalmazás készítése Adatok beolvasása és kiírása, alapvető adattípusok, típuskonverziók, matematikai és logikai műveletek Kör kerületének és területének kiszámítása Logikai műveletek...19 A ListBox használata...20 Feladatok Vezérlési szerkezetek: elágazások, ciklusok...23 Elágazások...23 Ciklusok...26 Feladatok...29 Összetett adattípusok: rekord, tömb, feltöltés szövegfájlból...30 Beolvasás szövegfájlból, kiírás szövegfájlba...30 Struktúra és rekord együtt Feladatok...34 ALAPVETŐ PROGRAMOZÁSI TÉTELEK MEGVALÓSÍTÁSA Programozási tételek megvalósítása Összegzés tétele...36 Megszámlálás tétele...36 Minimum- és maximumkiválasztás tétele Lineáris keresés Programozási tételek Struktúra típusú adatokra Feladatok...40 Hibák, hibaüzenetek és kezelésük Szintaktikai hibák javítása Szemantikai hibák javítása Összetett feladat...44 Feladatok...44 Kivételek kezelése, ellenőrzött adatbevitel Kivételek kezelése fájlkezelés során Ellenőrzött adatbevitel kivételkezeléssel...48 PETRIK TISZK TÁMOP /1-2F
5 Összetett feladat Feladatok Projektfeladat: program készítése...50 A feladatok közös része...50 Segítség a feladatok megoldásához...50 Lottósorsolás Osztálypénz nyilvántartása Projektfeladat: program bemutatása BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
6 Bevezetés Napjainkban a vizuális fejlesztőkörnyezetek virágkorukat élik, a programozók jelentős része integrált fejlesztőkörnyezetekben (IDE = Integrated Development Environment) írja programjait. Éppen ezért nagyon fontos, hogy már a középiskolában megismerkedjetek legalább egy ilyen programfejlesztő eszközzel. Ez a tananyag megismertet a Microsoft ingyenesen letölthető és használható Visual Studio Express 2008 programcsomagjával, azon belül pedig a Visual C# Express 2008-as verziójával. A C# egy rendkívül hatékony, aránylag könnyen tanulható programozási nyelv, amellyel egyszerűen és gyorsan tudunk Windows alatt futó programokat, vagy akár webes alkalmazásokat is fejleszteni. Fontos tudni azonban, hogy ezt a tananyagot olyanoknak ajánlom, akik már programoztak valamely programozási nyelven. Az sem jelent hátrányt, ha már találkoztál vizuális fejlesztőkörnyezettel. Cél A Visual C# 2008 kezelőfelületének és alapvető komponenseinek megismerése. Egyszerűbb Windows Forms alkalmazások fejlesztése. A C# nyelvi elemeinek megismerése. Hibajelenségek észlelése, elhárításuk, bolondbiztos programok készítése. A tanult ismeretek alkalmazása egy kisebb csoportban elkészített projektfeladaton keresztül, az együttműködés fejlesztése, a csoportos szoftverfejlesztés kipróbálása. Az elkészült produktumok értékelése különféle szempontok szerint. Követelmény Tudd feltelepíteni és használatba venni a Visual C# 2008 környezetet. Tudj megtervezni és elkészíteni egy Windows Forms alkalmazást felhasználói felületével és a mögötte levő kóddal együtt. Ismerd az alapvető komponensek használatát, valamint a C# nyelv legfontosabb elemeit. Legyél képes a programodban a hibákat megtalálni, és azokat kijavítani a hibakereső eszközök segítségével. Legyél képes kis csapatban a társaiddal együttműködve megtervezni, majd elkészíteni egy programot, ezt követően pedig a többieknek bemutatni azt. PETRIK TISZK TÁMOP /1-2F
7 Jelmagyarázat A tanulói jegyzetben a tananyag fontos elemeit, a példákat és a tanulási tippeket különböző ikonok jelölik. Ikon Jelentés A fejezet célmeghatározása. Figyelmesen olvasd el, így megismered a fejezet fókuszpontjait. Az ikon fontos, jól megjegyzendő, megtanulandó ismereteket jelez. Az ikon mellett olyan gondolatébresztő, kérdéseket, felvetéseket, problémákat találsz, amelyek megválaszolásával elmélyülhetsz a témában. Az ismeretek elsajátítását megkönnyítik a példák. Az ikon mellett érdekességeket, példákat, gyakorlati életből vett esetleírásokat találsz. Az ikon a házi feladatot, otthoni munkát jelöli. 6 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
8 A Visual C# Express 2008 beszerzése, telepítése, felfedezése Ennek a témakörnek az a célja, hogy az iskolai vagy az otthoni számítógépen üzembe tudd helyezni a Microsoft Visual C# 2008-as verzióját, képes legyél eligazodni a fejlesztői környezetben, saját igényeid szerint testre szabni, és segítséget kérni a Súgótól. A Visual C# 2008 környezet letöltése, telepítése A Microsoft Visual C# 2008 weboldala: ( ) A weboldalon az adott programozási nyelvvel kapcsolatos információkat a másodlagos menüsorban, míg az általános információkat a Support menüpontban találod meg Milyen konfigurációjú számítógép szükséges a Visual C# 2008 Express futtatásához? Keresd meg a hardverkövetelményeket a fent megadott oldalon! Töltsd ki a táblázatot! Windows Server 2008 / Windows XP Windows Vista / R2 Processzor (CPU). Memória (RAM) 1.2. A fenti táblázat alapján az iskolai / otthoni gép megfelel-e a C# 2008 hardver- és szoftverkövetelményeinek? Ha nem, írd le, melyik miatt nem felel meg! Igen Nem PETRIK TISZK TÁMOP /1-2F
9 1.1. ábra. A C# telepítése 1.3. Telepítsd fel a Visual C# 2008-at az iskolai számítógépre, amennyiben alkalmas a futtatására, és még nincsen rajta! Gyűjtsd össze, hogy a fent látható komponensen kívül még mit tölt le és telepít a számítógépre! Amennyiben az iskolai gép már tartalmaz feltelepített C# 2008-at, akkor telepítsd fel az otthoni gépedre! 8 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
10 A Visual C# 2008 környezet megismerése, testre szabása 1.2. ábra. Windows Forms alkalmazás létrehozása 1.4. Kattintsunk a Create pontra, és hozzunk létre egy új Windows Forms alkalmazást! Nevezzük ElsoProgramomnak! Mentsük el a merevlemez valamelyik mappájába! A projekt (Project) tartalmazza az összes forrásállományt és a hozzájuk tartozó formokat, ezek alkotják a lefordításra váró programunkat. A Solution eggyel magasabb szintet jelent, több projektet is egységbe foghat, azonban a mi példáinkban mindig csak egyet tartalmaz majd A következő oldalon található ábrán nevezd meg a kezelőfelület legfontosabb elemeit! Nem biztos, hogy telepítés után a kezelőfelület összes szükséges eleme látható. Amennyiben valami hiányzik, a View menüben be tudod kapcsolni! PETRIK TISZK TÁMOP /1-2F
11 1.3. ábra. A kezelőfelület elemei 1.6. Melyik elemnek mi a feladata? Írd be az üres oszlopba a kérdéses elemhez tartozó feladatleírás betűjelét! 1. Toolbox a) A Solutionhöz tartozó projektek és azok állományait tartalmazó ablak 2. Error list b) Az objektumok tulajdonságait és eseményeit tartalmazó ablak 3. Form Design nézet c) A Windows alkalmazás fejlesztéséhez felhasználható komponensek gyűjteménye 4. Properties d) A form grafikai megtervezését megkönnyítő ablak 5. Solution Explorer e) Hibák, figyelmeztetések, üzenetek ablaka 1.7. Írd le, hogyan tudunk váltani a Form kinézete (Design) és kódja között! A videókban láthattad, hogy miképp lehet fogd és vidd (Drag and Drop) módszerrel átrendezni a kezelőfelület elemeit. 10 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
12 1.8. A tanult módszerrel rendezd át többféleképpen a kezelői felületet! Az egyes állapotokat örökítsd meg képernyőfelvétellel (Alt + PrintScreen), és ezeket mentsd külön képfájlokba, majd add be a tanárodnak! 1.4. ábra. A felület testre szabása 1.9. Mire való a kis rajzszög ikon az eszközpaletták jobb felső sarkában? PETRIK TISZK TÁMOP /1-2F
13 A Súgó használata 1.5. ábra. A Súgó Gyűjtsd ki a Súgóból a C# Express 2008 legfontosabb újításait címszavakban! (What s new in Visual C# Express) Keress a Súgóban példát tömbök deklarációjára, és írj le ide legalább két példát! (arrays, examples) A Súgó Search funkcióját használva keress rá a foreach kulcsszóra! Írd le a példakódot, amit találsz! Az interneten óriási mennyiségű információt, mintakódot találhatsz a Microsoft MSDN Library weboldalán: ( ) 12 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
14 Windows Forms alkalmazás készítése Ennek a témakörnek az a célja, hogy el tudd készíteni életed (valószínűleg) első Windows Forms alkalmazását. Tudj megtervezni egy felhasználói felületet, a komponenseket igényesen elhelyezni, igazítani, alapvető tulajdonságaikat beállítani (részben tervezési, részben futási időben). Legyél képes eseménykezelő metódusokba kódot írni, a megírt kódot áthelyezni, illetve eltávolítani. Windows Forms alkalmazás készítése 2.1. Készíts új Windows Forms alkalmazást a Visual C# 2008-ban! Tervezd meg a következő ábrán látható program felhasználói felületét, úgy, hogy minél jobban hasonlítson a képen látottakra! Emlékeztetőül feltüntettük, hogy melyik vezérlőelemet milyen név alatt találod meg ábra. Példa Windows Forms alkalmazás Fontos megjegyezni, hogy ebben a fejezetben ennek a programnak csak a felhasználói felületét készítjük el, a mögötte lévő kódokat a későbbi fejezetek feladataiban írjuk meg. A teljes feladat: Az adat.txt állományban országok neve és területük szerepel. Az adatok betöltését és listába írását az 5.2. feladatban írjuk majd meg. A 6. fejezetben tanuljuk a programozási tételeket, ezek segítségével a PETRIK TISZK TÁMOP /1-2F
15 6.2. feladatban kiszámoljuk a területek átlagát, megszámoljuk a kiválasztott feltételnek megfelelő elemek számát, illetve fájlba is kiírjuk azokat. Meghatározzuk továbbá a legkisebb, illetve legnagyobb területű országot, illetve megkeresünk egy, a felhasználó által megadott nevű államot, amennyiben szerepel az adatok között Amikor elkészültél a komponensek felrakásával és elrendezésével, állítsd be az alább felsorolt tulajdonságokat a fejlesztői környezetben, a Properties ablakban! A formon: Felirat: Példa Windows Forms alkalmazás Méret: amekkora területen kényelmesen elférnek a komponensek FormBorderStyle: FixedSingle (ne lehessen átméretezni) MaximizeBox: false (ne lehessen teljes képernyőre nagyítani) Mind a négy címkén a megfelelő feliratot (pl.: Forrásfájl neve: ) Mind a hat gombon a megfelelő feliratot (pl.: Területek átlaga ) A megfelelő szerkesztőmezők Text tulajdonságába írd be a fájlok nevét, a harmadik mezőt hagyd üresen! A listán nem kell semmit beállítani Állítsd be a csoportosító (GroupBox) feliratát, és ügyelj arra, hogy a két RadioButton komponens a csoporton belül legyen! Ügyelj rá, hogy valamelyik rádiógomb Checked tulajdonságát igazra állítsd (így be lesz jelölve)! A kombinált lista Items tulajdonságánál kattints a -ra, majd a megjelenő ablakba írd be két külön sorba a Minimum és a Maximum szavakat. A DropDownStyle tulajdonságot állítsd DropDownList-re, így a felhasználó csak kiválasztani tud a listából, a benne lévő szöveget nem tudja szerkeszteni. A jelölőnégyzet bejelölt ( Checked) tulajdonságát tetszés szerint állíthatod. Szeretnénk elérni, hogy a kombinált listából induláskor automatikusan válasszuk ki az első elemet (különben a program úgy indul, hogy üres). Ezt csak kódból tehetjük meg. Írjuk meg a form Load eseménykezelő metódusát, ami akkor fut le, amikor az alkalmazás ablaka megjelenik a képernyőn. Írjuk bele az alábbi sort: combobox1.selectedindex = 0; A SelectedIndex tulajdonság azt adja meg, hogy a kombinált lista hányadik sorszámú eleme a kijelölt. A C#-ban mindent (tömböt, listát) nullától kezdve számoznak, ezért az első elemre mindenhol így kell majd hivatkozni. 14 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
16 2.3. Mentsd el az elkészült programodat, és helyezd biztonságba, mert a későbbi fejezetekben ez alapján fogunk dolgozni! Add be a projektet összecsomagolva a tanárod által megadott helyre is! 2.4. Készítsünk egy teljesen új projektet, amellyel gyakorolhatjuk a különféle tulajdonságok beállítását! 2.2. ábra. Tulajdonságok gyakorlása, kezdeti változat Mentsük el a projektet Tulajdonsagok_Gyakorlas néven! Változtassuk meg a Properties ablakban a form nevét Form_Gyakorlas-ra! Nézzük meg a kódban, mi változott! Helyezzünk el a formra egy címkét és két gombot! Az első gomb változtassa meg a saját feliratát a Form beállítása, illetve a másik gomb feliratát a Címke beállítása szövegre! Ha lefuttatjuk a programot, akkor a gombokon levő szövegnek csak egy része látszik. Melyik tulajdonságot kell megváltoztatni, hogy ezt a hibát kijavíthassuk? Amennyiben sikerült rájönnünk, javítsuk a hibát! Az első gombra kattintva változtassuk meg a form feliratát a Tulajdonságok gyakorlása szövegre! Amennyiben az eddigiek alapján az alábbi kódot írjuk, nem működik: Form _ Gyakorlas.Text = Tulajdonságok gyakorlása ; Próbáljunk rájönni, hogy miként lehetne mégis megoldani! Az egyik lehetséges megoldás, hogy a form saját magára a neve helyett a this szócskával hivatkozhat: this.text = Tulajdonságok gyakorlása ; Az előzőek alapján az első gombra kattintva állítsuk be a form háttérszínét CornflowerBlue színűre! PETRIK TISZK TÁMOP /1-2F
17 2.3. ábra. Tulajdonságok gyakorlása színbeállítás után Most a második gomb következik. Rákattintáskor elsőként tiltsuk le az első gombot! Következő lépésben tiltsuk le a címke automatikus méretezését, és állítsuk be a címke méretét 100*50 pixelre! Mivel így nem látunk semmit, a címke háttérszínét állítsuk át valamilyen tetszőleges (a form háttérszínétől különböző) színre! A címke pozícióját változtassuk meg úgy, hogy az ablak bal szélétől és tetejétől egyaránt 10 pixel távolságra legyen! A címkére való kattintáskor a címke felirata helyezkedjen el vízszintesen és függőlegesen egyaránt középen! A címkén levő szöveg igazítását a TextAlign tulajdonság határozza meg. Nézz utána, hogy ennek értékét miként lehet kódból beállítani! Tipp: a fejlesztői környezet automatikus kódkiegészítés funkciója segíthet ebben. A címkére kattintáskor növeljük meg a betű méretét 2 ponttal! Sajnos ez sem megy olyan egyszerűen. Az alábbi értékadás ugyanis nem működik: label1.font.size = label1.font.size + 2; Ehelyett az alábbi, kicsit komplikált utasítást kell használni: label1.font = new Font(label1.Font.FontFamily, label1.font. Size + 2); Ennek jelentése: a címke betűtípusának egy olyan új betűtípus objektumot adunk értékül, amelynek betűstílusa olyan, mint ami korábban volt, csak a betűméret lett a korábbinál 2 ponttal nagyobb. Utolsóként tegyünk egy újabb gombot a formra, és a címke Click eseménykezelő metódusának kódját egy az egyben mozgassuk át az új gomb Click metódusának törzsébe! Egészítsük ki, hogy a címke méretét növelje meg mindkét irányban 10 pixellel! 16 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
18 2.4. ábra. Tulajdonságok gyakorlása három gombbal A címke üres Click eseménykezelő metódusát nem törölhetjük ki a kódból, helyette a Properties ablak Events gombjára való kattintás után töröljük ki a label1_click hivatkozást. Ezután futtatva a programot, majd megnézve a kódot, láthatjuk, hogy az üres eseménykezelő metódust törölte a fejlesztői környezet Készíts olyan programot, amely tartalmaz négy különböző hátterű címkét, és kattintáskor mindegyik a saját háttérszínére színezi át a form háttérszínét! 2.6. Az ügyesebbek készítsék el úgy is a programot, hogy helyezzenek el négy tetszőleges háttérszínű címkét, amelyek rájuk kattintáskor cseréljenek háttérszínt a formmal! PETRIK TISZK TÁMOP /1-2F
19 Adatok beolvasása és kiírása, alapvető adattípusok, típuskonverziók, matematikai és logikai műveletek Ennek a témakörnek az a célja, hogy kicsi, egyszerűbb programok elkészítése közben begyakorold a változók deklarálásának módját, az értékadásokat, az egyes adattípusokat és a velük végezhető műveleteket. Mivel grafikus programokat írunk, észrevétlenül megtanulod, hogyan kommunikálj a felhasználóval a grafikus komponensek segítségével. KÖR kerületének és területének kiszámítása 3.1. Készíts új Windows Forms alkalmazást a Visual C# 2008-ban! Helyezd el a komponenseket az alábbi képhez hasonló módon, és állítsd be a tulajdonságaikat! A program olvassa be egy kör sugarát és számítsa ki a kerületét, területét! 3.1. ábra. A kör kerületét és területét számoló alkalmazás Kattints duplán a gombra, ekkor megnyílik a kódszerkesztő, benne a gomb üres Click eseménykezelő metódusával. Deklaráld a kör sugarát tároló változót! Ez lehet egész vagy valós szám. A szerkesztőmező tartalmát konvertáld át a megfelelő típusra, és add értékül a változónak! int r = int.parse(textbox1.text); Figyeljünk arra, hogy explicit típuskonverziónál az értékadás mindkét oldalán azonos típusú változók legyenek! Például valós típus esetén: double r = double.parse(textbox1.text); Deklarálj még két változót, amelybe számold ki a kerületet és a területet. Mivel a kör kerületének és területének képlete tartalmazza a π-t, ezért mindenképpen valós típusú változókra lesz szükség! 18 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
20 A C#-ban rengeteg matematikai függvény és konstans megtalálható beépítve. Így például a π értékét a Math.PI segítségével kaphatod meg. Nézd meg, hogy milyen függvények érhetők el még a Math osztályban! A kerület és terület kiszámítása: double k = 2 * r * Math.PI; double t = r * r * Math.PI; Már csak a kiíratás van hátra. Írd ki a két címkére a megfelelő szövegeket, és utánuk a két változó értékét. Figyelj arra, hogy ehhez a k és t értékét szöveggé kell konvertálnod! label3.text = A kör kerülete: + k.tostring(); label4.text = A kör területe: + t.tostring(); Töröld ki a két címkét, és jelenítsd meg az eredményeket üzenetablakban! MessageBox.Show( A kör kerülete: + k.tostring()); MessageBox.Show( A kör területe: + t.tostring()); A két kiíratási mód között alapvető különbség, hogy az első esetben a szöveget egy tulajdonságnak adjuk értékül, a másodiknál pedig egy metódusnak adjuk át paraméterül! Figyeljünk az eltérő szintaxisra! Nézz utána, hogy hogyan lehet megoldani, hogy csak két tizedes jegyig írja ki a valós számokat! Logikai műveletek 3.2. Készíts új Windows Forms alkalmazást a Visual C# 2008-ban! Helyezd el a komponenseket az alábbi képhez hasonló módon, és állítsd be a tulajdonságaikat! A program segítségével gyakoroljuk a logikai műveleteket és közben megtanuljuk a jelölőnégyzet használatát ábra. Logikai műveletek gyakorlása PETRIK TISZK TÁMOP /1-2F
21 A jelölőnégyzet rendelkezik Checked tulajdonsággal, ami igaz értéket vesz fel, amikor bejelölt állapotban van. A jelölőnégyzetek egymástól függetlenül lehetnek bejelölve. A következő fejezetben rádiógombokat használunk majd az egymást kizáró lehetőségek vizsgálatára. Összetett feltételek megfogalmazásához az alábbi operátorok állnak rendelkezésünkre: && (logikai ÉS), (logikai VAGY),! (logikai NEM). Az Állapot váltása gomb Click eseménykezelő metódusába írjunk olyan kódot, amely a jelölőnégyzetek állapotát változtatja ellenkezőjére a logikai NEM művelet segítségével: checkbox1.checked =!checkbox1.checked; checkbox2.checked =!checkbox2.checked; A két értékadás eredményeképpen a jelölőnégyzetek Checked tulajdonsága ellenkezőjére változik (ha igaz volt, hamissá, és fordítva). A Logikai ÉS művelet gombra kattintáskor deklaráljuk egy logikai változót, melynek értéke legyen a két jelölőnégyzet Checked tulajdonsága a logikai ÉS művelettel összekapcsolva! Az eredményt jelenítsük meg üzenetablakban! bool l = checkbox1.checked && checkbox2.checked; MessageBox.Show( A logikai ÉS eredménye: +l.tostring()); A másik nyomógombra csináljuk meg ugyanezt a logikai VAGY művelettel! bool l = checkbox1.checked checkbox2.checked; MessageBox.Show( A logikai VAGY eredménye: + l.tostring()); A ListBox használata 3.3. Készíts új Windows Forms alkalmazást a Visual C# 2008-ban! Helyezd el a komponenseket az alábbi képhez hasonló módon, és állítsd be a tulajdonságaikat! 3.3. ábra. Egyszerű mintapélda a ListBox használatára A ListBox egy nagyon fontos és gyakran használt komponensünk. Segítségével egy listát tudunk kiírni a képernyőre úgy, hogy az információkat soronként tudjuk beleírni. 20 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
22 Négy egyszerű művelettel kezelhetjük a listát: 1. Egy sor hozzáadása a listához: list Box1.Ite m s.ad d(s); Megjegyzés: az Add paraméterének string típusú adatnak kell lennie! 2. Kijelölt elem sorszáma (-1 az eredmény, ha nincs ilyen): int x = listbox1.selectedindex; Megjegyzés: csak úgy, mint a ComboBox esetén! 3. Adott sorszámú elem törlése: listbox1.items.removeat(sorszám); Megjegyzés: itt is nullától indul a számozás! 4. Minden elem törlése a listából: listbox1.items.clear(); A fentiek alapján próbáljuk meg önállóan megírni ezt a kis programot. A Hozzáad gombra kattintva a lista feletti szerkesztőmező tartalmát adja a listához, majd törölje a mező tartalmát! A Kijelölt törlése értelemszerűen törölje ki a lista kijelölt elemét, az alatta levő gomb pedig távolítsa el a lista valamennyi elemét! Feladatok 3.4. Egészítsd ki a 3.1. feladatban megírt programot úgy, hogy a kerület és a terület mellett a sugarat egy gömb sugaraként kezelve számolja ki annak felszínét és térfogatát! Az eredményt jelenítsd meg címkén vagy üzenetablakban! 3.5. Írj a 3.1. feladat alapján programot, amely bekéri egy téglalap két oldalhosszúságát, és ezek alapján kiszámolja a kerületét és területét! Az eredményeket vezesse a program egy listában, az alábbi ábrán láthatóhoz hasonlóan! 3.4. ábra. Téglalap kerületét, területét számoló program listával PETRIK TISZK TÁMOP /1-2F
23 3.6. Írj programot, amely beolvassa a másodfokú egyenlet három paraméterét (a, b, c), majd a megoldóképlet segítségével megadja a két megoldást! (Egyelőre az egyszerűség kedvéért tegyük fel, hogy van megoldása az egyenletnek.) A négyzetgyököt számító függvény a Math.Sqrt. Mivel az elágazásokat még nem tanultuk, ezért nem tudjuk kezelni azt a helyzetet, ha nincsen valós megoldás. Később, a 8.3-as feladatban kibővítjük ezt a programot, úgy, hogy minden lehetséges esetet megfelelően kezeljen Írj programot, amely bekéri egy derékszögű háromszög két befogójának hosszát, és ebből kiszámolja az átfogó hosszát (Pitagorasz-tétellel)! Az eredményt ismét vagy címkén, vagy üzenetablakban jelenítsük meg! 22 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
24 Vezérlési szerkezetek: elágazások, ciklusok Ennek a témakörnek az a célja, hogy egyszerű programok elkészítése közben begyakorold a legfontosabb vezérlési szerkezetek, az elágazások és a ciklusok használatát. A fejezet végére megtanulsz egy- és kétirányú, valamint többirányú elágazást írni, és tisztában leszel a ciklusok fajtáival, helyes szintaktikájukkal és alkalmazhatóságukkal is. Elágazások 4.1. A 3.1 feladatban elkészített, a kör kerületét és területét számoló programot fogjuk módosítani. Keresd elő az elkészített programot, másold le a mappáját az új könyvtárba, nyisd meg, és hajtsd végre rajta a szükséges módosításokat, annak érdekében, hogy hasonlítson az alábbi ábrán láthatóra! 4.1. ábra. Elágazás: kör vagy négyzet? A rádiógombokat csoportba kell foglalni (a GroupBox komponens segítségével), mert így az egy csoportban levők közül pontosan egy lehet bejelölt állapotban. Ennek segítségével tudunk olyan lehetőségek közül választani, amelyek egymást kizárják. Helyezzünk el a formon egy GroupBox komponenst, és tegyünk bele két rádiógombot! Három dolgot szeretnénk megvalósítani a programban: Ha rákattintunk a kör, illetve a négyzet feliratú rádiógombra, a beviteli mező feletti felirat változzon a megfelelőre. A gombra kattintás után a kiválasztott alakzat kerületét és területét számoljuk ki. Amennyiben a felhasználó nem írt be semmit a szövegmezőbe, a gombra kattintás ne csináljon semmit. A jelenlegi verzióban a program végrehajtása kivételt dobva leáll. A rádiógomb kijelölésének megváltozásakor a CheckedChanged esemény következik be. Írjuk meg ezeket a metódusokat, amelyek változtassák meg a címke feliratát: label1.text = A kör sugara: ; A másik hasonlóan írandó, a négyzet oldalhosszára vonatkozóan. Annak ellenőrzése, hogy melyik alakzatot választották ki, nagyon egyszerű. A rádiógomb Checked tulajdonsága logikai értékű, és mivel egyszerre csak az egyiket tudjuk bejelölni, ezért elegendő egy két- PETRIK TISZK TÁMOP /1-2F
25 irányú elágazást használni. Helyezzük át a kör kerületét és területét számoló programrészt az elágazás egyik ágába, majd a másik ágba átmásolva írjuk át úgy, hogy négyzetre számoljon! int r = int.parse(textbox1.text); double k; double t; if (radiobutton1.checked) k = 2 * r * Math.PI; t = r * r * Math.PI; label3.text = A kör kerülete: + k.tostring(); label4.text = A kör területe: + t.tostring(); else k = 4 * r; t = r * r; label3.text = A négyzet kerülete: + k.tostring(); label4.text = A négyzet területe: + t.tostring(); Figyeljük meg, hogy a példában szétválasztottuk a változók deklarációját és az értékadásokat. Egy blokkon belül ne deklaráljuk újra a változókat, mert fordítási hibát kapunk! Már csak az utolsó problémát kell megoldanunk. Tegyük az egész fenti kódot egy elágazásba, amely megvizsgálja, hogy a szövegmező tartalma nem üres! if (textbox1.text!= ) C#-ban az alábbi összehasonlító operátorokat használhatjuk: < (kisebb), <= (kisebb vagy egyenlő), > (nagyobb), >= (nagyobb vagy egyenlő), == (egyenlőségvizsgálat),!= (nemegyenlőség-vizsgálat). Bővítsd ki ezt az utolsó egyirányú elágazást kétirányúvá, hogy ha mégsem írt be semmit a felhasználó, udvarias üzenetben figyelmeztesse erre a program! 24 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
26 4.2. Írjunk programot, amely egy megadott számról megállapítja, hogy a felhasználó által megadott intervallumba esik-e! A választ címkére írjuk ki! Tervezzük meg a felületét az alább látható módon! 4.2. ábra. Intervallumos program A programban két elágazásra lesz szükségünk. Az egyik ellenőrzi, hogy valóban intervallumról van-e szó (alsó határ kisebb vagy egyenlő, mint a felső határ), a másik pedig azt vizsgálja, hogy a szám a megadott intervallumba esik-e. int ah = int.parse(textbox1.text); int fh = int.parse(textbox2.text); int szam = int.parse(textbox3.text); if (ah <= fh) if (szam >= ah && szam <= fh) label4.text = Benne van az intervallumban. ; else label4.text = Nincs benne az intervallumban. ; else label4.text = Ez nem intervallum! ; A példakódban is látszik a logikai műveletek használata. A (szam >= ah && szam <= fh) jelentése: egyszerre kell teljesülnie annak a feltételnek, hogy a szám értéke nagyobb vagy egyenlő, mint az alsó határ, és kisebb vagy egyenlő, mint a felső határ. PETRIK TISZK TÁMOP /1-2F
27 4.3. Írjunk programot, amely egy számmal beírt jegyet szövegesen is megjelenít egy címkén! A programot tervezzük meg az alább látható módon! 4.3. ábra. Többirányú elágazás gyakorlása Programunkban többirányú elágazásra van szükség. Egy egész típusú változóba vegyük ki a beírt számot, és a megfelelő jegyhez írjuk ki a címkére a szöveges megnevezést. A default ág segítségével hibaüzenetet is tudunk adni, ha nem egy és öt közötti számot írt be a felhasználó. int jegy = int.parse(textbox1.text); switch (jegy) case 1: label2.text = Elégtelen ; break; case 2: label2.text = Elégséges ; break; case 3: label2.text = Közepes ; break; case 4: label2.text = Jó ; break; case 5: label2.text = Jeles ; break; default: label2.text = Nem osztályzat! ; break; ciklusok 4.4. Következő programunkban a formot fogjuk mozgatni, számláló és elöltesztelő ciklus segítségével, felváltva. A formon csak egyetlen gomb legyen, melynek felirata mondjuk Indít! legyen. Ennek lenyomására a formot tegyük a bal felső sarokba, majd mozgassuk körbe a képernyő szélein! Egy kör megtétele után álljon meg a bal felső sarokban! Emlékeztető: a form tulajdonságaira a this kulcsszóval tudunk hivatkozni. Első lépésként helyezzük át a formot a bal felső sarokba. A következő utasításokat a gomb Click metódusába kell írnunk. this.left = 0; this.top = 0; Szükségünk lesz arra, hogy a form meddig mehet a képernyőn, hogy még éppen benne maradjon. Ehhez a képernyő vízszintes felbontásából ki kell vonnunk a form szélességét, a függőlegesből pedig a magasságát. Ezt az alábbi két utasítással tehetjük meg: int kepszel = Screen.PrimaryScreen.Bounds.Width this.width; int kepmag = Screen.PrimaryScreen.Bounds.Height this.height; 26 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
28 Először egy számláló ciklussal mozgassuk a formot vízszintesen a kép széléig! Ciklusváltozónak használhatjuk a this.left értéket, hiszen ez határozza meg a form bal felső sarkának távolságát a képernyő bal szélétől. for (this.left = 0; this.left < kepszel; this.left++) Figyeljük meg a fenti példában, hogy a ciklus magja üres, viszont a C# for ciklusának sajátossága miatt (a Left értéket minden lépésben növeli) mégis működik így is! Most használjunk egy while ciklust a lefelé mozgatáshoz! while (this.top < kepmag) this.top++; Természetesen ez a ciklus is bármikor átírható számláló ciklusra. A visszafelé mozgatást hasonló ciklusokkal tudjuk megcsinálni, csak növelés helyett csökkentenünk kell a tulajdonságok értékét, és addig megyünk, amíg a nullát el nem érik. for (this.left = kepszel; this.left > 0; this.left--) while (this.top > 0) this.top--; 4.5. Írjunk olyan programot, amely ismételt adatbevitellel (ciklusban) kér be a felhasználótól számokat, majd ezeket szétválogatja párosakra és páratlanokra! Ehhez tervezzük meg az alábbi ábrán látható alkalmazást! 4.4. ábra. Adatbevitel ciklusban, szétválogatás Eddig nem volt szükségünk arra, hogy ciklusban egymás után több adatot olvassunk be. A mindennapi életben azonban ez gyakran előfordul. A szövegmező erre nem alkalmas, ezért a Visual Basic-től kölcsönvesszük az InputBox metódust. PETRIK TISZK TÁMOP /1-2F
29 Egy Visual Basic modul használatához két beállítás szükséges. Kattintsunk jobb gombbal a Solution Explorer ablakban a References pontra, és válasszuk az Add reference menüpontot. A megjelenő ablakban válasszuk a Microsoft.VisualBasic sort, és kattintsunk az OK gombra. (Lásd: 4.5. ábra.) A Form1.cs kódban, legfelül találunk jó pár using kezdetű sort. Adjuk hozzá az alábbi sort: using Microsoft.VisualBasic; 4.5. ábra. Visual Basic referencia hozzáadása Most már használhatjuk az InputBox függvényt, amely beolvas egy stringet egy felbukkanó ablak segítségével. Az InputBox használata: string s = Interaction.InputBox(kérdés,felbukkanó ablak felirata,alapértelmezett válasz,x koordináta, y koordináta); Meg kell tehát adnunk a kérdést, amit feltesz a felhasználónak, az ablak feliratát, az alapértelmezett választ (ez eddig három string típusú paraméter), majd a megjelenő ablak x és y koordinátáját. A beolvasás addig tart, amíg a felhasználó a 0 értéket nem adja meg (egyébként lehet ez a felbukkanó ablak alapértelmezett paramétere is). Ennek megoldásához használhatunk hátultesztelő ciklust, ugyanis egy adatot mindenképpen be kell olvasnunk, és akkor kell folytatnunk, ha a beírt érték nem 0. Mivel a nulla értéket nem szeretnénk eltárolni a listában, szükségünk van egy elágazásra, ami kiszűri ezt. Továbbá egy elágazással meg kell vizsgálnunk, hogy a szám páros-e, azaz kettővel osztva nullát ad-e maradékul. 28 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
30 Az oszthatósági vizsgálathoz a % (maradék) műveletet használhatjuk: if (szam % 2 == 0) Ha a szám kettővel való osztási maradéka egyenlő nullával, az azt jelenti, hogy páros. Nézzük ezek után a kódot: int szam; do string s = Interaction.InputBox( Kérem a következő számot:, Adatbevitel, 0,100,100); szam = int.parse(s); if (szam!=0) if (szam % 2 == 0) listbox1.items.add(s); else listbox2.items.add(s); while (szam!=0); A ciklusváltozót mindenképpen deklarálnunk kell a ciklus előtt, mert különben nem használhatjuk a ciklusfeltételben. Amennyiben a szám páros, az egyik, ha nem, akkor a másik listához adjuk hozzá. Feladatok 4.6 Írjunk programot, amely egy dolgozat pontszáma alapján megadja a jegyet számmal és szövegesen is! A ponthatárok: 0 10: 1, 11 20: 2, 21 30: 3, 31 40:4, és 41 50: 5. Egy címkére írjuk ki az eredményt! 4.7. Írjuk ki egy ListBoxba 0-tól 100-ig a számokat 4-esével! 4.8. Írj programot, amely egy bekér egy évszámot, és megmondja róla, hogy szökőév-e! (Szökőév az, amely néggyel osztható és százzal nem, vagy néggyel és négyszázzal is osztható.) A választ itt is egy címkére írjuk! PETRIK TISZK TÁMOP /1-2F
31 Összetett adattípusok: rekord, tömb, feltöltés szövegfájlból Ennek a témakörnek az a célja, hogy az adatbevitel gyorsítása érdekében szöveges fájlokból olvass be adatokat, illetve nagy mennyiségű eredményt hasonló formában állíts elő. Közben megtanulhatod az összetett adattípusok kezelését, és képes leszel rekordokból álló tömböket feltölteni, adataikat megjeleníteni. Beolvasás szövegfájlból, kiírás szövegfájlba 5.1. Írjuk át a 4.5. feladatban készített programot, hogy ne billentyűzetről, hanem a mellékelt szamok.txt fájlból olvassa be az adatokat, és azokat válogassa szét párosakra és páratlanokra! Az alkalmazás kezelőfelületén nem sokat kell változtatnunk, csak egy új gombot kell felvennünk. Használjunk a feladat megoldásához tömböt! 5.1. ábra. Beolvasás fájlból, szétválogatás, kiírás fájlba Az eddigi programjainkban a változókat mindig az eseménykezelő metódusokban deklaráltuk, így ezek csak azokban a metódusokban voltak használhatók. Az így deklarált változókat nevezzük lokális változóknak. Ezzel szemben a tömböt, a tömb maximális és tényleges elemszámát célszerű úgy felvenni, hogy minden eseménykezelő metódusból el lehessen érni, azaz globális változóként kell őket deklarálni. A globális változókat minden eseménykezelő eljárás elé, a public Form1() sor elé célszerű írni. const int MAX = 100; int[] szamok = new int[max]; int n; 30 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
32 A const kulcsszóval úgynevezett konstanst deklarálhatunk, amelynek egyszer adhatunk értéket, és azt az értéket a program során nem változtathatjuk meg. Mivel fájlból olvasunk be, nem tudjuk előre megmondani, hogy hány elemnek kell helyet foglalnunk. Ezért veszünk fel egy legfeljebb MAX elemű vektort, és az n értékét használjuk arra, hogy tudjuk, hány elem van valójában benne. A fájlból való beolvasáshoz a korábbi feladat hátultesztelő ciklusát elöltesztelővé kell átalakítanunk. Fontos azt is megjegyezni, hogy a szövegfájlból mindig string típusú értéket tudunk beolvasni (hasonlóan az InputBoxhoz), ezért konvertálnunk kell. n = 0; string fnev = szamok.txt ; if (File.Exists(fnev)) StreamReader f = File.OpenText(fnev); while (!f.endofstream && n<max) string sor = f.readline(); szamok[n] = int.parse(sor); if (szamok[n] % 2 == 0) listbox1.items.add(sor); else listbox2.items.add(sor); n++; f.close(); button2.enabled = true; else MessageBox.Show( A megadott fájl nem létezik. ); A szövegfájlokat a projekt könyvtárában a bin\debug mappába kell bemásolnunk, mert különben nem találja meg a program futtatásakor. Természetesen a fájlneveket megadhatjuk útvonallal együtt is, ekkor azonban fennáll a veszélye, hogy a program más mappába helyezésekor nem fogja megtalálni a szövegfájlt. A fent látható kódrészlet feltölti a tömböt a beolvasott számokkal, és egyúttal szétválogatja őket, és elhelyezi a ListBoxokban. A while ciklus feltételét azért bővítettük ki az n<max feltétellel, mert így akkor sincsen probléma, ha a fájlban több elem van, mint amennyinek helyet foglaltunk. Az n értékét pedig azért növeljük a beolvasás után, mert a tömb indexelése 0-tól indul, másrészt pedig így ez a változó a beolvasott elemek tényleges darabszámát jelenti. A fájlba íráskor láthatjuk is, hogy 0-tól n-1-ig kell végigmennünk az indexeken. Célszerű a második gombot letiltani, hiszen nincs mit fájlba írni, ha még nem olvastuk be az adatokat. A fájl bezárása után azonban már engedélyezhetjük a nyomógombot. PETRIK TISZK TÁMOP /1-2F
33 A fájlba írás lényegesen egyszerűbb. Egy számláló ciklussal végigmegyünk a tömb elemein, és amelyik páros, azt kiírjuk a szövegfájlba. Nagyon fontos, hogy a végén ne felejtsük el lezárni a fájlt, mert különben lehetnek olyan sorok, amelyek nem kerülnek bele! Amennyiben nem adunk meg útvonalat, az elkészült szövegfájlokat ugyanúgy a bin\debug mappában kell keresnünk, mint a beolvasáskor. string fnev = paros.txt ; StreamWriter f = File.CreateText(fnev); for (int i = 0; i < n; i++) if (szamok[i] % 2 == 0) f.writeline(szamok[i]); f.close(); MessageBox.Show( A páros számokat fájlba írtam. ); Amennyiben a tömbünk valamennyi eleme fel lenne töltve adatokkal, az elemek feldolgozásához használhatnánk a foreach ciklust, ami mindenképpen végigmegy az egész tömbön. Ciklusváltozóként nem indexet, hanem olyan típusú változót használ, mint amilyen típusú elemekből a tömb áll, és a futás során azzal lehet hivatkozni a tömb elemeire. A fenti ciklust így írhatnánk foreach segítségével: foreach (int elem in szamok) if (elem % 2 == 0) f.writeline(elem); 32 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
34 Struktúra és rekord együtt 5.2. Nyissuk meg a 2.1. feladatban megtervezett programot, és írjuk meg a fájlból történő beolvasást! Az eredményt jelenítsük meg a ListBoxban! A mellékelt szövegfájlban (adat.txt) az országok neve és területe külön sorban található ábra. Beolvasott adatok megjelenítése A feladat nagyon hasonlít az előzőhöz. Először deklaráljuk a struktúratípust és a tömböt, természetesen mindegyiket globálisként. struct Rekord public string orszag; public int terulet; const int MAX = 100; Rekord[] v = new Rekord[MAX]; int n; A feltöltés is hasonlóan megy, két apró különbséggel. Az egyik, hogy a fájl nevét egy szövegdobozba írja a felhasználó, és amennyiben ezt elmulasztja, akkor figyelmeztetjük erre. A másik, hogy mivel a tömb elemei rekordok, ezért külön-külön kell beolvasni a két mező értékét, így két ReadLine() kell a ciklusba. A beolvasott adatokat írjuk ki a ListBoxba! PETRIK TISZK TÁMOP /1-2F
35 n = 0; listbox1.items.clear(); if (textbox1.text!= ) if (File.Exists(textBox1.Text)) StreamReader f = File.OpenText(textBox1.Text); while (!f.endofstream && n<max) v[n].orszag = f.readline(); string sor = f.readline(); v[n].terulet = int.parse(sor); listbox1.items.add(v[n].orszag + területe: + v[n].terulet. ToString()); n++; f.close(); else MessageBox.Show( A megadott nevű fájl nem létezik! ); else MessageBox.Show( Nem adott meg fájlnevet! ); A kiírásnál a mintában az összetartozó adatokat egy sorba írjuk ki: az ország neve mellett mindjárt a területét is megjelenítjük. Mivel a + operátor szám és szöveg típusú adatokat közvetlenül nem tud összefűzni, ezért a területet string típusúvá kell konvertálni a ToString() függvénnyel. Feladatok 5.3. Bővítsük ki az 5.1 feladatban megírt programot, úgy, hogy beolvasás közben számolja ki a páratlan számok átlagát! Az eredményt írjuk ki a képernyőre! 5.4. Egy szövegfájlban (aru.txt) gyümölcsök nevei vannak, a következő sorban található, hogy hány kg áll rendelkezésre belőlük, a harmadikban pedig az ár szerepel. Olvassuk be ezeket egy struktúrából álló tömbbe, majd számoljuk ki a készlet összértékét (azaz adjuk össze a kg*ár értékeket)! Az eredményt jelenítsük meg a képernyőn! 5.5. Az 5.2 feladat programjában írjuk meg azt a programrészletet, amely kiszámítja az országok területének átlagát! Az eredményt itt is írjuk ki! 34 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
36 ALAPVETŐ PROGRAMOZÁSI TÉTELEK MEGVALÓSÍTÁSA Ennek a témakörnek az a célja, hogy megismerkedj az alapvető programozási tételekkel, illetve megtanuld, hogyan kell őket megvalósítani C# nyelven. Közben gyakorolhatod, hogyan kell feltételeket megfogalmazni, illetve alkalmazni az eddig tanult vezérlési szerkezeteket. Programozási tételek megvalósítása 6.1. Írjuk át az 5.1. feladatban készített programot, és egészítsük ki a programozási tételek megvalósításával! Az eredményeket minden feladatnál írjuk ki a képernyőre MessageBox segítségével! Az alkalmazás kezelőfelületén nem sokat kell változtatnunk, csak néhány új gombot kell felvennünk. Vegyük fel ezeket a gombokat, a feliratukat állítsuk be az alábbi ábrán látható módon! 6.1. ábra. Kiegészítve programozási tételekkel Ha végeztünk az alkalmazás kezelőfelületének átalakításával, a négy gombhoz meg kell írnunk a megfelelő eseménykezelő eljárást. Melyik feladatot melyik programozási tétel segítségével kell megoldani? Az első feladat az elemek átlagának meghatározása. Mivel ehhez össze kell adni az elemeket, majd a végén el kell osztani őket a darabszámmal, ezért a feladathoz az összegzés tétele használható. PETRIK TISZK TÁMOP /1-2F
37 Összegzés tétele Ebben a feladatban nincsen semmi specialitás, az elemeink egyszerű egész számok, és tömbben vannak. Az alap algoritmuson nem kell sokat változtatni. Mivel az átlag mindenképpen valós érték, ezért célszerű már az összegzéshez is valós számként felvennünk, így megússzuk a végén a típuskényszerítést. Az összegzés tételét felhasználva az átlagszámítás, a szamok nevű tömbre felírva: double atlag = 0; for (int i = 0; i < n; i++) atlag += szamok[i]; atlag = atlag / n; Az atlag += szamok[i] egyenértékű az atlag = atlag + szamok[i] utasítással. Természetesen gondoskodnunk kell arról is, hogy a kiszámított érték megjelenjen a képernyőn. Ez történhet egy címkére kiíratva, illetve üzenetablakba, az alábbi módon: MessageBox.Show( A tömb elemeinek átlaga: + atlag.tostring()); Megszámlálás tétele A megszámlálás tételének megvalósításában egyetlen dolgot kell mindig a feladat szövegéhez igazítanunk: a v[i] adott tulajdonságú feltételét kell lecserélnünk a kívánt logikai kifejezésre. Mivel ebben a feladatban a 80-nál nagyobb elemek darabszámát kell megszámolnunk, ezért a feltétel a következőképpen néz ki: szamok[i] > 80. Lássuk tehát a megszámlálás megvalósítását: int db = 0; for (int i = 0; i < n; i++) if (szamok[i] > 80) db++; MessageBox.Show( A 80-nál nagyobb elemek száma: + db.tostring()); A db++ egyenértékű a db = db + 1 utasítással. A kiíratás az előzőhöz hasonlóan történik. 36 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
38 Minimum- és maximumkiválasztás tétele Mivel a két programozási tétel között mindössze egyetlen relációs jel állása a különbség, ezért együtt valósíthatjuk meg őket. Jegyezzük meg, hogy a tételben nem a maximum értékét, hanem a helyét (indexét) tartjuk nyilván, így könnyebben tudjuk más típusú értéket tartalmazó tömbre is alkalmazni azt. Írjuk meg a harmadik gomb eseménykezelőjét, úgy, hogy egyetlen ciklusban meghatározzuk egyszerre a minimum és a maximum értékét is! int min = 0; int max = 0; for (int i = 1; i < n; i++) if (szamok[i] < szamok[min]) min = i; if (szamok[i] > szamok[max]) max = i; Mint látható, elegendő volt felvenni még egy plusz változót, és a ciklusban megismételni az elágazást, ellenkező relációs jellel. Mivel, a min és a max változók a legkisebb és legnagyobb elem helyét (indexét) jelzik, ezért kiíratáskor a szamok[min] és szamok[max] értékét kell kiíratni: MessageBox.Show( A legkisebb elem: + szamok[min].tostring() +, a legnagyobb elem: + szamok[max].tostring()); Vajon mit jelenthet a minimum és a maximum akkor, amikor nem szám, hanem szöveges típusú adatokra alkalmazzuk? Lineáris keresés Utolsó programozási tételünk a keresés. Az egyetlen nehézsége abból adódik, amit a megszámlálásnál már láttunk, hogy valamilyen tulajdonsággal rendelkező elemet kereshetünk vele. Ebben a feladatban viszont egy adott elemet kell megkeresnünk, amit előtte a felhasználótól olvasunk be. Emlékeztető: a beolvasásra alkalmas lehet az InputBox függvény, amit a Visual Basictől vettünk kölcsön. PETRIK TISZK TÁMOP /1-2F
39 int adott = int.parse(interaction.inputbox( Kérem az adott elemet:, Adatbevitel,, 50, 50)); Amennyiben megvan az adott szám, a keresés könnyen felírható. Akkor kell megállnunk, ha a tömb éppen vizsgált eleme egyenlő a beolvasott értékkel, ezért a ciklusfeltételbe ennek tagadását kell írnunk, a!= operátor felhasználásával. int i = 0; while (i < n && szamok[i]!= adott) i++; bool l = (i < n); A keresés eredményét csak akkor lehet kiírni, ha a logikai változó értéke igaz a ciklus lefutása után. Ezért minden lineáris keresés után meg kell vizsgálni az l értékét, és az annak megfelelő üzenetet kell kiíratni: if (l) MessageBox.Show( Az adott elem benne van a tömbben. ); else MessageBox.Show( Az adott elem nincs benne a tömbben. ); 38 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
40 programozási tételek Struktúra típusú adatokra 6.2. Nyissuk meg az 5.2. feladatban elkészített programot, és írjuk meg a többi gomb eseménykezelő metódusát, azaz a többi programozási tételt! Ügyeljünk arra, hogy az eredmények minden feladatnál jelenjenek meg a képernyőn! 6.2. ábra. Itt az ideje tartalommal megtölteni az alkalmazás kezelőfelületét Emlékeztetőül a feladatban használt adattípusok és változók a következők: struct Rekord public string orszag; public int terulet; const int MAX = 100; Rekord[] v = new Rekord[MAX]; int n; Segítség a feladat megoldásához: Átlagszámítás: mivel a területek átlagát kell kiszámolni, ezért az összegzésben a v[i].terulet szerepel. A megszámlálásban a rádiógombokkal tudjuk kiválasztani, hogy mit is akarunk megszámolni, emiatt a feltétel kicsit bonyolultabb. Vagy az elsőt jelöltük be, és akkor a nél nagyobb területűeket számoljuk, vagy a másodikat és akkor a nél kisebb vagy azzal egyenlőket kell beleszámolnunk. Így a kicsit összetett feltétel: PETRIK TISZK TÁMOP /1-2F
41 if ((radiobutton1.checked && v[i].terulet > ) (radiobutton2. Checked && v[i].terulet <= )) Az előző feladatban már csináltunk olyat, hogy minimumot és maximumot is kiválasztunk. Ebben a feladatban viszont a két lehetőség közül választani kell a kombinált lista segítségével. Ezért az első feladatban megírt elágazásokat egy újabb elágazásba kell beágyazni, az alábbi módon: if (combobox1.selectedindex == 0) // ide jön a minimumkiválasztás elágazása else // ide pedig a maximumkiválasztásé A lineáris keresésnél két dologra kell odafigyelni. Az egyik, hogy a felhasználó most szövegdobozba írja be a keresett ország nevét, ezért azt nem hagyhatja üresen, ezt egy elágazással meg kell vizsgálni. A másik, hogy amennyiben a jelölőnégyzetet bekattintjuk, akkor a megtalált ország sorát ki is kell jelölni a listában, a következőképpen: if (checkbox1.checked) listbox1.selectedindex = ind; A Kiírás gomb fájlba írja azon feltételeknek megfelelő országokat, amelyet valamelyik rádiógombbal kiválasztottunk. Így ugyanazt a feltételt kell használnunk, mint amit a megszámlálásnál: if ((radiobutton1.checked && v[i].terulet > ) (radiobutton2. Checked && v[i].terulet <= )) Feladatok 6.3. Írjuk át úgy a 6.2. feladatban megírt programot, hogy a rádiógombokkal kiválasztott feltételnek megfelelő ( nél nagyobb, illetve legfeljebb akkora területű) országoknak megfelelő sorokat egy másik ListBoxba is írja ki, az ábrán látható módon! 40 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
42 6.3. ábra. A 6.2 feladat, kiegészítve a feltételnek megfelelő kiválogatással PETRIK TISZK TÁMOP /1-2F
43 Hibák, hibaüzenetek és kezelésük Ennek a témakörnek az a célja, hogy megismerkedj a programozás során elkövethető hibák fajtáival, ismerd és értsd meg a programozási környezet legfontosabb hibaüzeneteit, és képes legyél ezeket a hibákat kijavítani. Amennyiben a programod rosszul működik, tudd, hogy milyen eszközök állnak rendelkezésedre a hiba helyének és fajtájának felderítéséhez és javításához. Szintaktikai hibák javítása 7.1. Nyissuk meg a Szintaktikai_Hibas nevű projektet! Próbáljuk meg lefordítani! Azt tapasztaljuk, hogy a fejlesztői környezet négy szintaktikai hibát jelez ennek során, pedig a program ennél jóval többet tartalmaz. Javítsuk ki a hibákat lépésről lépésre! A hibajavítás aranyszabálya, hogy lehetőleg egyszerre csak egy hibát próbáljunk meg javítani, és minden javítás után fordítsuk újra a programot! Előfordulhat ugyanis, hogy egy hiba javítása több hibaüzenettől is megszabadít bennünket. 1. empty character literal Az első hiba abból adódik, hogy a textbox1.text tulajdonsága string típusú, mi pedig egy üres karakterrel ( ) próbáljuk meg összehasonlítani, ilyen pedig nem is létezik. Cseréljük ki üres sztringre (dupla idézőjel: )! 2. Syntax error, ( expected Ez a hibaüzenet elég egyértelmű, egy nyitó zárójelet hiányol az if kulcsszó után. Írjuk oda! 3. Invalid expression term else Ha figyelmesebben megnézzük a kódot, az else kulcsszót változónévként használjuk, és két sorral lejjebb az is kiderül, hogy eredetileg elso -t akartunk írni. Javítsuk ki a hibás változónevet! 4. Operator && cannot be applied to operands of type string and bool Ezt az üzenetet egy nehezebben felderíthető hiba okozza. Szó szerint azt jelenti, hogy az ÉS logikai műveletet nem lehet alkalmazni string és bool típusú operandusok esetén. Jelen esetben az üres string ( ) és a (textbox2.text!= ) kifejezések között szeretné ezt a műveletet elvégezni. Ennek oka, hogy a textbox1.text után egyetlen darab egyenlőségjel szerepel, ami értékadás és nem egyenlőségvizsgálat. Ráadásul itt az a feltétel kell, hogy egyik szövegdoboz sem üres. Írjunk egy felkiáltójelet az egyedül álló egyenlőségjel elé! 5. Cannot implicitly convert type int to string A két változó (elso és masodik) összege egész típusú, és egy string típusú változónak szeretnénk értékül adni. Cseréljük az eredm változó típusát int-re! 6. Cannot implicitly convert type int to string Újból felbukkant a hibaüzenet, a következő sorban. Most viszont az eredm változót kell string típusúvá konvertálnunk, hogy értékül tudjuk adni a textbox3 Text tulajdonságának. Tegyük meg, írjuk utána a.tostring() függvényhívást! 7. The name MassageBox does not exist in the current context Az utolsó hiba egyszerű elgépelés: javítsuk ki a hibásan írt szót MessageBox-ra! A javítások után a program már lefordítható és futtatható. 42 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
44 Látható, hogy egy rövid kis programban is rengeteg apró hibát lehet véteni. Kis odafigyeléssel és a fordító üzeneteinek értelmezésével azonban ezeket könnyedén ki tudjuk javítani. Szemantikai hibák javítása Sokkal nehezebb dolgunk van, ha olyan hibát kell kijavítanunk, amelynek okát nem tudjuk, vagy amelyről a fordító nem tud bővebb információt adni. Ha a program lefordítható, de nem azt csinálja, amit szeretnénk, vagy nem csinál semmit, akkor nincs más választásunk, mint hogy megpróbáljuk kitalálni, mi lehet a baj. A továbbiakban egy ilyen programot fogunk kijavítani Nyissuk meg a Szemantikai_Hibas nevű projektet! A program egy számokat tartalmazó vektort tölt fel szövegfájlból, és kiszámolja a számok átlagát. Bár a program lefordítható, a fordítás során egy figyelmeztetés jelenik meg, amely a programban található egyik súlyos szemantikai hibára próbálja felhívni a figyelmünket. Fordítsuk le, és futtassuk a programot. Kattintsunk a Beolvasás fájlból gombra! Kis várakozás után a program elszáll, azaz kivételt dob. Kezdjük el kijavítani a programot! 1. NullReferenceException was unhandled Az objektumhivatkozás nincs beállítva semmilyen objektumpéldányra. Ha magyar nyelvű Windows verziót használunk, akkor ez a fenti hibaüzenet is magyarul jelenik meg. A hibát a szamok[n] tömbelemre való hivatkozás okozza. Ha jobban megnézzük, a tömböt deklaráltuk, de nem inicializáltuk. Pótoljuk, bővítsük ki a deklarációt: int[] szamok = new int[max]; Így a figyelmeztetés is eltűnik. 2. ObjectDisposedException was unhandled Nem lehet bezárt TextReader objektumból olvasni. Elég egyértelmű a hibaüzenet: bezárjuk a fájlt, miközben olvasunk belőle, mivel az f.close() a cikluson belülre került. Helyezzük át a cikluson kívülre! 3. FormatException was unhandled Nem megfelelő a bemeneti karakterlánc formátuma. Ez olyankor fordulhat elő, amikor a beolvasott adatot nem tudja átalakítani szám formátumúra. Nézzük meg a lokális változók értékét mutató Locals ablakot! A sor változó értéke 12e, amit nem tud egész számmá átalakítani és a tömbbe tenni. Javítsuk ki a hibás értéket a szövegfájlban! 4. IndexOutOfRangeException was unhandled Az index a tömb határain kívülre mutatott. Vigyük az n változó fölé az egérmutatót valahol a kódban! Láthatjuk, hogy n=10 esetén áll le a program ezzel a hibaüzenettel. A hiba oka az, hogy a MAX értéke mindössze 10, így a tömb indexei 0 és 9 közé eshetnek, így a 10. elemre már nem tudunk hivatkozni. Növeljük meg a MAX értékét 100-ra! Ezekkel a módosításokkal a beolvasás már le tud futni. Próbáljuk ki az átlagszámítást! 5. A gombra kattintva nem történik semmi. Ezek a legnehezebben felderíthető hibák. Helyezzünk el töréspontot az átlagszámítás elejére és futtassuk lépésenként a programot! Hamar rájöhetünk, hogy a for ciklus feltétele hibás, és ezért végre sem hajtja a ciklusmagot. Cseréljük ki a feltételt i<n -re! PETRIK TISZK TÁMOP /1-2F
45 6. Most már fut az átlagszámítás, de a ciklus minden lépésében kiír egy átlagot, ami ráadásul nem is tűnik törtszámnak. A kiíratást tegyük a cikluson kívülre! 7. A program látszólag jól működik, de a kiírt átlag kevesebb, mint a valódi átlag. Ezt persze nehéz észrevenni, így könnyen maradhat hiba a programunkban. Ha jobban megnézzük, akkor a cikluson belül osztunk az n értékével, ami semmiképpen nem helyes. Töröljük ezt ki, és a cikluson kívül osszunk vele: atlag /= n; 8. Már majdnem minden jó, de egyetlen apró, tényleg nehezen felderíthető hiba maradt a programban. Ha töréspontot teszünk a programban az átlagszámításhoz, és megnézzük a tömb tartalmát, rájöhetünk, hogy a 0. elem üresen maradt benne. Ennek oka, hogy feltöltéskor a ciklusban rossz helyen növeljük az n értékét. Tegyük az utasítást a ciklusmag végére! Kijavítottunk minden hibát a programban, az eredmény most már helyesen 65,65. Összetett feladat 7.3. Nyissuk meg a Harmadik_Hibas nevű projektet! A program úgy sorsol véletlenszerűen öt számot 1 és 90 között, hogy azok között ne legyen két egyforma érték. Vegyesen találhatók benne szintaktikai és szemantikai hibák is. Keressük meg és javítsuk ki ezeket! A programban szerepel véletlenszám-generálás is. Ehhez először létre kell hozni egy Random típusú objektumot: Random r = new Random(); Majd utána generálni kell a következő véletlen számot adott alsó és felső határ között, az alábbi módon: int x; x = r.next(also _ hatar, felso _ hatar+1); Feladatok 7.4. Nézz utána az Interneten vagy a Súgóban, hogy a 7.2. feladatban említetteken kívül milyen kivételek (Exception) fordulhatnak elő a programok futása során! Szedj össze párat! 44 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
46 Kivételek kezelése, ellenőrzött adatbevitel Ennek a témakörnek az a célja, hogy megtanulj olyan nyelvi elemeket, melyeknek segítségével a hibás adatbevitelből eredő hibákat ki tudod küszöbölni. Tudd kezelni, ha a rossz formátumú adatot ad meg a felhasználó, illetve kényszeríteni tudod arra, hogy csak bizonyos feltételnek megfelelő értéket írhasson be. Kivételek kezelése fájlkezelés során 8.1. Nyissuk meg a 6.1. feladatban elkészített régi projektünket! Alakítsuk át a felhasználói felületét az alábbi ábrán látható módon, hogy a szövegfájlok nevét szövegmezők segítségével meg tudjuk adni! 8.1. ábra. A programunk megújult felülete Ebben a programban két esetben lehet probléma: a fájlból beolvasás során, illetve ha az adott elem keresésénél nem adunk meg semmit, illetve rosszat (például betűt) írunk be. Először egészítsük ki a fájlból beolvasást! Fájlból beolvasásnál a File.Exists segítségével már kivédtük a leggyakoribb hibát, a nem létező fájl problémáját. Viszont számos más hiba is előfordulhat, ezért az a legszerencsésebb, ha egy általános kivételkezelő blokkot írunk, amellyel minden hiba kezelhető. A fájlból való beolvasást helyezzük át a try blokkba! Azért, hogy a változók deklarációjával kapcsolatban ne lehessen hatásköri probléma, a fájlváltozót még a try blokk előtt deklaráljuk! StreamReader f = File.OpenText(fnev); PETRIK TISZK TÁMOP /1-2F
47 try while (!f.endofstream && n < MAX) string sor = f.readline(); szamok[n] = int.parse(sor); if (szamok[n] % 2 == 0) listbox1.items.add(sor); else listbox2.items.add(sor); n++; Tulajdonképpen nem csináltunk mást, csak a fájlkezelő sorokat beágyaztuk egy kivételkezelő blokkba. Kivétel kezeléséhez legalább egy catch blokknak szerepelnie kell. A finally blokk opcionális, csak akkor kell, ha valamit mindenképpen végre szeretnénk hajtani, ha volt kivétel, ha nem. A catch blokkban nem kötelező kivételváltozót használni, ebben az esetben is minden kivételt el fog kapni. catch MessageBox.Show( Hiba történt a fájlból beolvasás során. ); A finally blokkban azt szoktuk csinálni, hogy amennyiben a fájlt még nem zártuk be, akkor ezt megtesszük: finally if (f!= null) f.close(); Próbáljuk ki a programot! Ha a szamok.txt fájlt töltjük be, akkor a program kivételt dob, mert van a fájlban egy hibás érték. Amennyiben a szamok2.txt-t adjuk meg, hibátlanul lefut a beolvasás. Az adott elem keresésénél egyszerűbb a helyzet: tudjuk, hogy ha hibás formájú értéket írunk be, akkor el fog szállni a programunk, méghozzá FormatException kivétellel. Ezt kell csak lekezelnünk. A beolvasást és a lineáris keresést is bele kell foglalnunk a kivételkezelő blokkba. 46 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
48 Hatáskörrel és értékadással kapcsolatos gondokat okozna az alábbi kódrészlet: try int adott = int.parse(interaction.inputbox( Kérem az adott elemet:, Adatbevitel,, 50, 50)); catch bool l = false; // ide jönne a lineáris keresés A két probléma: Az adott változót a try blokkban deklaráltuk, ezért csak ott lenne használható. A deklarációt így mindenképpen ki kéne vennünk a kivételkezelés elé. Ennél komolyabb probléma, hogy amennyiben kivétel történik, az adott változó nem kap értéket, és így nem tudjuk felhasználni a lineáris keresésben. Ezek miatt érdemesebb a teljes kódrészletet elhelyezni a try blokkban. try int adott = int.parse(interaction.inputbox( Kérem az adott elemet:, Adatbevitel,, 50, 50)); bool l = false; int i = -1; while (l == false && i < n) i++; if (szamok[i] == adott) l = true; if (l) MessageBox.Show( Az adott elem benne van a tömbben. ); else MessageBox.Show( Az adott elem nincs benne a tömbben. ); catch (FormatException) MessageBox.Show( Hibás értéket adott meg! ); PETRIK TISZK TÁMOP /1-2F
49 Ellenőrzött adatbevitel kivételkezeléssel 8.2. Írjunk programot, amely osztályzatokat olvas be, és azok átlagát számolja ki! Használjunk ellenőrzött adatbevitelt (csak 1 és 5 közötti számokat lehessen beírni), és végjelig történő beolvasást (végjel: 0)! Kivételkezeléssel oldjuk meg, hogy ne lehessen hibás értéket beírni! 8.2. ábra. Jegyek beolvasása Mivel az ellenőrzött adatbevitel és a végjelig történő beolvasás is hátultesztelő ciklust igényel, ezért ezeket egymásba kell ágyazni a programban. Célszerű a használt változókat ezek előtt deklarálni, és kezdőértéket adni nekik. double atl = 0; int db = 0; int szam; Az ellenőrzött adatbevitelt a prezentációban már lehetett látni, itt csak annyit kell rajta változtatni, hogy a 0-t is meg kell engedni, különben nem fog működni a végjelig történő beolvasás: do try string s = Interaction.InputBox( Kérem a következő osztályzatot:, Adatbevitel, 0, 100, 100); szam = int.parse(s); catch (FormatException) MessageBox.Show( Hibás adatbevitel! ); szam = -1; while (szam < 0 szam > 5); A konvertálás miatt elhelyeztünk egy kivételkezelő blokkot is. Itt is a FormatException-t kapjuk el, és a szam változót azért állítjuk a catch blokkban -1-re, mert így az ellenőrzött adatbevitel ciklusfeltétele teljesül, és hibás adat beírása esetén újra beolvassa azt. A következő kódrészlet átlagot számol, majd a képernyőn megjeleníti az eredményt. A megjegyzés (// ide jön az ellenőrzött adatbevitel) helyére ágyazzuk be a fenti végjelig történő beolvasást! 48 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
50 do // ide jön az ellenőrzött adatbevitel if (szam!= 0) atl += szam; db++; while (szam!= 0); if (db!= 0) atl /= db; label1.text = Átlag: + atl.tostring(); Az átlag számolásakor figyelembe kell vennünk, hogy a végjelként beírt 0 érték ne számítson bele az átlagba, illetve ami fontosabb, hogy a darabszámot se növeljük vele. Összetett feladat 8.3. Bővítsük ki egy korábbi programunkat, amely bekéri a másodfokú egyenlet a, b, c együtthatóit, és meghatározza az egyenlet gyökét vagy gyökeit, amennyiben ez lehetséges! A programban kezeljünk le minden lehetséges esetet (a = 0, diszkrimináns negatív, nulla, illetve pozitív) is! Használjunk kivételkezelést! Feladatok 8.4. Írj programot, amely bekér két egész számot és kiírja a hányadosukat és a maradékot! Használj kivételkezelést! A fenti feladatban a nullával osztást is kezelni kell! PETRIK TISZK TÁMOP /1-2F
51 Projektfeladat: program készítése Ennek a témakörnek az a célja, hogy az eddigi ismereteidet felhasználva csoportmunkában készítsd el egy nagyobb lélegzetű feladat megoldását. Ennek során a csapatmunka mellett el tudsz sajátítani jó pár olyan technikát, amely segít abban, hogy később, egy cégnél dolgozva képes legyél másokkal együttműködve megoldani nagyobb feladatokat. A feladatok közös része Amit a feladatok megoldásához mindenképpen meg kell valósítani: A program: el kell készíteni Visual C# Express 2008 programozási környezetben egy olyan programot, amely megoldja valamelyik kitűzött feladatot. Csak szintaktikailag tökéletes, fordításra és futtatásra alkalmas program elfogadható! Kezeljünk le minden olyan hibalehetőséget, amely problémát okozhat a program működésében, ahol szükséges, használjunk kivételkezelést! Bemutató (prezentáció), plakát vagy ismertető: egy olyan anyagot is el kell készíteni, amelyből nem csak a program funkciója, használatának módja derül ki, hanem amely marketing célokat is szolgál, azaz kiemeli a program használatának előnyeit, mintegy megpróbálja eladni a programot. Ennek segítségével kell a csoport valamelyik tagjának bemutatni a többieknek az elkészült produktumot. Fontos megjegyezni, hogy a mintaprogramok kizárólag támpontot nyújtanak a feladat elkészítéséhez, nem egy az egyben kell őket reprodukálni, az csak a minimum! Az elkészült programok legyenek szebbek és jobbak a mintaprogramoknál! Segítség a feladatok megoldásához A ListBox elemeit a listbox1.items[i] tömbhivatkozás segítségével érhetjük el, így végig tudunk menni az elemein ahhoz, hogy fájlba tudjuk őket írni. A lista elemeinek számát a listbox1. Items.Count tulajdonság tárolja. Kommentet (megjegyzést) az alábbi két módon tudunk elhelyezni a programban: // ez csak a sor végéig tart /* ez tetszőleges számú soron keresztül tarthat */ Annak érdekében, hogy könnyebben tudjatok együtt dolgozni, az egyes funkciókat érdemes paraméterek nélküli eljárásokba (metódusokba) írni. Ezek formája: private void Nev() // ide jön a metódus törzse Metódusok meghívása (pl. Click eseménykezelőből): Nev(); 50 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
52 Lottósorsolás 9.1. ábra. Lottósorsolást szimuláló program Készítsünk programot, amely lottósorsolást szimulál! Követelmények: Egy húzás alkalmával egy szám csak egyszer fordulhasson elő! Alapesetben ötöslottót szimuláljunk, azaz öt véletlenszámot állítsunk elő 1 és 90 között. Rendezzük a kihúzott számokat növekvő sorrendbe! A rendezési algoritmust az Interneten találhatjuk meg, például az alábbi címen: Minimumkiválasztásos rendezés: ( ) A kihúzott számokat az ábrán látható módon egy ListBoxba vezessük, amelynek tartalmát fájlba lehet menteni, illetve onnan betölteni és folytatni a sorsolásokat! Továbbfejlesztési lehetőségek: Oldjuk meg, hogy lehessen választani ötös- és hatoslottó között (azaz lehessen hat véletlenszámot is sorsolni 1 és 45 között)! Lehessen választani, hogy melyik fájlba mentsen a program, illetve melyik állományból töltse be az adatokat! A program olvasson be számokat a felhasználótól, és ellenőrizze, hogy az utolsó sorsolás alkalmával hány számot sikerült eltalálni! PETRIK TISZK TÁMOP /1-2F
53 Osztálypénz nyilvántartása 9.2. ábra. Osztálypénz-nyilvántartó program Készítsünk programot, amely segít az osztályfőnöknek az osztálypénzt nyilvántartani! Követelmények: Kétféle tranzakciót engedjünk meg: be- és kifizetést. Ne engedjünk meg olyan kifizetést, amelynek nincsen fedezete! Minden tranzakcióhoz olvassuk be a nevet és az összeget. Ne engedjünk meg negatív számot, és kivételkezeléssel kezeljük a hibás adat bevitelét! A végrehajtott műveleteket az ábrán látható módon egy ListBoxba vezessük, aminek tartalmát fájlba lehet menteni, illetve onnan betölteni és folytatni a tranzakciók feldolgozását! Továbbfejlesztési lehetőségek: Tároljuk el a be- és kifizetések jogcímét és dátumát is! A jogcímeket egy külön listából lehessen választani, amelyet tudunk bővíteni is! Lehessen választani, hogy melyik fájlba mentsen a program, illetve melyik állományból töltse be az adatokat! A program készítsen kimutatást, hogy az egyes tanulók összesen mennyit fizettek be! 52 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA tanulói jegyzet 11. évfolyam
54 Projektfeladat: program bemutatása Ennek a témakörnek az a célja, hogy útmutatást adjon a program bemutatásához, és megadja az értékelés szempontjait. A projektfeladat lezárásaként be kell mutatni az elkészült műveket. Az óra menete: a csapatok egymás után ismertetik a megoldásukat a többi csapattal, akik a tanártól kapott értékelőlapon pontozhatják a projektfeladatokat. Az óra végén vagy következő órára a pontszámok összesítésre kerülnek, és akkor kiderül, hogy az osztály melyik csapat programját értékelte a legjobbnak! A bemutató során nagyon figyeljünk az óránkra, ne lépjük túl a ránk eső időkeretet, mert akkor a többi csapattól vesszük el a bemutatás lehetőségét! Az értékelés szempontjai: Külső: mennyire szép, jól használható, intuitív a program kezelői felülete. Helyes működés: a program a lehetséges hibákat jól kezeli, jó eredményt ad minden esetben, nem lehet kiakasztani. Extrák: mennyire tért el a mintaprogramtól, illetve valósította meg a javasolt továbbfejlesztéseket. Itt lehet díjazni, ha a program nem pusztán másolata a mintaprogramnak, hanem attól jó értelemben eltérő, igényes, egyedi munka. Átlátható, szép kód: jól tagolt, követhető, megjegyzésekkel ellátott, tehát egy külső ember számára könnyedén továbbfejleszthető. Marketing: mennyire igényes, elegáns bemutatót, illetve plakátot terveztek a program népszerűsítésére, milyen volt az előadó, mennyire mutatta be a program értékeit, mennyire hangsúlyozta az erősségeket. PETRIK TISZK TÁMOP /1-2F
55 Nemzeti Fejlesztési Ügynökség ÚMFT infovonal:
Bevezetés a Visual C# 2008 használatába
Szakmacsoportos alapozó gyakorlatok informatika területre Bevezetés a Visual C# 2008 használatába 11. évfolyam TANULÓI JEGYZET A TISZK rendszer továbbfejlesztése Petrik TISZK TÁMOP-2.2.3-07/1-2F-2008-0011
BEVEZETÉS A C# PROGRAMOZÁSBA KÉSZÍTETTE: CZIGLÉCZKY GÁBOR
BEVEZETÉS A C# PROGRAMOZÁSBA KÉSZÍTETTE: CZIGLÉCZKY GÁBOR BEVEZETÉS Napjainkban a vizuális fejlesztőkörnyezetek virágkorukat élik, a programozók jelentős része integrált fejlesztőkörnyezetekben (IDE =
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió
BME MOGI Gépészeti informatika 3. 1. feladat Végezze el a következő feladatokat! Kérjen be számokat 0 végjelig, és határozza meg az átlagukat! A feladat megoldásához írja meg a következő metódusokat! a.
Szoftvertervezés és -fejlesztés I.
Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás OE-NIK, 2013 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 8. előadás Visszatekintés A Windows Console alkalmazások egy karakteres képernyőt biztosítottak, ahol a kimenet a kiírt szöveg, míg a bemenet a billentyűzet volt.
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása
Tájékoztató. Használható segédeszköz: -
A 12/2013. (III. 29.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.
Számítás:. Olvassuk be két pont koordinátáit: (, y) és (2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki. 2. Olvassuk be két darab két dimenziós vektor komponenseit: (a, ay) és (b, by). Határozzuk
VARIO Face 2.0 Felhasználói kézikönyv
VARIO Face 2.0 Felhasználói kézikönyv A kézikönyv használata Mielőtt elindítaná és használná a szoftvert kérjük olvassa el figyelmesen a felhasználói kézikönyvet! A dokumentum nem sokszorosítható illetve
BME MOGI Gépészeti informatika 13.
BME MOGI Gépészeti informatika 13. 1. feladat Készítsen alkalmazást, mely elvégzi a következő feladatokat! a. Állítson elő adott intervallumba eső, adott számú véletlen számot, és írja ki a számokat egy
Tartalom jegyzék 1 BEVEZETŐ 2 1.1 SZOFTVER ÉS HARDVER KÖVETELMÉNYEK 2 2 TELEPÍTÉS 2 3 KEZELÉS 5
Tartalom jegyzék 1 BEVEZETŐ 2 1.1 SZOFTVER ÉS HARDVER KÖVETELMÉNYEK 2 2 TELEPÍTÉS 2 3 KEZELÉS 5 3.1 ELSŐ FUTTATÁS 5 3.2 TULAJDONOSI ADATLAP 6 3.3 REGISZTRÁLÁS 6 3.4 AKTIVÁLÁS 6 3.5 MÉRÉS 7 3.5.1 ÜGYFÉL
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban
Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\
1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
BME MOGI Gépészeti informatika 5.
BME MOGI Gépészeti informatika 5. 1. feladat Készítsen alkalmazást, mely feltölt egy egydimenziós tömböt adott tartományba eső, véletlenszerűen generált egész értékekkel! Határozza meg a legkisebb és a
SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS
SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS 2.ELŐADÁS A VB programozási nyelv Az Excel programozása 2 A VB programozási nyelv Adattípusok Adatok kezelése Vezérlőszerkezetek Adattípusok és műveletek Egész adattípusok
BME MOGI Gépészeti informatika 4.
BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám
Johanyák Zsolt Csaba: Grafikus felület programozása. http://www.johanyak.hu e-mail: [email protected] Copyright 2008 Johanyák Zsolt Csaba
Johanyák Zsolt Csaba: Grafikus felület programozása http://www.johanyak.hu e-mail: [email protected] Copyright 2008 Johanyák Zsolt Csaba 1. Gyümölcsárazó automata Készítsünk egy gyümölcsárazó
1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb
1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb #include main() { int a, b; printf( "a=" ); scanf( "%d", &a ); printf( "b=" ); scanf( "%d", &b ); if( a< b ) { inttmp = a; a =
Objektumorientált Programozás III.
Objektumorientált Programozás III. Vezérlési szerkezetek ismétlés Matematikai lehetőségek Feladatok 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő
Java programozási nyelv
Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék
BME MOGI Gépészeti informatika 6.
BME MOGI Gépészeti informatika 6. 1. feladat Készítsen Windows Forms alkalmazást véletlen adatokkal létrehozott körök kölcsönös helyzetének vizsgálatára! Hozza létre a következő struktúrákat, melynek elemei
1. Jelölje meg az összes igaz állítást a következők közül!
1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.
Programozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
Tájékoztató. Használható segédeszköz: -
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés, azonosító száma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
Választó lekérdezés létrehozása
Választó lekérdezés létrehozása A választó lekérdezés egy vagy több rekordforrásból származó adatokat jelenít meg. A választó lekérdezések a táblák, illetve az adatbázis tartalmát nem változtatják meg,
7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
Dokumentum létrehozása/módosítása a portálon:
Dokumentum létrehozása/módosítása a portálon: 1. Belépés a szerkesztőfelületre A következő webcímre belépve - http://www.zalaegerszeg.hu/licoms/login - megjelenik a szerkesztőfelület beléptető ablaka,
BME MOGI Gépészeti informatika 2.
BME MOGI Gépészeti informatika. 1. feladat Generáljon egy 1 és 100 közötti véletlen egész számot, melyre a felhasználó tippelhet. A tippet a program értékelje a Sok vagy a Kevés visszajelzéssel. Ha a felhasználó
BME MOGI Gépészeti informatika 1.
BME MOGI Gépészeti informatika 1. 1. feladat Végezze el a következő feladatokat! Olvassa be a nevét és írjon üdvözlő szöveget a képernyőre! Generáljon két 1-100 közötti egész számot, és írassa ki a hányadosukat
BME MOGI Gépészeti informatika 7.
BME MOGI Gépészeti informatika 7. 1. feladat Írjon Windows Forms alkalmazást egy kör és egy pont kölcsönös helyzetének vizsgálatára! A feladat megoldásához hozza létre a következő osztályokat! Pont osztály:
A szerzõrõl... xi Bevezetés... xiii
TARTALOMJEGYZÉK A szerzõrõl...................................................... xi Bevezetés...................................................... xiii I. rész A Visual Basic 2005 környezet 1. óra Irány
BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA
Szakmacsoportos alapozó gyakorlatok informatika területre Informatikai gyakorlatok TÁMOP-2.2.3-07/1-2F-2008-0011 BEVEZETÉS A VISUAL C# 2008 HASZNÁLATÁBA Informatikai gyakorlatok 11. évfolyam TANÁRI KÉZIKÖNYV
Programozás I. gyakorlat
Programozás I. gyakorlat 1. gyakorlat Alapok Eszközök Szövegszerkesztő: Szintaktikai kiemelés Egyszerre több fájl szerkesztése pl.: gedit, mcedit, joe, vi, Notepad++ stb. Fordító: Szöveges file-ban tárolt
Aromo Szöveges értékelés normál tantárggyal
Aromo Szöveges értékelés normál tantárggyal Aromo Iskolaadminisztrációs Szoftver Felhasználói kézikönyv -- Szöveges értékelés 1 Tartalomjegyzék Aromo Szöveges értékelés normál tantárggyal 1 Bevezetés 3
Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba
Ugráló gomb Készítsünk egy egyszerű játékprogramot, ami egy mozgó nyomógombot tartalmaz. A nyomógomb beállított ideig marad egy helyben, majd az ablakon számára elhatárolt terület (panel) egy véletlenszerűen
INFORMATIKAI ALAPISMERETEK
ÉRETTSÉGI VIZSGA 2005. május 20. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÉRETTSÉGI VIZSGA Az írásbeli vizsga időtartama: 180 perc JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI MINISZTÉRIUM Megoldási útmutató I.
DuneHD.hu. Kompatibilis médialejátszók: Dune HD Center Dune BD Prime Dune HD Base 2.0 Dune HD Base 3.0 Dune BD Prime 3.0
A Zappiti egy donationware, vagyis ingyenes program, mellyel kibővítheted Dune médialejátszód képességeit. A leírás a Zappiti 1.2.1 Beta változata alapján készült. Kompatibilis médialejátszók: Dune HD
Gyakorló 9. feladat megoldási útmutató
Gyakorló 9. feladat megoldási útmutató 1. Minek a leírása a következő? Aktív hálózati hardver eszközök (pl.: routerek) és szoftverek segítségével létrehozott biztonsági rendszer két hálózat (jellemzően
1. Alapok. #!/bin/bash
1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk
Bevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
C#---Access adatbáziskezelési gyakorlat
C#---Access adatbáziskezelési gyakorlat 1. Feladat: adatbázis kezelő alkalmazás készítése C# környezetben, Access adatbázist használva. 2. Minta adatbázis létrehozása ACCESS-ben 3. A Projekt létrehozása
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 0621 ÉRETTSÉGI VIZSGA 2007. május 25. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM
Gyakorló feladatok az 1. nagy zárthelyire
Gyakorló feladatok az 1. nagy zárthelyire 2012. október 7. 1. Egyszerű, bevezető feladatok 1. Kérjen be a felhasználótól egy sugarat. Írja ki az adott sugarú kör kerületét illetve területét! (Elegendő
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
Bevezetés a programozásba I.
Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb
A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.
Mappakezelés WINDOWS-7 A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak. A PC legnagyobb mappája, amely az összes többi mappát is magában foglalja,
Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto [email protected] http://people.inf.elte.hu/groberto Fájlok
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 0811 ÉRETTSÉGI VIZSGA 2008. május 26. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján.
A 35/2016. (VIII. 31.) NFM rendelet szakmai és vizsgakövetelménye alapján. Szakképesítés azonosítószáma és megnevezése 54 481 06 Informatikai rendszerüzemeltető Tájékoztató A vizsgázó az első lapra írja
3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla
1. Az adatbázistábla létrehozása a, Ha még nem hoztunk létre egy adatbázistáblát sem, akkor a jobb egérrel a DDIC-objekt. könyvtárra kattintva, majd a Létrehozás és az Adatbázistábla menüpontokat választva
Műveletek makrókkal. Makró futtatása párbeszédpanelről. A Színezés makró futtatása a Makró párbeszédpanelről
Műveletek makrókkal A munkafüzettel együtt tárolt, minden munkalapon elérhető makrót a Fejlesztőeszközök szalag Makrók párbeszédpanelje segítségével nyithatjuk meg, innen végezhetjük el a makrókkal megoldandó
Gyakorló feladatok Gyakorló feladatok
Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó
Aromo Szöveges értékelés kódolt tantárggyal
Aromo Szöveges értékelés kódolt tantárggyal AROMO Iskolaadminisztrációs Szoftver - Felhasználói kézikönyv - Szöveges értékelés 1 Tartalomjegyzék Aromo Szöveges értékelés kódolt tantárggyal 1 Bevezetés
Access gyakorlati feladatok lépésről lépésre
Access gyakorlati feladatok lépésről lépésre 1. feladat: Hajómenetrend A balatoni hajómenetrend rendelkezésünkre áll a menetrend.txt állományban. Készítsen új adatbázist HAJO néven! A mellékelt adatállományt
Bevezetés a programozásba I.
Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14. Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a
3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
Táblázatok. Táblázatok beszúrása. Cellák kijelölése
Táblázatok Táblázatok beszúrása A táblázatok sorokba és oszlopokba rendezett téglalap alakú cellákból épülnek fel. A cellák tartalmazhatnak képet vagy szöveget. A táblázatok használhatók adatok megjelenítésére,
HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
CareLink Personal telepítési útmutató. Első lépések a CareLink Personal adatfeltöltéshez
CareLink Personal telepítési útmutató Első lépések a CareLink Personal adatfeltöltéshez A CareLink USB illesztőprogram telepítése A CareLink USB illesztőprogramot telepíteni kell. Ez az illesztőprogram
GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();
BME MOGI Gépészeti informatika 17. A C# nyelv generikus típusait a System.Collections.Generics névtérben találhatjuk meg. Ez a névtér számos osztályt és interfészt tartalmaz, amelyek lehetővé teszik előre
Occam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
Rövid leírás a Make Your Mark szoftver használatához
Rövid leírás a Make Your Mark szoftver használatához Ahhoz, hogy egy gyors példán keresztül bemutassunk, a program működését, egy Plytex címkét hozunk létre. Először létre kell hozni egy címkét, majd kinyomtatni
Di1611/Di2011. KEZELÉSI ÚTMUTATÓ: Twain
Di1611/Di2011 KEZELÉSI ÚTMUTATÓ: Twain Driver Tartalomjegyzék Tartalomjegyzék 1 A PC szkennelés beállítása 2 Csatlakozás az USB portra 3 A TWAIN meghajtó telepítése 3.1 A TWAIN meghajtó telepítése Plug
ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.
ADATBÁZIS-KEZELÉS ALAPOK Főbb Adattípusok: Igen/Nem Bájt Ez az adattípus logikai adatok tárolására alkalmas. A logikai adatok mindössze két értéket vehetnek fel. (Igen/Nem, Igaz/Hamis, Férfi/Nő, Fej/Írás
Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész
Java Programozás 5. Gy: Java alapok Adatkezelő 1.rész 27/1 B ITv: MAN 2018.04.13 Feladat Egy nagyon hosszú feladatmegoldásba kezdünk bele: létrehozunk egy adatkezelő programot, sok-sok extrával: 27/2 A
Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto [email protected] http://people.inf.elte.hu/groberto Fájlok
Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: Név: [email protected] Kurzuskód:
Szerző Név: Varga Péter ETR azonosító: VAPQAAI.ELTE Email cím: [email protected] Kurzuskód: IP-08PAEG/27 Gyakorlatvezető neve: Kőhegyi János Feladatsorszám: 20 1 Tartalom Szerző... 1 Felhasználói dokumentáció...
Alapok (a K2D rendszer alapjai)
Alapok (a K2D rendszer alapjai) 1 1. Bevezetés... 3 2. Fastruktúra... 3 2.1. Nyitása, zárása... 3 2.2. Fülek... 5 2.3. Licence kulcs érvényesítése... 9 2.4. Új elem felvitele... 10 2.5. Elem törlése...
Egyszerű programozási tételek
Egyszerű programozási tételek 2. előadás Sergyán Szabolcs [email protected] Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.
Órarendkészítő szoftver
SchoolTime Órarendkészítő szoftver 2.0 verzió Tartalomjegyzék: 1., Belépés a programba...3 2., Órarend főtábla...3 3., Tanátok...4 3.1., Új tanár felvitele, módosítása...4 3.2., Tanár törlése...4 3.3.,
E-Freight beállítási segédlet
E-Freight beállítási segédlet Az E-Freight rendszer működéséhez szükséges programok és beállítások v08 A legújabb verzióért kérjük, olvassa be az alábbi kódot: 1. Támogatott böngészők Az E-Freight az Internet
Felhasználói Kézikönyv
Felhasználói Kézikönyv A ForteMap használatához 1 T a r talomjegyzék 1. AZ ALKALMAZÁS ELINDÍTÁSA... 3 1.1. A KEZELŐFELÜLET ISMERTETÉSE... 3 1.2. NAVIGÁLÁS A TÉRKÉPEN... 3 1.2.1. Térkép nagyítása... 4 1.2.2.
Segédlet az Eger Megyei Jogú Város Polgármesteri Hivatal által kiadott, PHEGER_1231-es építményadó bevallásához használt elektronikus nyomtatványhoz.
Segédlet az Eger Megyei Jogú Város Polgármesteri Hivatal által kiadott, PHEGER_1231-es építményadó bevallásához használt elektronikus nyomtatványhoz. Elektronikus adóbevallását a NAV portáljáról letöltött
Kézikönyv. Szelekciós operátorok használata
Kézikönyv Szelekciós operátorok használata Tartalomjegyzék 1 ABAS-ERP UTASÍTÁS ÁTTEKINTÉS... 7 2 ÁRUCIKK - ÜRES... 9 3 OBJEKTUM KIVÁLASZTÁS - ÁRUCIKK MEGJELENÍTÉS... 10 4 ABAS-ERP... 18 5 OBJEKTUM KIVÁLASZTÁS
Diagram létrehozása. 1. ábra Minta a diagramkészítéshez
Bevezetés Ebben a témakörben megtanuljuk, hogyan hozzunk létre diagramokat, valamint elsajátítjuk a diagramok formázásnak, módosításának lehetőségeit. A munkalap adatainak grafikus ábrázolási formáját
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Programozás alapjai 9.Gy: Struktúra 2.
Programozás alapjai 9.Gy: Struktúra 2. Ördögi részletek P R O A L A G 35/1 B ITv: MAN 2018.11.10 Euró árfolyam statisztika Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR).
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna [email protected] 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
1. DVNAV letöltése és telepítése
1. DVNAV letöltése és telepítése A Drén és Valner Szoftver Kft által készített DVNAV programmal lehetőség van a számlázó program által elkészített XML-ek NAV-hoz történő eljuttatására, majd a számlákról
M-Fájlok létrehozása MATLAB-ban
M-Fájlok létrehozása MATLAB-ban 1 Mi az M-fájl Annak ellenére, hogy a MATLAB rendkívül kifinomult és fejlett számológépként használható, igazi nagysága mégis abban rejlik, hogy be tud olvasni és végrehajtani
FTP Az FTP jelentése: File Transfer Protocol. Ennek a segítségével lehet távoli szerverek és a saját gépünk között nagyobb állományokat mozgatni. Ugyanez a módszer alkalmas arra, hogy a kari web-szerveren
Aromo Szöveges Értékelés
Aromo Szöveges Értékelés AROMO Iskolaadminisztrációs Szoftver v2.50 - Felhasználói kézikönyv- Szöveges értékelés 1 Tartalomjegyzék Aromo Szöveges Értékelés 1 Bevezetés 3 A Szöveges Értékelés modul koncepciója
CÍMJEGYZÉK ÜDVÖZLÜNK A TALK FUSION CÍMJEGYZÉK HASZNÁLATI ÚTMUTATÓJÁBAN
CÍMJEGYZÉK ÜDVÖZLÜNK A TALK FUSION CÍMJEGYZÉK HASZNÁLATI ÚTMUTATÓJÁBAN A hét minden napján minden órában elérhető videó kommunikációs központodból, bármikor néhány lépéssel videó e-mail-t küldhetsz. Láss
Szoftvertechnolo gia gyakorlat
Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot
Memeo Instant Backup Rövid útmutató. 1. lépés: Hozza létre ingyenes Memeo fiókját. 2. lépés: Csatlakoztassa a tárolóeszközt a számítógéphez
Bevezetés A Memeo Instant Backup egyszerű biztonsági másolási megoldás, mely nagy segítséget nyújt a bonyolult digitális világban. A Memeo Instant Backup automatikus módon, folyamatosan biztonsági másolatot
Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
NINJA kezelői program letöltése és installálása
NINJA kezelői program letöltése és installálása A regisztrálás, illetve feltöltés után Ön kapott egy e-mailt tőlünk, melyben leírtuk Önnek a szolgáltatás eléréséhez nélkülözhetetlen, fontos adatokat. A
POSZEIDON dokumentáció (1.2)
POSZEIDON dokumentáció (1.2) Bevezetés a Poszeidon rendszer használatába I. TELEPÍTÉS Poszeidon alkalmazás letölthető: www.sze.hu/poszeidon/poszeidon.exe Lépések: FUTTATÁS / (FUTTATÁS) / TOVÁBB / TOVÁBB
Egyszerűbb a Google keresőbe beírni a Sharepoint Designer 2007 letöltés kulcsszavakat és az első találat erre a címre mutat.
A feladat megoldásához a Sharepoint Designer 2007 programot használjuk, mely ingyenesen letölthető a Microsoft weboldaláról. Az érettségi aktuális szoftverlistája alapján az Expression Web 2, az Expression
Szöveges műveletek. Mielőtt nekikezdenénk első szövegünk bevitelének, tanuljunk meg néhány alapvető műveletet a 2003-as verzió segítségével:
Alapvető szabályok Mielőtt nekikezdenénk első szövegünk bevitelének, tanuljunk meg néhány alapvető műveletet a 2003-as verzió segítségével: Minden szöveges elem szövegdobozban, objektumban helyezkedik
I. Specifikáció készítés. II. Algoritmus készítés
Tartalomjegyzék I. Specifikáció készítés...2 II. Algoritmus készítés...2 Egyszerű programok...6 Beolvasásos feladatok...10 Elágazások...10 Ciklusok...1 Vegyes feladatok...1 1 I. Specifikáció készítés A
9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.
Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa
