Tečaj C - Poglavje 2

Začnimo s C

VAŠ PRVI PROGRAM C

Primer programa  ------> TRIVIAL.C

Najboljši način za začetek učenja C-ja je analiza samih programov, torej naložite datoteko TRIVIAL.C in si jo prikažite na zaslon. Ta program ne moremo nikakor poenostaviti ali česarkoli izpustiti. Žal pa program ne naredi ničesar.

Beseda main je zelo pomembna in mora nastopiti enkrat in samo enkrat  v vsakem C-jevskem programu. To je točka v programu, kjer se začne izvajanje programa, ko ga poženemo. Pozneje bomo videli, da ni potrebno, da je to
prvi stavek, mora pa obstajati kot vstopna točka. Besedi main sledita oklepaj in zaklepaj, ki sta znak za prevajalnik, da je to funkcija. Kaj natančno je funkcija, bomo obdelali pozneje. Za zdaj vam predlagam, da vsakič napišete oklepaj in zaklepaj.

Dva zavita oklepaja v drugi in tretji vrstici sta uporabljena, da definiramo meje samega programa. Dejanske programske stavke postavimo med ta dva zavita oklepaja, vendar v tem primeru ni nobenega stavka, saj program ne naredi ničesar. Ta program lahko prevedete in poženete, vendar, ker nima izvajalnih stavkov, ne naredi ničesar. Zapomnite pa si, da to je veljaven C-jevski program. Ko boste prevedli ta program, se lahko zgodi, da vam bo
vaš prevajalnik javil opozorilo (warning). Le-tega lahko ignorirate, saj ga bomo obrazložili pozneje, lahko pa spremenite program na naslednji način :

    int main()
    {
       return 0;
    }
Ta spremenjeni program bi moral prevesti vsak dober prevajalnik za C, saj je skladen z ANSI-C standardom. Razlika med tema dvema programoma bo obrazložena pozneje v tem tečaju.
 

PROGRAM, KI NEKAJ NAREDI

Primer programa ------> WRTSOME.C

Kot primer precej bolj zanimivega programa, naložite program WRTSOME.C in ga prikažite na vašem zaslonu. Program je enak prejšnjemu, s to razliko, da ima med zavitima oklepajema en izvajalni stavek in še obvezni
stavek return.

Izvajalni stavek je klic funkcije, ki je del vaše C knjižnice. Še enkrat nas ne bo skrbelo, kaj funkcija pravzaprav naredi, pač pa le to, kako uporabljamo tole, imenovano printf(). Da bi izpisali tekst na zaslon, postavimo ta tekst med oklepaje, ki sledijo imenu funkcije, na začetek ter konec teksta pa postavimo narekovaje. Končni rezultat je, da se tekst, ki smo ga zapisali v narekovajih, izpiše na zaslon, ko program poženemo.

Bodite pozorni na podpičje na koncu pete vrstice. C uporablja podpičje kot zaključek stavka, torej je podpičje znak prevajalniku, da je vrstica končana. Tudi ta program lahko izvedete, torej ga lahko prevedete in zaženete ter opazujete, če res naredi tisto, kar ste predvidevali. Moral bi izpisati besedilo, ki ste ga napisali med oba narekovaja.

Stavke v vrsticah 1 in 7 lahko zaenkrat ignorirate kot tudi podobne stavke v ostalih programih v tem poglavju. Bolj podrobno bodo opisani pozneje v tem tečaju. Prav tako bomo bolj podrobno definirali, zakaj je beseda int
napisana na začetku vrstice 3. Preden se lahko začnemo ukvarjati s temi zadevami, moramo namreč predelati še nekaj poglavij.
 

NASLEDNJI PROGRAM Z VEČ IZPISA

Primer programa ------> WRTMORE.C

Naložite program WRTMORE.C in si ga prikažite na zaslonu kot primer programa z več izhoda in z novim majhnim, vendar pomembnim konceptom. Videli boste, da so v programu štirje izvajalni stavki, izmed katerih je vsak klic funkcije printf(). Prvi printf bo izveden prvi, nato naslednji in tako dalje, dokler se ne bo izvedla še četrta vrstica.  Stavki se torej izvajajo zaporedno od vrha navzdol.

