online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  
felso sarok kategória jobb felso sarok
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
bal also sarok   jobb also sarok
felso sarok   jobb felso sarok
 




































 
bal also sarok   jobb also sarok

A C program szerkezete, típusai, konstansok

számítógépes





felso sarok

egyéb tételek

jobb felso sarok
 
Böngészők (browser-ek)
Az operaciós rendszer
Egyenaramú halózatok
A PowerPoint program
Informaciós tarsadalom
Assembly Design - CATIA V5 - Start
IKT ALAPISMERETEK
Klasszikus IPC problémak (processzus kommunikació)
Az adatbazis-kezelő rendszerek kialakulasa
Internet
 
bal also sarok   jobb also sarok

A C program szerkezete, típusai, konstansok


A C programok szerkezete sokkal kötetlenebb a Pascal programokhoz képest, de néhány fontos szabályt itt is be kell tartanunk.
A C nyelv case-szenzitív, azaz megkülönbözteti a kis és nagy betûket. A C nyelv a Pascal-hoz hasonlóan viszoylag kevés utasítást tartalmaz, sokkal inkább a beépített alprogramokra támaszkodik. Az alprogramok közül csak a függvények használatát támogatja, az eljárások speciális függvények. Ennek következménye, hogy amikor egy eljárást (esetleg paraméter nélküli függvényt) használunk, a függvény neve után ki kell tenni az üres zárójeleket. A C programok is blokkokból épülnek fel, a blokk kezdõ és zárószimbóluma: .
Minden C programnak tartalmaznia kell egy main() nevû függvényt. Ez a függvény speciális szerepet kap a C programokban, hasonlóan mûködik, mint a Pascal esetén a fõprogramot tartalmazó blokk. A main() függvény határozza meg az operációs rendszer számára a program belépési pontját.

A legegyszerûbb C program egyetlen sorban megírható:

main()

Mivel ebben az esetben a main() függvény törzse nem tartalmaz utasításokat, a program semmit nem csinál.
 
 

A C programok szerkezete:

Ezek után nézzünk meg egy még teljesebb példát:

#include <stdio.h    /* Elofordito utasitasok */
#define OSZTO 2

int x, y;            /* Globalis deklaraciok */



main()            /* Foprogram */

