Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
C# Alapok Krizsán Zoltán
2
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.
3
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ó)
4
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
5
É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.
6
É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
7
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)
8
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
9
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
10
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)
11
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
12
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ű
13
É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
14
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
15
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)
16
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;
17
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.
18
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};
19
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];
20
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.
21
Helló világ using System; namespace HelloWorld { class Hello {
static void Main() { System.Console.WriteLine("Hello World!"); }
22
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.
23
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
24
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)
25
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 ;
26
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!
27
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);
28
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, P Percent format. X Hexadecimal format. The precision specifier can be used to pad with leading zeros.
29
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 = m; 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.
30
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!
31
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ó
32
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.
33
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.
34
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.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.