Preskočiť menu

Aligátor, Fórum, Pripojsa.sk, Servis, Speedmeter, Webhosting, Weblogy.sk
banner HP

Číta nás cez 130 tisíc ľudí | Autori | O Inet.sk | OZ IPV | Referáty | Reklama | RSS

Programujeme v jazyku C – cykly 1/2

8. 5. 2006, Programovanie, Miroslav Rolko, 6 komentárov

Volám sa Miroslav Rolko a pokúsim sa pokračovať v práci Michala Čižmára v seriáli Programujeme v jazyku C. Nadviažem na pôvodné časti, prípadne sa k nim vrátim a jemné ich doplním.

V hlavných dieloch sa budem držať pevnej osnovy, aby sme postupne napredovali. V tzv. vedľajších ukážem riešenie niektorých konkrétnych problémov (rozoberiem aj problémy čitateľov- ak budú zaujímavé a budem ich vedieť :-)

Nechcem Váš odradiť úvodnou teóriou o univerzálnom procedurálnom kompilačnom jazyku C vyššej úrovne, preto dnešný diel o tom nebude. V prípade Vášho záujmu to veľmi rád doplním. Treba sa len ozvať. Ako som pozeral predošlé časti, tak bolo spomenuté už niečo o typoch premenných, deklaráciách, podmienkach. Dnes si povieme niečo o cykloch.

Cykly Jazyk C rozoznáva tri druhy cyklov :   
  • cyklus FOR
  • cyklus DO-WHILE
  • cyklus WHILE

Cyklus FOR

Všeobecná schéma :
for( začiatok ; podmienka behu ; zmena )
{
    príkaz 1;
    príkaz 2;
    ...
    príkaz n;
}

začiatok - nastavíme počiatočnú hodnotu riadiacej premennej, napr. i = 0,
podmienka behu – cyklus pobeží kým je pravdivá.
zmena – ovplyvňuje hodnotu riadiacej premennej.

Čo to robí?
Dokáže to zopakovať príkazy príkaz 1 až príkaz n. A bude ich opakovať, kým je podmienka behu pravdivá.


Príklad 1 :
#include <stdio.h>
int main(void)
{
    int i;
    printf("n");                // aby sme mali pekny cisty riadok
    printf("Prvy cyklus: n");

    for(i = 0; i<= 10; i++)     // vyraz i++ je skrateny zapis i = i                                    + 1
    {
        printf("%d ",i);
    };

    printf("n");                // aby sme mali pekny cisty riadok
    printf("Druhy cyklus: n");

    for(i = 10 ; i >= 0; i--)   // i-- <=> i = i - 1
                                // tomu sa este budem venovat
    {
        printf("%d ",i);
    };

    getchar();
    return 0;
}

V cykloch sú použité i++ a i-- . ++ sa nazýva inkrementácia a -- dekrementácia. Teraz stačí vedieť, že ++ zväčší hodnotu i o 1 a -- zmenší hodnotu i o 1. Vyskúšajte nahradiť výraz i++ výrazom i = i + 1 a výraz i-- na i = i - 1. Experimentujte aj s i = i + 2 a pod.


Príklad 2:

#include <stdio.h>

int main(void)
{
    int i,j;                       //pritvrdime
    printf("n");
    for(j = 0 ; j <= 9; j++)
    {
        printf("nj = %d n",j);     // vnorime cyklus do cyklu :)
        for(i = 0; i <= 9; i++)
        {
            printf("%d ",i);
        };
    };
    getchar();
    return 0;
}

V príklade 2 sme vnorili cyklus do cyklu. To znamená, že každý cyklus sa vykoná 10-krát. Princíp je v tom, že cyklus s j „musí čakať“ na prebehnutie cyklu s i. Pozri výpis programu.


Neodporúčam!!!

for sa dá vytvoriť nekonečný cyklus v tvare :

for(;;)
{
    príkazy;
}

V programoch občas priveľmi nebezpečné. Hlavne, keď nevieme z cyklu „vyskočiť“ (aj to sa naučíme). Ešte som sa nestretol s algoritmom, ktorý by to výslovne vyžadoval. Ak sa s tým stretnem, dám vedieť.


Príklad 3:
#include<stdio.h>
int main(void)
{
    int i;
    for(i = 0; i<= 10;)
    {
        printf("n %d",i);
        i++;                 //toto je strasneeee
    }
    getchar();
    return 0;
}

V cykle for som vynechal tzv. zmenu a dal som ju priamo do tela. Odporúčam sa niečomu takému vyhnúť. Počas tvorby programu môžu vzniknúť rôzne chyby.

Napr. zabudnem napísať i++ ,čiže hodnota i ,riadiaca premenná , sa nebude vôbec meniť. Podmienka ukončenia cyklu bude vždy pravdivá. A bum, máme nekonečný cyklus.

Treba si dať pozor na zásahy do riadiacej premennej. Je to riziko ,ak jej hodnotu počas priebehu tela cyklu meníme a nepoznáme, aké hodnoty bude nadobúdať.


Príklad na štúdium:
#include <stdio.h>
int main(void)
{
    int i,j;
    for(j = 0; j<= 10;j++)
    {
        for(i = 0; i<= j ;i++)
        {
            printf("%d ",i);
        };
        printf("n");
    };
    getchar();
    return 0;
}

Toľko k môjmu prvému dielu. Spracoval som ho formou príkladov a vynechal som nejakú tvrdú teóriu. Aj tak ju polovica z nás preskakuje. Príklady som vytváral čo najľahšie, možno až priveľmi.

Otázky a pripomienky smelo píšte, a ak niečo nie je jasné, rád to vysvetlím podrobnejšie. Ja len dúfam, že sa Vám bude páčiť môj štýl vysvetľovania a písania. Uvítal by som Vašu konštruktívnu kritiku.

Do skompilovania v ďalšej časti!

Podobné články na Inet.sk

Diskusia k článku

Dátum Meno Predmet
Prejsť na diskusiu | Pridať komentár
9. 5. 2006 kyžňanský for
9. 5. 2006 Meo Re: for
10. 5. 2006 Michal Kyžňanský re:for
10. 5. 2006 Meo Re: re:for
14. 6. 2006 liptak Re: for
26. 12. 2006 aha Re: re:for

Vyhľadávanie

Platená reklama

Textová reklama

notebook.pda.sk
E-shop zameraný na predaj mobilných zariadení. Hlavnou ponukou sú notebooky značky Apple, DELL a príslušenstvo.

EuroPhoto : Bratislava Photo | Vienna Photo | Prague Photo | London Photo | Paris Photo
Croatia | Bratislava Property
PROMA nábytok: najväčšia výroba: kuchynské linky, kuchyne a kuchynský nábytok. Pracovné dosky, úchytky, grafický 3D dizajn.

MSkozmetika: internetový predaj parfémov, kozmetiky a bižutérie. Mega parfuméria na webe. Značková a luxusná kozmetika.

Newsletter


Inet.sk – Internetový denník, ISSN 1336-1899
Copyright 2002 – 2010 Inet.sk, s. r. o., Všetky práva vyhradené, Neprešlo jazykovou úpravou

Partneri:
123velkoformatovatlac.sk Aaavizitky.sk Bilancia skrývky BiznisHosting.sk CinemaView.sk Digitálne fotoaparáty Digitlac.sk Fotografie Grafika.sk HrajSa.sk Katalog Pozri.sk Kusi.sk Manga.sk Notebooky HP Predaj PC komponenty Reality Aaainfo.sk Reklama.sk Sladká kytica StiahniTo.sk Surf.sk Toshiba PC akcia Úvery Aaainfo.sk Zájazdy