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.

Slides:



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

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Összetett adattípusok 8/b tétel
Tömbök C#-ban.
Típusok, változók, konstansok
Kifejezések, operandusok, operátorok
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.
Programozási Nyelvek (C++) Gyakorlat Gyak 03.
Dinamikus tömbök.
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.
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.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalá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
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák tömbökre
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
Borland C/C++ mintapéldák mutatókra
Programozás I. Horváth Ernő.
Programozás I. Horváth Ernő.
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.
Utasítások, elágazás- és ciklusszervezés C nyelvi utasítások
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Rendszer és Szoftvertechnológia Tanszék
Programozás I. Adatállományok dr Póder Margit f. docens Rendszer és Szoftvertechnológia Tanszék.
További vektor, mátrix algoritmusok
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.
Tömbök Csernoch Mária.
Megszámlálás, kiválasztás alapalgoritmusok
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
Operátorok Értékadások
Készítette: Csíki Gyula
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.
Visual Basic 2008 Express Edition
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.
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.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
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.
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
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.
Informatikai gyakorlatok 11. évfolyam
a programegységek között
Programozási alapismeretek
A C++ programozási nyelv
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Változók.
A struct, az union és az enum típus
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Könyvtári függvények I. Input / output kezelés függvényei
Típusok, változók, konstansok
Előadás másolata:

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 Egyméretű tömbök és a mutatók Pointer-aritmetikai műveletek lPéldaprogram vektorhasználatra Szövegkezelés karaktervektorokkal Példaprogram karaktervektorokkal

lVektorok definiálása Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./1. Az egydimenziós tömbök, vagy másnéven vektorok a memóriában egymást követően elhelyezkedő azonos típusú elemekből állnak. A definiálás formája: [ ] ; Az fordításkor kiértékelt egész konstans kifejezés. Egy adott tömbelemre a sorszámával (indexével) lehet hivatkozni, amely a 0.. ( -1 ) tartományból választható. A tartományon kívüli indexmegadások nem okoznak hibajelzést és nehezen kideríthető hibákat eredményeznek. Emiatt célszerű az elemszámot (a vektor méretét) előre definiált konstanssal megadni.

lVektorok definiálása.. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./2. Pl.:... #define ESZ 7 float vektor [ ESZ ] ; int i ; for ( i = 0 ; i < ESZ ; i++) vektor [ i ] = 2*i ;... Nagyobb tömböket célszerű a programra nézve globális változókként megadni, a stack memória túlcsordulásának megelőzésére. Definiálhatunk saját tömbtípust is: Pl.: typedef float vekttip [ 7 ] ; vekttip torpek_kora ; /* vekttip típusú vektor definiálása */

lVektorok definiálása kezdőértékekkel Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./3. A tömböket részben, vagy egészben feltölthetjük kezdőértékekkel definiáláskor. Ha ilyenkor az elemszám- megadás elmarad, a feltöltő elemek száma határozza meg a tömbméretet: Pl.: main() { float vektor[ ] = {1.2, 2.3, 3.4, 4.5} ; float szumma = 0 ; int k, elemszam; elemszam = sizeof (vektor) / sizeof (vektor [0]); for ( k = 0 ; k < elemszam; k++) szumma += vektor [ k ]; printf("Szumma= %f", szumma); }

lEgyméretű tömbök és a mutatók Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./4. A mutatók a C nyelvben az általuk mutatott adat típusának megfelelő típusúak. Ha típus nélküli mutatót akarunk definiálni, a void típust kell megadni. Pl.: int * egeszremutato; float * lebegopontosra_mutato; double * mutdbl; void * mutato;    

lPointer-aritmetikai műveletek Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./5. A (nem void) pointerekre a következő aritmetikai műveletek vannak értelmezve, melyek kifejezetten tömbelem-mutatóknál alkalmazhatóak előnyösen: p++ inkrementálás p - - dekrementálás p + k egész kifejezés értékének hozzáadása p - k egész kifejezés értékének levonása p1 - p2 két mutató kivonása. *(p+3) (p+3) *p p elemméret= 4 byte 1 byte

