Készítette: Nagy Tibor István



Hasonló dokumentumok
Objektumorientált Programozás V.

Objektum Orientált Programozás V.

A C# programozási nyelv alapjai

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Java II. I A Java programozási nyelv alapelemei

Készítette: Nagy Tibor István

Java II. I A Java programozási nyelv alapelemei

1. Jelölje meg az összes igaz állítást a következők közül!

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

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

A C# PROGRAMOZÁSI NYELV

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

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

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

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

Kifejezések. Kozsik Tamás. December 11, 2016

A C programozási nyelv III. Pointerek és tömbök.

BME MOGI Gépészeti informatika 5.

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv I. Bevezetés

1. Egyszerű (primitív) típusok. 2. Referencia típusok

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

A C programozási nyelv I. Bevezetés

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Programozási nyelvek II.: JAVA, 4. gyakorlat

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

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

Objektumorientált Programozás I.

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Alkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés

Informatika terméktervezőknek

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

Imperatív és procedurális programozás a Javában

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Alkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto

AWK programozás, minták, vezérlési szerkezetek

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

OOP #14 (referencia-elv)

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

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

AWK programozás, minták, vezérlési szerkezetek

Pénzügyi algoritmusok

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

Szoftvertervezés és -fejlesztés I.

Programozás II. 2. Dr. Iványi Péter

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Szoftvertervezés és -fejlesztés I.

Occam 1. Készítette: Szabó Éva

