POCETNA STRANA

Seminarski i Diplomski Rad
 
SEMINARSKI RAD IZ PROGRAMIRANJA
 

Programski jezik C

O programskom jeziku C

C programski jezik spada u proceduralne programske jezike koji je razvijen u ranim 70-im godinama 20. stoljeća. Autor ovog programskog jezika je Dennis Ritchie, no značajan doprinos nastanku C-a dali su Ken Thompson kao autor programskog jezika B i Martin Richards, autor programskog jezika BCPL. Dennis Ritchie je stvorio ovaj programski jezik za rješavanje praktičnih problema kodiranja sistemskih programa i jezgre operativnog sistema UNIX, koji je praktički u cijelosti napisan u C-u.
Programski jezik C dosta se mijenjao tokom godina te je u više navrata neformalno i formalno standardiziran. Prva važnija verzija poznata je pod nazivom "K&R C", što je engl. kratica prezimena dvaju autora najpoznatijeg C priručnika "The C Programming Language", a to su Brian Kernighan i Dennis Ritchie. Prvo izdanje te vrlo sažeto i precizno pisane knjige koje datira iz 1978. godine ujedno je de facto standardiziralo jezik u 70-ima. Drugo izdanje iz 1988. godine opisuje "ANSI C", standard kojeg je 1983. godine definirao američki nacionalni institut za standardizaciju, a koji je i danas najbolje podržan. Aktualni ISO/IEC standard skraćeno poznat kao "C99" podržava u cijelosti samo jedan manji dio komercijalnih proizvođača softvera.

Kao jedan od najvažnijih jezika u povijesti komercijalne računarske industrije, C je do danas ostao jedini programski jezik prilagođen za sve računarske platforme, od malih sistema pa do mrežnih super-računara. Programi napisani u njemu vrlo su bliski načinu rada hardvera te u načelu zahtijevaju od programera dobro razumijevanje rada procesora, memorije, ulazno-izlaznih sklopova itd. No, rad s registrima procesora i adresiranje memorije apstrahirani su pomoću koncepta varijabli i pokazivača što uz eksplicitne kontrolne strukture i funkcije znatno olakšava programiranje u odnosu na izravno programiranje u strojnim jezicima.
Prvobitni razvoj C programskog jezika započinje između 1969 i 1973 u AT&T Bell Labs, i po Dennis Ritchie-ju najkreativniji period je bio u toku 1972-ge godine. Nazvan je C jer su mnoge od njegovih karakteristika potekle od ranijeg programskog jezika zvanog B. Postoje mnoge verzije C jezika za programiranje. Jedna od njih je Turbo C koji je namijenjen za rad na osobnim računalima. Turbo C posjeduje brzinu u radu, zauzima malo memorije, pruža mogućnost uređivanja i pisanja programa i ima program za ispravljanje grešaka "debuger".
Tokom 1980-ih, Bjarne Stroustrup zajedno s drugim istraživačima u Bell Labs proširuje C dodajući sposobnosti objektno orijentiranog programiranja, a naziv ovog novog programskog jezika je C++. Nažalost, ta je 100%-na kompatibilnost ujedno i razlog što su problemi koje programiranje u C-u nosi sa sobom naslijeđeni u C++-u. Efikasno i sigurno programiranje u C-u vrlo je zahtjevna vještina koja traži višegodišnje iskustvo pa je stoga C jezik koji se ne preporučuje početnicima, posebice ako im programiranje nije primarni posao.
Mnogobrojni problemi vezani prije svega za upravljanje memorijom koje programer mora sam eksplicitno kodirati razlog su da je danas većina novih korisničkih aplikacija napisana u nekom modernijem jeziku koji ima ugrađeno automatsko upravljanje memorijom (engl. garbage collection), ne dopušta izravan rad s memorijom pomoću pokazivača te ima podršku za upravljanje kodom odnosno njegovom okolinom za vrijeme njegova izvođenja. Danas se relativno rijetko ukazuje potreba za pisanjem novih korisničkih aplikacija izravno u C-u, pa čak i u vrlo malim sistemima kao što su primjerice mobilni telefoni. Glavno područje njegove upotrebe su sistemski programi na strani poslužitelja (engl. servers), programi prevoditelji (engl. compilers) i jezgre operativnih sistema (engl. operating system kernels), gdje je potreba za najvećom mogućom brzinom izvođenja, efikasnom kontrolom resursa i izravnom kontrolom hardvera od primarne važnosti.
Programiranje u programskom jeziku (ovdje za programski jezik C) sastoji se od nekoliko koraka: pisanja programa u nekom tekstualnom editoru, prevođenja u strojni jezik, startanja programa.
Program napisan u editoru mora imati ekstenziju ".c" (točka, potom malo slovo c), npr. program.c
Tekst editor koji će se koristiti u ovom predmetu je kate.
Mikroprocesor i drugi logički sklopovi računala imaju svoj vlastiti programski jezik koji se naziva strojni jezik, a sastoji se od nizova binarnih rijeci koje predstavljaju instrukcije logičkim sklopovima i podatke koje treba obraditi. Program napisan u strojnom jeziku nazivamo izvrsni program ili izvrsni kod budući da ga računalo može neposredno izvršiti. Strojni jezik je određen arhitekturom računala, a definira ga proizvođač hardwarea. Izvrsni program je strojno zavisan, sto znaci da se kod napisan na jednom računalu može izvršavati jedino na računalima istog tipa. Pisanje instrukcija u binarnom kodu posve je nepraktično pa su razvijeni simbolički jezici u kojima su binarne instrukcije zamijenjene mnemoničkim oznakama. Programer unosi program napisan u mnemoničkim oznakama u tekstualnu datoteku pomoću editora teksta i zatim poziva program koji mnemoničke oznake prevodi u binarne instrukcije strojnog jezika. Program koji vrši konverziju naziva se asembler (eng. assembler) a sam se programski jezik naziva asemblerski jezik ili jednostavno asembler. Program napisan u asemblerskom jeziku nazivamo izvorni program (eng. source code). Pisanje programa time postaje dvostepeni proces koji cine pisanje izvornog programa i prevođenje izvornog programa u izvrsni program. Programer se tako oslobađa mukotrpnog pisanja binarnih instrukcija te se dobiva do određene mjere strojna neovisnost izvornog programa.

