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

Hasonló dokumentumok
Objektumorientált Programozás I.

Objektumorientált Programozás II.

Szoftvertervezés és -fejlesztés I.

Készítette: Nagy Tibor István

Szoftvertervezés és -fejlesztés I.

A C# programozási nyelv alapjai

Készítette: Nagy Tibor István

A C# PROGRAMOZÁSI NYELV

A C# nyelv alapelemei

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

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

OOP II. A C# nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei

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

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

OOP II. A C# nyelv alapelemei I.

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

Informatika terméktervezőknek

OOP II. A C# nyelv alapelemei I.

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

OOP II. A C# nyelv alapelemei I.

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

Java II. I A Java programozási nyelv alapelemei

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

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

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

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

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

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

Szoftvertechnológia alapjai Java előadások

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

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

OOP III. A C# nyelv alapelemei

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

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

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

2. Fejezet : Számrendszerek

Bevezetés az informatikába

Programozás 1. Dr. Iványi Péter

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Pénzügyi algoritmusok

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

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

1. Alapok. #!/bin/bash

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

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

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Információs Technológia

OOP III. A C# nyelv alapelemei II.

Assembly programozás: 2. gyakorlat

Informatikai Rendszerek Alapjai

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

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

Vezérlési szerkezetek

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

Aritmetikai utasítások I.

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

Máté: Számítógép architektúrák

PASzSz. Dr. Kotsis Domokos

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

GYAKORLATIAS JAVA MINTA

S z á m í t ó g é p e s a l a p i s m e r e t e k

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Webprogramozás szakkör

4. Fejezet : Az egész számok (integer) ábrázolása

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

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

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

Labor gyakorlat Mikrovezérlők

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

Adatbázis és szoftverfejlesztés elmélet

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Szkriptnyelvek. 1. UNIX shell

C programozás. 1 óra Bevezetés

Speciális valós értékek: Adatok. Deklarálás C#-ban: típus változónév;

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Informatika érettségi vizsga

Dr. Oniga István DIGITÁLIS TECHNIKA 2

Programzás I gyakorlat

Vezérlési szerkezetek. Szelekció Ciklusok

Programozás I gyakorlat

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

Labor gyakorlat Mikrovezérlők

INFO1 Számok és karakterek

Programozás I gyakorlat

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Java programozási nyelv

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Átírás:

Programozás I. 2. előadás C# bevezető Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2012. szeptember 17. Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 1 / 52

Tartalom 1 Számítógépes műveletvégzés 2 Adattípusok 3 Operátorok 4 C# program Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 2 / 52

Tartalom 1 Számítógépes műveletvégzés 2 Adattípusok 3 Operátorok 4 C# program Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 3 / 52

Számítógépes műveletvégzés Cél: annak modellezése, hogy az egyszerű adatokat hogyan tárolja, és a műveleteket hogyan végzi el a számítógép (részletesebben: Számítógépes architektúrák) Használt elemek OPT (Operatív tár: memória, cache, regisztertér is lehetne. A legfontosabb: bájtszervezésű tár) ALU (Arithmetical and Logical Unit: Aritmetikai és Logikai Egység; a műveletvégző egység. 2 bemeneten tud valamilyen műveletet végezni, 1 kimenet) CU (Control Unit: Vezérlőegység) Most NEM használjuk a CPU elnevezést, mert abban lenne más is (buszok, regiszterek, több fajta cache, stb.) Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 4 / 52

Az ALU sematikus működése Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 5 / 52

Problémák a közvetlen memóriacímekkel Ha így működne, egy nagyobb program megírása szinte lehetetlen komplexitású lenne (a jelenlegi számítógépek címtere óriási) Fogalmunk sincs, hogy az operációs rendszer hova helyezi el a programunkat (több program fut egyszerre) Neumann-elv: Az adatok és az utasítások közös operatív tárban vannak ugyanolyan bináris reprezentációban! Nehéz lenne karban tartani, hogy hol van adat, és hol van utasítás. Megoldás A programok csak változókat használnak, a változók konkrét memóriacíme nem érdekes. Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 6 / 52