5. Gyakorlat. struct diak {

AWK programozás Bevezetés

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Programozási nyelvek Java

Programozási nyelvek II.: JAVA, 4. gyakorlat

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

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

Szoftvertechnológia alapjai Java előadások

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Objektumorientált Programozás II.

1. Alapok. Programozás II

Típusok és konstansok

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozás I gyakorlat

Java programozási nyelv

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

3. Gyakorlat Ismerkedés a Java nyelvvel

5. gyakorlat. Konstansok Tömbök Stringek

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

OOP: Java 8.Gy: Abstract osztályok, interfészek

Bevezetés a C++ programozási nyelvbe

Információs Technológia

BME MOGI Gépészeti informatika 4.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozási nyelvek Java

Adatbázis és szoftverfejlesztés elmélet

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Bevezetés a programozásba. 5. Előadás: Tömbök

Programozás alapjai. 5. előadás

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

Programozás I gyakorlat

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

7. fejezet: Mutatók és tömbök

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

OOP III. A C# nyelv alapelemei II.

Programozás I. Első ZH segédlet

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

Bevezetés a C++ programozási nyelvbe

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Osztályok. 4. gyakorlat

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Átírás:

Készítette: Nagy Tibor István

A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke egy kifejezésben lekérdezhető

Típus A változó típusa meghatározza: A változóban elhelyezhető érték jellegét (logikai, egész szám, valós szám, ) Az értékhalmazt, melyből a változó felveheti értékét (pl.: [0; 255], [igaz; hamis], [A; Z]) Az ábrázolás módját: mekkora helyet foglal a változó a memóriában (8, 16, 32, 64, 128 bit) hogyan tárolódnak benne az értékek (pl.: egy valós számnál a mantissza kettes komplemens kódban, rejtett bit használatával, a karakterisztika pedig többletes formában tárolódhat)

Változókkal végezhető tevékenységek C#-ban Deklaráció A változó nevének és típusának megadása Értékadás Érték elhelyezése a változóban Érték lekérdezése A változó tartalmának kiolvasása. Az érték a kiolvasás után is megmarad a változóban

Változókkal végezhető tevékenységek C#-ban Deklaráció int szam; azonos típusú változók nevei vesszőkkel elválasztva típus változónév Értékadás szam = 25; vagy szam = 6 * 2 29; érték Érték lekérdezése 5 * 10 szam + 2 kifejezés a név helyettesítődik a változó értékével

Változókkal végezhető tevékenységek C#-ban A tevékenységek sorrendje: 1. Deklaráció 2. Értékadás 3. Érték lekérdezése A fentiek közül akármelyik tevékenységet szeretnénk is végrehajtani, előbb a sorrendben őt megelőző tevékenységet kell elvégezni! A deklaráció és a kezdeti értékadás összevonható egy utasításba

Változókkal végezhető tevékenységek C#-ban (melyik kód helyes?) int i; Console.WriteLine(i); int j = i * 5 2; int i; i = 8; int i; int i; int j = i * 2 8; Console.WriteLine(i); i = 8; int i; int i; i = 8; Console.WriteLine(i);

Típusok C#-ban byte, short, int, long, sbyte, ushort, uint, ulong Egész szám Logikai bool Alaptípusok Valós szám float, double, decimal Karakter char Sztring string

Típusok a C#-ban Név Értékhalmaz Helyfoglalás (bit) bool [true; false] char U 16 string U * 0-2 32 db karakter byte, sbyte [0; 255], [-128; 127] 8 short, ushort [-32708; 32767], [0; 65535] 16 int, uint [-2,1*10 9 ; 2,1*10 9 ], [0; 4,2*10 9 ] 32 long, ulong [-9*10 18 ; 9*10 18 ], [0; 18*10 18 ] 64 float [-3,4*10 38 ; 3,4*10 38 ] (7 tizedes) 32 double [±5*10-324 ; ±1,7*10 308 ] (15-16 tizedes) 64 decimal [-7,9*10 28 ; 7,9*10 28 ] (28-29 tizedes) 128 U = a Unicode karakterek halmaza

Értékadás Baloldalon csak változó (vagy tulajdonság, vagy indexelő) szerepelhet A baloldal és jobboldal típusa meg kell, hogy egyezzen (vagy léteznie kell a jobboldalt baloldali típusúvá alakító implicit konverziónak) Ha a két oldal típusa nem egyezik, akkor konverzióval a jobb oldalt át kell alakítani a baloldal típusára

Típuskonverzió (beépített típus) (Sztring Adott típus) Általános formátum: celtipus.parse(sztring_kifejezes); Példa: string s = "986"; int i = int.parse(s); float f = float.parse("986"); bool b = bool.parse("false");

Típuskonverzió (beépített típus) (Adott típus Sztring) Általános formátum: adott_tipusu_kifejezes.tostring() Példa: int i = 986; string s = i.tostring(); string s2 = 986.ToString(); string s3 = (986 * 2 / 124).ToString(); string s4 = i.tostring(); string s5 = i.tostring();

Típuskonverzió (beépített típus) (Típus1 Típus2) Sem az átalakítandó kifejezés, sem a céltípus nem sztring Általános formátum: (tipus2)tipus1_tipusu_kifejezes Példa: double d = 456.78; int i = (int)d; int j = (int)456.78; int k = (int)(34,56 + 78 * 2);

Literálok A programkódba közvetlenül beírt értékek A literáloknak is van típusuk A literálokkal műveletek végezhetők Példa: int k = 28; double d = 5.67; string s = "Hello!"; char c = 'L'; bool b = true; egész literál valós literál sztring literál karakter literál logikai literál

Egész literálok Formátumuk: decimális: 255; hexadecimális: 0xFF; Típusuk: int, uint, long, vagy ulong (ebben a sorrendben) attól függően, hogy melyik típusban fér el a megadott érték A literál típusa módosítható a literál mögé írt betűkkel U : uint, vagy ulong (pl.: 255U) L : long vagy ulong (pl.: -356L) UL : ulong (pl.: 222UL)

Egész literálok (milyen típusúak a következő literálok?) 345-2 000 2 300 000 000-2 300 000 000-2 000L 2 000L 2 000U 2 000UL 2 300 000 000L 2 300 000 000U 2 300 000 000UL

Valós literálok Formátumuk: hagyományos: 0.0123456 tudományos: 1.23456E-2 Típusuk: alapértelmezésben double A típusuk módosítható a literál mögé írt betűkkel: F : float (pl.: 3.45F) D : double (pl.: 3.45D) M : decimal (pl.: 3.45M)

Karakterliterálok Típusuk char Formátumuk: Karakter konkrét megadása: 'A' Megadás hexa unicode-dal: ' \x1234 ' vagy ' \u1234 ' Speciális karakter megadása: Karakter Megadása Karakter Megadása ' \' form feed \f " \" új sor \n \ \\ kocsi vissza \r null \0 horiz. tabulátor \t alert \a vertik. tabulátor \v backspace \b

Sztringliterálok Formátumuk: Normál megadás: "karakterek sorozata" "Szó szerinti" megadás: @"karakterek sorozata" Típusuk string

Sztringliterálok (mi jelenik meg a képernyőn?) Console.Write("Szia\nHello\nViszlát"); Console.Write(@"Szia\nHello\nViszlát"); Console.Write("Szia, \"Jenő\"!"); Console.Write("\\\\server\\share\\file.txt"); Console.Write(@"\\\\server\\share\\file.txt");

A tömb Több, memóriában elhelyezkedő rekesz együttese Több, azonos típusú értéket tárol Van azonosítója (vagyis neve) Van típusa (az elemek típusa) Elemei a tömbön belüli sorszámukkal (index) érhetők el Egy elem értéke értékadással módosítható Egy elem értéke egy kifejezésben lekérdezhető

Tömbbel végezhető tevékenységek Deklaráció A tömb nevének és elemei típusának megadása Tömblétrehozás A tömb méretének meghatározása Értékadás Érték elhelyezése egy tömbelemben Érték lekérdezése Egy tömbelem tartalmának kiolvasása. Az érték a kiolvasás után is megmarad a tömbelemben

Tömbbel végezhető tevékenységek C#-ban 1. Deklaráció int[] tomb; 2. Tömblétrehozás tomb = new int[10]; 3. Értékadás tomb[5] = 25; vagy tomb[5] = 6 * 2 29; 4. Érték lekérdezése 5 * 10 tomb[5] + 2 A deklaráció és a tömblétrehozás összevonható: int[] tomb = new int[10];

Tömbelem elérése (indexelés) A tömb egy adott eleméhez a tömb neve után szögletes zárójelek között megadott sorszámmal (index) férhetünk hozzá: tömbnév[index] Az index csak egész szám lehet A tömb első elemének indexe: 0 A tömb utolsó elemének indexe: elemszám 1 Kisebb, vagy nagyobb index megadása futási hibát okoz. 0. 1. 2. 3. 4. tomb 28 3 17 11 50 tomb = new int[5]; tomb[3]

Tömb hosszának (elemei számának) lekérdezése Általános formátum: tömbnév.length A tömbben lévő elemek számát adja meg 0. 1. 2. 3. 4. tomb 28 3 17 11 50 tomb = new int[5]; tomb.length

Tömb inicializálása A tömb deklarációja, létrehozása és elemeinek megadása egy utasításban is elvégezhető Formátuma: típus tömbnév = {elem1, elem2,, elemn}; Példa: double[] valosak = {2.0, -3, 5, 8.2, -1234.56}; bool[] logikai = {true, false, false, false, true, true}; int[,] egeszmatrix = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 0, 1, 2} };

