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.

Slides:



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

Tömbök C#-ban.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Öröklődés 2..
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.
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
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
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
Java Típuskonverziók.
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# Alapok Krizsán Zoltán.
C# tagfüggvények.
C# tagfüggvények.
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 TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
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.
C nyelv utasításai.
Összetett adattípusok
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:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
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 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ú,
Java programozási nyelv Metódusok
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
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.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Az 5,6,7 laborok VBA anyagának összefoglalása
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
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.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
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][,
C# kódolási konvenciók
Programozási nyelvek típusossága.
Excel programozás (makró)
Programozás C# -ban Elágazások.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
A CLIPS keretrendszer
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

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, és egy fájlban több osztály. 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 visszatérési értéke

Érték típusok I Közel 300 beépített érték típus. Minden beépített érték típus struktúra. Ez struktúra. Automatikusan létrejön. Értékadás adatmásolás. Nem kell new operátor (de lehet) Létrehozáskor 0-ra áll be

Null-ozható értéktípus Nullable Érték típusú változóknak nem lehet étéke null, csak ha T? a definíció. Ahol T bátmilyen érték típus lehet. Pl.: int? numericValue = null; Értéke a normál típus + null lehet 2.0-tól Nullable kulcsszó a nem beállított értékre. System.Nullable egy példánya a T? Bármilyen értéktípus módosítható a ? Jellel ?? Operátor az ellenőrzésre, beállításra int? myData = dr.GetIntFromDatabase() ?? 100;

Érték típus II 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 Ha new-val hozzuk létre, akkor van alapértelmezett érték!

Érték típus III Minden érték típushoz képződik egy osztály a dobozolás alkalmával Ugyanazokkal az adatokkal, ugyanazokkal a viselkedésekkel. Szükség esetén képződik objektum ebből az osztályból azonos állapottal

Túlcsordulás Ha a konverzió adatvesztéssel jár -> nincs hibajelzés (bekapcsolható) Checked, unchecked scope try { checked { byte sum = (byte)Add(b1, b2); Console.WriteLine("sum = {0}", sum); } catch (OverflowException ex) { Console.WriteLine(ex.Message); }

Egész típusok NameCTS TypeDescriptionRange (min:max) sbyteSystem.SByte8-bit signed integer-128:127 (-2 7 :2 7 -1) shortSystem.Int1616-bit signed integer-32,768:32,767 (-2 15 : ) intSystem.Int3232-bit signed integer-2,147,483,648:2,147,483,647 (-2 31 : ) longtSystem.Int6464-bit signed integer-9,223,372,036,854,775,808: 9,223,372,036,854,775,807 (-2 63 : ) byteSystem.Byte8-bit unsigned integer0:255 (0:2 8 -1) ushortSystem.UInt1616-bit unsigned integer0:65,535 (0: ) uintSystem.UInt3232-bit unsigned integer0:4,294,967,295 (0: ) ulongSystem.UInt6464-bit unsigned integer0:18,446,744,073,709,551,615 (0: )

Nem egész típusú szám NameCTS TypeDescriptionSignificant Figures Range (approximate) floatSystem.Single32-bit single- precision floating point 7±1.5 × 10 −45 to ±3.4 × doubleSystem.Double64-bit double- precision floating point 15/16±5.0 × 10 −324 to ±1.7 × NameCTS TypeDescriptionSignificant Figures Range (approximate) decimalSystem.Decimal128-bit high precision decimal notation 28±1.0 × 10 −28 to ±7.9 × 10 28

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

Felsorolt típus Segítségével neveket rendelhetünk a benne foglalt érték típusoknak. Befoglalt elemek típusa előjeles vagy nem előjeles egész lehet, vagy literál. Használjuk, mert névvel ellátott adat és nincs cast. Közvetlen ős: System.Enum Nem lehetnek metódus tagjai. Nem implementálhat interfészeket. Nem lehet tulajdonság, vagy esemény tagja. Nem lehet genetikus (hiszen már van típusa a beágyazottaknak)

Felsorolt – bit field [Flags] public enum Seasons { None = 0, Summer = 1, Autumn = 2, Winter = 4, Spring = 8, All = Summer | Autumn | Winter | Spring }

Felsorolt Alapértelmezetten int az alaptípusa, de meg lehet változtatni. enum byteType : byte { elso= 1, masodik= 3, } Hivatkozás: byteType.elso

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: – 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. (tartalmat, nem referenciát hasonlít – string newPath Files\Microsoft Visual Studio 9.0"; StringBuilder: – Módosítható szöveg – Konstruktornak megadható a kívánt méret, de igény szerint növekszik

String II Használjuk a ””’ értéket vagy a String.Empty default értéknek. Statikus IsNullOrEmpty(String) Format fv. Paraméterezése writeline-al azonos. 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ű

String III string[] values = { "1,304.16", "$1,456.78", "1,094", "152", "123,45 €", "1 304,16", "Ae9f" }; try { culture = CultureInfo.CreateSpecificCulture("en-US"); number = Double.Parse(value, culture); Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number); } catch (FormatException) { culture = CultureInfo.CreateSpecificCulture("fr-FR"); try { number = Double.Parse(value, culture); Console.WriteLine("{0}: {1} --> {2}", culture.Name, value, number); }

Érték kontra referencia Érték: 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 – 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) Ha érték típust new-van hoztuk létre, akkor már van

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; }

Típus Információ a: Szükséges memória használathoz Lehetséges érték, túlcsordulás, maximum- minimum érték Elemeiről Ős típusról A tárolás helyéről (stack | heap) Milyen operációk engedélyezettek. Metadatákban tárolja a szerelvényben, amit a CLR használ a helyes használathoz (pl. kompatibilitás)

Implicit típus I Var kulcsszó a típus helyet A fordító dönt. Egyszer hozzárendeli a típust, ami később nem változhat! Az inicializáló kifejezés típusa dönt ( = kif ) A típus lehet: Beépített, Anonymous, Felhasználói, FCL

Implicit típus II Hol használható: Lokális változó (fv. Törzsben), For ciklus inicializáló kifejezésben for(var x = 1; x < 10; x++) Foreach ciklus inicializáló kifejezésben foreach(var item in list) Using utasításban using (var file = new StreamReader("C:\\myfile.txt")) {...} Megj: adattag nem lehet, és inicializálni kell azonnal

Implicit típus III var i = 5; // s is compiled as a string var s = "Hello"; // a is compiled as int[] var a = new[] { 0, 1, 2 }; // anon is compiled as an anonymous type var anon = new { Name = "Terry", Age = 34 }; // list is compiled as List var list = new List ();

Anonymous típus Név nélküli = generál neki a fordító csak mi nem látjuk. var v = new { Amount = 108, Message = "Hello" }; New operátor kell, és {} Egy osztály készül, aminek 1 vagy több csak olvasható tulajdonsága van. Nem lehet más típusú eleme. Csak object-re lehet konvertálni. Csak implicit típusú változóknál használhatjuk (var). Referencia típus, közvetlen őse az object. Két anonymous típus akkor egyenlő ha azonos sorrendben, azonos típusú tulajdonságokat tartalmaz (pedig a név különböző)

Típus definíció 1. [Attríbútumok] - metainformáció 2. Elérhetőség – public | assembly 3. Ős típus 4. Implementált interfészek 5. Elemek definíciói

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 egy példánya Van default értéke az elemeinek (0, null). Foreach használható. 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. NE HASZNÁLJUK ÍGY: public static readonly char[] InvalidPathChars = {'\"', ' ','|'}'

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

Main fv. 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: 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!

Switch II for (int i = 1; i < 5; i++) { switch (i) { case 1: Console.WriteLine("In case 1"); goto case 3; case 2: Console.WriteLine("In case 2"); goto case 1; case 3: Console.WriteLine("In case 3"); goto default; default: Console.WriteLine("In default"); break; }

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 StringDescription CLocal currency format. DDecimal format. Converts an integer to base 10, and pads with leading zeros if a precision specifier is given. EScientific (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. FFixed-point format; the precision specifier controls the number of decimal places. Zero is acceptable. GGeneral format. Uses E or F formatting, depending on which is more compact. NNumber format. Formats the number with commas as thousands separators, for example 32, PPercent format. XHexadecimal 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 = 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

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 TagDescription Marks up text within a line as code, for example: int i = 1 0; Marks multiple lines as code. Marks up a code example. Documents an exception class. (Syntax is verified by the compiler.) Includes comments from another documentation file. (Syntax is verified by the compiler.) Inserts a list into the documentation. Marks up a method parameter. (Syntax is verified by the compiler.) Indicates that a word is a method parameter. (Syntax is verified by the compiler.) Documents access to a member. (Syntax is verified by the compiler.) Adds a description for a member

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

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