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 programnyelv utasítasai: Utasítasok és blokkok. A döntési utasítasok. A ciklusszervező utasítasok. Vezérlésatadó utasítasok.

számítógépes





felso sarok

egyéb tételek

jobb felso sarok
 
A programok felépítése, az utasítasok típusai
A B/K szoftver
Grafikai alapfogalmak
Az egyed-kapcsolat modell
Munkadarab (alkatrész, gyartmany)
Fordítóprogramok
Az adatbaziskezelő rendszerek üzemeltetése
Osztott adatbazisok
Az ORACLE adatbaziskezelö eszköztara
Nyelvek, nyelvtanok megadasa. Formalis nyelvek osztalyozasa. Chomsky-féle hierarchia.
 
bal also sarok   jobb also sarok

A C programnyelv utasításai: Utasítások és blokkok. A döntési utasítások. A ciklusszervező utasítások. Vezérlésátadó utasítások.


A nyelv vezérlésátadó utasításai a számítások végrehajtásának sorrendjét határozzák meg.

Utasítások és blokkok

A kifejezések, pl. x = 0, i++ vagy printf(. . .) utasítássá válnak, ha pontosvesszô követi ôket:

x = 0; i++; printf (. . .);

A C-ben a pontosvesszô utasításlezáró jel (terminátor) és nem elválasztó szimbólum, mint az ALGOL-szerű nyelvekben. A kapcsos zárójelek felhasználásával deklarációkat és utasításokat egyetlen összetett utasításba vagy blokkba foghatunk össze. Ez szintaktikailag egyetlen utasítással egyenértékű. Nyilvánvaló példái ennek a függvények utasításait határoló kapcsos zárójelek, vagy azok a zárójelek, amelyek egy if, else, while va 656c28g gy for szimbólumot követô utasítássort vesznek körül. A blokkot lezáró jobb oldali kapcsos zárójel után soha nincs pontosvesszô.

Az if - else utasítás



Az if - else utasítás alakja:

if( kifejezés )
1. utasítás(blokk)
else
2. utasítás(blokk)

Amennyiben a kifejezés igaz - azaz értéke nem nulla - akkor az 1. utasitás(blokk), ha a kifejezés hamis - azaz értéke nulla - akkor a 2. utasítás(blokk) kerül végrehajtásra. Az else használata nem kötelezô ! Ha az if ill. else kulcsszót csak egy utasítás követi, akkor nem kötelezô a '' jelek használata, egyéb­ként igen !


if( a%2 == 0 )


else

Fontos :   Mivel az else használata nem kötelezô, ezért elôfordulhat, hogy összetettebb ala­kokban nem egyezik meg az if-ek és az else - k szá­ma. Annak el­dön­té­sére, hogy melyik else melyik if - hez tartozik a következô szabály ér­vé­nyes : Az else a hozzá legközelebb esô else nélküli if-hez tartozik ! Ajánlatos a '' zárójelek alkalmazása, így egyértelművé te­het­­jük a szerkezetet !

if( n == 0 )
if( a>b )
x = a;
else
y = b;

Az elsô if után azért nem kell '' mert az azt követô if egy utasításnak felel meg. Jelen konstrukcióban az else ág az if( a>b ) - hez tartozik. Ha eredetileg nem ezt akartuk akkor a '' használatával tudunk változtatni:

if( n == 0 )

else
y = b;


A ? operátor

Az if - else kifejezés egy speciális rövidítése : az ilyen típusú alakot, mint az
if( a>b )
z = a;
else
z = b;
a '?' operátor használatával rövidíthetünk.
Általános alak : kif1 ? kif2 : kif3 ;
Ha kif1 értéke igaz akkor kif2, egyébként kif3 lesz ennek a kifejezésnek az értéke:

z = (a>b) ? a : b;         /* z = max(a,b) */


Az else - if szerkezet - többszörös elágazás I.

Általános alakja :
if( kifejezés )
utasítás(blokk)
else if( kifejezés )
utasítás(blokk)
else if( kifejezés )
utasítás(blokk)
else

