Rozsah techto typu zavisi na pouzitem typu pocitace. Podrob- nosti jsou uvedeny v kapitole 2. Zakladni typy jsou rovnez pole, struktury, uniony, ukazatele na ne, a funkce, ktere s ni- mi pracuji. Se vsemi temito typy se postupne v textu shledame. Skutecny vypocet v programu pro vypocet prevodni ta- bulky mezi stupni Fahrenheita a stupni Celsia zaciname prirazenim
lower = 0;
upper = 300 ;
step = 20 ;Ő.po 12 fahr = lower ;
ktere nastavi pocatecni hodnoty promennych. Jednotlive pri- kazy jsou oddeleny strednikem. Protoze kazdy radek tabulky je pocitan ze stejneho vy- razu, muzeme pouzit cyklus, ktery je definovan prikazem w h i l e :
while (fahr <= upper)
{
...
}
Podminka v kulatych zavorkach je vyhodnocena. Jestlize je pravdiva /tj. promenna fahr je mensi nebo rovna pro- menne upper/, telo cyklu /tj. prikazy ohranicene slo- zenymi zavorkami { a }/ je vykonano. Potom je podminka znovu vyhodnocena a jestlize je opet pravdiva, telo cy- klu je opet vykonano. Jestlize je podminka nepravdiva /fahr je vetsi nez upper/ cyklus je ukoncen. Protoze jiz nejsou v nasem programu zadne prikazy, tak je pro- gram ukoncen. Telo prikazu w h i l e muze byt tvoreno jednim ne- bo vice prikazy vlozenymi do slozenych zavorek, jako je tomu v nasem programu, nebo jednim prikazem bez sloze- nych zavorek, napr.
while (i < j)
i = 2 * i;
V obou prikladech prikazy, ktere jsou podmineny prikazem
while, zacinaji jednim tabelatorem, takze je mozne na prv- ni pohled urcit, ktere prikazy jsou uvnitr tela cyklu. "Zubova" struktura textu programu zduraznuje logickou strukturu programu. Prestoze v jazyku C nezalezi prilis na pozici prikazu v textu, je vhodne zduraznovat logic- kou strukturu a uzivat mezery, abychom zduraznili clene- ni programu. Doporucujeme psat pouze jeden prikaz na radku a nechavat mezery okolo operatoru. Poloha zavorek neni jiz tak dulezita; my jsme si vybrali jeden z mnoha popularnich zpusobu. Vyberte si i vy svuj zpusob, ktery vam vyhovuje, a ten pak stale pouzivejte. Vetsina cinnosti naseho programu je vykonana v tele smycky while. Teplota ve stupnich Celsia je vypocitana a prirazena promenne celsius prikazem
celsius = (5.0/9.0) * (fahr - 32.0);
Duvod pro pouziti 5.0/9.0 misto jednodussiho 5/9 je ten, ze v jazyku C, stejne v jako mnoha dalsich jazycich, je vysledek celociselneho deleni o r e z a n , takze dese- tinna cast je ztracena. Proto vysledek operace 5/9 je nula a vsechny teploty by byly take nula. Desetinna tec- ka v konstante indikuje, ze se jedna o cislo s pohyb- livou radovou carkou, a proto 5.0/9.0 = 0.555..., coz je to, co jsme potrebovali.Ő.po 12 Rovnez piseme 32.0 misto 32, prestoze fahr je typu float a 32 by bylo automaticky zkonvertovano na float /na 32.0/ pred odecitanim. Je to vlastne jen otazka stylu, presto je vsak lepsi psat konstanty typu float s dese- tinnou teckou i kdyz maji celou hodnotu. Je tim zduraz- nen jejich typ i pro ctenare programu a zajistuje se i stejne chapani veci prekladacem. Podrobna pravidla pro to, zda budou celociselne kon- stanty konvertovany na typ float jsou uvedeny v kapitole 2. Nyni si vsimneme, ze prirazeni
fahr = lower;
a podminka
while (fahr <= upper)
funguje tak, jak ocekavame, tj. ze promenne typu i n t jsou konvertovany na typ f l o a t pred uskutecenim operaci. Tento priklad take podrobneji ukazuje, jak pracuje funkce printf. printf je vlastne obecne pouzitelna funkce pro formatovany vystup. Podrobne bude popsana v kapitole 7. Jejim prvnim argumentem je retezec znaku, ktery ma byt zobrazen a znak % urcuje, kam maji byt dalsi argumenty /druhy, treti.../ umisteny a jakym zpusobem maji byt tis- teny. Napr. v prikazu:
printf ("%4.0f %6.1f\n" , fahr, celsius);
specifikace %4.0f znamena, ze cislo typu float ma byt zobrazeno s delkou ctyr znaku a nema mit desetinnou cast. %6.1f urcuje, ze dalsi cislo bude v delce 6 znaku s jednou cislici za desetinnou teckou: tato specifikace je obdobou formatove specifikace f6.1 ve FORTRANU nebo specifikace f(6,1) v jazyku PL/1. Nektere casti specifikace nemusi byt uvedeny, napr. %6f urcuje, ze cislo ma byt alespon 6 znaku dlouhe; %.2f pozaduje dve mista za desetinnou teckou a cel- kovy pocet znaku neni omezen: %f specifikuje pouze tisk cisla typu float. Printf rovnez rozpoznava %d pro desetinne cele cis- lo, %o pro oktalovou reprezentaci, %x pro hexadecimalni repre- zentaci, %c pro znak, %s pro retezec znaku a %% pro % samo. Kazdy znak % v prvnim argumentu funkce printf je spojen jen s odpovidajici druhym, tretim,... argumentem. Specifikace musi byt presne popsana cisly a typem, jinak dava program nes- myslne vysledky. Mimochodem funkce p r i n t f neni casti jazyka C. Sam ja- zyk C nema definovane operace vstupu nebo vystupu. Funkce printf neni obestrena nejakymi kouzly, je to jen uzitecna funk- ce, ktera je casti standartni knihovny funkci jazyka C. Abychom se mohli soustredit pouze na jazyk C nebudeme az do kapitoly 7 mnoho uvadet o vstupne-vystupnich operacich. Odlozime take do te doby pojednani o formatovanem vstupu. Kdyz budete chtit za- davat cisla jako vstup, prectete si o funkci s c a n f v kap. 7 odstavec 7.4. Scanf je funkce obdobna jako printf, az nato, ze cte vstup misto psani vystupu.
lower = 0;
upper = 300 ;
step = 20 ;Ő.po 12 fahr = lower ;
ktere nastavi pocatecni hodnoty promennych. Jednotlive pri- kazy jsou oddeleny strednikem. Protoze kazdy radek tabulky je pocitan ze stejneho vy- razu, muzeme pouzit cyklus, ktery je definovan prikazem w h i l e :
while (fahr <= upper)
{
...
}
Podminka v kulatych zavorkach je vyhodnocena. Jestlize je pravdiva /tj. promenna fahr je mensi nebo rovna pro- menne upper/, telo cyklu /tj. prikazy ohranicene slo- zenymi zavorkami { a }/ je vykonano. Potom je podminka znovu vyhodnocena a jestlize je opet pravdiva, telo cy- klu je opet vykonano. Jestlize je podminka nepravdiva /fahr je vetsi nez upper/ cyklus je ukoncen. Protoze jiz nejsou v nasem programu zadne prikazy, tak je pro- gram ukoncen. Telo prikazu w h i l e muze byt tvoreno jednim ne- bo vice prikazy vlozenymi do slozenych zavorek, jako je tomu v nasem programu, nebo jednim prikazem bez sloze- nych zavorek, napr.
while (i < j)
i = 2 * i;
V obou prikladech prikazy, ktere jsou podmineny prikazem
while, zacinaji jednim tabelatorem, takze je mozne na prv- ni pohled urcit, ktere prikazy jsou uvnitr tela cyklu. "Zubova" struktura textu programu zduraznuje logickou strukturu programu. Prestoze v jazyku C nezalezi prilis na pozici prikazu v textu, je vhodne zduraznovat logic- kou strukturu a uzivat mezery, abychom zduraznili clene- ni programu. Doporucujeme psat pouze jeden prikaz na radku a nechavat mezery okolo operatoru. Poloha zavorek neni jiz tak dulezita; my jsme si vybrali jeden z mnoha popularnich zpusobu. Vyberte si i vy svuj zpusob, ktery vam vyhovuje, a ten pak stale pouzivejte. Vetsina cinnosti naseho programu je vykonana v tele smycky while. Teplota ve stupnich Celsia je vypocitana a prirazena promenne celsius prikazem
celsius = (5.0/9.0) * (fahr - 32.0);
Duvod pro pouziti 5.0/9.0 misto jednodussiho 5/9 je ten, ze v jazyku C, stejne v jako mnoha dalsich jazycich, je vysledek celociselneho deleni o r e z a n , takze dese- tinna cast je ztracena. Proto vysledek operace 5/9 je nula a vsechny teploty by byly take nula. Desetinna tec- ka v konstante indikuje, ze se jedna o cislo s pohyb- livou radovou carkou, a proto 5.0/9.0 = 0.555..., coz je to, co jsme potrebovali.Ő.po 12 Rovnez piseme 32.0 misto 32, prestoze fahr je typu float a 32 by bylo automaticky zkonvertovano na float /na 32.0/ pred odecitanim. Je to vlastne jen otazka stylu, presto je vsak lepsi psat konstanty typu float s dese- tinnou teckou i kdyz maji celou hodnotu. Je tim zduraz- nen jejich typ i pro ctenare programu a zajistuje se i stejne chapani veci prekladacem. Podrobna pravidla pro to, zda budou celociselne kon- stanty konvertovany na typ float jsou uvedeny v kapitole 2. Nyni si vsimneme, ze prirazeni
fahr = lower;
a podminka
while (fahr <= upper)
funguje tak, jak ocekavame, tj. ze promenne typu i n t jsou konvertovany na typ f l o a t pred uskutecenim operaci. Tento priklad take podrobneji ukazuje, jak pracuje funkce printf. printf je vlastne obecne pouzitelna funkce pro formatovany vystup. Podrobne bude popsana v kapitole 7. Jejim prvnim argumentem je retezec znaku, ktery ma byt zobrazen a znak % urcuje, kam maji byt dalsi argumenty /druhy, treti.../ umisteny a jakym zpusobem maji byt tis- teny. Napr. v prikazu:
printf ("%4.0f %6.1f\n" , fahr, celsius);
specifikace %4.0f znamena, ze cislo typu float ma byt zobrazeno s delkou ctyr znaku a nema mit desetinnou cast. %6.1f urcuje, ze dalsi cislo bude v delce 6 znaku s jednou cislici za desetinnou teckou: tato specifikace je obdobou formatove specifikace f6.1 ve FORTRANU nebo specifikace f(6,1) v jazyku PL/1. Nektere casti specifikace nemusi byt uvedeny, napr. %6f urcuje, ze cislo ma byt alespon 6 znaku dlouhe; %.2f pozaduje dve mista za desetinnou teckou a cel- kovy pocet znaku neni omezen: %f specifikuje pouze tisk cisla typu float. Printf rovnez rozpoznava %d pro desetinne cele cis- lo, %o pro oktalovou reprezentaci, %x pro hexadecimalni repre- zentaci, %c pro znak, %s pro retezec znaku a %% pro % samo. Kazdy znak % v prvnim argumentu funkce printf je spojen jen s odpovidajici druhym, tretim,... argumentem. Specifikace musi byt presne popsana cisly a typem, jinak dava program nes- myslne vysledky. Mimochodem funkce p r i n t f neni casti jazyka C. Sam ja- zyk C nema definovane operace vstupu nebo vystupu. Funkce printf neni obestrena nejakymi kouzly, je to jen uzitecna funk- ce, ktera je casti standartni knihovny funkci jazyka C. Abychom se mohli soustredit pouze na jazyk C nebudeme az do kapitoly 7 mnoho uvadet o vstupne-vystupnich operacich. Odlozime take do te doby pojednani o formatovanem vstupu. Kdyz budete chtit za- davat cisla jako vstup, prectete si o funkci s c a n f v kap. 7 odstavec 7.4. Scanf je funkce obdobna jako printf, az nato, ze cte vstup misto psani vystupu.
Labels: c
<< Home