Osnove programskog jezika C

 

Osnovne karakteristike programskog jezika C:


VELIČINA – Programski jezik C karakterizira vrlo mali broj ključnih riječi (32). Ključne riječi su dijelovi programskog koda.

BRZINA – Programi napisani u programskom jeziku C su brže izvode od programa koji su pisani u drugim programskim jezicima. Programski jezici su umjetni jezici koji nam omogućavaju manipuliranje računalom i izvršavanje zadaća pomoću računala (npr. C, VB, ASP.NET).

NAREDBE ZA KONTROLU TOKA - Programski jezik C raspolaže naredbama koje kontroliraju tok izvršavanja programa, a to su: petlja for, petlja while, switch (case) funkcija te naredba if-else.

BITWISE KONTROLA - Za direktno pristupanje bitovima i bajtovima.

POKAZIVAČI (POINTERI) - Pokazivači su varijable koje sadrže memorijsku lokaciju neke druge varijable, tj. oni su 'pokazivači' na adrese drugih varijabli. Programski jezik C omogućava manipuliranje adresama varijabli.

OPĆA NAMJENA - U programskom jeziku C se rješavaju problemi iz svih područja.

PRIMJERAK PROGRAMA U PROGRAMSKOM JEZIKU C NA MONITORU VAŠEG RAČUNALA

Programski jezik C

Jedan jednostavan ali potpun C program izgleda ovako:

#include <stdio.h>
int main(void)
{
printf("Dobar dan.\n");
return 0;
}

Program treba spremiti u datoteku s ekstenzijom .c kako bi se znalo da se radi o C-programu. Nazovimo stoga datoteku prvi.c. Program zatim kompiliramo naredbom

cc prvi.c

nakon čega prevodilac kreira izvršni program i daje mu ime a.out. Da bismo izvršili program dovoljno je otipkati

./a.out

Rezultat izvršavanja programa je ispis poruke

