Típusok és konstansok

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

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

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

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

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Programozás I gyakorlat

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

Objektumok tulajdonságai

Információs Technológia

Programozás I gyakorlat

A C nyelv aritmetikai típusai. Struktúrák.

M veletek és kifejezések

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

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

Java II. I A Java programozási nyelv alapelemei

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

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

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

Készítette: Nagy Tibor István

A C nyelv aritmetikai típusai. Struktúrák.

Java II. I A Java programozási nyelv alapelemei

Bevezetés a programozásba Előadás: A const

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

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

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

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

Programozás C és C++ -ban

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

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

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

Programozás I gyakorlat

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

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

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

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

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 alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás C++ -ban

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

5. Gyakorlat. struct diak {

A C programozási nyelv IV. Deklaráció és definíció

Bevezetés, a C++ osztályok. Pere László

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

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

Pénzügyi algoritmusok

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

C programozási nyelv

Programozás I gyakorlat

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

Mintavételes szabályozás mikrovezérlő segítségével

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Bevezetés a C++ programozási nyelvbe

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

C programozás. 1 óra Bevezetés

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

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

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

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

Objektumok inicializálása

Adatszerkezetek és algoritmusok

Bevezetés a programozásba. 9. Előadás: Rekordok

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

10. gyakorlat Struktúrák, uniók, típusdefiníciók

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

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

Programozás C++ -ban 2007/1

OOP #14 (referencia-elv)

Alprogramok, paraméterátadás

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

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

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

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadá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

Objektumorientált programozás C# nyelven

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

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Programozás C és C++ -ban

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

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

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

A C# programozási nyelv alapjai

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Programozás I gyakorlat. 5. Struktúrák

Java és web programozás

1. Alapok. Programozás II

Pénzügyi algoritmusok

Programozás. Programozás villamosmérnököknek

Átírás:

Programozás I. Széchenyi István Egyetem, Gy r 2013. október 3.

Szimbólumok Forráskód részei: szimbólumok (szintaktikai egységek, tokenek) fehér karakterek (összevonás, gyelmen kívül hagyás) Szimbólumok: operátor kulcsszó for, while, int, oat,... nem szabványos kulcsszavak, védett azonosítók (pl. cdecl, stdcall, _ és jellel kezd d k) elválasztó jel azonosító konstans karakterlánc

Azonosítók Változók, függvények, felhasználói adattípusok nevei. Els karakter: kis- vagy nagybet, ill. _ További karakterek: u. a., és számjegyek Nem lehet kulcsszó vagy védett azonosító Kis- és nagybet re érzékenyek Ajánlás: ne kezd djön egy vagy két _ karakterrel Szignikáns karakterek száma Mi lehet a gond? Gipsz Jakab 66_os_ut Men _Manó auto OK meno_mano Meno_Mano sokreszbolosszeteve

Típusok Típuskategóriák: függvény (csak ez eredményez kódot) void (hiány jelzése) skalár egész típusok lebeg pontos típusok felsorolás (enum) mutatók aggregátum tömb struktúra (struct) únió (union)

Típusok Csoportosítás alapja lehet: alaptípusok (void, char, int, float, double) származtatott típusok, típusmódosítókkal short / long (csak egészekhez, nincs aé.) signed (aé.) / unsigned Deklaráció: objektum azonosító típus meghatározása memóriafoglalás? Példák deklarációkra típus t1, t2; /* típus típusú objektumok */ típus fv1(void); /* típus típussal visszatér függvény */ void fv2(típus t); /* típus típusú paramétert fogadó függvény */ /* típus típussal visszatér, és ilyen típusú paramétert fogadó függvény */ típus fv3(típus t); típus tomb[5]; /* 5 elem, típus típusú elemekb l álló tömb */

Típusmódosítók További két típusmódosító (min sít ) const azonosító nem szerepelhet balértékként (csak olvasható változó) bármilyen típussal együtt használható kötelez inicializálni volatile változó értéke prg. végrehajtáson kívüli okból módosulhat (pl. párhuzamos programszál, megszakítás, stb.) Akár egyszerre is használhatóak! Példa a const min sít használatára const double e = 2.71828; const eletertelme = 42; /* const signed int */ Nem módosítható! e = 1234; ++eletertelme;

Egész típusok, konstansok Korábban megismert tulajdonságokon túlmen en... char alaptípus: biztosan 1 bájtos de a karakter konstans típusa int pl. 'xxxx', el jel kiterjesztés alapértelmezetten signed, de átállítható egész típusok ábrázolási korlátai limits.h nincs alul- és túlcsordulás limits.h részletek # dene SCHAR_MIN (-128) # dene UCHAR_MAX 255 # dene SHRT_MAX 32767 # dene INT_MAX 2147483647 # dene ULONG_MAX 18446744073709551615UL

Egész típusok, konstansok Egész konstansok tulajdonságai: megadható decimális, oktális (0... ) és hexadecimális (0x..., 0X... ) alakban (a... f, A... F) nincs el jele egyoperandusos bels ábrázolás int, de megváltoztatható decimális: int, long int, unsigned long int oktális, hexadecimális: int, unsigned int, long int, unsigned long int utótagok, konverzió elkerülésére: u, U (unsigned) l, L (long) Egész típusú változók és konstansok int i = 1; unsigned ui = 8u; int j = 010; /* == 8 */ long li = 16L; int k = 0x2A; /* == 42 */ unsigned long uli = 666Ul;

Felsorolt típus egész értékek sorozatának mnemonikussá tétele (ld. még #dene, const) enum <enum-címke><{enumerátorlista}><azonosítólista>; enum ekocsi {opel, vw, toyota, honda, renault, citroen} kocsi; Az enum-címke tulajdonságai: típus neve: enum ekocsi enum, struct és union által közösen használt névterületén egyedinek kell lennie! Névterület Azonosító csoport, amelyen belül az azonosítóknak egyedieknek kell lenniük.

Felsorolt típus enumerátorlista tulajdonságai: elemei: enumerátorok, enum konstansok normál változók névterületét használják típusuk mindig int értéküket elhagyható konstans kifejezések deniálják értékek 0-tól vagy az utoljára deniált értékt l implicit módon 1-esével n nek enum ekocsi {opel, vw, toyota=10, honda, renault=2*toyota, citroen} kocsi; /* opel == 0, vw == 1, toyota == 10, honda == 11,... */

Felsorolt típus Példák enum nemet {opel, vw=10} deutschekraft; enum nemet szomszedkocsija; /* Kés bb nem lehet több ilyen típusú változót létrehozni */ enum {toyota, honda} rizsraketa; enum {renault, peugeot}; int kocsi; /* int vw; HIBA: azonos névterületen már létezik ilyen azonosító */ int nemet; /* OK */ int it[3]; { /* OK: ebben a hatókörben nincs ilyen nev azonosító */ int vw; } deutschekraft = opel; deutschekraft = renault; /* Pimasz, de OK :) */ szomszedkocsija = 2; /* OK, de nem javasolt */ szomszedkocsija = (enum nemet)2; kocsi = honda; kocsi = peugeot; it[toyota] = vw; /* toyota++; HIBA: enum konstans nem lehet balérték */

Valós típusok, konstansok Típus Méret Számábrázolási határok Pontosság oat 4 bájt ±3, 4 10 38 ±3, 4 10 +38 6-7 dec. jegy double 8 bájt ±1, 7 10 308 ±1, 7 10 +308 15-16 dec. jegy long double 10 bájt ±1, 2 10 4932 ±1, 2 10 +4932 19 dec. jegy Konstansok tulajdonságai: ábrázolási határok oat.h mantisszából elhagyható az egész- vagy a törtrész, de mindkett nem! elhagyható a tizedes pont vagy az exponens (e, E) rész, de mindkett nem! nincs el jele egyoperandusos utótag nélkül a bels ábrázolás double f, F (float) l, L (long double, formátumspecikáció: %Lf) Néhány lebeg pontos konstans -5.,.3, 5.3, -5e4, 5.67E-12, -1.23e-4l, 5.F

Karakterláncok kezelése Karakterlánc konstansok (string literal), kiegészítés: elhelyezés: statikus adatterületen a fehér karakterrel elválasztott karakterlánc konstansokat a fordító egyesíti több sorba is írható, ha \-sel zárjuk a sort (folytatássor) Karakterlánc konstansok printf("régi " "nóta " "másképp: \n"); printf("hosszú az a nap, \ ami programozás nélkül múlik el\n"); Kimenet Régi nóta másképp: Hosszú az a nap, ami programozás nélkül múlik el

Karakterláncok kezelése A függvény visszaadja s karakterlánc méretét strlen() int length(char s[]) { int i = 0; while(s[i]!= '\0') ++i; /* int i; for(i=0; s[i]; i++); */ return i; } s karakterlánc int-té alakítása és visszaadása atoi() int atoi(char s[]) { int i, n=0; for(i=0; s[i]>='0' && s[i]<='9'; ++i) n=10*n+s[i]-'0'; return n; }

Karakterláncok kezelése Ha a c paraméter nagybet, akkor kisbet ssé konvertálva, egyébként változatlanul adja vissza tolower() int lower(int c) { if(c>='a' && c<='z') return(c-'a'+'a'); else return c; } c karakter minden el fordulásának törlése az s karakterláncból void squeeze(char s[], int c) { int i, j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!= c) s[j++] = s[i]; s[j] = '\0'; }

Deklaráció Deníciós deklaráció (deníció) Helyfoglalás az objektumnak, esetleg kezd értékadás. Hatókörön belül csak egy ilyen létezhet. Referencia deklaráció (deklaráció) Nincs helyfoglalás, de tudatja a fordítóval az azonosítót, adattípust, stb. Több is létezhet ugyanarra az objektumra. Kísérleti deníció Minden küls adatdeklaráció, melynek nincs tárolási osztály specikátora és explicit inicializátora. Ha kés bb is felt nik, extern-nek kell tekinteni ( referencia deklaráció). Ha a fordítási egység végéig nem t nik fel, teljes denícióvá válik, tiszta zérus kezd értékkel. Deklarációs pont A deklaráció helye, el tte nem érhet el az objektum.

Deklaráció Példák /* Minden blokkon kívül! */ int i; int i; /* OK, nincs új infó. */ int j; int j=3; /* OK, nincs ellentmondás, most adtuk meg, mire kell inicializálni. */ int k=1; int k=2; /* HIBA, nem lehet többszörösen inicializálni. */

Egyszer típusdeníció (typedef) typedef: a tárolási osztály specikátor helyén szerepel új adattípus specikátor deniálására szöveghelyettesítésnél (#define) komplexebb feladatokra is alkalmas const és volatile alkalmazható rá, de más típusspecikátor nem! typedef használata #include <stdio.h> #define TIPUS long int int main(void) { auto long int li; typedef long int LI; /* unsigned LI j; HIBA */ LI egesz; const LI hosszuegesz = 5l; /* OK */ TIPUS he = 3l; /* OK */ return 0; }