utasítás(blokk)
Itt meg kell jegyezni, hogy gyakorlatilag nem külön utasításról van szó, hi­szen egy­más­­ba ágyazott kétágú szelekciókkal van dolgunk. Mivel gyakran elô­for­dul ilyen döntési szerkezet, ezért az áttekinthetô programozási alak miatt kü­lön tárgyaljuk.

A kifejezések - egymás után történô - kiértékelése után az az utasítás kerül végrehajtásra, amelyhez tartozó kifejezés igaznak bizonyult. Ezután a prog­ram kilép az else-if szerkezetbôl. Az utasítások helyén egy utasítás vagy '' között uta­sí­tásblokk állhat. Az utolsó else a "fentiek közül egy sem" szituációt kezeli. A hozzá tartozó utasítás csak akkor kerül végrehajtásra, ha elôtte mindegyik kifejezés hamisnak bizonyult.

k = (x-u)*(x-u) + (y-v)*(y-v);


if( k == r*r )
printf("\nRajta van a körön !");


else if( k > r*r )
printf("\nKivül van a körön !");

else
printf("\nBelül van a körön !");


A switch utasítás - többszörös elágazás II.

Általános alakja :
       switch( kifejezés )



A kifejezés csak egész típusú lehet ! Kiértékelése után azzal az utasítás (blokk)-kal folytatódik a program amelyhez tartozó case konstans megegye­zett a kifejezés érté­ké­vel. A break hatására befejezôdik a switch végre­hajtása. A default utáni utasítás­(blokk) - ra akkor adódik a vezérlés, ha egyik case-re sem teljesült az egyen­lôség. A case után csak a kifejezés típu­sá­nak megfele­lô állandót lehet megadni ! A case utáni kifejezés típusa csak egész jellegű lehet, tehát char, int vagy long. Egymás ­után több case-t is fel­so­rol­ha­tunk.

switch(c) /* c - ben egy karakter értéke található */

Fontos :Ha egyszer beléptünk egy switch utasítás valamelyik case ágába, akkor   az utasítások mindaddig végrehajtódnak amíg egy break utasításra nem jut a vezérlés ! Két case-nek nem lehet ugyanaz az értéke !


Ciklusok

Elôltesztelô ciklus : A while utasítás.

A while utasítás alakja :
while( kifejezés )
utasítás(blokk)

A program mindaddig végrehajtja az utasítás(blokk)-ot amíg a while-t követô kifejezés értéke IGAZ, azaz 0-tól különbözik .

// Az 1 - 1/2 + 1/4 - 1/8 ... váltakozó elôjelü sor
// összegének kiszámítása a billentyűzetrôl megadott
// pontossággal.
A sor a (-1)(n-1)*(1/2(n-1)) zárt
// alakban írható fel és összege : 2/3.
// Vezérlési szerkezet : a WHILE utasítás

#include <stdio.h>
#include <conio.h>
#include <math.h> // Az fabs() és a pow() függvények miatt szükséges

void main()

printf("\nAz összeg : %lf",s);
getch();

}


Hátultesztelô ciklus : A do - while utasítás

A do - while utasítás alakja :
do
utasítás(blokk)
while( kifejezés );

A program elôször végrehajtja az utasítás(blokk)-ot, majd kiértékeli a kifejezést. Ez a ciklikus tevékenység folyik mindaddig, amíg a kifejezés érté­ke IGAZ, azaz 0-tól külön­bözik. Mint látható, a C nyelv hátultesztelô ciklusa eltér a - több programnyelvnél - megszokott UNTIL típusú hátultesztelô ciklustól, amelynél a ciklus addig mű­kö­dik, amíg az UNTIL-t követô feltétel hamis. Amennyiben valaki az UNTIL alakot tartja "igazi" hátultesztelô ciklusnak, úgy a #define direktíva segítségével, bármikor elôállíthatja az UNTIL alakot, amint azt a 13. sz példaprogram mutatja.

