OOP III. A C# nyelv alapelemei II.

Hasonló dokumentumok
OOP III. A C# nyelv alapelemei

Objektum Orientált Programozás IV.

Objektumorientált Programozás IV.

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Java II. I A Java programozási nyelv alapelemei

OOP II. A C# nyelv alapelemei I.

OOP II. A C# nyelv alapelemei I.

A C# programozási nyelv alapjai

Objektumorientált Programozás V.

Objektumorientált Programozás VI.

OOP II. A C# nyelv alapelemei I.

A C# PROGRAMOZÁSI NYELV

Java II. I A Java programozási nyelv alapelemei

Készítette: Nagy Tibor István

A C# nyelv alapelemei

Objektumorientált Programozás II.

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Objektum Orientált Programozás V.

Szoftvertervezés és -fejlesztés I.

Programozás I. Objektum-orientált programozás Stringműveletek V 1.0 ÓE-NIK-AII,

OOP II. A C# nyelv alapelemei

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Objektumorientált Programozás III.

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

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

C# gyorstalpaló. Készítette: Major Péter

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Objektumorientált Programozás VI.

Szoftvertervezés és -fejlesztés I.

Programozás I. C# bevezető. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 17.

Kifejezések. Kozsik Tamás. December 11, 2016

Objektumorientált programozás C# nyelven III.

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

Szoftvertechnológia alapjai Java előadások

A C programozási nyelv I. Bevezetés

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

Objektumorientált programozás C# nyelven III.

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Mintavételes szabályozás mikrovezérlő segítségével

Készítette: Nagy Tibor István

A C programozási nyelv I. Bevezetés

Informatika terméktervezőknek

Objektumorientált Programozás I.

OOP #14 (referencia-elv)

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás I. Első ZH segédlet

Java programozási nyelv

Programozási nyelvek Java

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

BME MOGI Gépészeti informatika 5.

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Imperatív és procedurális programozás a Javában

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Vezérlési szerkezetek

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

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Apple Swift kurzus 3. gyakorlat

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

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Assembly programozás: 2. gyakorlat

A Java nyelv. Bevezetés, alapok Elek Tibor

Objektumorientált programozás C# nyelven

Hardver leíró nyelvek (HDL)

A C programozási nyelv III. Pointerek és tömbök.

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

Objektumorientált programozás C# nyelven

Algoritmizálás + kódolás C++ nyelven és Pascalban

A C programozási nyelv III. Pointerek és tömbök.

Programozás II. 2. Dr. Iványi Péter

Programozás I gyakorlat

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

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Objektum Orientált Programozás VII.

INFORMATIKAI ALAPISMERETEK

C# feladatgyűjtemény Kovács Emőd, Radványi Tibor, Király Roland, Hernyák Zoltán

Programozási nyelvek II.: JAVA, 4. gyakorlat

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Információs Technológia

INFORMATIKA MATEMATIKAI ALAPJAI

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

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

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

GYAKORLATIAS JAVA MINTA

Objektumorientált programozás C# nyelven

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

Algoritmizálás és adatmodellezés tanítása 1. előadás

Programozás I. gyakorlat

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

Átírás:

OOP III. A C# nyelv alapelemei II. Alaptípusok (2. rész) Operátorok és precedenciájuk (2. rész) Érték- és referenciatípusok Utasítások: for, foreach, continue, return, goto Mőveletek karaktersorozatokkal Készítette: Miklós Árpád Dr. Kotsis Domokos

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelezı irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. 2009.06.17. 2

A C# beépített alaptípusai (2) Egész számok (2) Név Leírás sbyte 8 bites elıjeles egész byte 8 bites elıjel nélküli egész short 16 bites elıjeles egész ushort 16 bites elıjel nélküli egész long 64 bites elıjeles egész ulong 64 bites elıjel nélküli egész Valós számok Értéktartomány -128 : 127 0 : 255-32 768 : 32 767 0 : 65535-9 223 372 036 854 775 808 : 9 223 372 036 854 775 807 0 : 18 446 744 073 709 551 615 Név float double decimal Leírás 32 bites lebegıpontos 64 bites lebegıpontos 128 bites nagypontosságú Értékes jegy ±1,0*10-28 : ±7,9*10 28 2009.06.17. 3 7 15 28 Értéktartomány ±1,5*10-45 : ±3,4*10 38 ±5,0*10-324 : ±1,7*10 308