Svi C-programi sastoje se od funkcija i varijabli. Funkcije sadrže instrukcije koje određuju koje će operacije biti izvršene, a varijable služe memoriranju podataka.
Izvršavanje programa počinje izvršavanjem funkcije main koja mora biti prisutna u svakom programu. Funkcija main svoju zadaću obavlja općenito pozivanjem drugih funkcija. Tako se u našem programu poziva funkcija printf iz standardne biblioteke, koja je zadužena za ispis podataka na ekranu. Da bismo mogli koristiti funkcije iz standardne biblioteke zadužene za ulaz i izlaz podataka program započinjemo naredbom

#include <stdio.h>

Njom se od prevodioca traži da uključi (include) u program datoteku stdio.h koja sadrži informacije nužne za korištenje funkcije printf i mnogih drugih.
Datoteke s ekstenzijom .h nazivaju se datoteke zaglavlja (eng. header _les) i njihovo stavljanje u oštre zagrade < > informira prevodilac da se radi o standardnim datotekama zaglavlja, koje se nalaze na unaprijed određenim mjestima u datotečnom sustavu.
Sljedeća linija predstavlja deklaraciju funkcije main:

int main(void)

Funkcija može uzimati jedan ili više argumenata i obično vraća neku vrijednost.
Deklaracijom se uvodi ime funkcije, broj i tip argumenata koje uzima i tip povratne vrijednosti. U našem primjeru ime funkcije je main i ona ne uzima niti jedan argument. To je deklarirano tako što je u oble zagrade stavljena ključna riječ void (eng. void=prazan). Povratna vrijednost je tipa int, što je oznaka za cijeli broj.1
Iza oblih zagrada dolaze vitičaste zagrade koje omeđuju tijelo funkcije.
Tijelo funkcije je sastavljeno od deklaracija varijabli i izvršnih naredbi. Sve deklaracije varijabli dolaze prije prve izvršne naredbe. U našem primjeru nemamo deklaracija varijabli. Tijelo sadrži samo dvije naredbe: poziv funkcije printf i return naredbu:

{
printf("Dobar dan.\n");
return 0;
}

Svaka naredba završava znakom točka-zarez (;). To omogućava da se više naredbi stavi na istu liniju.
Funkcija se poziva tako da se navede njezino ime iza koga idu oble zagrade s listom argumenata koji se funkciji predaju. Funkcija printf dobiva samo jedan argument: to je niz znakova "Dobar dan.nn". Navodnici služe za ograničavanje konstantnih znakovnih nizova. Sve što se nalazi između " i " predstavlja niz znakova koji čini jednu cjelinu. Pored običnih znakova između navodnika mogu se naći i specijalni znakovi koji počinju znakom n (eng. backslash). Tako nn označava prijelaz u novi red. Funkcija printf nakon završenog ispisa ne prelazi automatski u novi red nego je potrebno ubaciti znak nn tamo gdje takav prijelaz želimo. Program smo stoga mogli napisati u obliku

#include <stdio.h>
int main(void)
{
printf("Dobar ");
printf("dan.");
printf("\n");
return 0;

}

i dobili bismo posve isti ispis.
Izvršavanje funkcije završava naredbom return. Kad funkcija vraća neku vrijednost u pozivni program ta se vrijednost navodi u return naredbi. Funkcija main vraća nulu pa je stoga zadnja naredba return 0; Funkcija main mora biti prisutna u svakom programu. Kada na komandnoj liniji otipkamo

./a.out

operacijski sustav poziva funkciju main. Zatim se redom izvršavaju naredbe unutar funkcije main sve dok se ne dođe do return naredbe. Ona operacijskom sustavu vraća cjelobrojnu vrijednost koja ima značenje izlaznog statusa. Nula se interpretira kao uspješni završetak programa, a svaka druga vrijednost signalizira završetak uslijed greške.

