C# Alapok Krizsán Zoltán.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
Tömbök C#-ban.
ADATBÁZIS KEZELÉS – Adattípusok
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
JavaScript.
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Mutatók, tömbök, függvények
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
C# tagfüggvények.
C# osztályok Krizsán Zoltán 1.0.
C# tagfüggvények.
Web-grafika (VRML) 10. gyakorlat Kereszty Gábor. Script típusok Elemi típusok: szám: egész vagy lebegőpontos – int / float – 1 / 1.1 string: ‘Hello World!’
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
A Java jellemzői Hordozható, platformfüggetlen forráskód és bájtkód szinten forráskód és bájtkód szinten Tisztán objektumorientált csak osztályok, illetve.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Az adatokról C# -ban.
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Programozási nyelvek Páll Boglárka.
Készítette: Csíki Gyula
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Objektum orientált programozás
Objektum orientált programozás
A Visual Basic nyelvi elemei
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
Típuskonverzió a C++ nyelvben
Excel programozás (makró)
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
Krizsán Zoltán. Szabályok I Kis és NAGY betű érzékeny Szigorúan osztályok halmaza, azaz a kódok csak osztályon belül lehetnek. Az osztályok névterekbe.
A C++ programozási nyelv
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Változók.
Előadás másolata:

C# Alapok Krizsán Zoltán

Szabályok I Kis és NAGY betű érzékeny Szigorúan osztályok halmaza, azaz a kódok csak osztályon belül lehetnek. Az osztályok névterekbe vannak szervezve. Using a file elején. A rendszer minden esetben a Main fv.-t keresi, ha több van, akkor meg kell jelölni egy osztályt.

Szabályok II Minden utasítást pontos vessző zár. Utasítás zárójel a: {,}. A fájl neve és az osztály neve nem kell, hogy megegyezzen, sőt egy osztály több fájlban is lehet. A kiterjesztés megállapodás szerint „.cs”. Fordítás a csc.exe xxx.cs nyelvi fordítóval. Eredménye a xxx.exe (kis várakozás után fut, hogy miért arról később lesz szó)

Kifejezések 1 vagy több operandus + 0 vagy több operátor Literál: olyan konstans, melynek nincs neve. Operandus lehet bármilyen „értéket adó valami”: lokális változó, adattag, literál, konstans, fv. hívás

Érték típusok Közel 300 beépített érték típus Stack-en tárolódik. Automatikusan létrejön. Értékadás adatmásolás. Nem kell new operátor Létrehozáskor null-ra vagy 0-ra áll be. 2.0-tól Nullable kulcsszó a nem beállított értékre.

Érték típus egyszerű vagy primitív stack-en tárolódik alapértelmezett a következő esetekben: lokális változó Fv. paraméter Fv. visszatérési érték

Egész típusok Name CTS Type Description Range (min:max) sbyte System.SByte 8-bit signed integer -128:127 (-27:27-1) short System.Int16 16-bit signed integer -32,768:32,767 (-215:215-1) int System.Int32 32-bit signed integer -2,147,483,648:2,147,483,647 (-231:231-1) longt System.Int64 64-bit signed integer -9,223,372,036,854,775,808: 9,223,372,036,854,775,807 (-263:263-1) byte System.Byte 8-bit unsigned integer 0:255 (0:28-1) ushort System.UInt16 16-bit unsigned integer 0:65,535 (0:216-1) uint System.UInt32 32-bit unsigned integer 0:4,294,967,295 (0:232-1) ulong System.UInt64 64-bit unsigned integer 0:18,446,744,073,709,551,615 (0:264-1)

Nem egész típusú szám Name CTS Type Description Significant Figures Range (approximate) float System.Single 32-bit single-precision floating point 7 ±1.5 × 10−45 to ±3.4 × 1038 double System.Double 64-bit double-precision floating point 15/16 ±5.0 × 10 −324 to ±1.7 × 10308 Name CTS Type Description Significant Figures Range (approximate) decimal System.Decimal 128-bit high precision decimal notation 28 ±1.0 × 10−28 to ±7.9 × 1028

Felhasználói érték típusok felsorolt - enum Struktúra (van némi hasonlóság az osztályhoz, de lényegesen más) C# struct