Valós számok gépi ábrázolása Bináris (kettes számrendszerbeli) számábrázolás Tárolásuk 0 és 1 értékő számjegyek (bitek) sorozataként történik Ábrázolás: ún. lebegıpontos ( floating point ) forma elıjel * (1 + törtrész) * 2 kitevı-eltolás IEEE-754 szabvány Egyszeres pontosság Kétszeres pontosság Méret 32 bit 64 bit Elıjel 1 bit 1 bit Kitevı 8 bit 11 bit Törtrész 23 bit 52 bit Eltolás 127 1023 Elıjel: 0 jelöli a pozitív, 1 a negatív számokat Kitevı: 1-nél kisebb és nagyobb számokat is szeretnénk ábrázolni, ezért adott nagyságú eltolás alkalmazásával tároljuk a kitevıt Törtrész: a kettedespont utáni számjegyeket tartalmazza Az (1+törtrész) tag neve mantissza Optimalizálás: a mantissza egész részét (az 1-et) nem tároljuk, mivel tudjuk, hogy a mantissza értéke mindig 1 és 2 között van így kétszeres az ábrázolási tartomány 2009.06.17. 4

Valós számok gépi ábrázolása Speciális számok ábrázolása 0 ± Megállapodás szerint ha a kitevı és a törtrész csupa 0, maga a szám is 0 Külön +0 és -0 ábrázolható, de ezek egyenértékőek Megállapodás szerint ha a kitevı csupa 1, a törtrész csupa 0, akkor a szám ± A végtelen elfogadott, bizonyos mőveletekhez használható érték (!) Nem teljes pontosságú számábrázolás A hatvány formában történı tárolás miatt az utolsó értékes számjegyek elvesznek A kettes számrendszerbeli ábrázolás következtében a végtelen kettedestörtek pontatlanságot okoznak A fentiek miatt a lebegıpontos ábrázolás a valós számok meghatározott részhalmazát képes csak ábrázolni Nagy ábrázolható számtartomány 2009.06.17. 5

Pontosság I. Készítsünk programot, mely egy double típusú lebegıpontos változó értékét 0-tól 1 tizedenként növeli, míg csak az érték 100 nem lesz. A növelést végezze ciklusban. A ciklus magjában helyezzen el vizsgálatot, mely kiírja a változó értékét, ha az nagyobb lesz, mint 200(!). Lesz ilyen kiírás? (Egy ciklusból a break paranccsal léphetünk ki.) a =200.10!!! 2009.06.17. 6

Pontosság II. class Double static void Main() double a; a = 0; do a = a+0.1; if (a>200) System.Console.WriteLine("a = "+a); break; while (a!=100); System.Console.ReadLine(); 2009.06.17. 7

Logikai típusok gépi ábrázolása A logikai típusok kétértékőek Értékeiket igaz ( true ) és hamis ( false ) kifejezéssel jelöljük Helyfoglalás: általában 1/8/16/32/64 bit Általában a csupa 0 értékő bit jelenti a hamis, a csupa 1 értékő bit az igaz értéket 16 bites ábrázolás esetén: hamis ( false ) érték = 0000 0000 0000 0000 (számként kiolvasva 0) igaz ( true ) érték = 1111 1111 1111 1111 (számként kiolvasva -1) Teljesítményokokból szokás 1 bitnél többet felhasználni a mindössze két érték ábrázolására 2009.06.17. 8