Bodite pozorni na nenavaden znak pri koncu prve vrstice, backslash (\). Ta se uporablja v printf() stavkih kot znak, da mu sledi poseben kontrolni znak. V tem primeru, znak "n" kaže, da zahtevamo prehod v novo vrstico. To je indikator, da mora računalnik vrniti kurzor na levo stran ekrana in ga premakniti za eno vrstico navzdol. Znak, s katerim zahtevate prehod v novo vrstico, lahko postavite kamorkoli v izpisani tekst. Lahko ga celo postavite na sredo besede in jo tako razdelite v dve vrstici.

Sedaj je mogoč celoten opis tega programa. Prvi printf() izpiše vrstico besedila in postavi kurzor v naslednjo vrstico. Drugi printf() izpiše vrstico besedila, vendar ne postavi kurzorja v naslednjo vrstico, tako, da se tretja vrstica doda na konec druge, nato sledita dva znaka za novo vrstico, posledica tega pa je prazna vrstica. Na koncu še četrti printf() izpiše vrstico, postavi kurzor v naslednjo vrstico in program je končan.

Ko boste prevedli in pognali WRTMORE C, bi se vam na ekran moralo izpisati naslednje besedilo:
 

This is a line of text to output.
And this is another line of text.
This is a third line.


Prevedite in poženite ta program in preverite, če vam da tak izpis. Izplačalo bi se vam, da bi ta program nekoliko spreminjali tako, da bi dodajali dodatne vrstice izpisa in tako videli, če res razumete, kako ti stavki delujejo. Dodajte še nekaj prehodov v novo vrstico na sredo vrstice in preverite, če delujejo, kot je bilo rečeno, nato pa prevedite in poženite spremenjeni program. Bolj kot boste spreminjali in prevajali primere, vsebovane v tem tečaju, več se boste naučili.
 

IZPIŠIMO NEKAJ ŠTEVILK

Primer programa  ------> ONEINT.C

Naložite datoteko z imenom ONEINT.C in si jo prikažite na zaslonu kot prvi primer dela s podatki v C-ju. Vstopna točka main() bi vam morala biti jasna kot tudi začetni zaviti oklepaj. Prva nova stvar, ki jo srečamo, je vrstica 5, ki vsebuje besedilo int index; tega smo uporabili, da bi
definirali celoštevilsko spremenljivko z imenom index. Besedica int je rezervirana beseda v C-ju, in jo ne moremo uporabiti za ničesar drugega. Definira spremenljivko, v katero lahko shranimo celo število iz že prej definiranega območja vrednosti. To območje bomo definirali pozneje. Ime spremenljvke, index, je lahko katerokoli ime, ki je tvorjeno po pravilih za imenovanje identifikatorja in ni ena izmed rezerviranih besed v C-ju. Zadnji znak v vrstici, podpičje, je, kot smo že omenili, zaključek stavka.

Bodite pozorni, da, čeprav smo definirali spremenljivko, ji še nismo dodelili vrednosti, torej vsebuje nedefinirano vrednost. V poznejših poglavjih bomo videli, da bi lahko v isti vrstici definirali še vec celoštevilčnih spremenljivk, vendar pa ne bomo oteževali trenutne situacije.

Če opazujete telo programa, boste videli, da vsebuje tri stavke, ki dodeljujejo vrednost spremenljivki index, vendar le eden naenkrat. Stavek v vrstici 7 index-u dodeli vrednost 13, njegova vrednost pa bo izpisana s pomočjo vrstice 8. (Kmalu bomo videli kako. Trenutno mi morate verjeti na besedo.) Pozneje dodelimo spremenljivki index vrednost 27, nazadnje pa še 10, vse vrednosti pa tudi izpišemo na zaslon. Intuitivno bi Vam moralo biti jasno, da je index spremenljivka in lahko hrani veliko različnih vrednosti, seveda pa le eno naenkrat.

