A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási segédanyag, mely a



Hasonló dokumentumok
Informatika terméktervezőknek

1. Jelölje meg az összes igaz állítást a következők közül!

Gyakorló feladatok az 1. nagy zárthelyire

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Osztályok. 4. gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

OOP #14 (referencia-elv)

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

3. Osztályok II. Programozás II

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

BME MOGI Gépészeti informatika 5.

Felvételi tematika INFORMATIKA

Java gyakorlat feladatai e s megolda sai ( )

Szoftvertechnolo gia gyakorlat

BME MOGI Gépészeti informatika 13.

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Globális operátor overloading

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

BME MOGI Gépészeti informatika 1.

A C# programozási nyelv alapjai

Bevezetés a Python programozási nyelvbe

A C# PROGRAMOZÁSI NYELV

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

C++ programozási nyelv

OOP: Java 8.Gy: Abstract osztályok, interfészek

.Net adatstruktúrák. Készítette: Major Péter

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ási nyelvek II. JAVA

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Objektumorientált programozás C# nyelven

Java II. I A Java programozási nyelv alapelemei

INFORMATIKAI ALAPISMERETEK

Készítette: Nagy Tibor István

1. Alapok. #!/bin/bash

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Entity Framework alapú adatbáziselérés

I. Specifikáció készítés. II. Algoritmus készítés

Java programozási nyelv 5. rész Osztályok III.

10. gyakorlat Struktúrák, uniók, típusdefiníciók

A legfontosabb DOS parancsok

Programozási nyelvek Java

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

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.

Kalapácsvetés 2016 szöveges

7. K: JAVA alapok Konzultáció

C# feladatok gyűjteménye

BME MOGI Gépészeti informatika 4.

Java programozási nyelv 6. rész Java a gyakorlatban

BME MOGI Gépészeti informatika 8.

OOP: Java 8.Gy: Gyakorlás

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Tájékoztató. Használható segédeszköz: -

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Bevezetés a programozásba I.

INFORMATIKAI ALAPISMERETEK

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

