Tretí diel seriálu Programujeme v jazyku C

Michal Čižmár  /  29. 03. 2003, 00:00

Po dlhšom čase pokračujeme v našom seriály o programovaní. Keďže som od Vás nedostal žiadne e-maily, že by ste niečomu nerozumeli, vyzerá to tak, že spôsob vysvetľovania, ktorý som použil je absolútne jasný (dúfam, že je to naozaj tak...). V tomto diely si povieme niečo o štruktúre zdrojového. Bude toho trochu viac, pretože neviem kedy si zas nájdem čas na ďalší diel.

1.) Ak chcete mať profesionálne zdrojové texty musíte na úplný začiatok napísať do komentára , o čom program je, kto ho napísal, kedy, + poznámky. Aby ste z toho mali aj vy niečo, keď sa k tomu vrátite neskôr, alebo keď na programe spolupracujete s kolegom.( alebo kolegyňou; ak poznáte ženu programátorku na Slovenku napíšte, či nejaké existujú :-)
Samozrejme je tu príklad( všimnite si ako sa píšu komentáre /* text */ ).

/* Program: MATRIX *
* Sluzi na lacnejsie pripojenie..... *
* Autor: Agent Smith (prezivka AI) *
* Datum: 2003±1000 *
*/

2.) Na začiatku programu väčšinou musíte pribaliť ku svojmu programu už vyrobené funkcie dodávané s prostredím v ktorom pracujete, alebo vyrobené niekým iným. Urobíte to príkazom

#include <Meno_knižnice>

Najčastejšie budete potrebovať knižnice stdio.h a conio.h, ktorá obsahuje základné vstupno výstupne funkcie pre výmenu dát. Ako napr. funkcia printf, s ktorou sme sa stretli v minulom dieli.
Bolo by zbytočné vypisovať , ktoré funkcie sa nachádzajú v ktorej knižnici. Sami si to môžete zistiť v nápovede prostredia, v ktorom programujete.
Napr. pod Dos Borland C stačí prísť s kurzorom na začiatok napísanej funkcie a stlačiť ctrl-F1 a zobrazí sa Vám nápoveda ku konkrétnemu príkazu a tam máte aj napísané aké knižnice sú k tomu potrebné. Niekedy ich býva aj viac ako jedna( v prípade, že jedna knižnica využíva ešte príkazy inej knižnice).
V tejto časti zdrojového textu sa musia písať ešte niektoré príkazy. Sú to iné príkazy pre kompilátor ako #include, ktoré mu hovoria, čo má robiť ešte pred samotnou kompiláciou. Ale mi ich zatiaľ nepotrebujeme.

3.) Pretože jazyk C je založený na volaní funkcií, musí obsahovať jednu základnú funkcia, ktorá sa volá vždy ako prvá. je to

funkcia main()

Na tejto funkcii si vysvetlíme, čo musí obsahovať každá funkcia, ktorú si sami vytvoríte.
Povedzme si, čo to vlastne funkcia je. Z matiky poznáte takýto zápis y=f(x) . Kde x je číslo, ktoré do funkcie vkladáte( vstupná premenná). V jej vnútri sa toto číslo spracuje a výstupná hodnota je číslo y.
Napr funkcia f: y=x+1. Vložíte číslo 1 a „vypadne“ Vám číslo 2. Na tomto princípe sú založené aj funkcie v C.

Majú nasledujúci tvar:

Typ_výstupnej_premennej Meno_funkcie (Vstupné premenné a ich typ)
{

/* jadro funkcie kde sa spracovávajú vstupné premenné */

return ( výstupná premenná);
}

Ak nechcete aby mala funkcia nejaké vstupné alebo výstupné hodnoty tak za typ premennej napíšete:

void

To už ale nie je funkcia ale PROCEDÚRA. Tá napr. napíše niečo na obrazovku ale nevracia nijaké hodnoty. Procedúry sa používajú na ohraničenie určitej skupiny príkazov, ktoré sa často vyskytujú v programe. Takto si to zjednodušíte.
Toto je ale lán malý základ ktorý Vám nestačí na vytvorenie funkcií zo všetkými fintami, ktoré sa tam dajú použiť. Podrobne sa budeme venovať funkciám a procedúram v niektorom z ďalších dielov.

Zatiaľ používajme takýto spôsob funkcie main()

int main(void)
{


return 0;
}