A program beolvas két számot, kiszámolja az összegüket, majd kiírja, hogy az összeg osztható-e kettõvel. Ezen a programon már sokkal inkább meg lehet figyelni a C programok felépítését. A C programok az ún. elõfordító utasításokkal kezdõdnek (#include ...   #define ...). Az #include utasítás a Pascal Uses utasításához hasonló. A #define utasítás ún makrok definiálására szolgál (ilyen a Pascal-ban nincs). A makrok a program során konstansokként használhatók fel, különbség a konstansokhoz képest, hogy a makrókat meg lehet szüntetni, ha már nincs rájuk szükségünk (#undef). A main() függvény törzse tartalmazza a scanf() és printf() függvény hívását. Az elsõ a billentyûzetrõl olvasást, a második a képernyõre írást valósítja meg. Ezek a függvények az stdio.h állományban van definiálva, ezért kellett az #include utasítással beépíteni a programban.
A return utasítás a szabályos kilépést szolgálja. A Pascal függvényeinek is mindig volt visszatérési értékük, amelyet a
FgvNev:= Kif; utasítással határoztunk meg. A C programok esetén a fõprogram maga is egy függvény (main()), amelynek szintén van visszatérési értéke. A C függvények visszatérési értékét a return utasítással határozhatjuk meg. (Érdekes, hogy a program akkor is fut, ha a return utasítást elhagyjuk, de ekkor a Borland C egy Warning-ot jelez, azaz nem szintaktikai, hanem szemantikai hibával állunk szemben.)

A C program írása során elõször az elõfordító utasításokat kell megadnunk. Az elõfordító utasítások közül két fontosabb:
 

Az elõfordító utasítások:

#include: a szükséges Header file-ok beépítése a programba. A Header file-ok a Pascal unit-okhoz hasonlítanak, de a Header file-ok standard szöveges állományok, a függvények  forráskódját tartalmazzák. Az #include utasítás lehetõvé teszi, hogy ezeket a függvényeket felhasználhassuk a programban.

#define: makrók definiálása. A makrók a C nyelv speciális lehetõségei közé tartoznak. A program elején definiáljuk õket, a programban konstans értékként használhatók fel. A konstansokhoz képest eltérés, hogy a makrókat a program futása során megsemmisíthatjük, ha nincs rá szükségünk, vagy a felhasznált névhez új értéket szeretnénk rendelni. Szintén fontos tulajdonság, hogy a makrók nemcsak értékek tárolására alkalmasak, segítségükkel egyszerû függvények is leírhatók, de ezzel a lehetõséggel nem foglalkozunk bõvebben. Általában a makrók azonosítóit nagy betûvel írjuk, hogy a program többi részétõl jól elkülöníthetõk legyenek.
 

Globális deklarációk:

A globális deklarációk a main() függvény törzsén kívül helyezkednek el. Ezek a deklarációk akkor lehetnek fontosak, ha a saját függvényeket szeretnénk használni, és a velük való kommuninkációt globális változókon keresztül szeretnénk megvalósítani. A globális deklarációs rész tartalmazhat változókat, konstansokat, függvényeket, típusokat egyaránt.
 

A main() függvény (fõprogram):

A globális deklarációkat a main() függvény fejrésze, majd törzse követi. A main() függvény törzsén belül lehetõségünk van újabb deklarációk elvégzésére, ezek a lokális deklarációk lesznek. Az itt deklarált változók, konstansok, típusok, függvények csak a main() függvény törzsén belül használhatók fel, tehát csak azok a függvények használhatják õket, amelyek szintén a lokális dekalrációs részben szerepelnek.
 

Lokális deklarációk:

A lokális deklarációk után következnek a program utasításai, a program tevékenységét leíró rész (fõprogram). A program (majdnem)  minden sorát pontosvesszõvel kell lezárni. (Szándékosan nem írtam utasítást!!!)

A main() függvény törzsének utolsó utasítása általában a return utasítás, amely után meg kell határozni, hogy a függvény (program) milyen értéket (egész) adjon vissza az operációs rendszer felé. A main() függvénybõl visszaadott értéket felhasználhatjuk az ERRORLEVEL változó segítségével az operációs rendszer szintjén (pld. batch file-ok készítése során).
 
 

A változók, típusok, konstansok deklarációja, a C nyelv típusai:

A C nyelv deklarációinak formája jelentõsen eltérõ a Pascal deklarációktól.

Változók deklarációja:

típus azonosító; Például:   int a;

A típus meghatározása után egyszerre több azonosítót is felsorolhatunk. Pld: int a, b;
A deklaráció során a változó azonnal kaphat értéket. Pld: int a=5, b=2;  vagy  int x=2, y;

Konstansok deklarációja:

const azonosító=érték; Például: const pi=3.14;



A konstansok deklarációja a const foglalt szóval kezdõdik. Meg kell adni a konstans azonosítóját, majd egyenlõségjel után a konstans értékét. Bármilyen konstans deklarálható ilyen módon. Pld: const szov="Egyszeru szoveg";
A C nyelv nem engedi meg a típusos konstansok használatát (amely szerintem felesleges is lenne a változók deklaráció során megadható kezdõértéke mellett).

Típusok deklarációja:

typedef típusleírás típusazonosító;  Például: typedef double valos;

A saját típusok deklarálása a typedef foglalt szóval lehetséges. Elsõsorban összetett típusok esetén alkalmazzuk, mivel a függvények C nyelvben sem engedik meg az összetett típusú paraméterek használatát.
Egy bonyolultabb típusdeklaráció:

typedef struct BOOK konyv;
 

Az alprogramok készítésével (függvények deklarációja) nem foglalkozunk.
 

A C nyelv típusainak csoportosítása:

A C nyelvben is deklarálni kell a változókat használatuk elõtt, a deklaráció során megadott különbözõ tulajdonságok között az egyik legfontosabb a változó típusa. A Pascal nyelvhez hasonlóan a típus itt is meghatározza a változó által tárolható értékek jellegét, határait. A C nyelvben használható típusok csoportosítása:

Egyszerû (skalár) típusok:

    Aritmetikai típusok:
            Egész jellegû típusok:
            char
            signed char
            unsigned char
            int
            long int
            short int
            unsigned int
            unsigned long int
            unsigned short int
            enum
            Lebegõpontos (valós) típusok:
            float
            double
            long double

    Mutató típusok
 
 

Összetett típusok:

    Összeállított típusok:
        tömb típusok
        struktúra típusok
    Unió (union) típusok
 

Az egyszerû típusok elõállítása során gyakran használunk ún. típusmódosítókat, amelyek egy-egy alaptípus tulajdonságait módosítják, ilyen módon szinte egy új típust hoznak létre. (Pld: int; long int) A típusok között az alaptípusok a következõk:
char, int, float, double, enum, struct, union. Ezek közül a char, int, double típus tulajdonságait módosítva kapjuk a többi felhasználható típust.
 

Az alaptípusok jellemzõi:

char:
Egy karakter tárolására alkalmas típus, hossza 1 byte. Elõjel nélküli egész típus. A C nyelvben a karaktereket azonos módon kezelhetjük a 0..255 közé esõ egész számokkal, amelyek tulajdonképpen a karakter ASCII kódját jelentik. Módosítható típus.

int:
Egész számok tárolására használható elõjeles típus. Mérete általában megegyezik a gépi szó méretével, azaz hardverfüggõ. A szó általában 2 byte hosszú, de egyes C fordítók, és egyes processzorok esetében eltérés tapasztalható. Módosítható típus.

float:
Lebegõpontos (valós számok tárolására alkalmas) elõjeles típus, mérete 4 byte. 6 tizedesjegyig pontos, egyszeres pontosságú lebegõpontos típus. Nem módosítható típus.



double:
Dupla pontosságú lebegõpontos típus, mérete 8 byte. 15 tizedesjegyig pontos számolást tesz lehetõvé. Módosítható típus.

enum:
Felsorolt típus. Lehetséges értékei egy a felhasználó által megadott konstanshalmazból kerülnek ki. A felsorolt típus hosszúsága a felhasználó által felsorolt értékek számától függ, az értékek int típusú konstansként kerülnek értelmezésre.
Pld.: enum valasz ;
A példában szereplõ változó 3x2, azaz 6 byte-ot foglal a memóriában, mivel a lehetséges értékek száma három, az int típusról pedig feltételezzük, hogy 16 biten van tárolva.

struct:
Az összetett típusok közé tartozik. Hasonló a Pascal nyelv record típusához. Elsõsorban az adatállományok kezelése során használatos típus. A struktúra típusú változó méretét meghatározhatjuk, ha a struktúra tagjainak (mezõinek) méretét összeadjuk. Mindössze a deklarációban tér el a Pascal nyelvtõl.
Példa:

...
struct szem Szemely;
...

A példában egyszerre deklaráltunk egy típust és egy változót. A struktúra típusú változó a Szemely lesz, a struktúra típus a szem.

union:
Speciális, csak a C nyelv által támogatott típus. A struktúra adattipushoz áll legközelebb, de mûködése, és használatának jelentõsége merõben más. A union típus is eltérõ típusú mezõkbõl (tagokból) épül fel, de míg a struktúra esetén az egyes tagok a memóriában egymás után helyezkednek el, az unió tagjai közös kezdõcímet kapnak. Ezért az unió típusú változó mérete egyenlõ a leghosszabb tag méretével. Régebbi C változatok esetében a lehetõséget a memóriamegtakarítás miatt alkalmazták, ma speciális feladatok megoldása során használják.
 

A típusmódosítók:
 
A típusmódosítók segítségével az alaptípusok tulajdonságait (értéktartomány, tárolási méret) tudjuk módosítani. A típusmódosítók alkalmazásával tehát a meglévõ típusokból tudunk új típusokat elõállítani. A típusmódosítók néhány alaptípus esetén használhatók: int, char, double. A típusmódosítók: signed, unsigned, long, short. A típusmódosítók különbözõ kombinációit is alkalmazhatjuk, ha erre van szükség. A típusmódosítók segítségével elõállítható új típusok:

signed char:
    Elõjeles egész szám, mérete 1 byte, értelmezési tartománya: -127..128.
    A char típus alapértelmezett jellemzõin nem módosít.
 
unsigned char:
    Elõjel nélküli egész szám, mérete 1 byte, értelmezési tartománya: 0..255.

long int:
    Elõjeles egész szám, mérete 4 byte, értelmezési tartománya: -2147483648..2147483647.

short int:
    Elõjeles egész szám, mérete 1 byte, értelmezési tartománya: -32768..32767.
    Az int típus alapértelmezett jellemzõin nem módosít.

signed int:
    Egyenlõ az int típussal, alapértelmezett jellemzõin nem módosít.

unsigned int:
    Elõjel nélküli egész szám, mérete 2 byte, értelmezési tartománya: 0..65535.

signed long int:
    Egyenlõ a long int típussal.

unsigned long int:
    Elõjel nélküli egész típus, mérete 4 byte, értelmezési tartománya: 0..4294967295.

signed short int:
    Egyenlõ a short int típussal.

unsigned short int:
    Elõjel nélküli egész szám, mérete 2 byte, értelmezési tartománya: 0..65535.

long double:
    Kétszeres pontosságú lebegõpontos típus, mérete 10 byte, 19 tizedesjegyig pontos számolást tesz lehetõvé.

A típusmódosítókat a deklarálás során használjuk fel, nem összetett típusokat képeznek, tehát a módosított típusok is az egyszerû típusok közé tartoznak (ez a függvények készítése során lehet fontos).



: 1654







Felhasználási feltételek