Problémák a változókkal A fenti példában a memória bájtszervezésű: 1 rekesz = 1 byte, a tárolás bitekben történik Ha számot akarunk tárolni, akkor 8 bit csak a 0..255 intervallumban elég. Mi van, ha nagyobb számokat akarunk tárolni? Mi van, ha nem számot akarunk tárolni, hanem szöveget? Mi van, ha nem szöveget akarunk tárolni, hanem egy képet vagy más bináris adatot? Megoldás A változók bevezetése önmagában nem elég. Tudnunk kell, hogy a változó által kijelölt területen mennyi adat van, és azt hogyan kell értelmezni. TíPUSOK Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 7 / 52

Tartalom 1 Számítógépes műveletvégzés 2 Adattípusok 3 Operátorok 4 C# program Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 8 / 52

Parancsok, adatok A számítógép minden adatot és utasítást bináris formában tárol a memóriában A tárolt bináris adat jelentése értelmezésfüggő Az adatokat változókban tároljuk A változó deklarációja határozza meg a tárolt adat méretét és értelmezését (típusát) Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 9 / 52

Változókkal végezhető tevékenységek Deklaráció: A változó nevének és típusának megadása int szám; Értékadás: Érték elhelyezése a változóban szám = 25; szám = 6 * 2-29; Érték lekérdezése: A változó tartalmának kiolvasása. Az érték a kiolvasás után is megmarad a változóban. 5 * 10 - szám + 2; Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 10 / 52

Változókkal végezhető tevékenységek A tevékenységek sorrendje: 1 Deklaráció 2 Értékadás 3 Érték lekérdezése A fentiek közül bármelyik tevékenységet is szeretnénk végrehajtani, előbb a sorrendben őt megelőzőt kell elvégezni A deklaráció és a kezdeti értékadás összevonható egy utasításba int szám = 25; Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 11 / 52

Egyszerű adattípusok Mindent binárisan tárolunk, az összes adattípus mérete a byte többszöröse Számok Egész Valós (lebegőpontos) Karakterek, karaktersorozatok (string-ek) Logikai értékek Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 12 / 52

Egész (fixpontos) számok Két fő kérdés: tárolási méret, előjelesség e kettőtől függ az ábrázolás értéktartománya Relatív kicsi ábrázolás tartomány, de teljes pontosság Előjeles ábrázolási mód: kettes komplemens (ld. IRA) Bitek száma Előjeltelen Előjeles 8 byte sbyte 16 ushort short 32 uint int 64 ulong long Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 13 / 52

Egész (fixpontos) számok Név Leírás Értéktartomány sbyte 8 bites előjeles egész -128 : 127 byte 8 bites előjel nélküli egész 0 : 255 short 16 bites előjeles egész -32.768 : 32.767 ushort 16 bites előjel nélküli egész 0 : 65535 int 32 bites előjeles egész -2.147.483.648 : 2.147.483.647 uint 32 bites előjel nélküli egész 0 : 4.294.967.295 long 64 bites előjeles egész -9.223.372.036.854.775.808 : 9.223.372.036.854.775.807 ulong 64 bites előjel nélküli egész 0 : 18.446.744.073.709.551.615 Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 14 / 52

Egész számok speciális értékei MinValue Az ábrázolható legkisebb szám byte.minvalue, int.minvalue, stb. MaxValue Az ábrázolható legnagyobb szám short.maxvalue, long.maxvalue, stb. Túlcsordulás (a változó++ növeli a változó értékét) byte a = 255; a++; a változó értéke 0 lesz sbyte b = -128; b--; a változó értéke 127 lesz Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 15 / 52

Valós (lebegőpontos) számok ±m 2 k Normalizált szám formájában tároljuk (előjel, mantissza, karakterisztika, részletesebben: IRA) Nagy számtartomány, de nem pontos A számábrázolás formájából adódóan nem csak abszolút értékben túl nagy, de nullához túlságosan közeli számokat sem tud ábrázolni A karakterisztika mérete az ábrázolható számtartomány méretét, a mantissza mérete a pontosságot határozza meg Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 16 / 52

