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!!! S
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!