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
  

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

Fájl küldése e-mail



egyéb tételek

 
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.
 
 

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



: 810