Dinamikus tömbök.

Slides:



Advertisements
Hasonló előadás
Információs függvények
Advertisements

Koordináták, függvények
C++ programozási nyelv Gyakorlat hét
Tömbök C#-ban.
FRAME-k (keretek). FRAME-k A frame-ek (keretek) segítségével a képernyőt felosztva egyszerre jeleníthetünk meg több webes dokumentumot a képernyőn. Fejlec.html.
Előadássorozat a Független Pedagógiai Intézetben fupi.hu Az internet: miért, hogyan? 6 / 10. Csada Péter Csada Bt. cspc.hu.
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
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.
Sztringek.
Sztringek  Az fscanf() és a fprintf() függvényeknél a %s-es formátumtagot kell használni.  A %s formátumtag az első white space karakterig folytatja,
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.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 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.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
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
Függvények, mutatók Csernoch Mária.
C A C nyelv utasításai.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák tömbökre
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
Edényrendezés - RADIX „vissza” - bináris számokra
C++ alapok, harmadik óra
Programozás I Függvények általános jellemzői
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.
Microsoft Excel Függvények VII..
Függvények III Logikai függvények. Hamis A HAMIS logikai értéket adja eredményül. HAMIS( ) A függvény alkalmazása helyett egyszerűen beírhatjuk a HAMIS.
Programozás C# - ban Feladatsorok.
Programozás Az adatokról C# -ban.
C nyelv utasításai.
Összetett adattípusok
Félévi típus feladatok
Szintaktikai, szemantikai szabályok
Összetett adattípusok
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.
Rekordok Dinamikus tárkezelés és pointerek Dinamikusan láncolt listák
Visual Basic 2008 Express Edition
Java programozási nyelv Metódusok
Csempe Programozás érettségi mintafeladat
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Objektum orientált programozás 3. Függvények Nagy Szilvia.
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ú,
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
© Tóth Ákos, Óbudai Egyetem, 2010
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Programtervezés, programozás I. 2.5 tömbök,stringek
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
a programegységek között
Programozási nyelvek típusossága.
Nevezetes algoritmusok
Dinamikus adatszerkezetek
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Előadás másolata:

Dinamikus tömbök

Dinamikus tömbök Létrehozáskor megadott méretük a futás során változtatható Használatának lépései: Mutató létrehozása Memória allokálása (lefoglalás) – bárhol szerepelhet a programban; lehetőség van tömb átméretezésére Feldolgozás (esetleg átméretezés) Lefoglalt terület felszabadítása – a lefoglalt terület nem szabadul fel automatikusan

Dinamikus tömbkezelés Memória dinamikus lefoglalása: malloc() és calloc() malloc() – egy paramétert vár, mely bájtokban adja meg, hogy mekkora legyen a lefoglalt memória terület. calloc() – első paraméter, hogy hány elem jöjjön létre, második paraméter pedig a tömb egyetlen elemének méretét várja Méretek megadásánál érdemes megadni a sizeof() operátort

A visszakapott mutatót típuskényszeríteni kell a megfelelő típusra. Visszatérési értékük egy void * típusú mutató, ami a lefoglalt memóriaterületre mutat. A visszakapott mutatót típuskényszeríteni kell a megfelelő típusra. Példa: 10 elemű egészekből álló dinamikusan foglalt tömb: int *t, *t2; … t= (int*)malloc(sizeof(int)*10); t2=(int*)calloc(10, sizeof(int));

A realloc függvény Korábban lefoglalt dinamikus tömb átméretezésére szolgál Paraméterei: első, hogy melyik az a tömb, amelyiket át szeretnénk méretezni, második pedig a tömb új mérete egyetlen egészként Visszatérési érték: void * mutató, tehát ezt is típuskényszeríteni kell t2=(int*)realloc(t2, sizeof(int)*25);

A free függvény A dinamikusan foglalt memóriaterületek falszabadítására szolgál Egyetlen paramétereként a mutatót kell megadni, amely által mutatott területet fel szeretnénk szabadítani: free(t); free(t2);

1. Feladat Készíts programot, melyben a felhasználótól bekérsz egy számot, majd létrehozol a számnak megfelelő méretű dinamikus tömböt. A tömböt töltsd fel véletlen egészekkel 0 és 1000 között, majd írd a képernyőre a számok átlagát.

2. Feladat Írj olyan programot, mely a felhasználótól 0 végjelig számokat olvas (előre nem tudjuk mennyit). A számok közül a párosak kerüljenek a paros tömbbe, a páratlanok a paratlan tömbbe. A program végül írja ki a beolvasott páros és páratlan számokat külön sorba.

3. Feladat Készíts olyan programot, melyben létrehozol egy a felhasználó által megadott méretű dinamikus tömböt, ebbe páros számok kerüljenek véletlenszerűen generálva, és egy másikat ugyanígy páratlanokkal. A programból hívj meg egy általad írt függvényt, ami paraméterül kapja a két tömböt, majd felcseréli őket.

Parancssori argumentum

Lehetővé teszik, hogy egy programnak indításkor a terminálban paramétereket adjunk, s az automatikusan azokkal dolgozzon Egyik előnye, hogy csökkenti a program interaktivitását, ami igen pozitív tulajdonság, ha a program futását automatizálni szeretnénk A C nyelv a parancssori argumentumokat a main() függvény formális paramétereként megadott dinamikus tömbben tárolja el. int main(int argc, char* argv[]){ }

argc – egy egész típusú szám, mely a parancssori argumentumok számát tárolja. A 0. parancssori argumentum mindig a futtatandó program neve. argv – egy sztringet tároló tömb. A char* argv[] egy sztringet tároló tömböt jelöl. A mutató tömb minden eleme egy-egy karaktertömbre mutat és minden ilyen karaktertömb egy-egy parancssori argumentumot tartalmaz

