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

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

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

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei

Bánsághi Anna

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Magas szintű programozási nyelvek 2 Előadás jegyzet

C# osztályok. Krizsán Zoltán

Objektumorientált programozás C# nyelven

A C# PROGRAMOZÁSI NYELV

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

Bánsághi Anna

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

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

VB C++ C# JScript J# Common Language Specification. ADO.NET and XML. Base Class Library. Common Language Runtime. Operating System

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

Informatika terméktervezőknek

A C# programozási nyelv alapjai

Bevezetés a C++ programozási nyelvbe

Információs Technológia

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Programozás II. labor

Programozás 2., I. kötet Az objektumorientált paradigma alapjai

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

C#, OOP. Osztályok tervezése C#-ban

117. AA Megoldó Alfréd AA 117.

3. Gyakorlat Ismerkedés a Java nyelvvel

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

A C# nyelv alapelemei

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

Szoftvertechnológia alapjai Java előadások

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

OOP II. A C# nyelv alapelemei I.

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

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

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Készítette: Nagy Tibor István

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

OOP II. A C# nyelv alapelemei I.

F1. Hasznos táblázatok

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás I. Első ZH segédlet

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

Származtatási mechanizmus a C++ nyelvben

Szoftvertervezés és -fejlesztés I.

INFORMATIKAI ALAPISMERETEK

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

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

OOP #14 (referencia-elv)

OOP: Java 1.Gy: Java alapok

2.3. A C nyelv utasításai

OOP III. A C# nyelv alapelemei II.

OOP II. A C# nyelv alapelemei

Objektumorientált Programozás II.

Programozás II. ATM példa Dr. Iványi Péter

OOP II. A C# nyelv alapelemei I.

C# feladatok gyűjteménye

JAVA PROGRAMOZÁS 3.ELŐADÁS

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Programozás II gyakorlat. 4. Öröklődés

INFORMATIKAI ALAPISMERETEK

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Felhasználó által definiált adattípus

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

OOP és UML Áttekintés

OOP III. A C# nyelv alapelemei

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

C-Sharp nyelv alapjai 1.

Internet programozása. 3. előadás

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Algoritmusok és adatszerkezetek II.

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

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

Java Programozás 1. Gy: Java alapok. Ismétlés ++

infix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Algoritmizálás + kódolás C++ nyelven és Pascalban

Objektumorientált programozás C# nyelven

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Programozás alapjai II. (2. ea) C++

Programozás alapjai II. (2. ea) C++

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Események C#-ban Krizsán Zoltán iit

Generikus Típusok, Kollekciók

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

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

Stack Vezérlés szerkezet Adat 2.

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Készítette: Nagy Tibor István

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

II. Programozási technológiák

Elôszó a magyar kiadáshoz A Kiadó Elôszó

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

Átírás:

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

Tartalom Bevezetés Lokális változó Utasítások

Szójáték Why do all real Java programmers wear glasses? Because they don't C#.

C# formalizmusa A C, illetve az annak b vítéseként deniált C++ szintaktikájával nagyon rokon. A továbbiakban az alapelemeket a C nyelvvel összehasonlítva ismertetjük. El ször csak a C# nyelv legegyszer bb elemeivel foglalkozunk. A leírás a legtöbb esetben nem teljes, de a C nyelv ismeretében egyszer programok írásához elegend. A hiányzó információkat a kés bbiekben pótoljuk.

C# program A C# program szigorúan osztályok halmaza. Végrehajtható kód csak osztály metódusában fordulhat el. Egy alkalmazás belépési pontja egy olyan osztály, amelyben van egy public static min sítés Main nev metódus. Ha több van, akkor meg kell jelölni egy osztályt. A fenti fogalmak (osztály, metódus, min sít k) pontos jelentésére a kés bbiekben kitérünk. Minden utasítást pontos vessz zár. 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 vagy xxx.dll (kis várakozás után fut, hogy miért arról kés bb lesz szó)

Azonosító A C# Unicode karakterkészletet használja, tehát akár ékezetes azonosítókat is használhatunk. Az azonosító valamilyen elemet azonosít be (változó, konstans, metódus,...) bet vel kezd d bet vel vagy számmal folytatódó karaktersorozat. Az _ és a $ is a bet k közé sorolandó. A bet k bármelyik karakterkészletb l származhatnak. Az azonosító hossza tetsz leges. A C# is kis- és nagybet érzékeny (case sensitive). Kulcsszavak, valamint a foglalt szavak szavak nem lehetnek azonosítók.

Kulcsszavak, foglalt szavak abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false nally fixed oat for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

Kifejezés 1 vagy több operandus és 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. Kiértékelés menete nem változott.

Literál Konstans, melynek nincs neve. Logikai értékek: true vagy false. A C-vel teljesen egyez módon használandók: Egész konstans Lebeg pontos konstans Karakter konstans (az escape szekvenciák is!) Szöveg konstans (csak Unicode szöveget is tartalmazhat) A szöveg konstanst a fordító automatikusan String típusúként kezeli (magyarázat majd kés bb).

Megjegyzés Mint a C-ben: /* Szöveg */ Egysoros: // Innent l a sor végéig komment Dokumentációs /// Tetsz leges szöveg (a fordító xml-t hoz létre)

