cool web a perfektni rs- Doporucuji

Sunday, September 30, 2007

Příkaz for

Jak je mozno ocekavat, je mnoho zpusobu, jak napsat program; uvedeme jinou variantu naseho programu pro konverzi teplot
main () /* tabulka prevodu Fahrenheit-Celsius/
{
int fahr
for (fahr = 0; fahr <= 300; fahr = fahr + 20)
printf("%4d %6.1f\n", fahr, (5.0/9.0) * (fahr - 32));
}

Vysledek bude stejny, ale program vypada jinak. Jednou z hlav- nich zmen je zmenseni poctu promennych. Jedina promenna, ktera zustala, je celociselna promenna f a h r /celociselna proto, abychom mohli ukazat, jak pracuje konverze %d v printf/. Dolni a horni mez a hodnota kroku step se objevuji jenom jako kons- tanty prikazu for, ktery je pro nas novinkou. Vyraz pro vypocet prevodu se nyni vyskytuje na miste tretiho argumentu funkce Posledni zmena je prikladem obecneho pravidla jazyka C; v kteremkoliv miste, kde se muze vyskytnout promenna, je mozne pouzit vyraz stejneho typu. Protoze treti argument funkce printf ma byt typu float, aby jej bylo mozno zobrazit konverzi %6.1f, tak na jeho pozici se muze pouzit vyraz v pohyblive radove carce. Prikaz f o r je podmineny prikaz, ktery je zobecnenim prika- zu w h i l e. Jestlize jej porovname s prikazem while, tak jeho cinnost by nam mela byt jasna. Sestava ze tri casti, ktere jsou od sebe oddeleny stredniky.
Prvni cast, iniciace
fahr = 0;
je provedena jednou na zacatku. Druha cast je podminka, ktera ridi cyklus
fahr <= 300;
Podminka je vyhodnocena; jestlize je pravdiva, tak prikazy tela cyklu for jsou vykonany /v nasem pripade je to pouze jedno vy- volani funkce printf/. Potom je vykonana treti cast prikazu for, reinicializace,
fahr = fahr + 20
a znovu je vyhodnocena podminka v druhe casti prikazu for. Cy- klus je ukoncen, jestlize je podminka nepravdiva. Stejne jako u prikazu while muze telo cyklu tvorit jeden nebo skupina pri- kazu, ktere jsou uvnitr slozenych zavorek. Inicializace a reinicializacce mohou byt jednoduche vyrazy. Je lhostejne, pouzijeme-li v programu prikaz for nebo while, ale vzdy se snazime volit tu variantu, ktera vypada jasneji. Prikaz for je vhodny obycejne v takovych prikladech, kdy inicializace a reinicializace jsou jednoduche, logicky svazane prikazy. Prikaz for je tomto pripade kompaktnejsi, protoze prikazy pro rizeni cyklu jsou zde pohromade. Ő.po 3
C v i c e n i 1-5. Modifikujte program pro konverzi teplot
tak aby, tiskl tabulku v opacnem poradi tj. od 300 stup.F
do 0 stup. F.

Labels:

Saturday, September 29, 2007

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.

Labels:

Friday, September 28, 2007

Prvni dve radky programu
/*tisk prevodni tabulky Fahrenheit - Celsius
pro f = 0,20,....., 300 */
jsou komentar, ktery v tomto pripade ve strucnosti vysvetluje cinnost programu. Libovolne znaky mezi /* a */ jsou prekladacem ignorovany. Komentare mohou a maji byt pouzivany pro zprehled- neni programu. Je dovoleno je pouzivat pro zprehledneni pro- gramu vsude tam, kde se jinak muze objevit mezera nebo novy ra- dek.
V jazyku C musi byt vsechny promenne deklarovany pred prv- nim pouzitim, obvykle na zacatku funkce pred prvnim vykonnym prikazem. Kdyz zapomenete nejake promenne deklarovat, prekla- dac to bude hlasit jako chybu. Deklarace sestava z urceni typu a seznamu promennych.
int lower, upper, step;
float fahr, celsius;

