Týden 5
Cyklus for
Cyklus for slouží především k pohodlnějšímu zápisu cyklů s předem známým počtem opakování. Příkaz cyklu umožňuje zapsat příkazy, které se provedou před prováděním cyklu, podmínku cyklu a příkazy, které se provedou po každém průchodu cyklem.
Následující příklad ukazuje sečtení čísel pomocí for cyklu:
// do sum se sectou cisla od 0 do N int sum = 0; for (int i = 0; i < N; i++) { sum += i; }
Závorka příkazu for je rozdělena středníky na tři části - (prikazy_pred ; podminka ; prikazy_po):
- prikazy_pred - provedou se přímo před cyklem
- podminka - vyhodnotí se před vstupem do těla cyklu, stejné jako u cyklu while
- prikazy_po - provedou se po každém průchodu cyklem
Základní (primitivní) datové typy II
Datové typy jazyka C jsou závislé na architektuře počítače, na které je program kompilován. Velikost datového typu v bytech je možné zjistit pomocí operátoru sizeof() - např. velikost typu int se zjistí jako sizeof(int).
Typy v jazyce C se dají rozdělit na tři kategorie: znaky, celočíselné a reálné.
Celočíselné datové typy jsou:
- short int - nebo jen short
- int
- long int - nebo jen long
- long long int - nebo jen long long
a platí pro ně sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long). Velikost typu int by měla být zvolena kompilátorem tak, aby na cílovém procesu byly matematické operace co nejefektivnější.
Všechny celočíselné datové typy mohou být buď se znaménkové nebo bez reprezentace znaménka, např. signed int nebo unsigned int. Pokud neuvedeme jinak jsou celočíselné typy znaménkové.
Minimální a maximální hodnoty, které lze celočíselnými typy reprezentovat jsou dostupné jako makra v hlavičkovém souboru limits.h - http://www.cplusplus.com/reference/clibrary/climits/, např.:
- INT_MIN
- INT_MAX
Řídící příkazy break, continue a goto
Příkazy break a continue se je možné užít k řízení cyklů. Příkaz break ukončí celý cyklus, kdežto příkaz continue ukončí momentální průchod cyklem a pokračuje na podmínku cyklu.
Příklad užití je zde:
int oddCount = 0; for (int i = 0; i < 10; i++) { // vyzkousej 10-krat int x; scanf("%d", &x); if (x < 0) { // odejdi z cyklu pokud bude x zaporne break; } else if (x % 2 == 0) { // x je sude, dalsi pokus continue; } // Spocitej vsechna kladna licha cisla oddCount++; }
Příkaz goto je možné užít k řízení programu kdekoliv. Důrazně doporučuji se užití příkazu goto vyhnout, program lze vždy napsat i jinak - pomocí větví a cyklů.