online kép - Fájl  tube fájl feltöltés file feltöltés - adja hozzá a fájlokat online fedezze fel a legújabb online dokumentumok Kapcsolat
   
 

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
   
kategória
 

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

 
 
 
 













































 
 

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 Esszé Projekt


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.

2./   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


: 721