V 1.01 Szoftverfejlesztés párhuzamos és elosztott környezetben
V 1.0 Követelmények (gyakorlat) Belépő feltételek: alap OOP, algoritmizálás 09. C# témakörök Belépő feltételek: Alap C# (konzol+minimál GUI), VS Párhuzamosítás témakörök Az aláírásért féléves feladatot kell leadni. Féléves+Elm+GPU+MPI: a követelményeket csütörtökön ismertetik 2
V 1.0 C# bevezető első alkalom Alapvető „C jellegű” szintaktika (változótípusok, függvények használata) Alapvető VS.NET beépített osztályok használata: –Math, –Random, –I/O, szövegfájl, –Stringfüggvények 3 C# bevezető második alkalom Beépített generikus osztályok/függvények használatának szintaxisa (lista, verem, sor, Dictionary, Tuple) Egyéb beépített lehetőségek Saját osztályokat igénylő feladatok Alapvető GUI
V 1.0 Ismertnek tekintett fogalmak Változó Metódus (=függvény) Tömb Osztály Példány 4
V 1.0 Változótípusok - Egész (fixpontos) számok 5 NévLeírásÉrtéktartomány sbyte 8 bites előjeles egész-128 : 127 byte 8 bites előjel nélküli egész0 : 255 short 16 bites előjeles egész : ushort 16 bites előjel nélküli egész0 : int 32 bites előjeles egész : uint 32 bites előjel nélküli egész0 : long 64 bites előjeles egész : ulong 64 bites előjel nélküli egész0 : int i = 2;
V 1.0 Változótípusok - Valós (lebegőpontos) számok 6 NévLeírás Értékes jegy Értéktartomány float 32 bites lebegőpontos 7 ±1,5* : ±3,4*10 38 double 64 bites lebegőpontos 15 ±5,0* : ±1,7* decimal 128 bites nagypontosságú 28 ±1,0* : ±7,9*10 28 MéretElőjelKitevőTörtrészEltolás Egyszeres IEEE- 754 szabvány pontosság 32 bit1 bit8 bit23 bit127 Kétszeres pontosság 64 bit1 bit11 bit52 bit1023
V 1.0 Változótípusok - Karakterek, stringek char ch = ’ű’; Unicode kódolású (számként is kezelhető) string str = "Árvíztűrő Tükörfúrógép"; Összefűzhető: string str = str1 + str2; Indexelhető: char c2 = str[0]; Hasznos metódusok string.IsNullOrEmpty(…); char.IsUpper(…); char.IsLower(…); char.IsNumber(…); char.IsLetter(…); 7 str.ToUpper(); str.ToLower(); str.Replace(…); Str.Split(…);
V 1.0 Változótípusok - Logikai típus 32 bites Logikai operátorok: –&& (és) –|| (vagy) –== (egyenlőségvizsgálat) 8 NévLeírásÉrtéktartomány bool Logikai adattípus true vagy false (igaz vagy hamis) bool b = true;
V 1.0 Változókonverziók Számtípusok között, ha nem történhet értékvesztés: byte a=5;long c=5;float f=3.2f; int b=a;float d=c;double g=f; Számtípusok között, ha értékvesztés történhet: int a=999;double d=3.14;int i1=-1; byte b=(byte)a;int c=(int)d;uint i2=(uint)i1; String -> számtípus: string s="123";string s2="123,456"; byte b=byte.Parse(s);float f=float.Parse(s2); Szám -> string: byte b=250;float f=3.14f; string s1=b.ToString();string s2=f.ToString(); 9
V 1.0 Kulcsszavak Feltételvizsgálatok: –if –switch … case Egyszerű ciklusok: –while – elöltesztelő –do … while – hátultesztelő –for – elöltesztelő, számláló –foreach – gyűjtemény egyenkénti bejárása A ciklusok feltétele bool (true/false) eredményt adó logikai kifejezés A ciklusok feltétele a C#-ban mindig bennmaradási feltétel 10
V 1.0 Tömbök int[] array1D = new int[10]; Indexelhető: int i = array[0]; Hossza: array.Length; char[,] array2D = new char[4,5]; Indexelhető: char c = array[0,0]; Sorok: int rows = array.GetLength(0); Oszlopok: int cols = array.GetLength(1); 11
V 1.0 Metódusok (Maradjanak a class Program { … … … } – on belül erre az órára) static double Area(double width, double height) { return width * height; } Használata: double area = Area(5,4); Ha nincs visszatérési érték: void van a visszatérési típus helyén static void Clear(int[] array, int value) { for (int i = 0; i < array.Length; i++) array[i] = value; } 12
V 1.0 Hasznos könyvtári osztályok/metódusok… Kiírás/beolvasás: –Console.WriteLine(…) –Console.ReadLine(); –Console.Clear(); Matematikai metódusok: –Math.Sqrt(…) –Math.Min(…) –Math.Sin(…) stb. Random: –Random rand = new Random(); int num = rand.Next(0,11); Fájlkezelés: –File.ReadAllText(…); –File.ReadAllLines(…); –File.WriteAllText(…); 13
V 1.0 Help & irodalom Help: MSDN C# Reference –ajánlott keresés: google msdn Irodalom: Andrew Troelsen: Pro C# 5.0 and the.NET 4.5 Framework –(vagy a.NET 3.5-nél nem régebbi magyar verzió) 14
V 1.0 Hello World 15 Készítsünk programot, amely kiírja a konzolra a „Hello World” szöveget!
V 1.0 Gyakorló feladat 16 Készítsünk programot, mely beolvas a billentyűzetről két számot és egy műveleti jelet, majd kiírja a két számmal elvégzett művelet eredményét. Szükséges tudásanyag: változótípusok (számtípusok, string), beolvasás, konverziók
V 1.0 Gyakorló feladat 17 Szükséges tudásanyag: Random, ciklusok Írjon programot, amelynek kezdetén adott egy véletlen pozitív egész szám, a „gondolt szám”. A felhasználónak ki kell találnia, hogy mi a gondolt szám. Ehhez a felhasználó megadhat számokat, melyekről a program megmondja, hogy a gondolt számnál nagyobbak, vagy kisebbek-e. A program akkor ér véget, ha a felhasználó kitalálta a gondolt számot. A program jelenítse meg a felhasználó próbálkozásainak számát is.
V 1.0 Gyakorló feladat 18 Írjon programot/metódust, amely egy pozitív egész számnak kiszámítja valamely pozitív egész kitevőjű hatványát, illetve a faktoriálisát! Az aktuális értékeket a felhasználó adhatja meg. Szükséges tudásanyag: metódus, ciklusok
V 1.0 Gyakorló feladat 19 Írjon programot/metódust, mely egy pozitív egész számról megadja, hogy prím-e vagy sem! Megjegyzés: Azok a pozitív egész számok prímek, melyeknek pontosan kettő darab osztója van. (Az 1 nem prím!) Szükséges tudásanyag: metódus, ciklusok
V 1.0 Gyakorló feladat 20 Írjon metódust, amely egy szövegben megszámolja a szavakat. Szükséges tudásanyag: stringindexelés
V 1.0 * Gyakorló feladat 21 Írjon metódust, amely egy stringet double típusú számmá konvertál (double.Parse() funkcionalitás!) Szükséges tudásanyag: stringindexelés
V 1.0 * Gyakorló feladat 22 Írjon metódust, amely képes egy Caesar-kóddal írt szöveg lehetséges megfejtéseinek listázására! Szükséges tudásanyag: stringindexelés, karakterkódolás NZEKVI ZJ TFDZEX
V 1.0 Gyakorló feladat 23 Írjon metódust, amely képes egy 8 karakteres véletlenszerű, csak nyomtatott nagybetűket tartalmazó ideiglenes jelszó generálására. Szükséges tudásanyag: stringindexelés vagy karakterkódolás
V 1.0 Gyakorló feladat 24 Készítsen metódust, amely visszaad egy véletlen számokkal feltöltött, megadható méretű tömböt. Szükséges tudásanyag: tömb, Random
V 1.0 Gyakorló feladat 25 Írjon programot, amely megszámolja egy fájlban az egyes betűk gyakoriságát (=Betűszámhoz viszonyított előfordulást. E statisztika segítségével meg lehet tippelni, hogy a szöveg milyen nyelven íródott.) Szükséges tudásanyag: Dictionary vagy tömb
V 1.0 Gyakorló feladat 26 Írjon programot, amely képes meg nem engedett karaktereket tartalmazó fájlnevekből érvényes fájlneveket csinálni. A meg nem engedett karakter-cserekarakter párosításokat fájlból olvassa ki a program (pl: ékezetes->ékezetlen). Szükséges tudásanyag: stringindexelés, stringfüggvények, fájl I/O
V 1.0 Gyakorló feladat 27 Egy repülőgéppel egyenes vonalban végigrepültünk egy tengerszakasz fölött. Egyenlő távolságonként megmértük, hogy a repülő alatt tenger vagy sziget található-e. (Legalább 10 mérést végeztünk.) Mérési eredményeinket egy tömbben tároltuk el: (1) tenger esetén nulla szerepel a tömbben, (2) sziget esetén a sziget adott helyen mért magassága. Készítsen metódust, amely véletlenszerűen előállít egy mérési eredményeket tartalmazó tömböt. Készítsen metódusokat a következő kérdések megválaszolására: 1.Adja meg, hogy a legmagasabb pont hányszor fordult elő a repülés során! 2.Határozza meg a leghosszabb szigetszakasz hosszát! Szükséges tudásanyag: tömb, Random
V 1.0 Gyakorló feladat 28 Készítsen metódust, amely transzponál egy 2D tömböt. Szükséges tudásanyag: 2D tömb
V 1.0 * Gyakorló feladat 29 Egy játéktábla mezői kétféle módon vannak megjelölve (pl. * és - ). Kezdetben minden mező azonos jelölésű ( - ), kivéve a játéktábla közepén lévő mező, valamint annak négy közvetlen szomszédja. A játék során a felhasználó megadja a játéktábla egy koordinátáját. A kiválasztott koordinátájú mező, illetve annak négy szomszédja az addigival ellentétes jelölésűre változik. A játék akkor ér véget, ha a felhasználó minden mezőt * -ra tudott változtatni. Szükséges tudásanyag: 2D tömb, stringfüggvények
V 1.0 * Gyakorló feladat 30 Egy porózus anyagdarab vízáteresztő képességét vizsgáljuk. Az anyagdarabot egy 2D tömb reprezentálja, amely minden indexén 0.5 eséllyel át képes ereszteni a vizet vagy sem. A cél az, hogy megvizsgáljuk, hogy az anyagon képes-e áthatolni a víz. A víz az i,j indexű cellából az i+1,j-1, i+1,j, illetve i+1,j+1 indexű cellákba képes folyni, feltéve, ha az illető cella átereszti a vizet. A víz akkor hatol át az anyagdarabon, ha van megszakítatlan útja a tömb első sorától a tömb utolsó soráig. Generáljon véletlenszerű anyagdarabot, írassa ki, majd számítsa ki, hogy átjárható-e vagy sem. Az eredmény vagy „átjárható”, vagy „nem átjárható”. Szükséges tudásanyag: 2D tömb, stringfüggvények
V 1.0 * Gyakorló feladat 31 Írjon metódust, amely ellenőrzi, hogy egy C# kódot tartalmazó szövegrész szabályosan van-e zárójelezve! (Természetesen többféle zárójeltípus elképzelhető.) Szükséges tudásanyag: List vagy Queue