Valós (lebegőpontos) számok Név Leírás Értékes Értéktartomány jegy float 32 bites lebegőpontos 7 ±1, 5 10 45 : ±3, 4 10 38 double 64 bites lebegőpontos 15 ±5, 0 10 324 : ±1, 7 10 308 decimal 128 bites nagypontosságú 28 ±1, 0 10 28 : ±7, 9 10 28 Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 17 / 52

Nullával való osztás Egész számtípus használatakor futás idejű hibát dob: int a = 5; int b = 0; int c = a / b; Valós számtípus használatakor hibátlan: float x = 5; float y = 0; float z = x / y; Valós számtípus esetén az eredmény lehet: végtelen (pozitív vagy negatív), illetve Nem szám Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 18 / 52

Valós számok speciális értékei 0 Külön +0 és 0 is ábrázolható, de ezek egyenértékűek ± A végtelen elfogadott, bizonyos műveletekhez használható érték Pozitív szám / 0 +, Negatív szám / 0 float.positiveinfinity, double.negativeinfinity decimal nincs Nem szám 0/0, illetve / eredménye float.nan, double.nan decimal nincs Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 19 / 52

Valós számok speciális értékei Epsilon A legkisebb ábrázolható pozitív szám float.epsilon, double.epsilon decimal nincs Kezdőérték megadása Kódban tizedespont használandó: double pi = 3.14; Minden így megadott érték típusa double Jelzőkarakterek kezdőérték megadásánál float pi = 3.14f; decimal pi = 3.14M; Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 20 / 52

Karakterek Egy karakter tárolása is binárisan történik kell lennie egy szabálynak, hogy melyik kód melyik karakternek felel meg ASCII: kezdetben 7 bites. 0-31: vezérlő karakterek; 32-127: angol ABC kis- és nagybetűi, számok, írásjelek 8 bites ASCII: 128-255: rajzoló karakterek, speciális karakterek (ä, ç), csak az országok egy részének megfelelő Hiányzó karakterek: ő, Ő, ű, Ű (csak ô, û) Nincs elég hely: japán, kínai, szír, stb. Alternatíva: kódlapok (cp437, cp850/852, cp1250) Kódlapok szabványosítása (ISO8859-1, -2, -15) Probléma: készítés kódlapja feldolgozás kódlapja Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 21 / 52

Karakterek Alternatíva: felejtsük el az 1 byte = 1 karakter szabályt Probléma: hogyan állapítjuk meg egy karakterlánc hosszát? Eddig egyszerű volt, de ezután... mindent újra kell írni... UNICODE kódolás: UTF-8, UTF-16, UTF-32 kódlapok UTF-8: Az angol ABC betűinek kódolása ugyanaz, a többi karakternek egyedi karakterje van, 2-4 byte / karakter UTF-16: 2 vagy 4 byte / karakter Az UTF-16 a C# nyelv és a.net keretrendszer belső kódolása (a file-ok kódolása UTF-8 Minden karakteres típus, minden szövegkezelő függvény ez alapján működik Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 22 / 52

Karakterek, karakterláncok Karakter: char (megadás: aposztróffal) char c = é ; Karakterlánc: string (megadás: idézőjellel) string s = "Árvízi tükörfúrógép"; Speciális karakterek is megadhatóak (@ jellel kikapcsolható) Jelölés Karakter \0 Null karakter \a Sípszó \b Visszatörlés \f Lapdobás \n Soremelés \r Kocsi vissza \t Vízszintes tabulátor Jelölés Karakter \v Függőleges tabulátor \x... Hexadecimális kód \u... Unicode karakter \U... Unicode karakter \ Aposztróf \" Idézőjel \\ Backslash Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 23 / 52