Bodite pozorni, da velikokrat uporabimo besedo "izpišemo", mislimo pa "prikažemo na zaslonu". Videli boste, da si v veliko primerih izkušeni programerji dovolijo to svobodo, verjetno zato, ker se funkcija printf() uporablja za prikaz na monitorju.
 

KAKO IZPISUJEMO ŠTEVILA?

Da bi držali našo obljubo, se vrnimo k stavkom printf() in definirajmo, kako delujejo. Bodite pozorni na to, da so vsi identični in da se vsi začnejo enako kot printf() stavki, ki smo jih že srečali. Prva razlika se pojavi, ko pridemo do znaka %. To je poseben znak, ki signalizira funkciji, naj neha izpisovati zanke na zaslon in naj naredi nekaj drugega, ponavadi izpiše vrednost neke spremenljivke. Znak % uporabljamo, da opozorimo na izpis veliko različnih tipov spremenljivk, vendar se bomo v našem primeru omejili le na eno. Znak, ki sledu %-u, je d, ki pove funkciji, naj sprejme decimalno vrednost in jo izpiše. Od kod naj sprejme decimalno vrednost bomo razložili kasneje. Za d-jem pride nam že znani \n, ki je znak računalniku, da postavi kurzor v naslednjo vrstico, nato pa sledi še končni narekovaj.

Vsi znaki med narekovajema definirajo vzorec podatkov, ki naj jih stavek izpisuje. Temu vzorcu sledi vejica, za njo pa najdemo ime spremenljivke index. To je mesto, kjer dobi printf() stavek decimalno vrednost, katero bo izpisal zaradi znaka %d, katerega smo videli malo prej. Sistem zamenja %d s trenutno vrednostjo spremenljivke index in jo izpiše na ekran. Lahko bi dodali še več %d opisnih polj izpisa kjerkoli v oklepaju in spremenljivk za opisom in s tem dosegli, da bi se več podatkov izpisalo z enim stavkom. Vseeno pa si zapomnite, da mora biti število opisnih polj in število spremenljivk enako ali pa bo računalnik izpisal nekaj nepričakovanega.

Več o vhodnem in izhodnem formatiranju bo rečeno pozneje. Relativno dobro poznavanje osnov te snovi je potrebno, da bi razumeli poznejša poglavja. Zaenkrat še ni potrebno, da veste vse o izhodnem formatiranju, le zmerno razumevanje osnov.

Prevedite in poženite ONEINT.C in opazujte izpis. Dve nalogi iz programiranja na koncu tega poglavja sta namreč narejeni na osnovi tega programa.
 

KAKO V C-JU DODAJAMO KOMENTARJE?

Primer programa ------> COMMENTS.C

Naložite datoteko z imenom COMMENTS.C in si jo oglejte na zaslonu kot primer, kako lahko dodajamo komentarje v C-ju. Komentarje dodajamo, da naredimo program bolj čitljiv za nas, vendar pa predstavljajo nesmisel za
prevajalnik, zato moramo prevajalniku sporociti, naj komentarje ignorira tako, da jih obdamo s posebnimi znaki. Za omejevanje komentarjev v C-ju se uporablja kombinacija slash (/) in zvezdica (*), kar je tudi prikazano v tem
programu. Bodite pozorni na to, da program ne ilustrira lepega komentiranja, pač pa poskuša prikazati, kam vse lahko komentarje damo v programu. Ta program je namreč napisan zelo nemarno.

Kombinacija /* v vrstici 3 začenja prvi komentar, zaključuje pa ga kombinacija */. Opazili boste, da je komentar vstavljen pred začetkom samega programa za ilustracijo tega, da lahko komentar postavimo tudi pred program. Lep programerski način bi bil napisati komentar, ki bi na kratko opisal delovanje programa, pred sam program. Komentar v vrstici 5 je napisan po vstopni točki main in pred zavitim oklepajem, ki označuje začetek same programske kode.