Logikai mőveletek I. Olvasson be az c és a d változókba egy-egy karaktert. Ha c értéke i, legyen a értéke true, ha d értéke i, legyen b értéke true (egyébként mindkettı legyen false ). Írja a képernyıre, hogy a és b közül melyik igaz ( Mindegyik, Valamelyik, Egyik sem )! (A C# nyelvben a karaktereket string formájában olvassuk be a billentyőzetrıl, ne feledkezzünk meg a c=char.parse(s); átalakításról!) 2009.06.17. 9

Logikai mőveletek II. static void Main() bool a,b; char d,e; d=char.parse(system.console.readline()); if (d=='i') a=true; else a= false; e=char.parse(system.console.readline()); if (e=='i') b=true; else b= false; if ((a b) &&!(a && b)) System.Console.WriteLine("Valamelyik"); if (a && b) System.Console.WriteLine("Mindegyik"); if (!(a b)) System.Console.WriteLine("Egyik sem"); System.Console.ReadLine(); 2009.06.17. 10

Érték- és referenciatípusok 1. A C# kétféle adattípust különböztet meg: értéktípusokat ( value type ), illetve referenciatípusokat ( reference type ) Az értéktípusok közvetlenül tárolják adataikat Értékül adásnál az adatok új másolata jön létre Az értékadást követıen a két adatpéldány teljesen függetlenül viselkedik Paraméterátadásnál az adatokat szintén mindig át kell másolni A referenciatípusok csak hivatkozást tárolnak az adatokra Értékül adásnál csak az adatokra való hivatkozás másolódik le Az értékadást követıen az új adatpéldány fizikailag azonos marad a régivel, mindössze egy új hivatkozás keletkezik Paraméterátadásnál nem kell átmásolni az adatokat Késıbb mindkét kategóriát részletesebben tárgyaljuk 2009.06.17. 11

A C# beépített alaptípusai (2) Egész számok (2) Név sbyte byte short ushort long ulong Leírás 8 bites elıjeles egész 8 bites elıjel nélküli egész 16 bites elıjeles egész 16 bites elıjel nélküli egész 64 bites elıjeles egész 64 bites elıjel nélküli egész Értéktartomány -128 : 127 0 : 255-32 768 : 32 767 0 : 65535-9 223 372 036 854 775 808 : 9 223 372 036 854 775 807 0 : 18 446 744 073 709 551 615 Valós számok Név Leírás float 32 bites lebegıpontos valós double 64 bites lebegıpontos valós decimal 128 bites nagypontosságú Értékes jegy 7 15 28 Értéktartomány ±1,5*10-45 : ±3,4*10 38 ±5,0*10-324 : ±1,7*10 308 ±1,0*10-28 : ±7,9*10 28 2009.06.17. 12

Konverzió, cast-olás float floatszám; int intszám; double doubleszám; string s;... floatszám = System.Convert.ToSingle(s); floatszám=float.parse(s); intszám=system.convert.toint32(s); intszám=int.parse(s); s=intszám.tostring(); s=floatszám.tostring(); floatszám= (float)doubleszám; 2009.06.17. 13

Egyéb alaptípusok: a tömb (1) A tömbök ( array ) adattípusa bármilyen beépített típus vagy újonnan definiált saját típus lehet A tömbök indexelése 0-tól kezdıdik A tömbök ún. referenciatípusok Késıbb részletesebben tárgyaljuk class HarmadikProgram static void Main() int[] egésztömb = new int[32]; int[] ElıreMegadottTömb = 2, 3, 5, 7, 11, 13, 17, 19; egésztömb[20] = 1; egésztömb[31] = 9; int tömbméret = egésztömb.length; System.Console.WriteLine("A tömb mérete:" + tömbméret); 2009.06.17. 14

Egyéb alaptípusok: a tömb (2) Többdimenziós tömbök Szögletes tömbök ( rectangular array ) int[,] SzögletesTömb = new int[2, 3]; SzögletesTömb[0, 1] int x = SzögletesTömb[0, 1]; System.Console.WriteLine(SzögletesTömb.Length); System.Console.WriteLine(SzögletesTömb.GetLength(1)); Főrészfogas tömbök ( jagged array ) int[][] FőrészfogasTömb = new int[3][]; FőrészfogasTömb[0] = new int[3]; FőrészfogasTömb[1] = new int[4]; FőrészfogasTömb[2] = new int[2]; int y = FőrészfogasTömb[1][2]; System.Console.WriteLine(FőrészfogasTömb.Length); System.Console.WriteLine(FőrészfogasTömb[1].Length); FőrészfogasTömb[1, 2] 2009.06.17. 15

Egyéb alaptípusok: a felsorolás A felsorolás a programozó által definiált egész típus, amely csak a megadott értékeket veheti fel A felsorolás egyes érvényes értékeinek külön név is adható enum Napszak Reggel = 0, Délelıtt = 1, Este = 4 Napszak idıpont = Napszak.Este; switch (idıpont) case Napszak.Reggel: System.Console.WriteLine("Jó reggelt!"); break; default: System.Console.WriteLine("Jó napot!"); break; 2009.06.17. 16

1. int i = 17; int j = i; Érték- és referenciatípusok 2. Az int típus értéktípus int[] a = new int[1]; int[] b = a; A tömbök referenciatípusok i 17 a 2. i = 23; j = 36; j 17 b a[0] = 15; b[0] = 40; 3. i 23 j 36 System.Console.WriteLine(i); // 23 System.Console.WriteLine(j); // 36 a 40 b System.Console.WriteLine(a[0]); // 40 System.Console.WriteLine(b[0]); // 40 2009.06.17. 17

Érték- és referenciatípusok 3. A C# teljes típusrendszerének összefoglalása Kategória Érték-típusok Referenciatípusok Alkategória Egyszerő típusok Felsorolások Struktúrák * Osztályok * Tömbök Képviselık * Leírás Elıjeles és elıjel nélküli egész számok (sbyte, short, int, long, byte, ushort, uint, ulong) Unicode karakterek (char) Valós számok (float, double; decimal) Logikai adattípus (bool) Programozó által definiált enum típusok Programozó által definiált struct típusok * Az object ısosztály * Unicode karaktersorozatok (a string osztály) * Programozó által definiált osztályok (class) * Interfészek * Programozó által definiált interface típusok * Egy- és többdimenziós tömbök (array) Programozó által definiált delegate típusok * 2009.06.17. 18

Operátorok és precedenciájuk (2) Hozzáférési célú operátorok Operátor Kifejezés Precedencia Jelentés. x.y 1 Taghozzáférés (összetett típusoknál és felsorolásoknál) ( ) f(x) 1 Metódushívás (tagfüggvények végrehajtása egyes összetett típusoknál) [ ] a[x] 1 Tömbelem-hozzáférés (tömböknél), hozzáférés indexelt tulajdonsághoz* Egyéb operátorok Operátor Kifejezés Precedencia Jelentés? : x? y : z 13 Ha az x feltétel igaz, akkor a kifejezés értéke y, ellenkezı esetben z lesz 2009.06.17. 19

Feladat Készítsünk programot, amely a konzolról beolvas egy nevet és egy születési évet, majd kiírja az illetı korát! class Életkor static void Main() int évszám, életkor; string név; System.Console.WriteLine("Név: "); név = System.Console.ReadLine(); System.Console.WriteLine("Születés éve: "); évszám = System.Convert.ToInt32(System.Console.ReadLine()); életkor = 2007 - évszám; System.Console.WriteLine(név + " életkora: " + életkor + " év"); System.Console.ReadLine(); 2009.06.17. 20

Feladat Készítsünk struktogram formájában algoritmust, amely elvégzi egy egydimenziós tömb feltöltését a konzolról beolvasott adatokkal! Tömb indexe legyen 0 Amíg a tömb indexe nem haladja meg a maximumot Következı elem beolvasása Tömb indexének növelése 2009.06.17. 21

Feladat Készítsünk algoritmust, majd programot, amely a konzolról beolvassa egy kétdimenziós, 3x3-as tömb minden elemét, majd kiírja a tömb teljes tartalmát! Tömb sorindexe legyen 0 Tömb oszlopindexe legyen 0 Amíg a tömb sorindexe nem haladja meg a maximumot Amíg a tömb oszlopindexe nem haladja meg a maximumot Következı elem beolvasása Tömb oszlopindexének növelése Tömb sorindexének növelése Tömb oszlopindexe legyen 0 2009.06.17. 22

A program 1. része class Tömbkezel mbkezelı static void Main() string[,] egészt sztömb = new string[3, 3]; int i = 0, j = 0; string s; while (i <= 2) System.Console.Write WriteLine( Line("A(z) " + (i+1) + ". sor:"); while (j <= 2) System.Console.Write WriteLine( Line("A(z) " + (j+1) + ". elem:"); s = System.Console.Read ReadLine(); egészt sztömb[i, j] = s; j++; i = i + 1; j = 0; 2009.06.17. 23

A program 2. része i = 0; j = 0; while (i <= 2) System.Console.Write WriteLine( Line("A(z) " + (i+1) + ". sor tartalma:"); while (j <= 2) System.Console.Write Write(eg egészt sztömb[i, j]); System.Console.Write Write(" "); j++; i++; j = 0; System.Console.Write WriteLine( Line(); System.Console.Read ReadLine( Line(); // Main() vége // Tömbkezel mbkezelı vége 2009.06.17. 24

for (inicializátor tor; feltétel tel; iterátor tor) utasítás A for utasítás Az inicializátor és az iterátor tetszıleges utasítás lehet Mőködése: Belépéskor egyszer végrehajtódik az inicializátor Minden ciklusmenetben kiértékelıdik a feltétel Amennyiben a feltétel igaz, az utasítás (a ciklusmag ) egyszer lefut A ciklusmag végeztével végrehajtódik az iterátor és ismét kiértékelıdik a feltétel A ciklus akkor ér véget, amikor a feltétel hamissá válik, ellenkezı esetben újabb ciklusmenet következik Általában az inicializátor egy számlálót állít be, az iterátor pedig ezt a számlálót növeli vagy csökkenti Legtöbbször akkor használjuk, ha elıre ismert számú alkalommal szeretnénk végrehajtani egy utasítást 2009.06.17. 25

// Számmátrix A for utasítás (példa) // Ez a külsı ciklus fut végig az összes soron for (int i = 0; i < 100; i += 10) // Ez a belsı ciklus fut végig egy soron belül az összes oszlopon for (int j = i; j < i + 10; j++) System.Console.Write(" " + j); System.Console.WriteLine(); 2009.06.17. 26

Feladat Készítsünk algoritmust, majd programot, amely a konzolról beolvassa egy kétdimenziós, 3x3-as tömb minden elemét, majd a sorok sorrendjének megfordításával kiírja a tömb teljes tartalmát! Használjuk a for utasítást! 2009.06.17. 27

A foreach utasítás foreach (típus változ ltozó in győjtem jtemény ny) utasítás Lehetıvé teszi egy utasítás végrehajtását egy adott győjtemény összes elemére A győjtemény pontos fogalmát késıbb részletesen tárgyaljuk A tömbök győjtemények, tehát a foreach utasítás használható hozzájuk Mőködése: Belépéskor létrejön egy típus típusú változó ( iterációs változó ) Ez a változó csak az utasításon belül használható Az utasítás annyiszor hajtódik végre, ahány elemet tartalmaz a győjtemény Az iterációs változó minden egyes végrehajtásnál felveszi a győjtemény soron következı elemének értékét Az iterációs változó az utasításban nem módosítható Erre a célra a for utasítás használható 2009.06.17. 28

A foreach utasítás (példa) int[] teszttömb = 1, 2, 3, 10, 20, 30, 100, 200, 300, 999; System.Console.WriteLine("Példa a foreach utasításra"); foreach (int tömbérték in teszttömb) System.Console.Write(tömbérték + " "); System.Console.WriteLine(); 2009.06.17. 29

continue ; A continue utasítás Az aktuális ciklusmenet megszakítása, folytatás a következı ciklusmenettel Az aktuális while, do while, for, illetve foreach utasítás ciklusmagjából hátralévı rész átlépésére és a következı ciklusmenettel történı folytatásra használhatjuk for (int i = 0; i < 100; i += 10) for (int j = i; j < i + 10; j++) // Kihagyjuk a hárommal oszthatókat if (j % 3 == 0) continue; System.Console.Write(" " + j); System.Console.WriteLine(); 2009.06.17. 30

goto címke; goto case címkekonstans; goto default; A goto utasítás Közvetlen ugrás a megadott címkéhez Utasítás belsejébe nem lehet ilyen módon belépni switch utasításnál ugrás a megadott konkrét (case), illetve alapértelmezett (default) címkéhez Ezzel az is elérhetı, hogy a switch utasításnál több különbözı esetben is végrehajtódjon ugyanaz az utasítássorozat (a megoldás neve átesés ) Használata általában nem javasolt Könnyen átláthatatlanná teheti a programvégrehajtás menetét Rendszeres használata elavult, a strukturált programozás kora elıtti stílusra utal 2009.06.17. 31

A goto utasítás (példa) for (int i = 0; i < 100; i ++) for (int j = 0; j < 100; j++) for (int k = 0; k < 100; k++) if ( (i + j + k) > 200) goto Probléma; System.Console.WriteLine(i + " " + j + " " + k); return; Probléma: System.Console.WriteLine("Ide csak goto utasítással kerülhetett a vezérlés."); 2009.06.17. 32

Mőveletek karaktersorozatokkal (1) A karaktersorozat ( string ) karakter típusú elemekbıl álló egydimenziós tömbként is felfogható Mivel gyakran használt, igen fontos típusról van szó, rengeteg beépített segédfunkció áll rendelkezésre hozzá Néhány kiemelt mővelet és segédfunkció: Összekapcsolás (+ operátor) Részsorozat kiválasztása (Substring függvény) Részsorozat keresése (IndexOf függvény) Karaktersorozat átalakítása számmá (Convert.ToInt32 függvény) Szám átalakítása karaktersorozattá (Convert.ToString függvény) Kis- és nagybetős formára alakítás (ToUpper ToUpper, ToLower függvények) Formázott megjelenítés (String.Format függvény) Karaktersorozat kezelése tömbként 2009.06.17. 33

Mőveletek karaktersorozatokkal (2) Összekapcsolás class Összekapcsolás static void Main() string str1 = "Szervusz"; string str2 = "C#"; string str3 = "világ!"; string str4 = str1 + ", " + str2 + " " + str3; System.Console.WriteLine(str4); 2009.06.17. 34

Mőveletek karaktersorozatokkal (3) Részsorozat kiválasztása class Részsorozat static void Main() string s1, s2; s1 = "Hello, World"; s2 = s1.substring(7, 5); System.Console.WriteLine(s2); 2009.06.17. 35

Mőveletek karaktersorozatokkal (4) Részsorozat keresése class Keresés static void Main() int i; string s1; s1 = "Ez egy karaktersorozat"; i = s1.indexof("karakter"); System.Console.WriteLine(i); i = s1.indexof("egy"); System.Console.WriteLine(i); i = s1.indexof("ez nincs benne"); System.Console.WriteLine(i); 2009.06.17. 36

Mőveletek karaktersorozatokkal (5) Karaktersorozat átalakítása számmá class KonverzióSzámmá static void Main() int i, j, k; float f; string s1, s2, s3; s1 = "123"; s2 = "256"; s3 = "981,43"; i = System.Convert.ToInt32(s1); j = System.Convert.ToInt32(s2); k = i + j; System.Console.WriteLine(k); f = float.parse(s3); System.Console.WriteLine(f); 2009.06.17. 37

Mőveletek karaktersorozatokkal (6) Szám átalakítása karaktersorozattá class KonverzióKaraktersorozattá static void Main() int i, j; string s1, s2; i = 1982; j = 1987; s1 = "Lajos születési éve " + i; s2 = "Mari születési éve " + System.Convert.ToString(j); System.Console.WriteLine(s1); System.Console.WriteLine(s2); 2009.06.17. 38

Mőveletek karaktersorozatokkal (7) Kis- és nagybetős formára alakítás class CsupaKisÉsNagybető static void Main() int i; string s; i = 1982; s = "Lajos születési éve " + i; System.Console.WriteLine(s.ToUpper()); System.Console.WriteLine(s.ToLower()); 2009.06.17. 39

Mőveletek karaktersorozatokkal (8) Formázott megjelenítés parancssori paraméterekkel class FormázottMegjelenítés static void Main(string[] args) float szám; foreach (string s in args) szám = System.Convert.ToSingle(s); System.Console.WriteLine( System.String.Format("karaktersorozat: 0 szám: 1", s, szám)); System.Console.WriteLine(); foreach (string s in args) szám = System.Convert.ToSingle(s); System.Console.WriteLine( System.String.Format("karaktersorozat: \"0, 16\" szám: 1, 16:N5", s, szám)); 2009.06.17. 40

Mőveletek karaktersorozatokkal (8) Formázott megjelenítés vezérlıkarakterei Kód Számtípus Magyarázat Példa C Egész és valós Helyi pénznem formázási szabályai szerinti kijelzés 1 435,5 Ft (Magyarország) $1435.5 (USA) D Csak egész Általános egész szám 1435 E Egész és valós Tudományos jelölésmód 1,4355E+003 (Magyarország) 1.4355E+003 (USA) F Egész és valós Fixpontos decimális számkijelzés 1435,50 (Magyarország) 1435.50 (USA) G Egész és valós Általános számkijelzés 1435,5 (Magyarország) 1435.5 (USA) N Egész és valós Helyi területi beállítások szerinti számkijelzés 1 435,500 (Magyarország) 1,435.500 (USA) P Egész és valós Százalékos formátum 143 550,00 % X Csak egész Hexadecimális formátum 59B 2009.06.17. 41

Mőveletek karaktersorozatokkal (9) Karaktersorozat kezelése tömbként class KezelésTömbként static void Main() int i; string s; s = "Karaktersorozat"; foreach (char c in s) System.Console.Write(c); System.Console.WriteLine(); i = 1; while (i < s.length) System.Console.WriteLine(s[i]); i++; 2009.06.17. 42

Feladat Készítsen programot, mely egy string-ben megkeresi egy adott karakter valamennyi elıfordulását! 2009.06.17. 43

Feladat Készítsen programot, mely egy string-ben kicserél minden A karaktert B -re! 2009.06.17. 44

Feladat Készítsen programot, mely egy adott karaktersorozat (pl.: Amelyik kutya ugat, az a kutya nem harap ) minden adott karaktersorozatát (pl. kutya ) egy adott karaktersorozatra( pl. macska ) cseréli! 2009.06.17. 45