Logikai típus Név Leírás Értéktartomány bool Logikai adattípus true vagy false (igaz vagy hamis) Teljesítmény okokból általában nem egy biten ábrázoljuk (részletesebb ld. IRA) Logikai műveletek A B A B A B A B A H H H H H I H I H I I I I H H I I H I I I I H H Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 24 / 52

Változók deklarálása és használata int j = -10; int x = 10, y = 20; double pi = 3.14159; const int száz = 100; char d = x ; char UnicodePélda = u\0170 ; string jegy = "jeles"; string ElérésiÚt = "C:\\Program Files\\"; string ElérésiÚt2 = @"C:\Program Files\"; string vers = @"Hová merült el szép szemed világa"; bool igaz = true; Fontos szabály: azonos névvel nem lehet egy változót kétszer deklarálni A közvetlenül beírt értékek más neve: literál Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 25 / 52

Speciális literálok Egész literál Típusuk: int, uint, long vagy ulong (ebben a sorrendben) attól függően, hogy melyik típusban fér el a megadott érték Az egész literál típusa is módosítható a literál mögé írt betűkkel U: uint vagy ulong (pl.: 255U) L: long vagy ulong (pl.: -356L) UL: ulong (pl.: 222UL) Megadható hexadecimálisan: 0xFF Valós literál, tudományos megadás: 1.23456E-2 Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 26 / 52

Típuskonverziók A számtípusok közötti konverzió mikéntje attól függ, hogy történik-e értékvesztés a konverzió során Egyszerű értékadás használható, amennyiben biztos, hogy nincs értékvesztés: byte a = 5; long c = 5; float f = 3.2f; int b = a; float d = c; double g = f; Amennyiben értékvesztés történhet, akkor mindenképp jelezni kell a konverziót, ez az ún. típuskényszerítés, kasztolás (typecasting): int a = 999; double d = 3.14; int i1 = -1; byte b = (byte)a; int c = (int)d; uint i2 = (uint)i1; Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 27 / 52

Típuskonverziók A stringgé történő konvertálás a C# nyelven MINDEN változónál ugyanúgy történik: byte b = 250; string s1 = b.tostring(); Stringből számmá tudunk konvertálni: float f = 3.14f; string s2 = f.tostring(); string s = "123"; string s2 = "123,456"; byte b = byte.parse(s); float f = float.parse(s2); Typecasting esetén (ebben a félévben számok között): célváltozó = (céltípus)forrásváltozó; Stringgé konvertálásnál: célváltozó = forrásváltozó.tostring(); Stringből konvertálásnál: célváltozó = céltípus.parse(stringváltozó); Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 28 / 52

Tartalom 1 Számítógépes műveletvégzés 2 Adattípusok 3 Operátorok 4 C# program Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 29 / 52

Kifejezések A kifejezések ( expression ) adatokat szolgáltató operandusokból és rajtuk valamilyen műveletet végző operátorokból állnak Operandus: pl. bármely változó vagy konkrét megadott érték Operátor: pl. + - / * A kifejezések egymásba is ágyazhatók Egy kifejezés operandusa maga is lehet kifejezés Több operátor esetén ezek fontosság sorrendje (precedenciája) határozza meg a kiértékelés sorrendjét Példa: az x + y * z kifejezés kiértékelés szempontjából: x + (y * z) A sorrend zárójelezéssel explicit módon is meghatározható Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 30 / 52

Operátorok Aritmetikai operátorok Operátor Kifejezés Jelentés + +x Előjelképzés x + y Összeadás vagy kombináció (szám/string) - -x Előjelképzés x - y Kivonás * x*y Szorzás / x / y Osztás (egész/tört osztás, nullával osztás!) % x % y Maradékképzés ++ x++ Növelés eggyel x kiértékelése után ++x Növelés eggyel x kiértékelése előtt -- x-- Csökkentés eggyel x kiértékelése után --x Csökkentés eggyel x kiértékelése előtt Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 31 / 52