Typ i n t znamená, že všechny uvedené proměnné budou celočí- selné proměnné ; f l o a t znamená, že se jedná o proměnné s pohyblivou řádovou čárkou. Přesnost a rozsah obou typů je zá- vislý na použitém typů počítače. Napr. na počitači PDP-11 je int 16-ti bitové číslo se znamínkem a leží v rozsahu -32768 a +32767. Číslo typu f l o a t je 32 bitové, má 7 významových číslic a leží v rozsahu 10 E-38 do 10 E+38. V kapitole 2 je uveden rozsah pro ostatní vybrané typy počítaču. Další typy proměnných v jazyce C jsou napr.:

char znak - jeden byte
short krátke celé číslo
long dlouhe celé číslo
double číslo s pohyblivou čárkou a dvo-
jitou přesností

Wednesday, September 26, 2007

Vystup bude stejny jako v predeslem prikladu. Je treba si uvedomit, ze dvojice znaku \n reprezentuje pouze jeden znak; znak zmeny, (escape) oznaceny znakem \, umoznuje obecny a rozsiritelny mechanizmus pro reprezenta- ci tezko zobrazitelnych nebo neviditelnych znaku. Napr. \t je symbol pro tabelator, \b pro zpetny posun, \" pro uvozovky a \\ pro obracene lomitko samo.
C v i c e n i 1-2. Pokuste se zjistit co se stane, kdyz retezec znaku, ktery je argumentem funkce printf, obsahuje \x, kde x je nejaky znak, ktery jsme vyse neuvedli.
1.2. Proměnné a aritmetika

Nasledujici program tiskne prevodni tabulku mezi stupni Fahrenheita a stupni Celsia za pouziti vztahu C = (5/9) . (F - 32) 0 -17,8
20 -6.7
40 4.4
60 15.6
... ....
260 126.7
280 137.8
300 148.9

Program vypada takto:
/*tisk prevodni tabulky Fahrenheit - Celsius
pro f=0, 20, ..., 300*/
int lower, upper, step;
main ();
{
float fahr, celsius;
lower = 0; /* dolni mez tabulky teplot */Ő.po 3
upper = 300; /* horni mez */
step = 20; /* hodnota kroku */
fahr = lower;
while(fahr <= upper)
{
celsius = (5.0/9.0) * (fahr - 32.0);
printf ("%4.0f %6.1f\n",fahr,celsius);
fahr = fahr + step;
}
}

Labels:

Monday, September 24, 2007

Programova radka