Lokális változó Alap tulajdonságok Deníciója csak metóduson belül. Nincs globális változó! Formája mint a C-ben, beleértve a kezd értékadást is. Egyszer típusú lokális változó deníciója egyben helyfoglalást is jelent.

Lokális változó C és C# lokális változó használatának különbségei Különbségek: Változó deníció egy metóduson belül bárhol lehet (nem csak blokk elején). A deníció tehát C#-ban végrehajtható utasítás! Következmény: az inicializáló kifejezés (ha van) tetsz leges kifejezés lehet, csak a kifejezés értékének kell a deníció típusával kompatibilisnek lennie.

Lokális változó Természetesen a változó csak a deníció után használható. A deníció hatásköre a deníciót tartalmazó blokk végéig tart. Kivétel: a for utasításban foglalt els kifejezésben található deníció érvényességi köre a ciklusmag!

Lokális változó Példa a lokális változó hatáskörére for (int index=1; index<8; index++) { System.out.println(index); byte i = index+65; System.out.println(i); } i és index egyaránt lokális a ciklusmagra nézve (tehát azon kívül nem használható!)

Lokális változó Példakód magyarázata Mivel a i deníciója ténylegesen a ciklusmag belsejében van, így a ciklusmag minden végrehajtásakor létrejön, a végén pedig megsz nik. Az index az t tartalmazó kifejezés kiértékelésekor létrejön, és a ciklusból való kilépéskor megsz nik.

Lokális változó Hibaforrás Inicializálatlan lokális változó értéke határozatlan! Figyelem! Inicializálatlan változó használatát általában a fordító felismeri, és hibajelzéssel "jutalmazza". a kés bbiekben "osztály változókról" és "példány változókról" (adattagokról) is lesz szó!

Utasítás statement labeled-statement declaration-statement embedded-statement block empty-statement expression-statement selection-statement iteration-statement jump-statement try-statement checked-statement unchecked-statement lock-statement using-statement yield-statement

Deklarációs utasítás A lokális változó és konstans deklaráció utasítás lett, így nem kell a blokk legelején használni. Hatáskörük az a blokk, ahol bevezették (annak a végén megsz nik). Csak blokkon belül.

Vezérl utasítások Lényegében megegyeznek a C utasításaival. Különbségek: Az if, while, do utasításokban a feltétel csak logikai kifejezés lehet. A for utasításban a második kifejezés csak logikai kifejezés lehet. A switch utasításban a szelektor sbyte, byte, short, ushort, int, uint, long, ulong, char, string típusú kifejezés lehet.

Szelekciós utasítás switch (i) { default: CaseAny(); break; case 1: CaseZeroOrOne(); goto default; case 0: CaseZero(); goto case 1; } if (x) if (y) F(); else G(); // G() meghívódik, ha x igaz és y nem, else a hozzá legközelebb állóhoz

foreach utasítás foreach ( type identier in expression ) embedded-statement type identier : iterációs változó csak olvasható (fordítási hiba, ha változtatni akarjuk, nem lehetnek ref out paraméterek) csak beágyazott utasításban használható expression: eredménye egy gy jtemény kell legyen", aminek alaptípusa type System.Collections.IEnumerable implementálja van GetEnumerator metódusa Az identier rendre felveszi a gy jtemény értékeit és lefuttatja a beágyazott kifejezést.

foreach utasítás foreach (V v in x) embedded-statement { E e = ((C)(x)).GetEnumerator(); try { V v; while (e.movenext()) { v = (V)(T)e.Current; embedded-statement } } nally {? // Dispose e } }

foreach utasítás III using System; class Test { static void Main() { double[,] values = { {1.2, 2.3, 3.4, 4.5}, {5.6, 6.7, 7.8, 8.9} }; foreach (double elementvalue in values) Console.Write("{0} ", elementvalue); Console.WriteLine(); } }

Ugró utasítások jump-statement: break-statement continue-statement goto-statement (ugrás címkére, nem javasolt) return-statement throw-statement (kivétel kezelés, majd kés bb)

Túlcsordulást szabályzó utasítások Integrális típusok m ködését befolyásolják aritmetikai operátorainak ++ - (unary) + - * / implicit numerikus konverziót van operátor megfelel je is checked bekapcsol (var rá fordító kapcsoló is /checked) unchecked kikapcsol

Túlcsordulást szabályzó utasítások példa short x = 32767; short y = 32767; short z = 0; // Max short value try { z = checked((short)(x + y)); } catch (System.OverflowException e) { System.Console.WriteLine(e.ToString()); }

Kölcsönös kizárás utasítás lock-statement: lock ( expression ) embedded-statement 1. Bemegy a kritikus szakaszba (egyedül), zárolja mások belépését. 2. Lefuttatja a beágyazott kifejezést. 3. Kilép, és felengedi a zárolást. System.Threading.Monitor.Enter(expression); try { embedded-statement } nally { System.Threading.Monitor.Exit(expression); }

Használó utasítás 1. Megkaparint 2. Használ 3. Felszabadít using (ResourceType resource = expression) embedded-statement { ResourceType resource = expression; } try { embedded-statement } nally {? // Dispose of resource }

Összefoglalás Jelent s változások a C szintaktikához képest (OOP kívül is). Kényelmesebb használat. Több szabály. Szigorúbb, mint a C. Számos egyszer sített utasítás.