Tretji komentar se začne po prvem izvedljivem stavku in se nadaljuje čez naslednje štiri vrstice. To je popolnoma veljavno, saj se lahko komentar nadaljuje čez poljubno število vrstic, dokler ga ne zaključimo. Vseeno pazite, saj če bi karkoli napisali na levo stran treh vrstic komentarja, bi bilo to del komentarja, ter se ne bi prevedlo, pač pa bi prevajalnik to besedilo ignoriral. Zadnji komentar, v vrstici 15, se nahaja po zaključku samega programa, kar kaže, da lahko komentarje postavimo skoraj kamorkoli v C-jevski program.

Eksperimentirajte s tem programom tako, da vstavljate komentarje še na druga mesta in opazujte, kaj se bo zgodilo ob prevajanju. Postavite znake za komentar pred in po enega od printf() stavkov in opazujte, da se res ne izvede in zato ne dobimo izpisa te vrstice na zaslon.

Komentarji so zelo pomembni v vsakem programskem jeziku, saj boste kmalu pozabili, kaj ste naredili v programu in zakaj ste to naredili. Veliko lažje boste čez leto dni spremenili ali popravili program, ki je dobro komentiran, kot pa tistega brez ali z zelo malo komentarji. Zelo hitro boste tudi razvili svoj stil komentiranja.

Nekateri C prevajalniki dovoljujejo "gnezdenje" komentarjev, kar je zelo priročno, ko želite, da vam prevajalnik ignorira dele programa med prevajanjem. Ker pa "vgnezdeni" komentarji niso del ANSI-C standarda, jih v tem tečaju ne bom uporabljal. Preverite v vaši dokumentaciji, če vaš prevajalnik omogoča gnezdenje komentarjev. Čeprav bi to bilo omogočeno, pa je dobra ideja, da se jim vseeno izogibate, saj jih tudi izkušeni programerji redko uporabljajo, njihova uporaba namrec zelo otežkoči prenos kode z enega prevajalnika na drugega, ki jih mogoče ne podpira.
 

LEP STIL PISANJA PROGRAMOV

Primer programa ------> GOODFORM.C

Naložite datoteko GOODFORM.C in si jo oglejte na vašem zaslonu. Je primer lepo formatiranega programa. Čeprav je zelo kratek in zato ne naredi veliko, lahko že na prvi pogled hitro vidimo, kaj naredi. Z izkušnjami, ki ste jih že pridobili s tem tečajem, boste zelo hitro razumeli program v celoti. Vaš C prevajalnik ignorira vse presledke in vse
prehode v nove vrstice in vam tako daje veliko svobode pri pisanju programov. Dodajanje in odvzemanje presledkov je tako stvar vašega osebnega okusa. Prevedite in poženite ta program ter opazujte, če naredi, kar ste od njega pričakovali.

Primer programa ------> UGLYFORM.C

Sedaj pa naložite in si oglejte program UGLYFORM.C. Kako dolgo boste potrebovali, da bi videli, kaj naredi ta program? Prevajalniku ni pomembno, katerega od stilov uporabljate, pomembno pa je za vas, ko boste preverjali , če program pravilno deluje. Prevedite program in ga poženite. Morda boste presenečeni, ko boste ugotovili, da je program enak kot prej, razen kar se tiče formatiranja. Ne skrbite še prevec glede svojega stila programiranja. Imeli boste obilo časa, da razvijete svoj stil pisanja programov medtem, ko se boste učili programskega jezika C. Bodite
pozorni na stil, ko vidite programe v C-ju v revijah in knjigah.

Pokrili smo nekatere osnovne koncepte programiranja v C-ju, vseeno pa je še veliko stvari, ki se jih morate naučiti, zato bomo šli naprej na dodatne programske strukture. Bilo pa bi v vaše dobro, da bi naredili programske naloge na koncu vsakega poglavja. Le-te so narejene zato, da poglobijo vaš študij in vas naučijo dela z vašim prevajalnikom.
 

PROGRAMERSKE NALOGE

printf("Index is %d\n it still is %d\n it is %d",
                            index, index, index);
Povratek na kazalo

Prehod na poglavje 3


Copyright  1988-1997 Coronado Enterprises - Last update, March 15, 1997
Prevedel: Sašo Kuntarič