Tömbbel végezhető tevékenységek C#-ban A tevékenységek sorrendje: 1. Deklaráció 2. Tömblétrehozás 3. Értékadás egy tömbelemnek, vagy egy tömbelem értékének lekérdezése A fentiek közül akármelyik tevékenységet szeretnénk is végrehajtani, előbb a sorrendben őt megelőző tevékenységet kell elvégezni! A tömbelemeknek nem kötelező értéket adni az érték lekérdezése előtt Értékadás hiányában a tömbelem a típus alapértékét veszi fel

Tömbbel végezhető tevékenységek C#-ban (melyik kód helyes?) int[] tomb; Console.WriteLine(tomb[2]); int[] tomb = new int[4]; Console.WriteLine(tomb[-1]); int[] tomb = new int[4]; Console.WriteLine(tomb[4]); int[] tomb = new int[4]; Console.WriteLine(tomb[0]); int[] tomb = new int[4]; Console.WriteLine( tomb[tomb.length]); int[] tomb = new int[4]; tomb[3] = 22; Console.WriteLine(tomb[3]);

Többdimenziós tömbök 2 dimenziós tömb sorok és oszlopok elem elérése 2 indexszel 3 dimenziós tömb sorok, oszlopok, lapok elem elérése 3 indexszel N dimenziós tömb 0., 1., N. dimenzió elem elérése N indexszel

Többdimenziós tömbök Deklaráció Általános formátum: típus[ vesszők ] tömbnév; A szögletes zárójelbe dimenziószám-1 darab vesszőt kell tenni Példák: int[,] matrix; bool[,,] haromdimenziostomb; double[,,,,] otdimenziostomb;

Többdimenziós tömbök Tömblétrehozás Általános formátum: tömbnév = new tipus [elemszám1,, elemszámn] Az egyes dimenziók elemszámait vesszőkkel elválasztva kell megadni A deklaráció és a tömblétrehozás itt is összevonható Példák matrix = new int[3, 5]; haromdimenziostomb = new bool [4, 2, 5]; otdimenziostomb = new double[3, 3, 4, 1, 7]; int t[,,] = new int[3, 3, 3];