Az argumentumok feldolgozása Ne felejtsük el ellenőrizni, hogy megkaptuk-e a szükséges argumentumokat. Pl.: téglalap két oldalát várjuk: if (argc<3){ printf(„Túl kevés argumentum…”); return -1; }

A parancssori argumentumok értékének megadása: ./program 12.4 3.3 Ha stringen kívül más típussal is dolgozni akarunk, akkor használhatjuk a ctype.h fejlécállomány atoi() és atof() függvényeit. a=atof(argv[1]); b=atof(argv[2]); A parancssori argumentumok értékének megadása: ./program 12.4 3.3

1. Feladatok Írj programot, mely parancssori argumentumként egy téglalap két oldalát várja, majd a képernyőre írja a téglalap területét és kerületét. A program ellenőrizze, hogy megkaptuk-e a szükséges argumentumokat.

2. Feladat Írj programot, mely parancssori argumentumként egy egész számot vár. Ha kap, akkor 0 és a kapott szám közt egyébként 0 és 1000 közt a képernyőre ír egy véletlen egész számot.

3. Feladat Készíts programot, mely parancssori argumentumként egy még nem létező fájl nevét várja, majd létrehozza a fájlt, úgy, hogy az a nevedet tartalmazza.

4. Feladat Módosítsd néhány feladatot úgy, hogy ha lehet, parancssori argumentumként kérje be azokat az információkat, amit eddig szövegesen kértél be.

Struktúrák

Struktúrák Inhomogén (különböző típusú elemek), asszociatív (minden elemét lehet névvel hivatkozni és közvetlenül elérni) adatszerkezet. Használatát az teszi indokolttá, hogy vannak olyan speciális típusú adatok, melyek több különböző összetevőből állnak össze. Ezeket tárolhatnánk különböző változókban, ekkor azonban az információk közötti logikai összefüggés semmilyen fizikai módon nem lenne megvalósítva. Tipikus struktúrába szervezendő adat például egy személy lakcíme, ahol az irányítószám és a házszám szám, míg a helységnév és az utcanév szöveges típusú

C struktúrák Legegyszerűbb módszer a struct kulcsszó önálló megadása, majd a név hozzárendelése: struct ember{ int ID; … };

Ezzel deklaráljuk azt, hogy Dodi változó ember típusú A struktúra létrehozásával lehetőségünk van azonnal változók létrehozására is az újonnan definiált típussal: struct ember{ int ID; … }Dodi; Ezzel deklaráljuk azt, hogy Dodi változó ember típusú

A továbbiakban a változók deklarálása a következőképp alakul: struct ember Peti, Panni A C lehetőséget biztosít névtelen struktúrák létrehozására is. struct { int ID; … }Jani; A típust magát nem őriztük meg, tehát nem tudunk a későbbiekben hivatkozni rá

typedef Egy típusra valamilyen más névvel hivatkozhatunk A main függvény előtt használatos: typedef típusnév újnév; Az új nevet ugyanúgy használhatjuk, mint a típusnevet. typedef struct ember_temp{ int ID; … } ember;

Deklaráláskor már nem kell kirakni a struct szót typedef struct{ int ID; … } ember; Nagyon könnyen összetéveszthető a fentebb már említett deklarálással, az ember ugyanis itt nem változó, hanem típus.

Struktúrák használata Struktúrát definiálni bárhol lehet az előfordítónak szóló utasítások után A struktúra típusú változók tagjaira ponttal történő minősítés segítségével hivatkozhatunk. Értékadás például: Dodi.ID = 5 Létrehozhatunk struktúra tömböket is. Ezek több olyan elemet fognak össze, melyek ugyanolyan jellemzőkkel bírnak. Jó példa erre egy osztály tárolása

Elemre való hivatkozás: osztaly[17].ID typedef struct{ int ID; int kor; double magassag } ember; int main(){ ember osztaly[30]; } Elemre való hivatkozás: osztaly[17].ID

1. Feladat Hozz létre egy struktúrát komplex számok tárolására, majd írd meg a komplex összeadás függvényét.

2. Feladat Készíts programot, melyben van egy kétdimenziós pontok tárolására alkalmas struktúradefinició. A program kérje be két pont adatait, majd írja a képernyőre a két pont távolságát, valamint a felezőpont koordinátáit.

3. Feladat Készíts programot, melyben szerepel egy 12 tagú struktúratömb. A tömb elemei legyenek hónapok, melyek a következő tulajdonsággal rendelkeznek: napok száma, profit. Töltsd fel a tömböt adatokkal (a profit legyen véletlen 200000 és 500000 között). Majd írd a képernyőre, hogy az egyes negyedévekben mennyi volt a napi átlagos profit.

4. Feladat Egy fájlban lemezek adatai vannak elmentve azonosító kiadás_éve dalok_száma formában. Készíts programot, melyben egy olyan struktúrát használsz, ami alkalmas a lemezek adatainak tárolására. A program kérjen be egy évszámot, majd írja ki az összes olyan lemez azonosítóját, mely az adott évben készült.

5. Feladat Bővítsd a 2. feladatot úgy, hogy a program alkalmas legyen síkbeli transzformációk elvégzésére, azaz kérjen be egy pontot, majd a felhasználó utasításainak megfelelően tudja a pontot eltolni, forgatni egy másik pont körül, tükrözni egy pontra, illetve tükrözni valamelyik tengelyre. A programban minden transzformáció külön függvény legyen, s a függvények visszatérési értéke legyen az eredményül kapott pont.