U C-u je potrebno deklarirati sve varijable koje se u programu koriste.
Preciznije, unutar svake funkcije (ovdje unutar funkcije main) sve varijable koje funkcija koristi treba deklarirati prije prve izvršne naredbe.
Deklaracija se sastoji od tipa varijable koji slijede imena varijabli odvojena zarezima. Deklaracija kao i svaka druga naredba u programu završava znakom točka-zarez. U deklaraciji int n,fakt;
imena varijabli koje se deklariraju su n i fakt, a njihov tip je int. Tip int predstavlja cjelobrojnu varijablu koja može biti pozitivna i negativna.
Granice u kojima se može kretati varijabla tipa int ovise o računalu i danas je to najčešće od -214748347 do 214748348. Pored varijabli tipa int postoje još dvije vrste cjelobrojnih varijabli. To su varijable tipa short i varijable
tipa long. Razlika je u tome da short pokriva manji raspon cijelih brojeva i zauzima manje memorijskog prostora, dok long pokriva veći raspon i treba više memorijskog prostora. Varijable realnog tipa (tzv. brojevi s pokretnim zarezom) pojavljuju se u dvije forme: brojevi jednostruke preciznosti float i brojevi dvostruke preciznosti double. Konačno, postoje i varijable tipa chart u kojima se pamte znakovi.

Tipovi varijabli:

chart jedan znak,
short \kratki" cijeli broj,
int cijeli broj,
long \dugi" cijeli broj,
float realan broj jednostruke preciznosti,
double realan broj dvostruke preciznosti.

Pored ovih tipova podataka koje nazivamo osnovnim, postoje još i složeni tipovi podataka kao što su strukture, polja, unije te pokazavatelji kao posebni osnovni tip podatka.
Prva izvršna naredba u programu je naredba pridruživanja

n=1;

Znak jednakosti je operator pridruživanja. On vrijednost konstante ili varijable na desnoj strani pridružuje varijabli na lijevoj strani. Nakon te naredbe vrijednost varijable n postaje jednaka 1.


While i for petlja

Govorimo o jednima od najkorisnijih i najzahvalnijih petlji.

Naredba


while(n<=10)
{
....
}

je while petlja. Ona se sastoji od ključne riječi while, testa n<=10 i tijela
petlje; tijelo petlje je skup naredbi koje se nalaze unutar vitičastih zagrada.
while-petlja funkcionira na sljedeći način: prvo se izračunava izraz u zagradama:
n<=10. Ukoliko je on istinit (n je manji ili jednak 10) onda se
izvršava tijelo petlje (sve naredbe unutar vitičastih zagrada). Zatim se ponovo
testira izraz n<=10 i izvršava tijelo petlje ako je izraz istinit. Izvršavanje
petlje prekida se kada izraz n<=10 postane neistinit. Program se tada nastavlja
prvom naredbom koja slijedi iza tijela while petlje.
Tijelo petlje može se sastojati od jedne ili više naredbi. Ako se sastoji
od samo jedne naredbe nije potrebno koristiti vitičaste zarade, iako njihova
upotreba nije pogrešna. Kada se tijelo sastoji od više naredbi one moraju
biti omeđene vitičastim zagradama.
Manje ili jednako (<=) je jedan od relacijskih operatora. Ostali su:

Operator Primjer Značenje
<= a <= b manje ili jednako,
>= a >= b veće ili jednako,
< a < b strogo manje,
> a > b strogo veće,
== a == b jednako,
!= a != b nejednako.


Važno je razlikovati operator pridruživanja (=) i relacijski operator jednakosti (==).

U tijelu while petlje imamo tri naredbe:

fakt=fakt*n;
printf(" %d %d\n",n,fakt);
n=n+1;

U prvoj i trećoj naredbi pojavljuju se operacije množenja i zbrajanja. Osnovne
aritmetičke operacije dane su sljedećoj tabeli:

  Operator Primjer
zbrajanje + a+b
oduzimanje - a-b
množenje * a*b
dijeljenje / a/b



Naredba:

for(i=1;i<=n;i=i+1)
{
....
}

je for petlja. Ona djeluje na sljedeći način. Prvo se varijabla i inicijalizira tako što joj se pridruži vrijednost 1 (i=1). Inicijalizacija se izvrši samo jednom. Zatim se testira izraz
i<=n;
Ako je rezultat testa istinit izvršavaju se naredbe iz tijela petlje (naredbe u vitičastim zagradama). Nakon toga se izvršava naredba
i=i+1;
i kontrola programa se vraća na testiranje istinitosti izraza i<=n. Petlja završava kad izraz koji se testira postane lažan. Program se tada nastavlja prvom naredbom iza tijela petlje. for-petlja iz našeg primjera može se zapisati pomoću while-petlje na ovaj način:

i=1;
while(i<=n)
{
suma=suma+1.0/(i*(i+1));
i=i+1;
}

Naredbe oblika i=i+1 i i=i-1 kojima se brojač povećava, odnosno smanjuje za jedan sreću se vrlo često pa za njih postoji kraća notacija:

n=n+1 je ekvivalentno s n++,
n=n-1 je ekvivalentno s n--.

Operator ++ naziva se operator inkrementiranja i on povećava vrijednost varijable za 1; Operator -- koji smanjuje vrijednost varijable za 1 naziva se operator dekrementiranja. Ti se operatori redovito koriste u for petljama pa bismo gornju petlju pisali u obliku:

for(i=1;i<=n;i++)
suma=suma+1.0/(i*(i+1));


Operatore inkrementiranja i dekrementiranja možemo primijeniti na cjelobrojne i realne varijable. Uočimo još da smo vitičaste zagrade oko tijela for-petlje mogli ispustiti jer se tijelo sastoji samo od jedne naredbe. To vrijedi za sve vrste petlji.
Svaka petlja sadrži u sebi jedan ili više brojača kojim se kontrolira odvijanje petlje. Brojač je potrebno na početku inicijalizirati i zatim ga u svakom prolazu petlje povećavati (ili smanjivati). Pelja se zaustavlja testiranjem brojača. U while petlji jedino testiranje brojača ulazi u zagrade nakon ključne riječi while. Inicijalizaciju moramo staviti izvan petlje, a promjenu brojača negdje unutar petlje. U for petlji sva tri elementa dolaze u zagradama iza ključne riječi for, u obliku for(inicijalizacija brojača; test; promjena brojača)

{
.........
}

Inicijalizacija, test i promjena brojača odvajaju se znakom točka-zarez (;).


Naredba if-else


Naredbe if-else nam u programskom jeziku omogućavaju korake u programiranju koji bi bez tih naredbi bilo nemoguće učiniti.

Naredba if - else koristi se za donošenje određenih odluka. Formalna sintaksa jest

if(izraz)
         naredba1

else
         naredba2

pri čemu je else neobavezan. Izraz se provjerava. Ako je istinit (ima vrijednost koja nije nula),
izvršava se naredba1. Ako nije istinit (ima vrijednost nula) i ako postoji else dio, izvršava se naredba2.
Kako if testira brojevnu vrijednost nekog izraza, moguća su određena skraćenja koda. Primjerice
dovoljno je napisati

if(izraz)

umjesto:

         if(izraz!=0)

Katkad je ovaj način pisanja ipak zgodniji i čitljiviji.
Na prvi pogled, malo je nejasno što se događa u slučaju kad if - else konstrukcija nema else dijela
(jer je neobavezan). Postoji pravilo, potpuno intuitivno, koje pridružuje else najbližem prethodnom if-u koji
nema else. Npr. u

if(n>0)
       if(a>b)
               z=a;
   else
               z=b;

else se pridružuje unutrašnjem if-u, što zorno pokazuje i uvučenost redova. Ako to nije željeni
raspored, morate iskoristiti vitičaste zagrade kako bi pojasnili prevoditelju što zapravo želite

if(n>0){
               if(a>b)
                       z=a;
   }
   else
                       z=b;

Česta je greška:

if(n>0)
             for(i=0;i<n;i++)
                       if(s[i]>0){
                       printf("...");
                       return i;
}
           else /* pogrešno */
                   printf("greska - n je negativno\n");

Uvučenost redova pokazuje što programer želi, ali prevoditelj else pridružuje unutrašnjem if-u.
Ovakve greške nije lako naći. Zato je topla preporuka korištenje vitičastih zagrada kad je to moguće, a ne
kad se može.
Osim toga primijetite da postoje točka-zarez nakon z=a u

if(a>b)
         z=a;
else
         z=b;

Gramatički gledano, naredba ide kao posljedica if, a naredbu moramo okončati s točka-zarezom.

Konstrukcija

if(izraz)
       naredba
       else
               if(izraz)
                   naredba
             else
                     if(izraz)
                         naredba
                     else
                               if(izraz)
                                     naredba
                                 else
                                           naredba


je toliko česta da o tomu ne treba trošiti riječi. Ovaj niz if naredbi predstavlja najopćenitiji način pisanja višesmjernog grananja. Izrazi se računaju po redu. Ako je bilo koji izraz istinit pridružena naredba se izvršava, čime se završava čitava konstrukcija. Kao i uvijek, naredbom se podrazumijeva ili jedna naredba ili više njih omeđenih vitičastim zagradama. Zadnja else naredba ne obavlja nijedan od gornjih slučajeva, ali izvodi slučajeve koji se izvršavaju
kad nijedan od uvjeta nije zadovoljen. Ponekad takvi, podrazumijevani slučajevi, ne rade ništa, pa tada zadnji else nije ni potreban. Međutim, ipak je dobro ostaviti else, te pomoću njega tražiti nemoguće greške.

LITERATURA:

  • WIKIPEDIA, slobodna enciklopedija
    http://bswikipedia.org/wiki/ProgramskijezikC
  • „PROGRAMSKI JEZIK C“ : Brian W. Kernighan, Dennis M. Ritchie
    Prvo izdanje, Zagreb
  • www.zts-zagreb.hr/sdeljac/index_files/progc/

PROCITAJ / PREUZMI I DRUGE SEMINARSKE RADOVE IZ OBLASTI:
ASTRONOMIJA | BANKARSTVO I MONETARNA EKONOMIJA | BIOLOGIJA | EKONOMIJA | ELEKTRONIKA | ELEKTRONSKO POSLOVANJE | EKOLOGIJA - EKOLOŠKI MENADŽMENT | FILOZOFIJA | FINANSIJE |  FINANSIJSKA TRŽIŠTA I BERZANSKI    MENADŽMENT | FINANSIJSKI MENADŽMENT | FISKALNA EKONOMIJA | FIZIKA | GEOGRAFIJA | INFORMACIONI SISTEMI | INFORMATIKA | INTERNET - WEB | ISTORIJA | JAVNE FINANSIJE | KOMUNIKOLOGIJA - KOMUNIKACIJE | KRIMINOLOGIJA | KNJIŽEVNOST I JEZIK | LOGISTIKA | LOGOPEDIJA | LJUDSKI RESURSI | MAKROEKONOMIJA | MARKETING | MATEMATIKA | MEDICINA | MEDJUNARODNA EKONOMIJA | MENADŽMENT | MIKROEKONOMIJA | MULTIMEDIJA | ODNOSI SA JAVNOŠCU |  OPERATIVNI I STRATEGIJSKI    MENADŽMENT | OSNOVI MENADŽMENTA | OSNOVI EKONOMIJE | OSIGURANJE | PARAPSIHOLOGIJA | PEDAGOGIJA | POLITICKE NAUKE | POLJOPRIVREDA | POSLOVNA EKONOMIJA | POSLOVNA ETIKA | PRAVO | PRAVO EVROPSKE UNIJE | PREDUZETNIŠTVO | PRIVREDNI SISTEMI | PROIZVODNI I USLUŽNI MENADŽMENT | PROGRAMIRANJE | PSIHOLOGIJA | PSIHIJATRIJA / PSIHOPATOLOGIJA | RACUNOVODSTVO | RELIGIJA | SOCIOLOGIJA |  SPOLJNOTRGOVINSKO I DEVIZNO POSLOVANJE | SPORT - MENADŽMENT U SPORTU | STATISTIKA | TEHNOLOŠKI SISTEMI | TURIZMOLOGIJA | UPRAVLJANJE KVALITETOM | UPRAVLJANJE PROMENAMA | VETERINA | ŽURNALISTIKA - NOVINARSTVO


preuzmi seminarski rad u wordu » » »   

Besplatni Seminarski Radovi

SEMINARSKI RAD