printf("hello, world\n");
je volanim funkce, ktera se jmenuje printf a jedinym argumentem je retezec znaku "hello, world\n". Printf je knihovni funkce, ktera zobrazuje vystup na terminal /jestlize neni specifikovano jine medium/. V tomto pripade zob- razi retezec znaku, ktery je jejim argumentem. Souvisla rada libovolneho mnozstvi znaku vlozena do uvo- zovek "...." je nazyvana znakovy retezec nebo retezcova konstanta. V teto chvili budou znakove retezce pouzivany jako argumenty funkci jako je napr. funkce p r i n t f. Dvojice znaku \n v retezci je v jazyku C symbolem pro znak nove radky, ktery kdyz je nalezen, posune kurzor na levy okraj nove radky. Kdybychom znaky \n neuvedli /coz mu- zeme udelat jako pokus/, uvidime, ze vystup neni ukoncen pre- sunem na novou radku. Uvedeni dvojice znaku \n je jediny zpusob prechodu na novou radku. Kdyz budete zkouset neco po-Ő.po 12 dobneho jako
printf("hello, world
");

tak prekladac jazyka C bude hlasit chybu /chybejici prave uvo- zovky/. Funkce printf nikdy nevykonava presun na novou radku automa- ticky, proto pro vytvoreni pozadovaneho vystupu muze byt pouzi- to vicenasobne vyvolani funkce printf. Nas prvni program muze tedy vypadat takto
main()
{
printf ("hello,");
printf (" world");
printf ("\n");
}

Labels:

Saturday, September 22, 2007

Zaciname

Jediny zpusob, jak se naucit novy programovaci jazyk, je psat programy v tomto jazyku. Prvni program, ktery napiseme, je stejny pro vsechny jazyky:
Vytiskni slova
h e l l o , w o r l d

To je zakladni prekazka; k tomu, abychom ji prekonali, musime byt schopni nekde vytvorit text programu, uspesne ho prelozit, sestavit a spustit, a potom zkontrolovat, zda vytvoril pozado- vany vystup. Vse ostatni je snadne. Program pro vytisteni textu "hello, world" vypada v jazyku C takto: main ()
{
printf ("hello, world\n");
}

Jak nalozit s timto programem zalezi na tom, jaky system pouzivate. Napr. v operacnim systemu UNIX je treba vytvorit zdrojovy text programu do souboru, jehoz jmeno ma priponu ".c"Ő.po 3 /napr. hello.c/ prelozit ho pouzitim prikazu cc hello.c Pokud jste neco nepokazili, preklad probehne bez chyb a vytvori se soubor a.out, ktery je mozno spustit prikazem a.out Vystupem bude text
hello, world
Na jinych systemech budou ovsem platit jina pravidla a ty je treba konzultovat s mistnim odbornikem.
Spustte tento program na vasem systemu. Zkousejte vynechavat nektere jeho casti a pozorujte chybova hlaseni.
Nyni neco o programu samem. Program v jazyce C, at je jeho velikost jakakoliv, sestava vzdy z jedne nebo vice "funkci", ktere maji byt vykonany. Funkce v jazyce C jsou obdobne fun- kcim a podprogramum v jazyce FORTRAN nebo proceduram v jazy- ce PASCAL, PL/1 atd. V nasem pripade je takovou funkci m a i n. Obycejne muzeme davat funkci libovolne nazvy, avsak nazev main je specialni nazev - vas program zahajuje svoji cinnost vzdy na zacatku funkce main. To znamena, ze kazdy program musi obsa- hovat jednotku main. Main se obvykle odvolava na ostatni fun- kce; nektere jsou primo obsazeny v programu, nektere se pouzi- vaji z knihoven jiz drive vytvorenych funkci. Jednou z metod vzajemne komunikace mezi funkcemi je preda- vani dat argumenty. Zavorky nasledujici za nazvem funkce ohra- nicuji seznam argumentu. V nasem prikladu je main funkci, ktera nema parametry. To je znazorneno symboly ( ) - prazdnym seznamem argumentu. Slozene zavorky { } zdruzuji prikazy, ktere vytvareji telo funkce. Jsou analogicke prikazum DO - END v ja- zyku PL/1 nebo prikazum begin - end v ALGOLU, PASCALU atd. Funkce je vyvolavana nazvem, za kterym nasleduje seznam argu- metu v kulatych zavorkach. Nepouziva se prikaz CALL jako ve FORTRANU nebo v PL/1. Zavorky musi byt uvedeny, i kdyz neob- sahuji seznam argumentu.

Friday, September 21, 2007

Zacneme strucnym uvodem

do jazyka C. Nasim cilem je ukazat zakladni prvky jazyka na skutecnych programech s tim, ze nebu- dou vynechavany detaily, formalni pravidla ani vyjimky. V tom- to okamziku se nesnazime o kompletnost. Snazime se umoznit cte- narum psat uzitecne programy tak rychle, jak jen je mozne. Soustredime se na tyto zakladni pojmy: promenne a konstanty, aritmetika, vetveni programu, funkce a zaklady vstupu a vystu- pu. Umyslne v teto kapitole vynechavame vlastnosti jazyka C, ktere jsou dulezite pro psani vetsich programu. Jedna se o pointry, struktury, vetsinu z bohateho rejstriku operatoru ja- zyka C, vetsinu prikazu pro podminene vetveni programu a dalsi podrobnosti. Tento pristup ma ovsem sve nevyhody. Zvlastnosti je to, ze kompletni popis urcite vlastnosti jazyka neni na jednom miste. Vzhledem k tomu, ze neni mozne pouzivat od zacatku vsechny moz- nosti jazyka C, priklady nejsou tak strucne a elegantni jak by mohly byt. Snazili jsme se tuto nevyhodu minimalizovat, ale presto na to ctenare upozornujeme. Dalsi nevyhodou je to, ze se budeme v nekolika clancich opa- kovat. Myslime si vsak, ze opakovani vam spise pomuze v uceni, nez ze vas bude obtezovat. Zkuseni programatori by meli byt v kazdem pripade schopni si z teto kapitoly vybrat to, co potrebuji. Zacatecnikum dopo- rucujeme, aby si studium teto kapitoly dopnili napsanim ma- lych programu, ktere jsou modifikaci programu uvedenych.

Labels:

Wednesday, September 12, 2007

Ucelem je zacit co nejrychleji, protoze pevne verime tomu, ze novy jazyk se nejlepe naucime, budeme-li v nem psat programy. Predpokladame zakladni znalost programovani. Neni zde vysvetlovano, co je to pocitac, prekladac ani co znamena vyraz n = n + 1. Prestoze jsme se pokouseli ukazat uzitecnou techniku programovani vsude, kde to jen bylo mozne, tak si nemyslime, ze tato kniha bude priruckou datovych struktur a algoritmu. Vzdy, kdyz jsme si mohli vybrat, jsme se soustredili na jazyk. V kapitolach 2 az 6 jsou probrany detailneji vlastnosti jazyka C. Duraz je stale kladen na tvorbu kompletnich uzitec- nych programu. Kapitola 2 pojednava o zakladnich typech dat, operatoru a vyrazu. V kapitole 3 se hovori o rizeni behu: if-else, while, for atd. Kapitola 4 popisuje funkce a struk- turu programu - externi promenne, oblast platnosti promennych atd. V kapitole 5 je diskutovano pouziti pointru a aritmetic- kych adres. Kapitola 6 obsahuje popis struktur a unionu. Kapitola 7 popisuje standardni knihovnu vstupu a vystupu, ktera zajistuje styk s operacnim systemem. Tato kniha je do- davana na vsechny typy pocitacu, kde pracuje jazyk C, takze programy mohou byt snadno prevadeny z jednoho systemu do dru- heho temer beze zmeny.

Labels:

Tuesday, September 11, 2007

Promenne

Promenne mohou byt interni dane funkci, externi a zname jen v jednom zdrojovem souboru a nebo uplne globalni. Interni vnitrni promenne mohou byt automaticke nebo staticke. Automaticke promenne mohou byt ukladany pro zvyseni efektivity do registru pocitace, ale prikaz register je pouze pokyn pro prekladac a ne primo pro pocitacovy registr. Jazyk C neni tak jednoznacny jazyk ve smyslu Pascalu nebo Algolu 68. Umoznuje datove verze, ale neprovadi automaticke konverze dat s velkou prehlizivosti jazyka PL/1. Dosud vytvo- rene prekladace nekontroluji pri vypoctu meze poli, typy argu- mentu atd. Pro situace, kdy je nezbytne kontrolovat typy dat, se pouzi- va specialni verze prekladace. Tento program se nazyva LINT. LINT negeneruje kod, ale misto toho prisne kontroluje vse, co je mozne kontrolovat pri behu a zavadeni programu. Nalezne Ő.po 3 nesouhlas typu, nekonzistentni pouziti argumentu, nepouzite nebo ocividne neinicializovane promenne atd. Program, ktery projde pres LINT si muze uzivat /s nekolika vyjimkami/ svobodu hlaseni chyb tak jako napr. programy v Algolu 68. O dalsich vlastnostech programu LINT se zminime, az k tomu bude prile- zitost. Jazyk C ma stejne jako ostatni jazyky svoje nedostatky. Nektere operatory maji nespravnou prioritu, nektera cast syn- taxe by mohla byt lepsi; existuje mnoho verzi jazyka, lisicich se od sebe. Nicmene se ukazalo, ze jazyk C je velice efektivni a vyrazny pro celou skalu aplikaci. Kniha je organizovana nasledujicim zpusobem: kapitola 1 tvori uvod do vyuky stredni partie jazyka C.

Labels:

Sunday, September 09, 2007

c

Rovnez mohou byt napsany v jazyku C. Programy v jazyku C jsou dostatecne efektivni a neni treba misto nich psat programy v assembleru. Jednim z takovych prikladu je operacni system UNIX, ktery je temer cely napsan v jazyku C. Navic veskery aplikacni software sys- tému UNIX je psán v jazyku C. Prevažná většina uživatelu syste- mu UNIX (včetně autoru teto knihy) nezná assembler počitačeŐ.po 12 PDP - 11. Prestože jazyk C pracuje na mnoha počitačich, je nezavislý na architekture daného počitače, a tak je možné s trochou peče psát "přenositelné" programy. V našem oddělení je software, který je vyvinut pod systémem UNIX, přenašen na počitače HONEYWELL, IBM a Interdata systém. Ve skutečnosti jsou prekla- dače a prostředky jazyka C na těchto čtyrech pocitacich pod- statne kompatibilnejsi nez napr. ANSI standart FORTRAN. Pro programatory, kteri pracuji s jinymi jazyky, muze byt uzitecne pro srovnani se dozvedet o historickych, technickych a filozo- fickych aspektech jazyka C. Vetsina nejdulezitejsich myslenek jazyka C pochazi z dosti stareho, ale staleho ziveho jazyka BCPL, ktery byl vyvinut Martinem Richardsem. Vliv BCPL na C se uskutecnil neprimo jazy- kem B, ktery napsal Ken Thompson v r. 1970 pro prvni system UNIX na PDP-11. Prestoze jazyk C ma s BCPL mnoho spolecnych znaku, neni v zadnem pripade jeho kopii. Jazyky BCPL a B jsou jazyky bez "typu". Jediny typ dat je slovo pocitace a pristup k ostatnim druhum je pomoci specialnich operatoru nebo funkci. V jazyku C jsou zakladnimi datovymi typy znaky, cela cisla ruznych delek a cisla s pohyblivou desetinou carkou. Navic je zde hierarchie odvozenych datovych typu vytvorenych pointry, poli, strukturami, uniony a funkcemi. C umoznuje zak- ladni konstrukce pro rizeni behu, pozadovane pro dobre struk- turovane programy: shlukovani prikazu, rozhodovani /if/, cykly s testem na ukonceni nahore /while,for/ nebo dole /do/, klic vyberu /switch/. Vse jiz bylo implementovano v jazyku BCPL, ale s ponekud jinou syntaxi; BCPL dlouha leta ocekaval prichod "strukturovaneho programovani". Jazyk C umoznuje pouzivani pointru a aritmeticke adresy. Argumenty funkci jsou pri predani kopirovany a neni mozne, aby volana funkce zmenila hodnotu aktualniho parametru ve volajici funkci. Pokud pozadujeme "predavani adresou", muze byt predan pointer, a volana funkce muze zmenit objekt, na ktery pointer ukazuje. Pole jsou predavana adresou pocatku pole. Funkce mohou byt volany rekurzivne a lokalni promenne jsou prevazne "automaticke", tj. jsou vytvoreny znovu pri kaz- dem vyvolani. Definice funkci nemohou byt vkladany do sebe, ale promenne mohou byt deklarovany blokovou strukturou. Funkce jazyka C mohou byt prekladany samostatne.

Labels:

C

je univerzalni programovaci jazyk. Je uzce spjat s opera- cnim systemem UNIX, protoze byl vyvinut v tomto systemu a take operacni system UNIX a jeho programove vybaveni je napsano v jazyku C. Jazyk C neni vsak vazan k urcitemu operacnimu systemu nebo urcitemu typu pocitace, prestoze je nazyvan "systemovym programovacim jazykem" a je pouzitelny pro psani operacnich systemu. Je stejne dobre pouzitelny i pro tvoreni programu numerickeho charakteru, programu pro zpracovani textu a hroma- dnych dat. Jazyk C je jazyk relativne nizke urovne. Tento jeho rys ne- snizuje vsak jeho vyznam; je tim receno, ze C pracuje se stej- nou tridou objektu jako vetsina pocitacu tj. se znaky, cisly a adresami. To muze byt kombinovano s obvyklymi aritmetickymi a logickymi operatory implementovanymi na konkretnim poci- taci. Jazyk C nema operace zpracovavajici primo slozene objekty jako jsou retezce znaku, seznamy nebo pole uvazovane jako ce- lek. Neni zde napr. analogie s operacemi jazyka PL/1, ktere zpracovavaji cela pole znaku. Jazyk umoznuje pouze staticke definice obsazeni pameti, neni zde moznost dynamickeho obsazeni pameti a obsazeni volnych mist jako v jazyku ALGOL 68. Konecne, C nema vybaveni pro vstupni a vystupni operace. Nema prikazy READ a WRITE a primy pristup k souborum. Vsechny tyto mecha- nizmy zname z vyssich programovacich jazyku musi byt vykonany explicitne volanim funkci. Jazyk C umoznuje pouze prime jednoduche rizeni behu progra- mu: testy, cykly podprogramy. V tomto jazyce neni mozne uvazo- vat o multiprogramovani, paralelnich operacich nebo synchroni- zaci. Presto,ze nepritomnost techto moznosti muze vypadat jako vazny nedostatek /"To mi chcete rici, ze musim zavolat funkci, kdyz chci porovnat dva retezce znaku?"/, tak udrzeni jazyka na nizsi urovni prinasi opravdu znacne vyhody. Protoze jazyk C je relativne maly, muze byt popsan na male plose a je snadne se mu naucit. Prekladac jazyka C muze proto byt jednoduchy a kompaktni a muze byt snadno vytvoren. Pouzitim soucasnych pos- tupu muze tvorba prekladace pro novy pocitac trvat pouze neko- lik mesicu, protoze 80% prekladace je shodnych jiz s existuji- cimi prekladaci. To je umozneno vysokym stupnem prenositelnosti jazyka. Protoze typy dat a struktury, jake jsou v jazyku C pou- zivany, jsou zajistovany vetsinou pocitacu, tak implementace knihoven je jednoducha. Napr. na PDP 11 obsahuje pouze pod- programy pro nasobeni a deleni 32-bitovych slov a podprogramy pro volani funkci a navrat z nich. Ovsem kazda implementace pocita s kompaktni knihovnou pro vstupy a vystupy, obsluhovani retezcu a operace s pameti. Protoze jsou vsak volany pouze explicitne, mohou byt pripojeny jen kdyz je treba.

Thursday, September 06, 2007

C

je univerzalni programovací jazyk, který charakterizují usporni výrazy a moderní řízení běhu struktur údajové bohatství operátoru. C není jazyk na vysoké úrovni ani není "velky není specializovaţá na použití pouze v určité oblasti.Táto obecnost jazyka C je účine vhodnější ß efektivnější při mnoha úloháchjiné "mocnější jazyky. Autorem jazyka je Denis Ritchie, který původně koncipoval tento jazyk pro operační systém UNIX na počitači DEC PDP-11. Operačni system, prekladač jazyka C a vlastně vsechny aplikační programy systemu UNIX (i veškeré programové vybaveni připravené pro tuto knihu), jsou napsány v jazyku C. Učinné překladače existují pro další počítače, napr. IBM System 1370, Honeywell 6000 a Interdata 8/32. Jazyk C není svázan s určitým konstruk- čním řešením počitaču. Tato kniha je koncipovana tak, aby pomohla naučit se čtenaři programovat v jazyku C. Obsahuje učebni úvod, umožnujici uziva- telum co nejrychlejsi zacatek, samostatne kapitoly tykajici se nejdulezitejsich rysu jazyka a prehled literatury. Uspech pri studiu bude zajisten zejmena ctenim, psanim a opakovanim uvede- nych prikladu, nez pouhym ucenim zakonitosti. Vsechny uvedene priklady tvori uplne, skutecne programy /nikoliv pouze casti/. Jsou spojeny s pruvodnim textem a jsou napsany ve vhodne poci- tacove forme. Krome ukazek, jak ucinne tento jazyk pouzivat, jsme se pokusili na vhodnych mistech ukazat uzitecne algoritmy a vhodny programovaci styl. Tato kniha neni uvodni programovaci priruckou, presto i no- vacek bude po prostudovani schopny se v jazyku C vyznat a orientovat, zvlaste kdyz mu pomuze zkusenejsi kolega. V nasich zkusenostech se jazyk C projevil jako prijemny, vy- razny a mnohostranny jazyk se sirokym pouzitim v ruznych pro- blemech. Snadno se uci a cim vice porostou vase zkusenosti s nim, tim lepe vam bude slouzit. Doufame, ze kniha vam pomuze uzivat C dobre a prospesne.

Labels:

Wednesday, September 05, 2007

Upravte si instalaci Windows XP

Pokud často instalujete Windows XP na svůj, či jiné počítače, tak jistě uvítáte velkého pomocníka ve vytváření upravených Windows XP. Nechcete používat SP2, ale zároveň chcete mít zabezpečený počítač hned při prvním spuštění? Nebo vám vadí některé části systému a chtěli byste je odstranit přímo z instalace? Tak na tyto a spoustu dalších otázek zde naleznete odpověď. Dále se pak podíváme na zoubek jednomu velmi podařenému pluginu do TotalCommanderu, který vám umožní vypalovat přímo v jeho přívětivém prostředí.

Sunday, September 02, 2007

Vlastní specifické řešení

na úrovni fyzické vrstvy vyžadují také některé novější přenosové technologie a prostředky. Fyzickou vrstvu proto pokrývají i standardy resp. doporučení, které použití těchto prostředků resp. technologií definují, například:
• pro optické přenosy doporučení ISO 9314, které definujestandard FDDI (Fiber Distributed Data Interface),
pro sítě ISDN doporučení CCITT I.430, (které se týká výhradně fyzické vrstvy

Přehled standardů IEEE 802.3

Typ Max. přenosová rychlost Přenosové médium Topologie sítě Druh přenosu Max. délka jednoho segmentu
10BASE5 10 Mbit/sekundu "tlustý" koaxiální kabel sběrnice v základním pásmu do 500 m
10BASE2 10 Mbit/sekundu "tenký" koaxiální kabel sběrnice v základním pásmu do 200 m
10BROAD36 10 Mbit/sekundu koaxiální kabel 75 Ohmů sběrnice v přeneseném pásmu do 3600 m
1BASE5 1 Mbit/sekundu kroucená dvoulinka hvězda v základním pásmu do 500 m
10BASE-T 10 Mbit/sekundu kroucená dvoulinka hvězda v základním pásmu do 100 m
10BASE-F 10 Mbit/sekundu optická vlákna hvězda

Saturday, September 01, 2007

Fyzickou vrstvu

pokrývají také standardy řady 802, pocházející od sdružení IEEE, které jsou určené pro lokální sítě (a my se jimi samozřejmě budeme zabývat podrobněji). Nejzajímavější je z tohoto pohledu zřejmě standard IEEE 802.3 pro sběrnicové lokální sítě s přístupovou metodou CSMA/CD (označované poněkud nepřesně jako sítě typu Ethernet). Tento standard totiž ve své původní verzi (z roku 1985) předpokládal pouze použití tzv. tlustého koaxiálního kabelu (Thick Ethernet, viz 19. díl našeho seriálu). Poměrně brzy však bylo přijato několik doplňků standardu IEEE 802.3, které umožnily využít i jiná přenosová média - od tzv. tenkého Ethernetu, přes koaxiální kabel s přenosem v přeloženém pásmu, až po běžnou kroucenou dvoulinku a optická vlákna. Jednotlivé doplňkové standardy (včetně původního) pak dostaly i výstižná označení, která shrnuje tabulka 28.2. Obdobný vývoj, jako u IEEE 802.3, lze pozorovat i u ostatním standardů řady 802.