Tömbelem elérése (indexelés) A szögletes zárójelek közé a tömbelem minden egyes dimenzióján belüli sorszámait kell vesszőkkel elválasztva megadni: tömbnév[index1, index2,, indexn] Az indexekre vonatkozó szabályok u.a., mint az egydimenziós tömbnél pontosan annyi indexet kell megadni, ahány dimenziós a tömb 0. 1. 2. 3. 4. tomb 0. 28 3 17 11 50 tomb = new int[2, 5]; 1. 22 14 38 20 1 tomb[1, 3]

Tömb hosszának (elemei számának) lekérdezése Elemek számának lekérdezése: Összes tömbben lévő elem darabszáma: tömbnév.length Egy adott dimenzió elemszáma (sorok száma, oszlopok száma, ): tömbnév.getlength(dimenziósorszám); tomb = new int[ 2, 5 ]; 0. 1. 2. 3. 4. tomb 0. 28 3 17 11 50 tomb.getlength(1); 1. 22 14 38 20 1 tomb.getlength(0);

Változók hatóköre Hatókör a programkód azon része, melyben a változóra csupán a nevével (minősítés nélkül) hivatkozhatunk Változók fajtái hatókör szerint (blokkra) lokális változó tagváltozó

Blokkra lokális változó Az őt deklaráló blokkon belül létezik A deklaráció helyétől a blokkot záró kapcsos zárójelig használható A metódus-paraméterek is ide tartoznak A metódus-paraméterek a metódus törzsén belül használhatóak Két lokális változó csak egymástól elkülönülő blokkokban deklarálható azonos néven, egymásba ágyazott blokkokban ez nem lehetséges!

Blokkra lokális változó (melyik kód helyes?) void Met() { Console.Write(i); int i = 6; } void Met() { } int i = 6; if(i % 6 == 0) { } Console.Write(i);

Blokkra lokális változó (melyik kód helyes?) void Met() { for(int i=0;i<2;++i) { int j = 20; } Console.Write(i+j); } void Met() { } int j; for(int i=0;i<2;++i) { } Console.Write(i); Console.Write(j);

Blokkra lokális változó (melyik kód helyes?) void Met() { int i = 9; if(i > 0) { int i = 12; } } void Met() { } for(int i=0;i<2;++i) { } Console.Write(i); int i = 6; Console.Write(i);

Blokkra lokális változó (melyik kód helyes?) void Met() { for(int i=0; i<2;++i) { for(int i=0;i<4;++i) { } } } void Met() { for(int i=0;i<2;++i) { Console.Write(i); } for(int i=0;i<8;++i) { Console.Write(i); } }

Érték- és referenciatípusú változók Értéktípusú változók Konkrét értéket tárolnak Az "a = b" értékadáskor a b értéke átmásolódik a-ba egész, valós, logikai, karakter, felsorolás típusok Referenciatípusú változók Csak egy hivatkozást tárolnak a konkrét értékre Az "a = b" értékadáskor a b ugyanazon memóriacímen lévő értékre fog hivatkozni, mint a. tömb, osztály, interfész, delegált, esemény típusok

Változók a memóriában (sematikus ábra) Memória cím1 a 345 b true cím3 d 34.45

Érték típusú változók a memóriában 1. (sematikus ábra) Memória cím1 a int a;

Érték típusú változók a memóriában 2. (sematikus ábra) Memória cím1 a 25 int a; a = 25;

Érték típusú változók a memóriában 3. (sematikus ábra) Memória cím1 a 25 int a; a = 25; Console.Write( a );

Érték típusú változók a memóriában 4. (sematikus ábra) Memória cím1 a 25 int a; a = 25; Console.Write( a ); int b; b

Érték típusú változók a memóriában 5. (sematikus ábra) Memória cím1 a 25 b 25 int a; a = 25; Console.Write( a ); int b; b = a;

Érték típusú változók a memóriában 6. (sematikus ábra) Memória cím1 a 10 b 25 int a; a = 25; Console.Write( a ); int b; b = a; a = 10;

Érték típusú változók a memóriában 7. (sematikus ábra) Memória cím1 a 10 b 25 int a; a = 25; Console.Write( a ); int b; b = a; a = 10; Console.Write( a );

Érték típusú változók a memóriában 8. (sematikus ábra) Memória cím1 a 10 b 25 int a; a = 25; Console.Write( a ); int b; b = a; a = 10; Console.Write( a ); Console.Write( b );

Referencia típusú változók a memóriában 1. (sematikus ábra) Memória cím1 a null int[] a;

Referencia típusú változók a memóriában 2. (sematikus ábra) Memória cím1 a null 0 int[] a; a = new int[1];

Referencia típusú változók a memóriában 3. (sematikus ábra) Memória cím1 a 0 int[] a; a = new int[1];

Referencia típusú változók a memóriában 4. (sematikus ábra) Memória cím1 a 25 int[] a; a = new int[1]; a[0] = 25;

Referencia típusú változók a memóriában 5. (sematikus ábra) Memória cím1 a 25 int[] a; a = new int[1]; a[0] = 25; Console.Write( a[0] );

Referencia típusú változók a memóriában 6. (sematikus ábra) Memória cím1 a cím3 b null 25 int[] a; a = new int[1]; a[0] = 25; Console.Write( a[0] ); int[] b;

Referencia típusú változók a memóriában 7. (sematikus ábra) Memória cím1 a cím3 b cím4 25 cím4 0 int[] a; a = new int[1]; a[0] = 25; Console.Write( a[0] ); int[] b; b = new int[1];

Referencia típusú változók a memóriában 8. (sematikus ábra) Memória cím1 a cím3 b cím4 25 cím4 25 int[] a; a = new int[1]; a[0] = 25; Console.Write( a[0] ); int[] b; b = new int[1]; b[0] = a[0]; Ez még érték típusú változók értékadása!

Referencia típusú változók a memóriában 9. (sematikus ábra) Memória cím1 a cím3 b cím4 10 cím4 25 a[0] = 10;

Referencia típusú változók a memóriában 10. (sematikus ábra) Memória cím1 a cím3 b cím4 10 cím4 25 a[0] = 10; Console.Write( a[0] );

Referencia típusú változók a memóriában 11. (sematikus ábra) Memória cím1 a cím3 b cím4 10 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] );

Referencia típusú változók a memóriában 12. (sematikus ábra) Memória cím1 a cím3 b 10 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] ); b = a; Referencia típusú változók értékadása!

Referencia típusú változók a memóriában 13. (sematikus ábra) Memória cím1 a cím3 b 10 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] ); b = a; Console.Write( a[0] );

Referencia típusú változók a memóriában 14. (sematikus ábra) Memória cím1 a cím3 b 10 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] ); b = a; Console.Write( a[0] ); Console.Write( b[0] );

Referencia típusú változók a memóriában 15. (sematikus ábra) Memória cím1 a cím3 b 20 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] ); b = a; Console.Write( a[0] ); Console.Write( b[0] ); a[0] = 20;

Referencia típusú változók a memóriában 16. (sematikus ábra) Memória cím1 a cím3 b 30 cím4 25 a[0] = 10; Console.Write( a[0] ); Console.Write( b[0] ); b = a; Console.Write( a[0] ); Console.Write( b[0] ); a[0] = 20; b[0] = 30;

Referencia típusú változók a memóriában 17. (sematikus ábra) Memória cím1 a cím3 b 10 cím4 25 Azt a memóriaterületet, amelyre egyetlen referenciaváltozó sem hivatkozik, a GC automatikusan felszabadítja

Referencia típusú változók a memóriában - Feladat Rajzolja le lépésről-lépésre, mi történik a memóriában a következő kód végrehajtásakor: int[] t = new int[2]; t[0] = 5; t[1] = 10; int[] t2 = new int[2]; int i; for(i = 0; i<2; ++i) t2[i] = t[i] * t[i]; Console.WriteLine("Számok és négyzeteik"); for(i = 0; i<2; ++i) Console.WriteLine(t[i] + " négyzete = " + t2[i]);

Referencia típusú változók a memóriában - Feladat Rajzolja le lépésről-lépésre, mi történik a memóriában a következő kód végrehajtásakor: int[] t = new int[2]; t[0] = 5; t[1] = 10; int[] t2 = new int[2]; int i; t2 = t; for(i = 0; i<2; ++i) t2[i] = t[i] * t[i]; Console.WriteLine("Számok és négyzeteik"); for(i = 0; i<2; ++i) Console.WriteLine(t[i] + " négyzete = " + t2[i]);