32
A C# nyelv programozási alapjai Gyakorlati feladatsor 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.

Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

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.

Page 2: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

1

Az oktatási segédanyag a „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.

Tartalomjegyzék

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

Page 3: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

2

Az oktatási segédanyag a „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.

1. Bevezető

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.

Page 4: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

3

Az oktatási segédanyag a „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.

2. A .NET Framework alapjai

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

Page 5: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

4

Az oktatási segédanyag a „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.

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!

Page 6: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

5

Az oktatási segédanyag a „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.

3. A Visual Studio

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?

Page 7: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

6

Az oktatási segédanyag a „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.

2. ábra Properties ablak

Page 8: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

7

Az oktatási segédanyag a „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.

4. A C# nyelv fundamentumai

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?

Page 9: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

8

Az oktatási segédanyag a „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.

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!

Page 10: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

9

Az oktatási segédanyag a „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.

5. Ciklusok, feltételes utasítások

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!

Page 11: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

10

Az oktatási segédanyag a „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.

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!

Page 12: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

11

Az oktatási segédanyag a „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.

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!

Page 13: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

12

Az oktatási segédanyag a „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.

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();

}

Page 14: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

13

Az oktatási segédanyag a „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.

6. Tömbök

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!

Page 15: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

14

Az oktatási segédanyag a „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.

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.

Page 16: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

15

Az oktatási segédanyag a „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.

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); }

Page 17: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

16

Az oktatási segédanyag a „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.

7. Metódusok

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!

Page 18: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

17

Az oktatási segédanyag a „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.

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!

Page 19: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

18

Az oktatási segédanyag a „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.

public static void Pi(out double eredmény) { eredmény = 3.141592654; } 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!

Page 20: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

19

Az oktatási segédanyag a „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.

8. Osztályok

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!

Page 21: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

20

Az oktatási segédanyag a „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.

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 m2-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!

Page 22: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

21

Az oktatási segédanyag a „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.

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(); }

}

Page 23: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

22

Az oktatási segédanyag a „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.

9. Struktúrák

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

Page 24: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

23

Az oktatási segédanyag a „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.

metódussal!

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ú TV-

jé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?

Page 25: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

24

Az oktatási segédanyag a „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.

10. Gyűjtemények

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!

Page 26: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

25

Az oktatási segédanyag a „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.

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!

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();

Page 27: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

26

Az oktatási segédanyag a „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.

11. Típusos gyűjtemények, generikusok

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

Page 28: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

27

Az oktatási segédanyag a „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.

képernyőre!

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); }

Page 29: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

28

Az oktatási segédanyag a „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.

12. Fájlkezelés

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); }

Page 30: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

29

Az oktatási segédanyag a „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.

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:

Page 31: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

30

Az oktatási segédanyag a „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.

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!

Page 32: Gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/A C-sharp nyelv programozasi alapjai gyakorlat.pdf · A C# nyelv programozási alapjai Gyakorlati feladatsor oktatási

A C# nyelv programozási alapjai

Gyakorlati feladatsor

31

Az oktatási segédanyag a „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.

13. Kivételkezelés

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!