Vidíte, že funkcii main v tomto prípade nevkladáte žiadne hodnoty. Teda nie rovno pri štarte programu. Možno že poznáte takýto spôsob zadávania údajov programu v príkazov riadku rovno pri štarte :
arj.exe a –v dokumet.txt doc.arj . V tomto prípade sú znaky za názvom programu vstupné hodnoty pre funkciu main(). Keď budeme vedieť pracovať s poliami(matematickými) tak si ukážeme ako sa to robí.
Na konci vidíte príkaz return 0; Teda vráti ako výsledok svojej činnosti číslo 0. Ale komu to vráti keď main() je hlavná funkcia? Odpoveď je: Operačnému systému. Nula znamená pre operačný systém, že všetko prebehlo v poriadku.

4.) Pre začatím písania funkcií, musíte ich ešte deklarovať. To znamená, že poviete prekladaču, čo môže čakať za funkcie, aké budú mať parametre ale nič viac. POZOR: tu nedeklarujte funkciu main().Môžem Vám to len odporúčať robiť to takto. Funkcie nemusíte deklarovať ak ich uvádzate až za telom funkcie main(). Ale potom sa funkcie nemôžu volať medzi sebou navzájom.

5.) Vo vnútri funkcii main( a aj iných) začíname deklaráciou premenných. Pre tých, čo nevedia čo to je premenná: Je to znak alebo slovo, ktoré nám reprezentuje akoby nejakú nádobu. Deklaráciou premennej ešte povieme aké typ predmetu sa môže do „nádoby“ uložiť. Napr. či jahody alebo mäso. Tento typ premennej už nemôžete potom v behu programu meniť. Premennými sa budeme podrobne venovať v ďalšom diely.
Potom môžu nasledovať volania funkcií, príkazov, procedúr. Teda jadro funkcie main() môžeme považovať väčšinou aj za jadro celého programu.

6.) Zásadou dobrého programátora je písať komentáre k oblastiam zdrojového textu, ktoré nie sú zrozumiteľné na prvý pohľad. Alebo Vám aj budú jasné ale myslite aj na kolegov :-)
Už ste videli, že v jazyku C sa píšu komentáre medzi znaky /* a */. Komentár môže byť aj na viac riadkov. Jednoducho čaká na ukončenie znakom */ . Dobré programy napíšu čo budú robiť a čo čakajú od užívateľa. Keď Vám hneď po štarte program napíše „zadaj číslo“ a nič viac k tomu, nemôžete vedieť či si len nepýta počet sekúnd po ktorých má začať formátovať disk. Najlepšie by bolo keby ste nepoužívali ani skratky, ktoré nie sú všeobecne jasné.

Teraz si všetko ukážeme na reálnom programe.

/* Program: Druha mocnina *
* Vypocíta druhú mocninu zadaneho cisla *
* Autor: MiCi *
* Datum: Jar 20003 *
*/

#include <STDIO.H>
#include <CONIO.H>

/* deklaracia funkcie */
int kvadrat(int cislo);

/* samotna funkcia kvadrat */
int kvadrat(int cislo)
{

return(cislo*cislo);

}

int main(void)

{ int cislo; /* deklaracia premennej cislo, typ cele cislo */

clrscr(); /* vymazanie obrazovky */

printf(" Vypocitam druhu mocninu zadaneho cisla\n"); /* uvod */
printf(" Zadajte cislo: ");
scanf("%d",&cislo); /* nacitanie hodnot */
printf("\n Jeho druha mocnina je %d\n",kvadrat(cislo)); /*vysledok*/

printf(" Stlacte lubovolnu klavesu\n");
getch(); /*caka na stlacenie lubovolnej klavesy*/

return 0;
}

Programu asi ešte nerozumiete ale je funkční a je na ňom ukázané všetko čo sme dnes preberali. Nebojte sa. Po pár dieloch Vám to bude všetko jasné.
Ak Vám nebolo niečo jasné v tomto diely, viete čo máte robiť. Ak nie máte tu možnosti:

a) Čakať na božie vnuknutie
b.) Pohľadať to v kuchárke pre dobrú gazdinú
c.) Napísať mi e-mail na micitn@orangemail.sk alebo do diskusie
d.) Vykašlať sa na to

Ako nápoveda po internete Vám radím, že správne je za c.) ( tie sú väčšinou správne, hlavne na skúškach :-) 


                                                                                                            See You


P.S. Ak ešte nemáte nejaký ten kompilátor a prostredie na písanie programov, skúste nasledujúce stránky:

http://www.simonhuggins.com/courses/progbegin/c/download/#download
Je tam C-lite. 2Mb

Alebo Dos-Borland(odporucam, ale je väčší ) na :
http://www.optivec.com/download/BVCDOS.ZIP

Neprehliadnite: