gyakorlati feladatsor - zeus.nyf.huzeus.nyf.hu/~veca/csharp/a c-sharp nyelv programozasi alapjai...
TRANSCRIPT
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.
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
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.
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
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!
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?
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
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?
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!
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!
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!
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!
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();
}
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!
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.
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); }
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!
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!
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!
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!
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!
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(); }
}
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
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?
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!
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();
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
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); }
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); }
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:
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!
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!