Operátorok Relációs (összehasonĺıtó) operátorok Operátor Kifejezés Jelentés == x == y Egyenlő?!= x!= y Nem egyenlő? < x < y Kisebb? > x > y Nagyobb? <= x <= y Kisebb vagy egyenlő? >= x >= y Nagyobb vagy egyenlő? Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 32 / 52

Operátorok Bináris logikai (bitenkénti műveletvégző) operátorok Operátor Kifejezés Jelentés x Bitenkénti nem művelet & x & y Bitenként ÉS művelet ^ x ^ y Bitenkénti KIZÁRÓ VAGY művelet x y Bitenkénti VAGY művelet << x << y Eltolás balra (x eltolása y helyiértékkel) >> x >> y Eltolás jobbra (x eltolása y helyiértékkel) Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 33 / 52

Operátorok Logikai (feltételvizsgáló) operátorok Operátor Kifejezés Jelentés!!x A kifejezés értéke x ellentettje && x && y A kifejezés akkor igaz, ha x és y is igaz x y A kifejezés akkor igaz, ha x vagy y is igaz Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 34 / 52

Operátorok Értékadó operátorok Operátor Kifejezés Értékadás típusa = x = y Egyszerű (x értéke legyen egyenlő y-nal) += x += y Összeadással (x = x + y) -= x -= y Kivonással (x = x - y) *= x *= y Szorzással (x = x * y) /= x /= y Osztással (x = x / y) %= x %= y Maradékképzéssel (x = x % y) &= x &= y Bitenkénti ÉS művelettel (x = x & y) ^ = x ^ = y Bitenkénti KIZÁRÓ VAGY művelettel (x = x ^ y) = x = y Bitenkénti VAGY művelettel (x = x y) <<= x <<= y Bitenkénti eltolással balra (x = x << y) >>= x >>= y Bitenkénti eltolással jobbra (x = x >> y) Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 35 / 52

Tartalom 1 Számítógépes műveletvégzés 2 Adattípusok 3 Operátorok 4 C# program Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 36 / 52

Implementálás (parancssorból) 1 Algoritmus C# forráskód 1 Forráskód megírása szövegszerkesztőben 2 Forráskód elmentése fájlnév.cs néven 2 C# forráskód Futtatható fájl (.exe) 1 Parancssori ablak megnyitása (vagy Visual Studio Command Prompt indítása) 2 Belépés a forráskódot tartalmazó könyvtárba (cd) 3 Forrásfájl lefordítása (csc fájlnév.cs) 3 Futtatható fájl 1 végrehajtása 1 Parancssori ablak megnyitása 2 Program futtatása (fájlnév.exe) 1 Ez nem valódi futtatható fájl, hanem ún. köztes kód, melynek futtatásához a.net Framework megfelelő verziója szükséges Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 37 / 52

C# program alapja class ProgramNév { static void Main() { } } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 38 / 52

Utasítások Egy program alapvetően utasítások sorozatából áll Egyszerű utasítások (statement) Az egyszerű utasítások lehetnek deklarációk, kifejezések vagy előre definiált utasítások Az egyszerű utasításokat ; karakter zárja le Összetett utasítások (compound statement) Több utasítás sorozata összefogható egy összetett utasítássá Az összetett utasítások végén nem szerepel ; karakter Az összetett utasítás másik neve: blokk vagy kódblokk A kódblokkon belül definiált változó csak a kódblokkon belül látszik Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 39 / 52

Szekvencia Minden utasítást ; zár le Az utasítások írhatók külön sorokba is: utasítás1; utasítás2;... utasításn; Az utasítások írhatók egy sorba: utasítás1; utasítás2;... utasításn; Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 40 / 52

Kíıratás Console.Write("Szöveg") Kíırja a Szöveg-et a konzolra Console.WriteLine("Szöveg") Kíırja a Szöveg-et a konzolra és a kurzort a következő sor elejére ugratja át Használatukhoz szükséges a program legelején a using System; utasítás using System; class Program { static void Main() { Console.WriteLine("Hello world!"); } } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 41 / 52