Referencia típusok Közel 2500 beépített referencia típus. System.Object, System.String, System.Text.StringBuilder, System.Array, …. System.Exception Referencia „pointer” a stack-en, tényleges adat a heap-en Az adat rész akkor jön létre, ha a programozó létrehozza. Felszabadítás a szemétgyűjtő, „garbage collection” feladata. Értékadás referencia másolás (ugyanarra mutat)

String, StringBuilder string, String: StringBuilder: UTF-16 karakterekben tárol nem módosítható, változás eredménye új példány. Concat, Join, System.String.Format("{0} times {1} = {2}", i, j, (i * j)); +, =, !=, == szövegre értelmezetten. StringBuilder: Módosítható szöveg Konstruktornak megadható a kívánt méret, de igény szerint növekszik

String II Részszting: s3.Substring(7, 2) csere: s3.Replace(”mit”, ”mire”) Karakter keresés: s3.IndexOf("C"); Betűk elérése: s3[5] // 6.betű

Érték kontra referencia Minden típus közvetlenül a System.ValueType vagy System.Enum (System.ValueType az őse) osztályból származik. Lepecsételt (sealed): nem lehetnek más elemeknek ősei Referencia: a szemétgyűjtő által vezérelt heap-ban tárolódik (a cím a stack-ben) Erős típus referencia: frissül, ha a szemétgyűjtő mozgatja az elemet

Escape szekvencia A szövegekben a ‘\’ jel után álló karakterek máshogy viselkednek. ‘ \' ” \" \ \\ Csengő \a Törlés \b Form feed \f Új sor \n Kocsi vissza \r Tab \t @ antiescape

Változó deklaráció Típus azonosító; Utasítás lett, azaz bárhova elhelyezhető, ahol utasítás állhat. Váltózó lehet: Adattag Lokális változó Lokális változó élettartama a hatáskör vége „}” Lokális változónak explicit be kell állítani a kezdőértékét mielőtt használnánk! (fordítási hiba, ha nincs)

