Számítástechnika II. BMEKOKAA153 1. Előadás Dr. Bécsi Tamás
Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu
A tantárgyi követelmények Szorgalmi időszakban Laborgyakorlatok látogatása (max. 4 hiányzás lehet) Beszámolók megírása (2 eredményes ZH.) Féléves házi feladat beadása (egyéni, működő) Kredit pontok megszerzése (3 kredit) Félév végi jegy (követelmények teljesítése esetén) Jegy = (zh1+zh2)/4 + HF/2
A C# nyelv A nyelv alapjául a C++ és a Java szolgált, amelyek C alapú programnyelvek A C# objektumorientált programnyelv A C# tanulását a C programozói ismereteinkre építjük, így a klasszikus didaktikától némileg eltérően haladunk. Jelen előadás a gyakorlati órákon való elindulás elősegítését tűzi ki célul.
Szintaktikai alapok Alapvető típusok C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char System.Char 2Egy Unicode karakter bool System.Boolean 1Logikai típus, értéke igaz(1) vagy hamis(0) sbyte System.SByte 1Előjeles 8 bites egész szám (-128..127) short System.Int16 2Előjeles 16 bites egész szám (-32768..32767) ushort System.UInt16 2Előjel nélküli 16 bites egész szám (0..65535) int System.Int32 4Előjeles 32 bites egész szám ( 2147483647.. 2147483647). uint System.UInt32 4Előjel nélküli 32 bites egész szám (0..4294967295) float System.Single 4Egyszeres pontosságú lebegőpontos szám double System.Double 8Kétszeres pontosság lebegőpontos szám decimal System.Decimal 8Fix pontosságú 28+1 jegyű szám long System.Int64 8Előjeles 64 bites egész szám ulong System.UInt64 8Előjel nélküli 64 bites egész szám string System.String N/A Unicode karakterek szekvenciája object System.Object N/A Minden más típus őse
Szintaktikai alapok Alapvető operátorok és precedencia Kategória Operátor Asszociativitás Elsődleges () [] ->. ++ - - Left to right + -! ~ ++ - - (type)* & sizeof Right to left Multiplikatív * / % Left to right Additív + - Left to right Shift << >> Left to right Relációs és típusvizsgálat < <= > >= is as Left to right Egyenlőség ==!= Left to right Bitenkénti AND & Left to right Bitenkénti XOR ^ Left to right Bitenkénti OR Left to right Logikai AND && Left to right Logikai OR Left to right Feltételes?: Right to left Értékadás = += -= *= /= %=>>= <<= &= ^= = Right to left Vessző, Left to right
Szintaktikai alapok Folyamatvezérlés (if-else) int i=1; if(i < 10) { //ha igaz i = 10; } else { //ha hamis i -= 1; }
Szintaktikai alapok Folyamatvezérlés (switch) int i; char c = 'd'; switch (c) { case 'a': i = 1; break; case 'b': i = 2; break; default : i = 3; break; }
Szintaktikai alapok Folyamatvezérlés (for) int i,s=0; for (i = 0; i < 11; i++) s+=i;
Szintaktikai alapok Folyamatvezérlés (while) int i=0,s=0; while(true) { i++; if (i % 2 == 1) continue; s += i; if (i > 10) break; }
Szintaktikai alapok Folyamatvezérlés (do-while) int a=0,b=1,c; do { c = a + b; a = b; b = c; } while (c<50) ;
Struktúrák Ahogy tanultuk C-ben: struct pont { int x; int y; }; pont a; Hozzáférési szintek: private csak struktúrán belülről érhető el public bárki elérheti ezt a mezőt internal programon belülről (assembly) elérhető struct pont { }; public int x; public int y; pont p = new pont();
Osztályok bevezető A C#-ban az osztályok a már ismert összetett adatszerkezetek (struktúrák) egy természetes kiterjesztése. Az osztályok nemcsak adattagokat, hanem operátorokat, függvényeket is tartalmazhatnak. Az osztályok használata esetén általában az adatmezők az osztály által éppen leírni kívánt esemény állapotjelzői, míg a függvénymezők az állapotváltozásokat írják le, felhasználói felületet biztosítanak. A függvénymezőket gyakran metódusoknak is nevezi a szakirodalom. Új igények, módosítások esetén lehetőségünk van az eredeti osztály megtartása mellett, abból a tulajdonságok megőrzésével egy új osztály származtatására, amely örökli (inheritance) az ősosztály tulajdonságait (az osztályok elemeit). Egy osztálytípusú változót, az osztály megjelenési alakját gyakran objektumnak is szokás nevezni.
Osztályok Egyszerű példa class Oszt { public int a; public int b; public int osszeg() { return a + b; } } int c; Oszt v = new Oszt(); v.a = 10; v.b = 22; c=v.osszeg();
MessageBox System.Windows.Forms.MessageBox Egy üzenetablak megjelenítésére alkalmazzuk Metódusa: public static Show(string) Például: MessageBox.Show("Helló világ");
Szám-Szöveg konverzió Típus statikus Parse függvénye: public static <típus> <típus>.parse(string s); int i=int.parse( 31 ); Típus statikus TryParse függvénye: public static bool TryParse( string s, out int result ) Convert osztály: k=convert.toint32("13"); ToString() metódus: string s = k.tostring();
Szám-Szöveg konverzió int i,j,k; double d; i = int.parse("31"); d = double.parse("21,2");//rendszerfüggő //tizedespont, később tárgyaljuk! if (int.tryparse("34", out j)) else MessageBox.Show("Sikeres, j:"+j.tostring()); MessageBox.Show("Sikertelen konverzió"); k=convert.toint32("13");
A Math osztály (System.Math) Metódus Művelet Math.Sin(x) sin(x), ahol az x szög értékét radiánban kell megadni Math.Cos(x) cos(x) Math.Tan(x) tg(x) Math.Exp(x) e x Math.Log(x) ln(x) Math.Sqrt(x) x négyzetgyöke Math.Abs(x) x abszolút értéke Math.Round(x) kerekítés a matematikai szabályok szerint Math.Ceiling(x) felfelé kerekítés Math.Floor(x) lefelé kerekítés Math.Pow(x,y) hatványozás, x y Math.PI a PI konstans (3.14159265358979323846) Math.E az e konstans (2.7182818284590452354)
Fejlesztői környezet bemutató Visual Studio 2010 C# Express
Alapelemek Projekt létrehozása: File - New Project - (Visual C#) Windows Forms Application Kezelőfelület: Solution Explorer Toolbox Design/Code View Properties Program elemei
Komponensek bevezetés A Form, Button osztályok Egyszerű tulajdonságok: Text Width Height Alapvető események: Load Click