5. Gyakorlat. struct diak {

A szerzõrõl... xi Bevezetés... xiii

Programozási alapismeretek 4.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

BME MOGI Gépészeti informatika 6.

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Objektum Orientált Programozás V.

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

OOP: Java 4.Gy: Java osztályok

8. gyakorlat Pointerek, dinamikus memóriakezelés

BME MOGI Gépészeti informatika 7.

Objektumorientált Programozás VI.

Programozás I gyakorlat

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

1. Egyszerű (primitív) típusok. 2. Referencia típusok

2018, Funkcionális programozás

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

1. Alapok. Programozás II

Bánsághi Anna 2014 Bánsághi Anna 1 of 35

Programozási technológia

Átírás:

oktatási segédanyag, mely a Társadalmi Megújulás Operatív Program Határon átnyúló együttműködés a szakképzés és a felnőttképzés területén c. pályázati felhívás keretében megvalósított Mobil alkalmazásfejlesztés az informatikai tudás innovatív alkalmazásával című, TÁMOP-2.2.4-11/1-2012-0055 kódszámú projekt keretében valósult meg. 2013.

Tartalomjegyzék 1 1. Bevezető...2 2. A.NET Framework alapjai...3 3. A Visual Studio...5 4. A C# nyelv fundamentumai...7 5. Ciklusok, feltételes utasítások...9 6. Tömbök... 13 7. Metódusok... 16 8. Osztályok... 19 9. Struktúrák... 22 10. Gyűjtemények... 24 11. Típusos gyűjtemények, generikusok... 26 12. Fájlkezelés... 28 13. Kivételkezelés... 31

1. Bevezető 2 Ez a gyakorlati feladatsor a C# programozási alapjai oktatási segédanyaghoz készült. Olyan elméleti és gyakorlati kérdésekkel igyekszik segíteni az olvasó tájékozódását és programozási gyakorlatát, ami ebben az anyagban elhangzik. A feladatok egy részénél a megoldáshoz segítséget is adunk a könnyebb kivitelezés érdekében. A feladatok egy másik részében pedig hibák nyomára kell bukkannunk, vagy éppen kitalálni, mit csinál az adott algoritmus. Reméljük érdekesebbé és színesebbé teszi a Kedves Olvasó ismerkedését ezzel a korszerű programozási nyelvvel ez a kis feladatgyűjtemény.

2. A.NET Framework alapjai 3 1. Mit jelent a framework kifejezés? 2. Hogyan támogatja a.net Framework a platformsemlegességet? 3. Mikor jelent meg az első hivatalos változat a.net Frameworkből? 4. Mit jelent a közös nyelvi futtató környezet (CLR)? 5. Hasonlítsd össze a CLR-t és a JAVA alatt elérhető JVM-et! Miben hasonlítanak, miben különböznek egymástól? 6. Mi a jelentősége a Common Language Specification-nek (CLS)? 7. Sorold fel az alapvető típusokat a nyelvben! 8. Milyen módon biztosítható a visszamenőleges kompatibilitás a korábbi változatokkal? 9. Milyen lépésekből áll a fordítás? 10. Mi az alábbi ábrában a Base Class Library jelentése? Mi a szerepe az architektúrában? 1. ábra.net Framework

4 11. Mit jelent a Jitter? Milyen feladata van a futtatás során? 12. Mit jelent az Assembly? Milyen részekből áll? 13. Milyen verziójú.net Framework van telepítve a gépeden? Szükség esetén telepítsd fel az adott verziójú Windows-hoz elérhető legfrissebb változatot! 14. Készítsd el a Helló Világ című alkalmazást, majd fordítsd le parancssorban a csc.exe segítségével!

3. A Visual Studio 5 1. Milyen platformokra érhető el Visual Studio? 2. Milyen programozási nyelveken fejleszthetsz az általad használt Visual Studio segítségével? 3. Ismertesd a főbb projekttípusokat az eszközben! 4. Mit jelent a projekt és a solution? Hasonlítsd össze őket! 5. Milyen könyvtárszerkezet jön létre a projekt készítésekor? 6. Mi a különbség a Debug és a Release mód között? 7. Mit jelent az IntelliSense? 8. Milyen Code Snippeteket támogat a Visual Studio? Listázd ki őket! 9. Mutasd be a kiválasztott elem névtérhez kötését az eszköz segítségével! 10. Hogyan tudod a program egyes részeit gyorsan inaktiválni? 11. Milyen fejlesztést könnyítő egyéb eszközt, vagy technológiát ismersz a Visual Studio-ban? 12. Mi a szerepe a Toolbox ablaknak? 13. Kötelező-e osztályt készíteni a programunkban? 14. Mi a következő ablak szerepe a Visual Studio-ban? Hogyan lehet bekapcsolni, ha esetleg nem látszódik a fejlesztőkörnyezetben?

6 2. ábra Properties ablak

4. A C# nyelv fundamentumai 7 1. Mit jelent a Camel Case és a Pascal Case írásmód? 2. Hogyan írjuk az osztályok nevét és a saját azonosítóinkat? 3. Miért foglal 2 bájtot egyetlen karakter tárolása a.net-ben? 4. Mi a különbség deklaráció és definíció között? 5. Mit jelent az érték típus? Mikor javasolt a használata? 6. Mit jelent a referencia típus? Miben különbözik az érték típustól? 7. Miért tartalmaznak metódusokat, tulajdonságokat az egyszerű, érték típusú változóink is? 8. Hogyan állapíthatjuk meg a létrehozott változóinkról, hogy azok érték-, vagy referencia típusúak? 9. Mit jelent a null értékű változó? Használható-e a meglévő típus kiterjesztéseként? 10. Mi az alapértelmezett értékük a numerikus és a logikai típusoknak? 11. Mikor hasznos a boxing használata? 12. Mit jelent a castolás? Mikor szükséges a használata? 13. Hogyan tudjuk megváltoztatni (konvertálni) adataink típusát? 14. Mit jelent a prefix inkrementálás? 15. Milyen értékei lesznek a változóinknak a következő értékadás után? Mit ír ki a program eredményül? int a = 5; int b = 10; a += --b; Console.WriteLine("'a' értéke:"+a); Console.WriteLine("'b' értéke:"+b); 16. Mi a különbség az is és az as operátorok között?

8 17. Sorold fel a biteltoló operátorok néhány gyakorlati hasznosítási lehetőségét! 18. A szorzás, vagy a biteltolás hajtódik végre hamarabb? Melyiknek nagyobb a precedenciája? 19. Kérjünk be egy 10-es számrendszerbeli számot, majd biteltolással számítsuk ki a 8-al való szorzatát! 20. Készíts programot, ami biteltolással számolja ki egy adott szám kettes alapú egész logaritmusát!

5. Ciklusok, feltételes utasítások 9 1. Van-e különbség a switch-case szerkezetben a C++-hoz képest? 2. Beágyazhatók-e a feltételes utasítások? 3. Miben tér el a while és a do while ciklusok egymástól? 4. Hol alkalmazható a foreach ciklus? 5. Melyik ciklussal váltható ki az összes többi? 6. Mi csinál a programrészlet? Kiírja-e a Szia szót a program, mielőtt beírnánk a nevünket? public static void Main() Console.Write("Üdvözöllek! Mi a keresztneved? "); Console.WriteLine("Szia " + Console.ReadLine()); Console.ReadKey(); 7. Kérd be a felhasználó nevét! Köszöntsd őt a napszaknak megfelelően! 8. Kérd be a felhasználó születési évét! Írasd ki az életkorát a rendszeridő segítségével (DateTime.Now.Year)! 9. Kérj be három számot és írasd ki növekvő sorban őket! Légy tekintettel arra, hogy részben, vagy egészben meg is egyezhetnek egymással! 10. Készíts programot, ami egy ember életkorát bekérve, kiírja a korának megfelelő jellemzést: 0-1: újszülött 2-6: kisgyerek 7-14: gyerek 15-17: kamasz 18-120: felnőtt Ha ezeken kívüli értéket adnak meg, jelezze érvénytelen életkor felirattal!

10 11. Kérj be számokat 0 végjelig, majd írasd ki az összegüket! 12. Egy bekért szöveg szavainak első betűit alakítsuk át nagybetűkké! 13. Kérd be a víz hőmérsékletét normál légköri nyomáson! Írasd ki a halmazállapotát ennek ismeretében! 14. Kérj be egy 0-nál nagyobb természetes számot, majd írasd ki az első 10 számot, aminek osztója ez a szám! 15. Mit csinál a következő program? string szöveg = "Kis kacsa fürdik, fekete tóban."; for (int i = 0; i < szöveg.length; i++) for (int j = 0; j < i; j++) Console.Write(szöveg[j]); Console.WriteLine(); Console.ReadKey(); Mit kell megváltoztatni a programban ahhoz, hogy kiírja a mondat végi pontot is? 16. Készítsünk programot, ami biteltolással kiírja 2 első 8 hatványát! 17. Váltsunk át 10-es számrendszerből számokat tetszőleges másikba! 18. Írassuk ki a prímszámokat n-ig! 19. Számoljuk ki két természetes szám legnagyobb közös osztóját! 20. Készíts átváltó programot, ami négyszögöl és négyzetméter között képes átváltani mindkét irányba, választhatóan! 1 négyszögöl ~ 3,6 négyzetméter. 21. Készíts programot, ami kiírja a bekért számról, hogy hány számjegyből áll! (10-es számrendszerben) 22. Írasd ki az aktuális dátumot (év, hónap, nap) úgy, hogy a hónap római számmal íródjon! 23. Írasd ki az aktuális évszakot a rendszeridő hónapértéke alapján!

11 24. Kérjünk be egy mondatot, majd írassuk ki Pascal Case stílusban! (Szóközök nélkül, szóhatáron nagy kezdőbetűvel.) 25. Készítsünk programot, ami a bekért mondatról eldönti, hogy visszafelé olvasva is ugyanúgy néz-e ki (palindrom)! Ügyesebbek képesek a szóközöket figyelmen kívül hagyni! 26. Készíts programot, ami kő/papír/olló játékot játszik a felhasználóval! A választás a Random osztály segítségével véletlenszerűen történjen! Ehhez használd fel a következő programrészletet! public static void Main() Random véletlenszám = new Random(); //Véletlenszerű, nemnegatív egész érték kiírása Console.WriteLine(véletlenszám.Next()); //Véletlenszerű érték 0-99 között Console.WriteLine(véletlenszám.Next(100)); //Véletlenszerű érték 100-200 között Console.WriteLine(véletlenszám.Next(100, 201)); Console.ReadKey(); 27. Az előző Random osztály felhasználásával készíts programot, ami szimulál n darab pénzfeldobást! Az n értékét a felhasználó adja meg! A szimuláció végén írassuk ki, hány fej és hány írás született! 28. Készíts programot kamatszámításhoz! Kérjük be a tőke mennyiségét és az éves kamat értékét! 28.1. Kérjük be, hány évre szeretnénk befektetni a pénzünket, majd írjuk ki évről évre, hogy alakul a tőke+kamat értéke! 28.2. Kérjük be, mennyi összegig szeretnénk befektetni a pénzt, a program számolja ki, hogy mennyi idő múlva érjük el ezt! 29. Mit csinál a következő program? Elemezd a működését!

12 public static void Main() int x = int.parse(console.readline()); int y = int.parse(console.readline()); int z; Random v = new Random(); for (int i = 0; i < y; i++) z = v.next(); if (z % x!= 0) Console.WriteLine(z); Console.ReadKey();

6. Tömbök 13 1. Hogyan tudunk egy, két, többdimenziós tömböket létrehozni? 2. Hogyan tudjuk megállapítani az aktuális méretét és dimenziószámát? 3. Hogyan használhatjuk a string típust tömbszerűen? 4. Készíts pénzcímletező programot! A felhasználó megad egy tetszőleges összeget és a program kiírja, milyen bankjegyből, vagy érméből van a legkevesebbre szükség ahhoz, hogy az összeget megkapjuk! 5. Készíts programot, ami a felhasználó nevét bekéri (vezetéknév és keresztnév együtt), majd kiírja a monogramját! Ügyesebbek tekintettel lehetnek a kétbetűs magyar hangzókra is (Sz, Cs, stb.)! 6. Készíts logikai típusú változót egy hallgató szűrésére aszerint, hogy lezárt-e a féléve. Készíts hozzá egy egyszerű menüt: 1. a változó legyen true, 2. a változó legyen false, 3. a változó aktuális értékének kiíratása. Ha nincs értéke, akkor írassuk ki azt! Kezdetben a változó legyen null értékű! 7. Stringben kapott, egymástól vesszővel elválasztott email címeket helyezzünk tömbbe, rendezzük sorba őket, majd írassuk ki közülük az első ötöt! Ha nincs ennyi, akkor írassuk ki az összeset! 8. Írjon programot, ami 10 egész számot tartalmazó tömböt csökkenő sorba rendez! 9. Készítsünk programot, ami 10 bekért számból kiírja, hány szám egyezik meg valamely másikkal! 10. Írjon programot, ami két mátrix szorzását végzi el! 11. Írjuk ki 10 beolvasott szám három legkisebbikét! 12. Kérjünk be egy betűt, majd állapítsuk meg, hogy a magyar ábécé hányadik betűje az!

14 13. Készítsünk programot, ami a bekért szót úgy írja ki, hogy a magánhangzók helyére csillagot tesz! 14. Készítsünk olyan programot, ami bekérve a hónap és a nap sorszámát, megállapítja, hogy a dátum létezik-e! 15. Készíts olyan programot, ami bekéri két derékszögű koordinátáival meghatározott pont helyét, majd kiszámolja és kiírja a távolságukat egymástól! 16. Egy tömb 10 hallgató jegyeit tartalmazza. Készíts programot, ami kiírja, volt-e bukás a csoportban! 17. Az előző jegyeket tartalmazó tömb alapján írjuk ki egy új tömbbe azon hallgatók sorszámait, akik megbuktak! 18. Egy szigetcsoport felett elrepülve megmérjük rendszeres időközönként az alattunk elhaladó táj tengerszint feletti magasságát. Ha 0-t mérünk, akkor víz felett haladunk el. A pozitív érték szárazföldet jelez. 18.1. Hány sziget felett repültünk el? 18.2. Hányadik sziget volt összefüggően a leghosszabb? 18.3. Hányadik sziget volt a legmagasabb? 19. Egy hónapon át mindennap megmérjük az aznapi hőmérsékletet. 19.1. Hány napon át volt magasabb a hőmérséklet, mint a havi átlag? 19.2. Melyik nap volt a leghidegebb / legmelegebb? 19.3. Volt-e 3 olyan egymást követő nap, amikor folyamatosan nőtt a hőmérséklet napról-napra? 20. Készíts programot, ami bekér egy NxN-es mátrixot! N értékét is a felhasználó határozza meg előzetesen. Írassuk ki, hogy a kapott mátrix egységmátrix-e! 21. Készíts programot, ami bekér 20 mondatot, majd a leghosszabb mondat páros betűit kiírja! 22. Készíts programot, ami egy előre megadott mátrixról eldönti, hogy szimmetrikus-e! Próbáld meg a leghatékonyabb megoldást megkeresni! 23. Az aknakereső játékban egy NxM-es mátrixban véletlenszerű helyeken bombák lehetnek elrejtve.

15 23.1. Készíts egy mátrixot, amiben véletlenszerűen elrejtesz 10 különböző helyen bombát! 23.2. Kérd be a felhasználótól véletlenszerűen az általa választott koordinátákat! 23.3. Írasd ki, ha eltalálta a bombát! 23.4. Ha nem találta el, írd ki, hogy melyik szomszédjában hány bomba található! 24. Mi a hiba a következő programrészlettel? Javítsd ki, hogy elérje célját! public static void Main() String mondat = "A kutya ugat"; mondat.append("."); Console.WriteLine(mondat);

7. Metódusok 16 1. Mikor kötelező a metódusban a return kulcsszó használata? 2. Kell-e egy metódusnak a neve mögé zárójel? 3. Szükséges-e paraméter a metódusoknak? 4. Lehet-e ugyanabban az egységben több metódusunk azonos nevű? 5. Mit jelent a szignatúra? 6. Milyen paraméterátadási módokat ismersz a metódusok esetében? 7. Lehet-e ref kulcsszóval kimenő adatot szolgáltatni a metódusból? 8. Hány értéket tudunk eredményül visszaadni egy metódusból és hogyan? 9. Adhatunk-e egy metódusnak híváskor nullable változót értékül? 10. Készíts metódust, ami logikai értékkel adja vissza, hogy két egész paramétere növekvő sorrendben érkezett-e! 11. Készítsd el a metódust ugyanezzel a névvel, de három paraméterrel! 12. Készíts metódust, ami egy kapott mondatról megállapítja, hogy hányszor szerepel benne egy kapott betű! 13. Írj metódust, ami két egész számokat tartalmazó tömböt összefűz (azonos elemek ne szerepeljenek többször)! 14. Írj metódust, ami lenullázza a kapott változót, ha az nem négyzetszám! 15. Készíts metódust, ami adott mondatból kivág egy adott szót! 16. Írj olyan metódust, ami egy kapott 10 elemű egész tömb elemeinek értékét megduplázza! 17. Készíts olyan metódust, ami a paraméteréül kapott szöveg betűit visszaadja, miután ábécé sorba rendezte azokat!

17 18. Készíts olyan metódust, ami true-val tér akkor vissza, ha a paraméteréül kapott tömb minden eleme egyforma, különben a visszaadott érték false! 19. Írj olyan metódust, ami visszaadja a kapott string nem betű karaktereinek számát! 20. Határozzuk meg metódussal, hogy a kapott karakterláncban melyik a leggyakoribb betű! 21. Írjunk metódust, ami a kapott szövegben lévő, zárójelek közötti részt kiírja a konzolra! 22. Készíts olyan metódust, ami visszaadja, hogy a kapott szövegben van-e írásjel! 23. Készítsünk olyan metódust, ami egy kapott szöveg első két és utolsó két betűjét adja vissza (ha van annyi)! 24. Készíts olyan metódust, ami visszaadja két paraméterül kapott pont (x0, y0, x1, y1) távolságát! 25. Készíts metódust, ami egy paraméterben koordinátáival kapott vektort megdupláz! 26. Milyen hibák vannak az adott programban! Javítsd ki, hogy a kitűzött célt hajtsa végre! public static void duplazo(int x) x *= 2; public static void Main() Console.WriteLine("Adjuk meg a megduplázandó számot!"); int a = Convert.ToInt32(Console.ReadLine()); Duplazo(a); Console.WriteLine("A beírt szám duplája:"+a); Console.ReadKey(); 27. Mi a következő program fordítási hibájának magyarázata? Javítsd ki a jelzett problémát!

public static void Pi(out double eredmény) eredmény = 3.141592654; 18 public static void Main() double? x; Pi(x); Console.WriteLine("A PI értéke:"+x); Console.ReadKey(); 28. Készítsünk olyan metódust, ami visszaadja a kapott két pont (x0, y0, x1, y1 koordinátákkal jelölve) meredekségét! 29. Készíts olyan metódust, ami visszaadja 50 kapott előjeles szám közül melyik van a legközelebb 0-hoz! 30. Készíts metódust, ami egy kapott szöveg középső betűjét(vagy páros hosszúságú szöveg esetén betűit) visszaadja!

8. Osztályok 19 1. Mi a különbség az osztály adattagja és tulajdonsága között? 2. Mely láthatósági módosítók teszik lehetővé számunkra azt, hogy az osztályt létrehozó assembly-n belül bárhonnan elérjük az osztályban létrehozott elemet? 3. Mit jelent az egységbezárás (encapsulation)? 4. Miért tiltjuk az adattag közvetlen hozzáférését, ha metódusokon, vagy tulajdonságokon keresztül úgyis hozzáférhetővé tesszük azt? 5. Van-e konstruktora egy általunk létrehozott osztálynak, ha mi nem csináltunk neki olyat? 6. Hogyan derül ki, hogy melyik konstruktor hívódik meg példányosításkor? 7. Hogyan segíthetjük elő egy példány megsemmisítését, ha már nincs rá szükségünk? 8. Miben különböznek a statikus adattagok a normál adattagoktól? 9. Példányosítható-e egy statikus metódus? 10. Hogyan használhatjuk fel a szülő osztály konstruktorát a gyerekosztályban? 11. Készíthetünk-e gyerekosztály típusú objektumot a szülőosztály konstruktorával meghívva? Fordítva lehetséges-e? 12. Készíts osztályt Pizzák leírására! 12.1. Privát adattagok: pizza neve, ára, mérete (cm), akciós-e (igen/nem), alapesetben nem. 12.2. Készíts több konstruktort az osztályhoz! 12.3. Készíts metódusokat az árának és a méretének a lekérdezésére! 12.4. Amennyiben akciós a pizza, legyen metódus az árának csökkentésére (paramétere az árcsökkentés mértéke százalékban)! 12.5. Készíts több pizza objektumot! 13. Készíts a pizzákból többet egy tömbben (rendelés), majd járd be őket! Írasd ki az akciós pizzákat!

20 13.1. Írasd ki mutatóval a rendelés tömb legnagyobb pizzáját! 13.2. Készíts leszármazottat töltött pizza néven, aminek új adattagja a töltelék! Készíts konstruktort is hozzá! 14. Készíts osztályt zenei CD adatainak tárolására! (cím (szöveges), kapacitás (percben))! Készíts tulajdonságokat: a cím lekérdezhető, de csak osztályon belül változtatható meg, a kapacitás csak lekérdezhető! 15. Készíts osztályt egy hallgató adatainak tárolására: név, azonosító (6 számjegy), édesanyja neve. Az adatokat csak tulajdonságokkal lehessen elérni! Készíts néhány objektumot belőle adatbekéréssel! Az azonosító beírásánál készíts kivételkezelést! 16. Készíts osztályt lakás adatainak tárolására: cím, mérete m 2 -ben, szobák száma. Az adatokat csak tulajdonságokkal lehessen elérni! Készíts néhány objektumot belőle adatbekéréssel! A méret és szobaszám beírásánál készíts kivételkezelést! 17. Készíts osztályt termékek számára! Adatok: termék neve, eladási ára, alkatrészeinek listája (legfeljebb 50 darab). Minden alkatrésznek van neve és egységára. Készíts metódust egy új alkatrész hozzáadására! Az eladási ára a terméknek ne lehessen kisebb, mint az alkatrészek árainak összege! 18. Készíts osztályt turisták adataival! Adatok: név, anyanyelv (választhatóan csak magyar, angol, német valamelyike), életkor, utazási cél nyelvterülete (előző nyelvek valamelyike)! Az adatok csak tulajdonságaikon keresztül érhetők el! Készíts belföldi() néven metódust, ami true-t ad vissza akkor, ha a turista saját anyanyelvének megfelelő területre utazik! Készítsd el turisták egy csoportját belőle! 19. Készíts osztályt sokszögek adatainak tárolására! Adat a sokszög oldalainak hossza. 19.1. Készíts leszármazott osztályt háromszögek számára! Készíts metódust terület és kerületszámításra!

21 19.2. Készíts másik leszármazott osztályt négyzeteknek! Ez az osztály is tartalmazzon kerület és területszámításra metódusokat! 20. Milyen hibák maradhattak a következő osztálydeklarációban? Javítsd ki őket! class Labda public static int méret; public Méret get; set; class Főprogram public static void Main() Labda kispiroslabda = new Labda(); kispiroslabda.méret = 10; Labda nagyfocilabda = new Labda(); nagyfocilabda.méret = 40; Console.ReadKey();

9. Struktúrák 22 1. Miben különböznek a struktúrák az osztályoktól? 2. Lehet-e láthatósági előírása egy struktúra adattagjának? 3. Hogyan példányosítjuk a struktúránkat? 4. Készíts struktúrát süteményreceptek tárolására! Adatok: sütemény neve, összetevői (név, mennyiség, mennyiségegység; több, de legfeljebb 50 összetevő), elkészítés ideje percben. Készíts konstruktort! Készíts két receptet és írasd ki őket ToString metódussal! 5. Készíts struktúrát kerékpárok részére. Adatok: váz mérete (választhatóan csak a 12,16,20,24 értékek közül), gyártó neve, ára. Az adatokat csak tulajdonságaikon keresztül lehessen elérni! Készíts néhány kerékpárt, tömbbe szervezve, írasd ki jellemzőiket ToString() segítségével! 6. Készíts struktúrát áruk nyilvántartására! Adatok: név, tömeg, ár. Készíts konstruktort és ToString() metódust hozzá! Hozz létre több árut egy tömbben! Írasd ki az összértéküket és össztömegüket is! 7. Készíts programot, ami hardverelemek nevét, gyártóját, árát képes tárolni struktúrában! Írassuk ki az elemek összértékét! 8. Írjon programot, ami neveket és életkorokat tartalmazó struktúrát életkor szerint növekvő sorba rendez! 9. Készíts struktúrát, ami 20 árucikk nevét, darabszámát, egységárát képes tárolni! Írassuk ki a termékek (készlet) összértékét! 10. Készíts struktúrát, ami 5 élelmiszer megnevezését, tömegét, vonalkódját tárolja! Írassuk ki a legkisebb tömegű termék adatait! 11. Készíts struktúrát, 5 jelentkezési adat tárolására: név, jelentkezés ideje, helyszín! Írasd ki, mely helyszínekre hányan jelentkeztek! 12. Írjunk struktúrát, ami fóliatekercsek sorszámát, hosszát tárolja tömbben! Csökkenthető legyen az egyes tekercsek mennyisége

metódussal! 23 13. Készíts struktúrát, ami TV-k adatait képes tárolni úgy, mint gyártó, képátló mérete, ára. Készítsünk egy tömbbe több TV-t, lehetnek azonos gyártótól is! A felhasználó választhasson gyártót, majd írassuk ki ennek a gyártónak a legnagyobb képátlójú TVjének az árát! 14. Húsz hallgató nevét és eredményét tartalmazó adatszerkezetből írassuk ki azon hallgatók nevét, akik átlag felett teljesítettek! 15. Készítsünk struktúrát előadók adatainak tárolására! Az adatok: név, előadás, város neve. Adott 20 előadó. Írassuk ki, mely városból hányan adnak elő! 16. Készítsünk struktúrát városok nevének és földrajzi koordinátáiknak tárolására! Készítsünk hozzá metódust, ami egy másik várostól való távolságát légvonalban kiszámítja! Készítsünk gyűjteményt, ami városok adatait tárolja! Készítsünk algoritmust, amiben bekérjük, hogy melyik városban vagyunk jelenleg, majd írassuk ki, melyik másik város van hozzánk légvonalban a legközelebb! 17. Gépjárművek adatait tároljuk struct tömbben Mennyiség: 50 db. Adatok: rendszám, vételár, szín. Milyen színű gépjárműből van a legtöbb?

10. Gyűjtemények 24 1. Mely névtér részei a gyűjtemények? 2. Hasonlítsd össze a tömböt az ArrayList-tel! 3. Miben különbözik a SortedList a Hashtable-től? 4. Milyen adattípusokat tárolhatunk ArrayList-ben? 5. Hogyan hivatkozhatunk egy elemre az ArrayList-ben? 6. Hogyan tudjuk lekérdezni az elemek számát ugyanitt? 7. Adatelérés tekintetében miben különbözik az ArrayList és a Queue? 8. Felhasználhatjuk-e úgy a Queue egy elemét, hogy nem vesszük ki a gyűjteményből? 9. Milyen praktikus felhasználási módját ismered a Stack gyűjteménytípusnak? 10. Vesd össze az ArrayList-et a Hashtable gyűjteménnyel! 11. Hogyan tudjuk megkeresni az értékhez tartozó kulcsot (!) a Hashtable esetében? 12. Készíts alkalmazást, amely valós számokat tárol gyűjteményben! A számokat a billentyűzetről kapja, a begépelés végét speciális karakter, a csillag (*) jelezze! 13. Készíts programot, ami egy gyűjteményt véletlen, pozitív páros számokkal tölt fel! A feltöltött számok mennyiségét a felhasználó adja meg a program indításakor! A feltöltést követően írassuk ki a legkisebb és a legnagyobb számot a gyűjteményben! 14. Készíts gyűjteménnyel olyan programot, ami a 0 végjelig bekért számokat a bekérést követően kiírja a bekéréshez képest fordított sorrendben! 15. Készíts programot, ami két, tetszőleges objektumokat tartalmazó gyűjteményt összeveti egymással!

15.1. Írassuk ki a két gyűjtemény unióját! 15.2. Írassuk ki a két gyűjtemény metszetét! A C# nyelv programozási alapjai 25 15.3. Írassuk ki az első és a második gyűjtemény különbségét! 16. Mi a hiba a következő programrészletben? Javítsd ki! Dictionary<int, int> szótár = new Dictionary<int, int>(); szótár.add(1, 2012); szótár.add(2, 2013); foreach (DictionaryEntry egy_elem in szótár) Console.WriteLine("Kulcs:"+egy_elem.Key+", érték:"+egy_elem.value); Console.ReadKey();

11. Típusos gyűjtemények, generikusok 26 1. Mi az előnye a típusos gyűjtemények használatának? Sorolj fel több indokot is! 2. Miért működik a 8.8 pontban található példaprogram, ha nem egyezik a gyűjtemény típusával az eredmény változójának típusa? Stack<char> betűverem = new Stack<char>(); betűverem.push('a'); betűverem.push('b'); betűverem.push('c'); //Elvileg kivételkor ez típuseltérés int szám = betűverem.pop(); //Miért működik mégis? Console.WriteLine(szám); 3. Milyen elemtípussal járható be a Dictionary típus? Vesd össze a Hashtable esetén használttal! 4. Mi a generikus metódusok előnye a hagyományosokhoz képest? 5. Készíts olyan gyűjteményt, amely alkalmas arra, hogy helységek nevét és irányítószámát összerendeli egymás mellé! Az irányítószám megadásával bármikor írja ki a program az adott helység nevét. Egy helységnek több irányítószáma is lehet! A program listázza ki, milyen helységeket tartalmaz a gyűjtemény! 6. Készíts olyan gyűjteményt, ami függvényhívásokat szimulál úgy, hogy tárolja a félbehagyott függvény nevét! A felhasználó menüből választhasson, hogy új függvényt ad meg, ami félbeszakítja a jelenlegi futtatását (elég a függvény nevét megadni és tárolni), vagy a meglévő függvény futását fejezi be! Írjuk ki folyamatosan, hogy mi az aktuálisan futó függvény neve! 7. Készíts termelő-fogyasztó alkalmazást, ami a leütött billentyűket kiírja a képernyőre, másodpercenként legfeljebb egyet! Milyen gyűjtemény lehet alkalmas a leütött gombok ideiglenes tárolására? (A feladathoz felhasználhatod asystem.threading.thread.sleep(1000) utasítást, ami felfüggeszti a végrehajtást az adott szálon 1 másodpercig.) 8. Készíts angol-magyar szótár szópárait tároló gyűjteményt! A szótárban lehessen angol, vagy magyar szavakat is keresni egyszerre, a megtalált szó másik nyelvű párját írassuk ki a

képernyőre! 27 9. Készíts programot, ami barátaink születési évét és nevét bekéri és tárolja gyűjteményben! Írassuk ki azokat közülük, akik betöltötték a 18. életévüket! 10. Készíts programot, ami ismerőseink nevét és telefonszámát képes tárolni! A program a telefonszámokat +36301234567 formátumban kérje be! A bekérést követően írassuk ki a barátaink nevét és telefonszámaikat, külön a 20, 30, 70-es körzetű számokkal rendelkezőket! 11. Milyen szintaktika és szemantikai eltéréseket javasolsz a következő programrészletben kijavítani? public static void Main() Hashtable tábla = new Hashtable(); tábla.add(1234, "Kovács Péter"); tábla.add(2011, "Takács Vilmos"); tábla.add("2013", "Balogh István"); foreach (object elem in tábla) Console.WriteLine("Kulcs:" + elem.key + ", érték" + elem.value);

12. Fájlkezelés 28 1. Milyen információs és milyen segédosztályokat biztosít a.net számunkra a fájlkezelések tekintetében? 2. Kell-e példányosítanunk a DriveInfo osztályt a GetDrives() metódus használatának érdekében? 3. Mikor különbözik egymástól a TotalFreeSpace és az AvailableFreeSpace tulajdonságok a meghajtók esetében? 4. Hogyan tudjuk megszerezni az adott könyvtárban lévő összes bejegyzés nevét? 5. Van-e lehetőség a DirectoryInfo információs osztály segítségével mappákat mozgatni, vagy törölni? 6. Mit jelentenek a stream-ek? 7. Mit jelent a fájl zárolása? Mikor bír jelentőséggel? 8. Mely osztály biztosít a fájlkezelésünkhöz bájtszinten hozzáférést? 9. Hogyan tudunk egyszerű típusok esetében gondoskodni azok mentéséről? 10. Mi a hátránya több adat esetében a BinaryReader osztálynak? 11. Hogyan tudunk összetett objektumaink mentéséről egyszerűen gondoskodni? 12. Mit jelent a deszerializáció? 13. Mit csinál a következő program? Mutasd be részletesen! public static void Main() FileSystemInfo fájladatok = new FileInfo(@"C:\Bemutató.ppt"); if (fájladatok.exists) Console.WriteLine("A fájl neve:"+ fájladatok.fullname); Console.WriteLine("Létrehozva:" + fájladatok.creationtime); Console.WriteLine("Módosítva:" + fájladatok.lastwritetime);

29 Console.ReadKey(); 14. Készíts programot, ami lementi szövegfájlba a felhasználó vezeték és keresztnevét, külön sorokba! 15. Töltsd be egy tetszőleges szöveges fájl tartalmát és írasd ki a képernyőre a sorokat megszámozva! 16. Készíts alkalmazást, ami kiírja egy könyvtárban a bejegyzések számát, a mappák és a fájlok számát összesen! 17. Készíts programot, ami az elérhető meghajtók közül a felhasználónak enged választani egyet, majd a kiválasztott meghajtó százalékos telítettségét kiírja! 18. Készíts programot, ami egy felhasználó által megadott fájlt képes eltávolítható meghajtóra másolni! (Removable DriveType) 19. Több hibát is rejt a programrészlet. Melyek ezek? public static void Main() DirectoryInfo dir_info = new DirectoryInfo("C:\"); Console.WriteLine("Fájlok listája:"); foreach (FileInfo fájl in dir_info.getdirectories()) Console.WriteLine(fájl.Name); Console.ReadKey(); 20. Készíts programot, ami törli a felhasználó által megadott fájlt, vagy jelzi, ha nincs ilyen! 21. Készíts alkalmazást, ami elmenti egy hallgatók nevét és félévi átlageredményüket tartalmazó struktúra tetszőleges számú példányát! Ellenőrzésképpen olvastassuk is vissza az eredményeket! 22. Készíts osztályt személyek nevének és adóazonosítójának tárolására! Készíts két leszármazott osztályt, konstruktorokkal:

30 22.1. Az egyén vállalkozók osztálya még tartalmaz adószámot is! 22.2. A cégek osztálya tartalmaz cégbírósági bejegyzés számát és cégtulajdonos(ok) nevét is! 22.3. Példányosítsd többször mindkét leszármazott osztályt gyűjteménybe! 22.4. Tárold fájlban a példányokat szerializáció segítségével! 22.5. Készíts helyreállító algoritmust, ami betölti a fájlból a korábban mentett példányokat a gyűjteménybe! 23. Kissé szokatlanul sikerült ez a mappába másolás. Mi az oka? public static void Main() String forrásmappa = "C:\\"; String forrásnév = "fontos.doc"; String célmappa = "C:\\Új mappa"; Directory.CreateDirectory(célmappa); File.Copy(forrásmappa + forrásnév, célmappa + forrásnév, true); File.Delete(forrásmappa + forrásnév); Console.ReadKey(); 24. Készíts programot, ami két szöveges fájl tartalmát egy harmadikban egyesíti! A fájlok nevét a felhasználó határozza meg! Ha a fájlok nem léteznek, adjunk hibaüzenetet!

13. Kivételkezelés 31 1. Mondj néhány példát a kivételek keletkezésére! 2. A következő kódrészletben több hiba is található! Javítsd ki őket! try int x = int.parse(console.readline()); Console.WriteLine(x); catch (Exception) Console.WriteLine("Kivétel keletkezett"); 3. Miért van értelme a finally szakasznak, ha egyébként is folytatódik a végrehajtás a catch szakaszok után? 4. Milyen szabályokat érdemes betartani több catch szakasz használata esetében? 5. Mikor használhatjuk a throw kulcsszót? 6. Készíts alkalmazást, ami a felhasználótól bekéri az ötös lottó aktuális nyerőszámait (5 db 1-90 közötti véletlenszerű nyerőszám). A program jelezzen, ha rossz intervallumban adták meg a számokat és ha véletlenül számmá nem alakítható adatot kapott, ismételje meg a beolvasást! 7. Milyen kivételek keletkezhetnek egy fájl megnyitása esetén? 8. Készíts programot, ami egy N x M -es egyszámjegyű számokat tartalmazó mátrixot szövegfájlból feltölthetővé tesz! A számok a fájlban szóközökkel vannak elválasztva egymástól. M értékét az első sorban lévő számjegyek száma határozza meg! N a szövegfájl sorainak számával egyezzen meg! Amennyiben a második sortól kezdve eltér a számjegyek száma az első sorban meghatározott értéktől, dobjunk egy kivételt!