Változó II Lokális változót lehet egy beágyazott blokkban is definiálni, de: public static int Main() { int j = 20; for (int i = 0; i < 10; i++) { int j = 30; // Hiba, ilyen lokális változó már van! Console.WriteLine(j + i); } return 0;

Konstans Inicializálni kell definíció során. Később nem lehet az értékét változtatni. Az értéke fordítási időben kiértékelhető kifejezés kell legyen (operandus: literál, vagy másik konstans) Automatikusan statikus lesz, és nem is lehet ezt már megadni.

Tömbök I Alaptípus[] azonosító; // deklaráció Aztán később: azonosító = new Alaptípus[méret]; //létrehozás Első elem indexe 0, utolsó n-1 Pl.: int[] t = new int[100]; ekkor első elem:t[0], utolsó elem: t[99] Ha 1 lépésben szeretnénk deklarálni és lefoglalni, sőt feltölteni elemekkel, akkor: int[] t = new int[2]{12,23}; vagy int[] i = {1,2};

Tömbök II System.Array osztály példánya Több dimenziós tömb: int[,] squareArray = new int[2,3]; int[,] squareArray = {{1, 2, 3}, {4, 5, 6}}; Jagged (nem egyenméretű) int[][] jag = new int[2][]; jag[0] = new int [4]; jag[1] = new int [6];

Tömbök III Length : csak olvasható tulajdonság a tömb mérete Rank: dimenzió Több interfészt is implementál, ezekről később.

Helló világ using System; namespace HelloWorld { class Hello { static void Main() { System.Console.WriteLine("Hello World!"); }

Main fv. Main visszatérési értéke vagy void vagy int. class TestClass { static void Main(string[] args){ System.Console.WriteLine(args.Length); } } Main visszatérési értéke vagy void vagy int. Paramétert vagy definiálunk, vagy nem. Ha igen akkor a parancssori argumentumok vannak benne.

Utasítások Utasítás lehet: Szervezhetjük ciklusba Lokális változó definíció Konstans definíció Fv. Hívás Objektum létrehozás Változó vagy tulajdonság vagy adattag értékadása. Szervezhetjük ciklusba Definiálhatunk elágazást

Ciklusok do { … } while (hátul tesztel, fut amíg igaz) for (int i = 1; i <= 5; i++) inicializál feltétel, fut amíg igaz léptető rész foreach tömbök kollekciók végigjárása, minden elem értékét felveszi a ciklusváltozó int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 }; foreach (int i in fibarray) { System.Console.WriteLine(i); } a példában szereplő „i” konstans! In foreach „()”-ben használjuk foglalt szó while (elöl tesztel)

Feltételes utasítások I If – feltétele csak logikai kifejezés lehet, else ág elhagyható Nincs then kulcsszó if (a == 5)     System.Console.WriteLine("A is 5"); else     System.Console.WriteLine("A is not 5"); Használható helyette a ? : operátor: int i = (myBoolean) ? 1 : 0 ;

Feltételes utasítás II Pl.: int caseSwitch = 1; switch (caseSwitch) { case 1: Console.WriteLine("Case 1"); break; case 2: Console.WriteLine("Case 2"); break; default: Console.WriteLine("Default");break; } Nem lehet 2 ága melynek ugyanaz az értéke Kell a break, mert a feltétel csak kijelőli a beugrás helyét, és végigfutna!

I / O I. Kiírás: Console.Write() – Kiírja a kimenetre Console.WriteLine() – kiír a kimenetre, de egy újsort is ír a végére Beolvasás: Console.ReadLine() – Beolvas egy sort Használat: Console.WriteLine(”mit írjon ki {0} ” , parameter1, parameter2, … ); A szöveget írja ki . A paramétereket a {paraméter sorszáma} –val illeszti be (0 kezdőindexű) paramétereket használja fel, bármennyi lehet. int i = 10; int j = 20; Console.WriteLine("{0} plus {1} equals {2}", i, j, i + j);

Formátum sztringek String Description C Local currency format. D Decimal format. Converts an integer to base 10, and pads with leading zeros if a precision specifier is given. E Scientific (exponential) format. The precision specifier sets the number of decimal places (6 by default). The case of the format string (e or E) determines the case of the exponential symbol. F Fixed-point format; the precision specifier controls the number of decimal places. Zero is acceptable. G General format. Uses E or F formatting, depending on which is more compact. N Number format. Formats the number with commas as thousands separators, for example 32,767.44. P Percent format. X Hexadecimal format. The precision specifier can be used to pad with leading zeros.

I / O II. A következő példa a Windows beállításokat alapul véve írja ki pénzügyi formátumban: decimal i = 940.23m; decimal j = 73.7m; Console.WriteLine(" {0,9:C2}\n+{1,9:C2}\n ---------\n {2,9:C2}", i, j, i + j); Ha a szélességet is megadjuk, akkor: {index,szélesség} formában kell.

Névtér (namespace) A saját elemeket névtérbe szervezhetjük, logikai kapcsolat alapján. Elszigeteli az elemeket. Így egy forrásfájlban akár több azonos nevű osztály lehet Pl.: Math névtér Szintaktika: namespace név{ elemek definíciói} A névterek egymásba ágyazhatóak. Ha 1 névteret gyakran használunk, és nem szeretnénk minden alkalommal kiírni, használjuk a using utasítást a fájl elején!

Megjegyzések A fordító meg se kapja ezeket a sorokat /* Több soros */ i = 23; // egy soros a sor végéig tart De bizonyos megjegyzésekből dokumentáció generáltatható

Dokumentációs kommentek I Tag Description <c> Marks up text within a line as code, for example: <c>int i = 10;</c> <code> Marks multiple lines as code. <example> Marks up a code example. <exception> Documents an exception class. (Syntax is verified by the compiler.) <include> Includes comments from another documentation file. (Syntax is verified by the compiler.) <list> Inserts a list into the documentation. <param> Marks up a method parameter. (Syntax is verified by the compiler.) <paramref> Indicates that a word is a method parameter. (Syntax is verified by the compiler.) <permission> Documents access to a member. (Syntax is verified by the compiler.) <remarks> Adds a description for a member.

Dokumentációs kommentek II Tag Description <returns> Documents the return value for a method. <see> Provides a cross-reference to another parameter. (Syntax is verified by the compiler.) <seealso> Provides a “see also” section in a description. (Syntax is verified by the compiler.) <summary> Provides a short summary of a type or member. <value> Describes a property.

Dokumentáció készítés Példa: namespace Sajat.Basics { ///<summary> /// Sajat.Basics.Csak class. /// Provides a method to add two integers. ///</summary> public class Math { /// The Add method allows us to add two integers. ///</summary> ///<returns>Result of the addition (int)</returns> ///<param name="x">First number to add</param> ///<param name="y">Second number to add</param> public int Add(int x, int y) { return x + y; } } } Készítés a ”csc /doc:doksi.xml Csak.cs” paranccsal.