lPointer-aritmetikai műveletek.. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./6. p++ hatására a p mutató értéke a mutatott típus méretének megfelelő számú byte-tal megnő, ezáltal a memóriában a következő vektorelemre mutat. p- - hatására a p mutató a memóriában a megelőző vektorelemre mutat. A k egész kifejezés hozzáadása után a k elemmel előrébb levő, a k levonása után pedig a k elemmel hátrébb lévő elemre mutat. Két mutató különbsége a két mutatott elem elemsorszámának különbségét adja, ami a két mutatott memóriacím byte-okban vett különbségének a mutatott elem méretével való osztásával adódik.

lPointer-aritmetikai műveletek.. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./7. A tömbök és a mutatók rokonságának bemutatására tekintsük a következő példát: int vekt [ 6 ], * p ; /* p definiálatlan helyre mutat */ int elso, masodik, harmadik; p = &vekt [ 0 ]; /* vagy p = vekt */ elso = vekt [ 1 ]; /* vagy p[ 1 ] */ masodik = vekt [ 2 ]; /* vagy *(vekt+2) */ harmadik = vekt [ 3 ]; /* vagy *(p + 3) */ A C nyelvben a vekt [ k ] és a *(vekt + k) kifejezések egyenértékűek. A vekt tömbnév és a p mutató közti eltérés, hogy amíg p egy változó, a tömbnév egy konstans mutató, igy nem is adható neki érték.

lPéldaprogram vektorhasználatra 1. alapalgoritmus: összegzés Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./8. #include /* randomize(); random(); */ #include int vekt [ 20 ]; main() { int i, szum; randomize(); for ( i = 0; i < 20; i++) vekt [ i ] = random(31); for ( szum = 0, i = 0; i < 20; i++) szum += vekt [ i ]; printf("Átlag= %f",szum / 20.); } = 228; 228/20.=11.4

lSzövegkezelés karaktervektorokkal Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./9. A C nyelv nem ismer önálló szöveges típust, a szövegek tárolását karaktervektorokkal oldja meg. A karaktervektorok között nincs közvetlen értékátadás, a sztringek átadását karaktermásoló ciklussal kell megoldani. szoveg1 = szoveg2; Egy karakterfüzér tárolására kijelölt memóriaterület hossza eltérhet az aktuálisan benne tárolt szöveg hosszától. A szöveg hosszának tárolása helyett a C nyelv a szöveg végét jelöli a \0 karakterrel (0 ASCII kód). A karaktervektor-változó definiálása- kor ezt a karaktert is számba kell venni a méret megadásánál.

lSzövegkezelés karaktervektorokkal.. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./10. Példák: char str20 [21]; char s_teli [ 8] = {'M', 'o', 'n', 'i', 't', 'o', 'r', '\0' }; char s_min [ ] = {'E', 'g', 'é', 'r', '\0'}; char s_nagy [ 22 ] = "Joystick"; char s_smart [ ] = "Modem"; A két utolsó esetben a \0 karaktert a fordító helyezi el a szövegek végén. Amennyiben mutatóval definiáljuk a karakter vektort, ügyelni kell a mutatónak történő értékadással, mert felülírhatjuk az eredeti stringre mutató értéket.

lPéldaprogram karaktervektorokkal Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./11. A sztringek kezelésére vonatkozó függvények részletes ismertetése előtt tekintsünk egy Julianus dátumot számító példaprogramot: /* Hányadik_nap */ #include #include /* Szövegkezelő függvények */ #include /* exit() függvény */ void main() { char datum[9]; /* szövegváltozó deklarálása */ int ev,ho,nap,hiba,hanyadik; const unsigned int hoelejek[12]= {0,31,59,90,120,151,181,212,243,273,304,334}; clrscr( );

lPéldaprogram karaktervektorokkal.. Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./12. puts("A program megadja, hogy az adott "); puts("dátumú nap az év hányadik napja.\n"); printf("A dátum (ee.hh.nn): "); gets(datum); /* három stringre tagol: */ datum[2] = '\0'; datum[5] = '\0'; ev = atoi(datum); /* ev==0, ha sikertelen */ ho = atoi(datum+3); /* sztringet konvertál egésszé */ nap = atoi(datum+6); if (!(ev && ho && nap)) /* valamelyik == 0 */ { puts("A dátumkonvertálás sikertelen !"); exit(1); } hanyadik= hoelejek[ho -1] + nap; if (ev % 4 == 0 && ho >2 ) hanyadik++; printf("\nA 20%s. év %d. napja.",datum,hanyadik); getch(); }