Nyelv operátorok

Előadás 2. Az üzemeltetők a nyelv a C ++.
program felépítése

Az üzemeltetők ellenőrzés során a program végrehajtását. Egy sor C ++ nyelven szereplők minden ellenőrzési struktúrák strukturált programozás.

Egy összetett utasítás korlátozza fogszabályozó. Minden más állítás pontosvesszővel végződnek.
  • Üres nyilatkozata -;
Üres nyilatkozata - nyilatkozatot arról, hogy az csak a pontosvessző. Ez akkor fordulhat elő bármely pontján a programban, ahol az üzemeltető szintaxis. Végrehajtása egy üres állítás nem változtatja meg az állapotát a program.
  • Vegyület nyilatkozata -

    Operator kapcsoló kiválasztja az egyik a számos alternatív végrehajtási útvonal a program. Kiszámítása a kapcsoló üzemben kezdődik az értékelés a kifejezés. akkor a vezérlés átadódik a kezelő. jelölt konstans kifejezés. egyenlő a számított értéke a kifejezés. Ki az üzemeltető-break kapcsoló hajtjuk az üzemeltető. Ha az érték a kifejezés nem egyenlő a konstans kifejezések. vezérlés átkerül az operátor. feliratú alapértelmezett kulcs szó. ha van ilyen.
  • Operator ciklus előfeltétele
    while (<выражение> ) <оператор>
  • Operator ciklus utófeltétel
    csinál<оператор>míg<выражение> ;

    A C ++, ez az operátor eltér a klasszikus végrehajtási ciklus utófeltétel, hogy amikor az igazság kifejezése jön a folytatása a ciklust, és nem ki a hurok.
  • Az üzemeltető lépésről lépésre ciklusban
    a ([<начальное выражение> ]; [<условное выражение> ]; [<выражение приращения> ]) <оператор>

    A nyilatkozat test fut, amíg a feltételes kifejezés hamis (0). Kezdeti expresszió és növekmény kifejezést általában használt inicializáló és módosítására a ciklus paramétereit és más értékeket. A kezdeti kifejezés kiértékelése előtt egyszer az első teszt a feltételes kifejezés. és a növekmény kifejezés kiértékelése után minden végrehajtása nyilatkozatot. A három kifejezés a ciklus fejléc, és akár mind a három elhagyható (ne felejtsük el, hogy hagyja csak a pontosvessző). Ha elhagyjuk a feltételes kifejezés. úgy vélik, hogy igaz legyen, és a hurok végtelenné válik.

    Step ciklus szereplő C ++ rugalmas és felhasználóbarát kialakítás, így a ciklus operátor feltétele, míg a C ++ rendkívül ritka, mert A legtöbb esetben ez sokkal kényelmesebb használni az üzemeltető számára.
  • break utasítás
    break;

    break utasítás megszakítja a while utasítás. tennie. és bekapcsolódni. Meg lehet anyag csak a szervezetben ezek az üzemeltetők. Vezérlés átkerül az operátor, amely követi a megszakadt. Ha a break utasítás van írva benne beágyazott közben. tennie. A. kapcsolót. Arra a következtetésre jut csak most lefedő az üzemeltető.
  • mellék szereplő
    tovább;

    continue utasítás átadja a vezérlést a következő iteráció a while ciklus. tennie. A. Meg lehet anyag csak a szervezetben ezek az üzemeltetők. Az üzemeltetők csinálni, és közben a következő iteráció kezdődik az értékelés a feltételes kifejezés. A beszámoló a következő iteráció kezdődik a számítás a növekmény kifejezés, és ott van a számítás a feltételes kifejezés.
  • bevallásának
    visszatér [<выражение> ];

    Operator visszatérése megszakítja a funkciót, amelyben szerepel, és visszaadja a vezérlést a hívó függvény. Vezérlés átkerül a hívó, közvetlenül a hívás operátor. A kifejezés értéke. ha be van állítva, ez számított, mivel a deklarált típusnak a funkciót tartalmazó bevallásának, és visszaadja a hívó függvény. Ha a kifejezés elhagyható, a visszatérési érték nincs meghatározva funkciót.

    A formai szempontból, az üzemeltetők törni. tovább és vissza nem üzemeltetői strukturált programozás. Azonban használatuk indokolt korlátozott mennyiségben, mivel az megkönnyíti a megértést a programot, és lehetővé teszik, hogy elkerüljék a nagy beágyazott struktúrák. Például, ellenőrizze a bemeneti adatokat az anomáliát. Ha nem használja ezeket a szolgáltatók, akkor az egész folyamat lesz befektetni a feltételes mondat, ami rontja az olvashatóságot a program. Ehelyett, akkor írj egy kis feltételes mondat, amely rendezi a funkcióból való kilépéshez érvénytelen bemeneti adatok.

  • I / O nem része a C ++ nyelven. és elvégzi azokat a funkciókat, amelyek részei a standard könyvtár. További részletekért lásd. Előadás 4.

    // hiba - Ismeretlen visszatérési érték // Jobb

    Működés típusa void nem ad vissza értéket. Azonban egy funkció a típusú void nem ad értéket úgy, hogy a függvény típusa: void használhatják a függvényhívás típusát void mint kifejezés a bevallását.

    Ez a forma a return utasítás fontos írásakor funkció sablont. ha a visszatérési típus egy sablonparaméterrel.

    2.2.1. Inline függvények

    A funkció lehet meghatározni a specifikáló inline. Az ilyen függvények ágyazva. Specifier inline mondja a fordítónak, hogy a nyílt helyettesítés általában előnyös, hogy hajtsák végre a funkciója a szervezet működésében hívást, és meg kell próbálnia minden alkalommal generál a hívó megfelelő kódot a beépített függvény létrehozása helyett a funkció kód önmagában (egyszer), majd hívja meg a normál hívás mechanizmus. Soros specifikátor nincs hatással a jelentését a függvényhívás.

    Nyissa meg a helyettesítés nem befolyásolja az eredményeket a hívó függvény, eltér a makrót. Beépített függvény szintaxisa a szokásos funkciójának leírását, és függ a vonatkozó szabályok hatálya és típusú ellenőrzés. Nyílt helyettesítés egyszerűen egy megvalósítása a függvényhívás. Generálása helyett a kódot, és az átviteli vezérlő paraméterek az egységes test másolási funkcióval, a másolás funkció a test, megfelelően módosított Egy hívás kerül. Ez időt takarít meg az irányítás átadása.

    Az összes, de a legegyszerűbb feladatok futásidőben funkciók uralja a költségek időben ügyeleti szolgálat. Ebből az következik, hogy az összes, de a legegyszerűbb funkciója a megtakarítás rovására nyitott helyettesítés minimális. Az ideális jelölt nyitott helyettesítés olyan funkció, amely nem valami egyszerű, mint a növekedés vagy visszatérési érték. Az ilyen feladatok meglétét teszi szükségessé a kezelés a rejtett adatokat.

    2.2.2. Alapértékek funkciók

    int g (int m = 1, int n); int h (int m = 1, int n = 2); int h (int m = 1, int n = 2) Int h (int m = 0, int n = 0) int f (int m = 1, int n = 2); int f (int m int n.) f (5, 6); f (5); f ();

    // // // Helyes Error Error - ismétlődő alapértelmezett // Error - Az alapértelmezett beállítások megváltoztatásához // Jobb // A funkciót két paraméter // egyenértékű hívja f (5, 2); Ekvivalensen // hívás f (1, 2);

    2.2.3. program beállításait

    A fő funkciója. mint bármely más funkcióra paramétereket. Ezeket a paramétereket át a programnak a parancssorból.

    void main (int argc, char * argv [])

    // nevek argc és az argv nem követelmény a nyelv

    2.2.4. Funkciók változó számú paramétert

    Értelmezése során a paraméter lista egy függvény információ nem áll rendelkezésre a fordító. Ezért nem tudja garantálni, hogy a várt lehetőség nincs igazán jelen, vagy arról, hogy a megfelelő típusú. Nyilvánvaló, hogy ha a paraméter nem adják meg, a fordító nem rendelkezik a szükséges információkkal, hogy végre a szokásos ellenőrzés és az átalakulás típusát.

    Ez a funkció csak a be nem jelentett paraméterek, elvileg meg lehet határozni, de nehéz lesz kiválasztani a paramétereket, makrók dolgozni bejelentett paramétereket a neve az utóbbi bejelentette a formális paraméter.

    Bent a funkció, a programozó kiválasztásáért felelős a köteg további paramétereket. Velük dolgozni makrók segítségével va_arg. va_start és va_end. stdarg.h meghatározott fájlban.

    Egy példa a függvény magyarázó változók száma programok paraméterek, lásd. A végén az előadás.

    2.3. preprocessor

    Előfeldolgozó - olyan program, amely feldolgozza a szöveget a program a fordító. Így a fordító kap beviteli, amely eltérhet az látja. előfeldolgozó által vezérelt irányelveket. Használata előfeldolgozó műveletet el lehet végezni következő elemeket tartalmazza:
    • felvétele a program a megadott fájlokat;
    • csere azonosítók szekvenciáit szimbólumok;
    • makró helyettesítés. azaz Csere elnevezések paraméterezhető szöveg preprocessor kialakítva, hogy megfeleljen a konkrét érvek;
    • kizárás az egyes részek a szöveg (feltételes fordítási).

    2.3.1. beleértve a fájlokat

    Include fájlok felhasználásával előállított #include direktíva. amely a következő szintaxist:
    #include<путь>#include "path"

    Kacsacsőr valamilyen formai elem.

    Az #include direktíva tartalmazza a tartalmát a fájl elérési útját, amely meghatározott fájl összeállított helyett összhangban az irányelvvel. Ha az útvonal hegyes zárójelek közé, akkor a fájl keresi a szabványos könyvtárak. Ha az útvonal idézőjelbe, és teljes mértékben megadva, a fájl megkeresi a megadott könyvtárban, és ha az elérési út nem teljesen meghatározott - az aktuális könyvtárban. Ezzel az irányelvvel, akkor a szövegét is a program, mint a standard, és a fájlokat.

    Továbbá, amint azt fentebb jeleztük, a C ++ számos funkciók, mint a bemeneti / kimeneti funkciók, a memória dinamikus, stb Ezek nem része a nyelvnek, mint része a szabványos könyvtárakat. Annak érdekében, hogy szabványos könyvtári funkciókat, szükség van a szövegben a program tartalmazza az úgynevezett header fájlokat (a függvények leírása jelzi, hogy melyik header fájl szükséges hozzá). Ugyanez történik az elpárologtató irányelv #include.

    #include direktíva ágyazhatók. Ez azt jelenti, hogy meg tudjanak felelni a fájl tartalmazza a másik #include direktíva. A megengedett szint fészkelő #include irányelvek végrehajtásától függ a fordító.

    2.3.2. macrosubstitutions

    Macro #define irányelv végrehajtását. amely a következő szintaxist:
    #define<идентификатор><текст>#define<идентификатор> (<список параметров> ) <текст>

    #define irányelv helyébe lép minden előfordulását az azonosítót a forrás fájlt a szövegben. következő irányelv az azonosító. Ezt a folyamatot nevezik Macro. Az azonosító helyettesíti, ha ez egy külön jelzőt. Például, ha az azonosító része egy hosszabb szöveg, vagy azonosítója, akkor nem kell pótolni.

    A szöveg a gyűjtemény zsetont például kulcsszavak, állandók, azonosítók, vagy kifejezés. Egy vagy több szóköz karaktert kell elválasztani a szöveges azonosítót (vagy paramétereit zárójelben). Ha a szöveg nem fér el egy sorban, akkor lehet folytatni a következő sorban, hogy ezt a fajta a sor végét jelző karaktert „backslash” majd azonnal nyomja meg az „ENTER” gombot.

    Szöveg elhagyható. Ebben az esetben az összes példányát az ID lesz távolítva a forráskódot. Azonban ő tekinthető egy adott azonosítót.

    A paraméterek listáját. ha jelen van, tartalmaz, egy vagy több azonosítót vesszővel elválasztva, és kell zárójelbe téve. Azonosítók a lista eltér egymástól. Körük korlátozott makrók, amelyben kapnak. A nevét a formális paraméterek a szövegben jelölje meg a helyzetbe, amelyben a helyettesített tényleges érvek egy makró hívást.

    A makró hívás azonosítója van rögzítve, majd zárójelben listája tényleges érvek megfelelő formális paraméterek a paraméterlista. List valójában formális paramétereket kell tartalmaznia azonos számú elemet. Nem tévesztendő helyettesítése érveket a makró az átviteli függvény érveket. Csere az előfeldolgozó tisztán szöveges karaktert. Bármilyen típusú számítás vagy az átalakulás nem megy végbe.

    #define N 100 #define MULT (a, b) ((a) * (b)) #define MAX (x, y) ((x)> (y)). (X). (Y)

    Hívás MULT (x + y, z) helyébe ((x + y) * (Z)). Hiányában belső zárójelben fordult (x + y * z). ami nem igaz.

    Macrocall MAX (i, a [i ++]) helyébe ((i)> (a [i ++])). (I). (A [i ++])). A számítás eredménye megjósolhatatlan.

    Az irányelv #define két jelzőt lehet „ragasztva” együtt. Ehhez szükséges, hogy összekapcsolják védjegyek ## (bal és jobb érvényesek whitespace karakter). Előfeldolgozó egyesíti ezeket a zsetonokat egy. Például, makro #define VAR (i, j) i ## j a makro hívás VAR (x, 6) képez azonosító x6.

    A # jel, amely előtt egy makró érv jelzi, hogy alakítani egy karakterlánc. Amikor makróhívást tervezés #<формальный параметр> helyébe "<фактический параметр> ”.

    Szövegcseréhez lehet visszafordítani irányelv #undef. amely a következő szintaxist:
    #undef <идентификатор>

    #undef irányelv törli az aktuális definícióját #define azonosító. Ahhoz, hogy megszünteti a makró, elegendő meghatározni identitását. Megadása paraméter lista nem szükséges. Ez nem hiba kezelhető #undef azonosítót az irányelvet, amely korábban nem került meghatározásra vagy amelyek hatása már törölte.

    Elfogadva C / C ++ forma makrónyelvet is komoly hátrány. Most, ebben a formában is elavultnak tekinthető jelenléte miatt alkalmasabb eszköze a nyelv, mint a sablonokat. névtér. inline függvények és konstansok. Hasonlóképpen, a széles körben alkalmazott öntött bármilyen nyelven jelzi a rossz tervezés. Makrók és hogy egy gyakori hibaforrás. Az a tény, hogy meg tudod csinálni anélkül, hogy őket, a programozás C ++ sokkal biztonságosabb és elegánsabb.

    2.3.3. feltételes fordítás

    Feltételes fordítás biztosított a C ++ nyelven utasításkészlet, amely lényegében nem ellenőrzik összeállításáról és előfeldolgozás. Ezek az irányelvek lehetővé teszik kizárt összeállításához bármely részének az eredeti fájl ellenőrzésével feltételekkel.
    #if<константное выражение> [<текст> ] [#elif<константное выражение> [<текст> ]]. [#else [<текст> ]] #endif

    Minden #if direktíva ugyanabból a forrásból fájlt meg kell felelnie a végső irányelv #endif. Két #if és #endif irányelvek lehet bármennyi irányelvek #elif, és nem több, mint egy #else irányelvet. Ha #else irányelv jelen van, közte és a #endif irányelv ezen beágyazási szint ne legyen más irányelvek #elif.

    Előfeldolgozó kiválasztja a szöveg része feldolgozásra a számítás alapja az állandó kifejezés. követő #if direktíva és #elif. A kijelölt szöveg. követően állandó kifejezés, amelynek értéke „true”. Ha egyik korlátozott állandó kifejezés nem igaz, elpárologtató kiválasztja szöveget. követő #else irányelvet. Ha #else irányelv hiányzik, akkor nincs szöveg kiválasztva.

    Egy állandó kifejezés tartalmazhat előfeldolgozó meghatározott művelet (<идентификатор> ). Ez a művelet visszaadja a valódi értéket, ha az előre meghatározott azonosító jelenleg meghatározott, egyébként hamis kifejezés.

    #if (sizeof (void *) == 2) #define SDATA #else #define LDATA #endif #if definiált (hitel) hitel (); #elif definiált (terhelési) debit (); #else printerror (); #endif

    3.1. kereső gyökere f (x) = 0 intervallumban [a; b] egy adott pontossági
    intervallum felező módszer

    Az első lehetőség - a szokásos módon

    A második lehetőség - mint Pascal

    A harmadik lehetőség - az egész algoritmus elhelyezett hurok fejléc

    Kapcsolódó cikkek