Kíıratás Változók értékének kíıratása using System; class Program { static void Main() { int a = 3; int b = 4; int c = 5; Console.WriteLine("A hármoszög oldalai: a = {0}, b = {1}, c = {2}", a, b, c); } } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 42 / 52

Beolvasás Console.ReadLine() paranccsal Ha az s string típusú változóban szeretnénk eltárolni a beolvasott szöveget, akkor: string s = Console.ReadLine(); Ha a beolvasott értéket nem karaktersorozatként (string) szeretnénk használni, akkor a szükséges konverziót is végre kell hajtani. Használatához szükséges a program elején a using System; utasítás Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 43 / 52

Beolvasás Példa using System; class Program { static void Main() { Console.Write("a = "); string s = Console.ReadLine(); int a = int.parse(s); Console.Write("b = "); s = Console.ReadLine(); int b = int.parse(s); Console.Write("c = "); s = Console.ReadLine(); int c = int.parse(s); Console.WriteLine("A hármoszög oldalai: a = {0}, b = {1}, c = {2}", a, b, c); } } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 44 / 52

Elágazás (szelekció) if (feltétel) utasítás1; [else utasítás2;] if (feltétel) { utasítás1; utasítás2; } else { utasítás3; utasítás4; } else ág elhagyható Több utasítás esetén kötelező a { } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 45 / 52

Elágazás (szelekció) if (feltétel1) utasítás1; else if (feltétel2) utasítás2; else if (feltétel3) utasítás3;...... else utasításn; else ág elhagyható Több utasítás esetén kötelező a { } else if ágakból tetszőleges számú használható Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 46 / 52

Rövidzár-kiértékelés Akkor fordul elő, amikor egy logikai kifejezésben több logikai kifejezést csatolunk össze az ÉS / VAGY (&& / ) operátorok használatával ÉS operátor esetén, ha az első kifejezés hamis, akkor a másodikkal már nem is érdemes foglalkozni, az eredmény mindenképp hamis lesz VAGY operátor esetén, ha az első kifejezés igaz, akkor a másodikkal már nem is érdemes foglalkozni, az eredmény mindenképp igaz lesz C#-ban az összetett logikai kifejezések (pl. feltételek esetén) ilyen módon történik Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 47 / 52

Elágazás (szelekció) switch (kifejezés) { case érték1 : utasítás(ok)1; break; case érték2 : utasítás(ok)2; break;... [default : utasítás(ok)n; break;] } Ha a kifejezés értéke érték1, akkor utasítás(ok)1, érték2, akkor utasítás(ok)2,... hajtódik végre Ha a kifejezés értéke egyik case ágban megadottal sem egyezik meg, akkor a default ágban megadott utasítás(ok)n hajtódik végre Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 48 / 52

Ciklus (iteráció) while (feltétel) utasítás; while (feltétel) { utasítások; } Amíg a feltétel igaz, a ciklusmagban található utasítások újra és újra végrehajtódnak Ha a ciklusmagban több utasítás is van, akkor kötelező a { } Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 49 / 52

Ciklus (iteráció) do { utasítások; } while (feltétel); Amíg a feltétel igaz, az utasítások újra és újra végrehajtódnak Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 50 / 52

Ciklus (iteráció) for (inicializáló_rész; feltétel; módosító_rész) { utasítások; } Amíg a feltétel igaz, az utasítások újra és újra végrehajtódnak Több utasítás esetén kötelező a { } inicializáló rész: ciklusváltozó(k) inicializálása módosító rész: ciklusváltozó(k) értékének módosítása A zárójelek közötti három rész közül egyiket sem kötelező megadni (végtelen ciklus) Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 51 / 52

Felhasznált irodalom Korábbi évek OOP diasorai Nagy Tibor István diasorai Andrew Troelsen: A C# 2008 és a.net 3.5. Szak Kiadó, 2009 Sergyán (OE NIK) Programozás I. 2012. szeptember 17. 52 / 52