Hlavní strana -> Programování v C -> 03. Relační operátory, příkaz if

03. Relační operátory, příkaz if

Zdarec lidi, tak jak to dneska jde? Snad dobře, abyste mohli lépe chápat ty šílenosti co vám tady liju do hlavy. No ne kecám, tlachy to nejsou, je to všechno pravda a určitě to nečtou ti, které to nezajímá. Nemám pravdu? Dočkali jste se dalšího v pořadí už třetího dílu našeho povídání o programování v C. O čem to dneska bude? Tak za prvé se podíváme na relační operátory, které potom využijeme hned v příkazu if. Let´s do it.

Relační operátory. Může to znít hrozivě, ale bolet určitě nebudou. Slouží k porovnávání ve výrazech a dávají buď pravdivou hodnotu 1 nebo nepravdivou hodnotu 0. Ještě pro upřesnění - pravdivé jsou všechny hodnoty kromě 0. Nebude to nic těžkého, protože se jedná o základní matematické operace porovnání. Vypadají takto:

a>b  pravda(1) pokud je a větší než b, jinak nepravda (0)
a>=b pravda pokud je a větší nebo rovno b
a<b  pravda pokud je a menší než b
a<=b pokud je a menší nebo rovno b, pak výraz dává pravdu
a==b je-li a rovno b, pak pravda jinak nepravda
a!=b pravdivý právě když a se nerovná b

Příkaz if je jeden z několika řídících příkazů jazyka C. Je použit tam, kde se má nějaký příkaz provést jen za určitých podmínek. Obecný tvar příkazu if:

if(výraz) příkaz;

Příkaz za if se provede pouze v případě, že hodnota výraz je pravdivá. Je-li programem hodnota výraz vyhodnocena jako nepravdivá, pak se příkaz neprovede a pokračuje se v programu dále za příkazem if. Ukážu vám hned také blok příkazů. Blok příkazů je prováděn programem jako by se jednalo o jeden příkaz, proto lze if zapsat jinak, aby program provedl více příkazů v případě pravdivosti výrazu. Sice takto:

if(výraz){
    příkaz_1;
    příkaz_2;
    příkaz_3;
}
příkaz_4;

Pokud se v tomto programu narazí na příkaz if a výraz je vyhodnocen jako pravdivý, pak jsou provedeny všechny příkazy ve složených závorkách za příkazem if a po vykonání všech těchto příkazů se pokraduje dále na příkaz 4. V případě, že výraz je nepravdivý, pak jsou příkazy ve složených závorkách přeskočeny a pokračuje se dále příkazem příkaz 4. Teď přijde použití v praxi. Skloubíme vše, co jsme se již naučili dohromady.

#include <stdio.h>  /* obsahuje informace o nekterych knihovnich funkcich */

void main(void)
{
    int i,j;

    printf("Zadejte dve cela cisla.\n");   
    scanf("%d%d", &i, &j);

    if(i<j) printf("I je mensi nez J.\n");
    if(i==j) printf("Cisla jsou shodna.\n");
    if(i!=j){
        printf("Cisla nejsou shodna.\n");
        printf("I-J=%d\n", i-j);
        printf("J-I=%d\n", j-i);
    }
    if((i+j) < 20) printf("Soucet cisel je mensi nez dvacet.\n");
    printf("Konec programu.");
}

Doufám, že tomu co jsem tady napsal všichni rozumíte. V části výraz může být klidně přiřazovací příkaz nebo několik porovnání podobně, jako je ukázáno v posledním příkazu if.

A na konec tady dáme ještě načítání jiných, než celočíselných hodnot, protože jenom s celými čísy bychom se daleko nedostali. Printf a scanf používají několik kódů pro výpis a čtení různých druhů dat. Tady jsou:

%d - výpis a čtení celočíselných hodnot
%f - výpis a čtení hodnot typu float (pohyblivá řádová čárka)
%c - používá se pro čtení nebo výpis znaku (jednoho)
%s - řetězec
%x - hexadecimální hodnoty s malými písmeny
%X - hexadecimální s velkými písmeny
%e - čísla v semilogaritmickém tvaru s malým e
%E - semilogaritmický tvar s velkým E
%o - osmičkové číslo bez znaménka

Ještě jejich speciální tvary:

%hd - short int
%ld - long int
%u  - unsigned

To by prozatím mohlo stačit k těm typům dat. Tady jsou ještě některé kódy (říká se jim escape sekvence) pro printf:

\b - backspace
\n - nový řádek
\r - návrat na začátek řádku
\t - tabulátor
\a - výstraha (krátký zvuk z PC speakeru)

Ještě jsem málem zapomněl na to, že tímto způsobem bychom neuměli napsat znak procenta protože znakem procenta začínají některé kódy. Proto pokud chceme napsat znak procenta musíme zadat %% (dva znaky procento).

Teď, když už teoreticky umíme číst jakékoli hodnoty a vypisovat je na obrazovku, tak by měl přijít nějaký příklad. Bude to ale trochu složitější a budu muset připsat ještě konverzi typu ve výrazech a o aritmetických operacích. Takže už tušíte, o čem bude příští díl? Zatím programování zdar a těším se u dalšího pokračování. K.

Zpět

Programování v C | CZ 175/477 | Mapa stránek
Bc. Petr Klimánek, student Ostravské univerzity v Ostravě