#include <stdio.h>

#include <conio.h>

#include <math.h>


void main()

while( fabs( s - os ) > e ) ;


printf("\nAz összeg : %lf",s);

getch();

}


#include <stdio.h>

#include <conio.h>

#include <math.h>




#define UNTIL(condition) while(!(condition))


void main()

UNTIL( fabs( s - os ) <= e ) ;


printf("\nAz összeg : %lf",s); getch();

}


Taxatív ciklusszervezés : A for utasítás

A for utasítás alakja :
for( kifejezés1; kifejezés2; kifejezés3 )
utasítás(blokk)

A kifejezések általában a következôket jelentik :
kifejezés1 :Kezdeti értékadás a ciklusváltozónak.

kifejezés2 : A lefutási feltétel(ek) megfogalmazása. Lefutási feltételkéntnem­ csak a ciklusváltozóval kapcsolatos feltételt lehet megadni, ha­nem bármilyen más feltételt is.

kifejezés3 : A ciklusváltozó növelése vagy csökkentése.

Bármelyik kifejezés hiányozhat !
1./   for( i=1; i<=100; i++)


// Kinyomtatja a természetes számok négyzetét 1-100 - ig.

A for ciklusok egymásba ágyazhatóak :
int i, j, prim, n;
...
for( i=5; i<=n; i=i+2 ) // Páratlan számok képzése 5-tôl n-ig
// nem prímszám
if( prim == 1 ) printf("\n%3d",i);
}
A belsô for ciklus akkor is befejezôdik, ha a prim változó értéke 0 lesz így nem biz­tos, hogy lefut (i - 1) - ig. A külsô for ciklus i változójának egy értékéhez a belsô for ciklus a feltételében meghatározottak szerint kerül végrehajtásra. Ezután i értéke kettô­vel növ­e­­lô­dik, és újra a belsô ciklus fut le. Ez így megy mindaddig, amíg i el nem é­ri n értékét. A for cik­­lus több ciklusváltozót is tartalmazhat, ezeket a ',' operátorral kell elválasztani egymás­tól.

for( i=1, j=2; i<=100; i+=2, j+=2)

Bizonyos esetekben nagyon kényelmes a használata !
Fontos :   Ez a konstrukció nem tévesztendô össze az egymásba ágyazott for ciklussal.

Megjegyzés : A for utasítás egyenértékü a
kifejezés1;
while( kifejezés2 )

alakkal.

Kilépés ciklusból ill. a switch-bôl : A break utasítás

A break hatására a vezérlés azonnal kilép a for, while, do-while ill. switch konstruk­ciókból, és a konstrukciót követô elsô utasítással folytatódik a program végre­haj­tása. Egymásba ágyazott szerkezetek esetén mindig abból a legbelsô ciklusból lép ki a break, amelyik azt tartalmazza.


Következô iteráció kezdeményezése : A continue utasítás.

A continue utasítás csak ciklusokban használható. A while ill. do-while cik­-lus belsejében az azonnali feltétel­vizs­gálat vég­­­re­­hajtását eredményezi, for cik­lus esetén pedig a ciklusváltozó módosítását. A switch utasításban hatás­-talan, ill. ha a switch egy cik­lusban szerepel, ak­kor erre a ciklusra érvénye­sek a fent leírtak.

Az utóbbi két utasítást nem használjuk gyakran !

A goto utasítás, címkék

A goto utasítás használatától általában elzárkóznak a programozók. Elvileg a C-ben a goto-ra soha sincs szükség, és a gyakorlatban programozhatunk goto nélkül.Mégis elôfordulhatnak olyan esetek, amikor a goto használata a legcélszerűbb. Ilyen példá­ul az a helyzet, amikor valamilyen hibakezelés során, egy kétszeresen - vagy többszörösen - egymásba ágyazott ciklus legbelsejé­bôl akarunk kilépni. Ilyenkor a break utasítást nem tudjuk használni.

for( . . . )

. . .
}
hiba_jav :

hiba lekezelése



: 1161