Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 19

Otvoreni Univerzitet "APEIRON" Travnik

Fakultet Poslovne Informatike

SEMINARSKI RAD
PROGRAMSKI JEZICI

Predmet: Principi Programiranja

Mentor: akademik. prof. Zoran Avramović

Mr. Asistent. Hadzib Salkić

Student: Kozar Alem

Indeks br. 0011-08/RPI

Studij: poslovna informatika

Smjer: poslovna informatika

Travnik, februar 2010


SADRŽAJ

1. UVOD................................................................................................................................................3
1. 1. Osnovni pojmovi u programskim jezicima.....................................................................................4
1. 2. Generacije programskih jezika.......................................................................................................6
1. 2. 1. Mašinski (strojni jezici)..............................................................................................................6
1. 2. 2. Simbolički (asemblerski jezici)..................................................................................................6
1. 2. 3. Jezici treče generacije.................................................................................................................6
1. 2. 4. Inteligentni jezici........................................................................................................................6
2. PROGRAMSKI JEZIK PASKAL ( PASCAL)..................................................................................7
2. 1. Ime programa.................................................................................................................................7
2. 2. Ključne riječi su riječi rezervisane za naredbe u paskalu................................................................7
2. 3. Komentari.......................................................................................................................................7
2. 4. Prosti tipovi podataka.....................................................................................................................7
2. 5. Složeni tipovi podataka..................................................................................................................9
2. 6. Definisanje promjenljivih...............................................................................................................9
2. 7. Tipovi.............................................................................................................................................9
2. 7. 1. Pobrojani tip.............................................................................................................................10
2. 7. 2. Nepobrojani tip.........................................................................................................................10
2. 8. Naredbe čitanja i pisanja...............................................................................................................10
2. 9. Naredba pisanja............................................................................................................................11
3. PROGRAMSKI JEZIK “C/C++”.....................................................................................................11
3. 1. Filozofija jezika...........................................................................................................................11
3. 2. Pregled programskog jezika C......................................................................................................12
3. 3. Struktura programa.......................................................................................................................14
3. 4. Preprocesor C-a............................................................................................................................15
3. 5 Tipovi podataka.............................................................................................................................15
3. 6. Izrazi.............................................................................................................................................16
3. 7. Iskazi............................................................................................................................................16
3. 8. Odnos izmedzu C i C++...............................................................................................................16
4. ZAKLJUČAK..................................................................................................................................18
5. LITERATURA.................................................................................................................................19

2
1. UVOD

Pokušaču dati odgovor sta programski jezici predstavljaju, to jest odrediti neke od
osnovnih pojmova vezanih za pomenutu oblast informatike, u okviru predmeta “ Principi
Programiranja”. Računari su idealni za rješavanje matematičkih problema jer ih odlikuje
velika brzina i velika pouzdanost prilikom računanja.  Štaviše, računari su i nastali iz tog
razloga. Ukoliko precizno formulišemo pravila za rješavanje nekog problema kažemo da smo
napravili (ili razvili) algoritam. I ukoliko želimo rješiti problem pomoću računara moramo na
osnovu tog algoritma napisati program u nekom programskom jeziku. Programskih jezika
postoji mnogo, a mi ih obično klasifikujemo u : 

 niže i 
 više programske jezike. 

Polazeči od činjenice da je glavni akter u ovoj priči programiranje upoznat čemo se sa


ovim bliže kroz ovaj rad, to jest koji su to jezici koji se danas najviše koriste, njihovu
primjenu, vrste i ostalo što treba da se kaže u ovom radu, a prvo ču navesti neke pojmove u
programskim jezicima i njihovo značenje, a kao glavni dio navest i obradit ču tri najpoznatija
programska jezika a to su PASKAL(PASCAL), C, C++. Programski jezici predstavljaju
posebnu vrstu programa u kojima se stvaraju aplikacije kako sistemske tako i namjenske.
Samom pojavom računara došlo je i do stvaranja ovih jezika koji su omogučavali pisanje
instrukcija po kojima je računar izvršavao postavljene zadatke.

3
1. 1. Osnovni pojmovi u programskim jezicima

Realni brojevi

Svaki realni broj može da se predstavi u obliku proizvoda

Primjer 12.34:

12.34 = 12.34*

12.34 = 123.4*

12.34 = 1234.*

12.34 = 12340*

12.34 = 1.2340* - najpogodniji način zapisa

12.34 = 0.1234*

12.34 = 0.01234*

Mantisa- broj u kojem su definisane znamenke nekog drugog broja

Exponent- broj kojim potenciramo određenu bazu

Baza- predznak

Ako mantisa počinje sa 0.xxxxxx takva mantisa se naziva normalizovana:

12.34=0.1234* 0.00147 = 0.147*

Pošto je za jedan računar baza ista za sve realne brojeve to u računaru treba pamtiti samo
exponent. Pošto se mantisa prije skladištenja u računaru uvijek normalizuje to se pamte samo
značajne cifre.

12.34 = 0.1234*

0.00147 = 0.147*

Značajne cifre u broju su cifre koje slijede iza prve cifre koja nije nula.

Realni brojevi u običnoj preciznosti ( 4bajta=32bita ).

1 bit 8 bita 23 bita

ZNAK EXPONENT ZNAČAJNE CIFRE


1 2 9 10 32

4
Realni brojevi u dvostrukoj preciznosti ( 8 bajta = 64 bita)

1 bita 11 bita 52 bita

ZNAK EXPONENT ZNAČAJNE CIFRE


1 2 12 13 64

Posljedice ovakve organizacije su

 skup realnih brojeva koji mogu da se predstave u računaru je simetričan.

 Opseg realnih brojeva koji mogu biti predstavljeni u računaru je ograničen brojem

bitova rezervisanih za exponent Sa osam bita

 Broj uskladištenih značajnih cifara je ograničen broejm bitova rezervisanih za mantisu


za jednu decimalnu cifru.

Realne konstante

One predstavljaju decimalne brojeve i mogu se pisati na dva načina:

 sa fiksnom tačkom

 sa pokretnom tačkom

U programskim jezicima se pri pisanju numeričkih podataka umjesto decimalne zapete koristi
decimalna tačka. Realna konstanta sa fiksnom tačkom je niz decimalnih cifara iza koga stoji
decimalna tačka, a može da ima i razlomljeni dio i znak. Realna konstanta sa pokretnom
tačkom sastoji se iz cjelobrojne ili realne konstante sa fiksnom tačkom iza koje stoji slovo E I
odgovarajuči cjelobrojni exponent.

Kompleksni brojevi

Oni se predstavljaju u računaru kao uređeni par realnih brojeva koji su uskladišteni na dvje
susjedne memorijske lokacije.

Znakovni podaci

Se predstavljaju u računaru tako da se svaki znak uskladišti u jedan bajt (1 zna = 1 bajt = 8
bita).

5
1 2 3 4 5 6 7 8

0 0 1 1 1 0 1 1
Svaki znak je predstavljen odgovarajučom kombinacijom 0 i 1

1. 2. Generacije programskih jezika

Postoje četiri generacije programskih jezika:

 Mašinski (strojni jezici)

 Simboliči (asemblerski jezici)

 Jezici treče generacije

 Inteligentni jezici

1. 2. 1. Mašinski (strojni jezici)

Ovaj jezik je jedini jezik kojeg računar razumije i zbog toga se koristi i danas, i on
koristi cifre 0 i 1 za pisanje programa. Pošto se cijela aplikacija koja se programira u ovom
jeziku sastoji iz niza 0 I 1 veoma je komplikovan način otklanjanja grešaka kao i sam pristup
stvaranju izvornog koda. Zbog svega ovoga za razvoj nauke dolazi do pojave jezika druge
generacije

1. 2. 2. Simbolički (asemblerski jezici)

Ovi jezici koriste simbole za pisanje instrukcija čiji način korištenja simbola je
unapred propisan što je otežavalo samo pisanje programa. Imaju integrisan poprogram
odnosno prevodilac koji se naziva assembler. Zadatak ovog prevodioca je da direktno izvorni
kod napisan u simboličkom jeziku prevede u mašinski jezik bez upletanja programera.

1. 2. 3. Jezici treče generacije

Oni se danas koriste u različitim segmentima jer koriste prirodni algoritamski način
pisanja programa što je slično razmišljanje čovjeka. U ove jezike ubrajamo algol, kobal, basic,
pascal, delfi, visual basic, C++, i oni imaju u sebi ugrađen prevodilac koji se naziva
kompajler čiji je zadatak da indirektno prevede u izvorni kod napisan u ovom od jednih
jezika u mašinski jezik.

1. 2. 4. Inteligentni jezici

Inteligentni jezici predstavljaju revoluciju u pogledu programiranja. i imaju mogučnost


samostalnog donošenja određenih zaključaka bez upletanja samog programera tako da
programmer ne mora da u izvornom kodu ispiše sve moguče korake i to veoma detaljno nego
je dovoljno da u grubim crtama ispiše šta želi da radi u aplikacijama a ostale stvari če
nadopuniti inteligentni jezici. Na našem tržištu su rijetki zbog previsoke cijene korištenja ovih

6
programskih jezika. Cijena ovih jezika se kreče od nekoliko stotina hiljada pa do nekoliko
miliona eura.

2. PROGRAMSKI JEZIK PASKAL ( PASCAL)

Ovaj jezik jest jezik treče generacije koji se do danas u svijetu koristi za obuku mladih
programera, koristi prirodni algoritamski način pisanja programa što ga svrstava u
procedualne jezike. Pascal je složen jezik i ima širok opseg za rješavanje različitih
problemskih zadataka kao i mogučnost grafičkog prikaza dobijenih rezultata. Procedura
pisanja izvornog koda u ovom jeziku je unapred propisano i programmer mora strogo voditi
računa ove procedure. Program u paskalu se sastoji od 2 dijela.

2. 1. Ime programa

Program u paskalu uvijek započinjemo sa ključnom riječju program. Ime programa se


sastoji od maksimalno 8 znakova, ali ako programmer da ime programu više od 8 znakova
neče biti sistemska greška nego če ovaj jezik zanemariti znakove koji prelaze prvih 8 znakova
I ime može sadržavati samo jednu riječ a nesmije zadržavati znakove sa kvakicama, ne smije
biti identično ključnim riječima ( riječi rezervisane za naredbe u paskalu)

2. 2. Ključne riječi su riječi rezervisane za naredbe u paskalu

and, array, begin, case, div, do, downto, else, file, for, forward, function, if, in, label,
mod, not, or, packed, procedure, record, repeat, set, them, type, until, var, while, const,
end, go to, nil, program, to, with

2. 3. Komentari

Komentar ne utiče na izvršenje programa i koristimo ga kao napomenu I objašnjenje


djelova programa, on inače služi programeru uglavnom kako bi se lakše poslije izvjesnog
vremena prisjetio o čemu se radi o nekim djelovima izvornog koda što mu skračuje vrijeme
prisječanja. Komentar možemo koristiti u bilo kojem dijelu izvornog koda s tim što moramo
voditi računa o procedure programa.

2. 4. Prosti tipovi podataka

Deklaracija određenih tipova podataka može biti širokog opsega iz tog razloga sve
djelimo na proste i složene tipove podataka.

U proste tipove podataka ubrajamo:

 logički tipovi

7
 cjelobrojni tipovi

 realni tipovi

 znakovni tipovi

Logički tip

Ključna riječ “BOOLEAN”

Logički tip može imati za izlaz 2 stanja:

TRUE – istina 1

FALSE – laž 0

Nad ovim tipom je definisana sljedeča operacija:

Ord – ova operacija predstavlja realni broj

Cjelobrojni tip

Ključna riječ “INTEGER”

Cjelobrojni tip predstavljaju svi brojevi iz skupa cijelih brojeva. Međutim kada definišemo
neku promjenljivu ovim tipom ograničena je vrijednost unosa brojeva iz skupa cijelih brojeva
I to od – i +. Ako promjenljiva ili če imati veču od ove onda cjelobrojni tip definišemo onda
ovaj tip definišemo ključnom riječju LONGIT.Nad ovim tipom su definisane aritmetiče
operacije +, -.

DIV- cjelobrojno djeljenje

MOD – ostatak od cjelobrojnog djeljenja

18 DIV 4 = 4

18 MOD 4= 2

Nad cjelobrojnom tipu su definisane operacije

sqr(x) - , abs(x) – x

Realni tip

Ključna riječ “REAL”

8
Realni tip predstavljaju svi skupovi realnih brojeva i ovaj tip nije pobrojan i zbog toga
nema svog predhodnika i sljedbenika. Nad ovim tipom su definisane aritmetičke operacije +,
-, *, / kao I relacije =, >, <, <>, AND OR NOT. Nad ovim tipom su definisane i operacije

Sqr(x) - , Sqrt(x) - , Exp(x) - , sin(x), cos(x), abs(x)

Znakovni tip

Ključna riječ “CHAR”

Ovim tipom su obuhvačeni znakovi engleske abecedei nad ovim tipom su definisane sljedeče
funkcije: pred, succ

2. 5. Složeni tipovi podataka

Deklaracija konstanti se definiše ključnom riječju const. Opšti oblik za definisanje


konstanti

CONST ime_konstante = vrijednost_konstante;

Ime konstanti ne smije biti identično imenu programa, imenu ključne riječi I ne smije se
sastojat od više riječ. Pri davanju imena konstanti mora uvijek započinjat sa slovom ili
znakom.

Primjer:

q = 9.81;

pi = 3.14;

Ime = ‘ informatika’;

2. 6. Definisanje promjenljivih

Definisanje promjenljive se vrši ključnom riječju VAR. Promjenljive ili varijable su


vrijednosti koje se mijenjaju u pogledu zahtjeva korisnika ili na izlazu u zavisnosti od ulaznih
varijabli.

Opšti oblik definisanja varijabli: VAR ime_varijable:tip varijable;

Primjer

VAR a, b, c: real;

t: integer;

Znak: char;

Ime: string

9
R: bolean

Broj: longit

2. 7. Tipovi

Postoje pobrojani I nepobrojani tipovi koji na neki način predstavljaju jednu vrstu baze
podataka. To znači da na osnovu programa računar može birati određenu vrijednőst na osnovu
zadatog skupa vrijednosti tog tipa

2. 7. 1. Pobrojani tip

Definiše se ključnom rječju TYPE

Opšti oblik definisanja ovog tipa:

TYPE ime_tipa = p_v..k_v;

TYPE broj = 1…50

Znak ‘A’..’Z’;

2. 7. 2. Nepobrojani tip

TYPE dan(po, ut, sr, če, pe)

broj( 1, 2, 3, 4, 5,)

Izrazi y =

1. Primjer y: =(3*sqr(x)-1)/

2. primjer y =

y: = sqrt(sqr(x-sqrt(x)/3*(sqr(x)-4*x)

2. 8. Naredbe čitanja i pisanja

Naredbe čitanja služe za omogučavanje korisniku da unosi određene promjenljive kao


ulazne vrijednosti.

Naredbe čitanja su read READ

readln READLN

Opšti oblik naredbe čitanja

READ ( v1, v2…,vn);

10
Razlika između naredbe READ I READLN je u tome što naredba READLN rezerviše cijelu
naredbenu liniju za samo jednu varijablu dok naredba READ omogučuje učitavanje više
varijabli u jednoj naredbenoj liniji ako to proctor dozvoljava

Primjer:

Dio izvornog koda

READLN (x);

READ(y, z);

Izvršavanje

2. 9. Naredba pisanja

Naredbe pisanja služe za ispis na ekran znakovnih konstanti I promjenljivih kao


izlaznih vrijednosti. Naredbe pisanja su WRITE I WRITELN

Opšti oblik naredbe

WRITE (‘znakovna_konstanta’,v1,…v1);

WRITE (‘znakovna_konstanta’,v1,…v1);

Primjer:

Izvorni kod

WRITE (‘unesi vrijednost x:’);

READ(x);

Unesi vrijednost X:34

3. PROGRAMSKI JEZIK “C/C++”

U ovoj tački bit ce izložen kratki pregled programskog jezika C, i to kroz prikaz
njegovih osnovnih karakteristika, i kroz poredzenje sa svojstvima programskog jezika
Pascal.
3. 1. Filozofija jezika

11
Programski jezik C je mali jezik (kao i Pascal) i može jednostavno da se implementira
na malim mašinama. Programski jezik C potiče od jezika BCPL i B, koji su koriščeni za
pisanje operativnih sistema i jezičkih procesora. Ovi jezici obezbjeđuju efikasan interfejs
prema tehničkom sistemu računara (hardveru), nisu tipizirani i omogučuju različite
interpretacije jednog podatka. Osnovni doprinos C-a, u odnosu na ove jezike, jesu tipizirane
promjenljive. Programski jezik C implementiran je 1972. godine (Dennis Ritchie), kao jezik
za programiranje aplikacija pod UNIX operativnim sistemom na DEC PDP-11 seriji računara.
Godine 1977. izgrađena je verzija programskog jezika C (Portable C compiler) nezavisna od
vrste računara, koja je omogučila prenosivost programa napisanih u C-u. S obzirom na svoju
filozofiju i namjenu, programski jezik C blizak je operacijama mašinskog nivoa, omogučuje
rad sa pojedinačnim bitovima i memorijskim adresama, fleksibilan je. Ova fleksibilnost i
odsustvo restrikcija čini ga primjenljivim u raznovrsnijim (u odnosu na Pascal) domenima
programiranja. Takođe, u odnosu na Pascal, a baš zbog odsustva restrikcija (npr. stroge
tipiziranosti) i malog broja tipova, programi napisani u programskom jeziku C su manje
pouzdani i teže čitljivi nego programi napisani u programskom jeziku Pascal. Dok je cilj
izgradnje programskog jezika Pascal bio razvoj pouzdanih programa primjenom strogih
ograničenja jezika, pomoč pri otkrivanju grešaka i onemogučenje pristupa memorijskim
lokacijama izvan zone podataka (otuda i njegova ograničenja), dotle je programski jezik C
oslobodzen mnogih ograničenja kako bi bio primjenljiv u širokom spektru aplikacija.

3. 2. Pregled programskog jezika C

Jezik je mali i ne uključuje svojstva kao što su ulaz/izlaz, matematičke (elementarne)


funkcije – sin, cos, exp, itd., ali se ove komponente ”ugrađuju” u C iz odgovarajučih
biblioteka. Osnovna razlika izmedzu programskog jezika C i Pascal-a je upravo tretman
tipova. Pascal je nastao od svojih tipiziranih prethodnika (Algol60, AlgolW), i veoma je blizu
tzv. strogo tipiziranim jezicima. Pri tome se stroga tipiziranost karakteriše slijedečim
principima:

 Svaki objekat u jeziku pripada tačno jednom tipu.


 Konverzija tipova se odvija konvertovanjem vrijednosti iz jednog tipa u drugi, tj.
transformacijom reprezentacije vrijednosti a ne različitom interpretacijom iste
reprezentacije.

Programski jezik C, mada je tipiziran (ima tipove), nije strogo tipiziran jezik. Stroga
tipiziranost povečava jasnoču programa i pouzdanost. Programski jezik C, kao dio svoje
filozofije, pruža programeru slobodu interpretacije iste reprezentacije (u slučaju unije i
komponenti strukture, prenosa parametara, pokazivača). Nedostaci stroge tipiziranosti Pascal-
a ogledaju se, na primer, u strogom dimenzionisanju nizova i nemogučnosti izgradnje
procedura za rad sa nizovima različitih dimenzija; slaba tipiziranost C-a dopunjuje se strožim
tipovima u novijim verzijama jezika. S druge strane, a u vezi sa tipovima, ovi jezici se
razlikuju po opsegu implicitne konverzije tipova: u Pascal-u se implicitno mogu

12
transformisati samo podintervalni u odgovarajuče osnovne tipove, i cijeli u realni tip – to su
konverzije kojima se ne gubi informacija; u C-u može da se izvrši implicitna konverzija
izmedzu bilo koja dva njegova osnovna tipa ili pokazivača. Da bismo ilustrovali strukturu
programa na programskom jeziku C (i uporedili je sa strukturom programa na jeziku Pascal),
razmotrimo primer funkcije za binarno pretraživanje. Funkcija uzima niz slogova sortiranih
po ključnom polju i traži slog sa zadatom vrijednošču ključnog polja; vrača indeks sloga čija
je vriednost ključnog polja jednaka traženoj, ako takav postoji, i indikator neuspjeha, u
suprotnom. Ako su slogovi u nizu A a vrednost ključa koja se traži u promjenljivoj k,
algoritam može imati slijedeči oblik:

1. Postaviti l na najmanji indeks a d na najve´ci indeks niza A.


2. Dok je l · d, ponoviti korake 3–5. Ako je l > d, vratiti neuspjeh.
3. Postaviti s na indeks na sredini između l i d.
4. Ako je ključ sloga As jednak k, vratiti s.
5. Ako je ključ sloga As manji od k, postaviti l na s + 1, inače postaviti d na s ¡ 1.
Ovaj algoritam se u C-u može zapisati funkcijom BinarPret koja ima tri argumenta – niz
slogova A, broj slogova n i ključ k koji se traži. Funkcija vrača cjelobrojnu vrijednost – indeks
sloga sa ključem k, ako takav postoji, ili ¡1 ako takav slog u nizu A ne postoji. Program ima
slijedeči oblik:

#include <stdio.h>
#define NEUSPJEH ¡1
#define MAXELEM 100
typedef struct f int kljuc;
char ¤vriednost;
g slog;
slog A[MAXELEM];
int BinarPret(slog A[ ], int n, int k);
main()
f int i,n,x;
printf(”unesi broj elemenata i cjelobrojne elemente niza u rastucem
poretkunn”);
scanf(”%d”, &n);
for(i=0;i<n; )
scanf(”%d”, &(A[i++].kljuc));
printf(”unesi cjelobrojnu vrijednost kljuca koji se trazinn”);
scanf(”%d”, &x);
printf(”indeks trazenog elementa je %d”, BinarPret(A,n,x));
g
int BinarPret(slog A[ ], int n, int k)
/¤ vraca indeks elementa niza A sa kljucem k,
vraca NEUSPJEH ako k nije u A ¤/
f int l=0, d=n-1,s;
while(l <= d) f s = (l + d)/2;

13
if(k < A[s].kljuc) d=s-1;
else if(k > A[s].kljuc) l=s+1;
else return(s);
greturn(NEUSPJEH);
g
Struktura tipa slog ima polja kljuc i vrijednost, pri čemu se polje kljuc koristi za poredzenje, a
polje vrijednost se i ne koristi – ono je prisutno kao predstavnik drugih informacija koje se
pamte o pojedinom slogu. U Pascal-u, isti algoritam može se zapisati istoimenom funkcijom
BinarPret koja koristi globalne objekte uvedene slijedečim definicijama i deklaracijama:

const max = 100;


neuspjeh = -1;
type indeks = 1..max;
string = packed array[1..20] of char;
slog = record
kljuc: integer;
vrijednost: string;
end;
podaci = array[1..max] of slog;
Deklaracija funkcije u Pascal-u ima slijedeči oblik:
function BinarPret
(var A:podaci; n:indeks; k:integer):integer;
var l,s,d:indeks;
rezultat:integer;
begin
l:=1;
d:=n;
rezultat:=neuspjeh;
while (l<=d) and (rezultat = neuspjeh) do
begin
s:=(d+l) div 2;
if k< A[s].kljuc then
d:=s-1
else if k> A[s].kljuc then
l:=s+1
else
rezultat:=s
end;
BinarPret:=rezultat
End

3. 3. Struktura programa

14
Slijedeča svojstva karakterišu strukturu programa na programskom jeziku C:
1. Program može da se sastoji od večeg broja rutina (potprograma) koje se nalaze u večem
broju izvornih datoteka (program u Pascal-u sastoji se od zaglavlja i tijela programa i tačke;
tijelo programa sastoji se od odeljaka za deklarisanje obilježja, definisanje konstanti,
definisanje tipova, deklarisanje promjenljivih, deklarisanje rutina (procedura i funkcija), i
odjeljka sa iskazima).
2. Jedna izvorna datoteka sastoji se od spoljašnjih (external) objekata – podataka i funkcija (to
su podaci koji su definisani izvan funkcija a sve funkcije su spoljašnje) i koji mogu biti
deklarisani kao lokalni za tu datoteku (to su statički –”static” objekti) ili globalni za sve
datoteke tog programa. Dakle, važenje imena (objekata) vezano je za fizičku datoteku, a ne za
blok ili rutinu (u Pascal-u važe normalna pravila važenja objekata u blokovskim strukturnim
jezicima; objekti su lokalni za rutine – procedure i funkcije u kojima su deklarisani, a globalni
za rutine sadržane (deklarisane) u rutini u kojoj je objekat deklarisan). Jedan spoljašnji
objekat dostupan je svim funkcijama u istoj izvornoj datoteci koje sliede za definicijom tog
objekta. Pristup spoljašnjim objektima definisanim u jednoj izvornoj datoteci, od strane
funkcija iz druge datoteke, postiže se navodzenjem deklaracije ”external” koja samo navodi
imei tip ali ne rezerviše memorijski prostor.

3. 4. Preprocesor C-a

Postoje tri vrste preprocesorskih instrukcija (sve počinju znakom #): zamjena
stringova instrukcijom # define (u našem primjeru string ”NEUSPJEH” zamjenjuje se, gde
god se pojavi u programu, stringom ”¡1”), uključivanje teksta, obično tekstuelne datoteke koja
sadrži standardni skup deklaracija, tzv. standardno zaglavlje, instrukcijom # include (u našem
primjeru na početak programa uključuje se tekstuelna datoteka), i instrukcije za uslovnu
kompilaciju

3. 5 Tipovi podataka

Deklaracija promjenljivih u C-u ima oblik vrsta tip lista-promjenljivih gde je vrsta –
oznaka memorijskog prostora i trajnosti promjenljivih (auto, static, extern, register, typedef),
tip –identifikator tipa (predefinisanog, korisnički definisanog ili strukturnog – strukture ili
unije).
Na primer,
int v[50];
deklariše 50-elementni cjelobrojni niz v.
Korisnički tip može se definisati definicijom tipa oblika
typedef tip id-tipa,
npr.
typedef int[50] vector;
(definisan je novi tip koji se zove ”vektor” i koji je 50-elementni cjelobrojni niz). Niz v sada
može da se deklariše i kao vector v; U našem primjeru, definicijom tipa strukture definisan je
tip sa imenom slog. Oblast važenja promjenljive zavisi od toga gde je deklarisana i koje je
vrste, i može biti blok, funkcija, izvorna datoteka, ili sve izvorne datoteke. Trajanje
promjenljive je nezavisno od njene oblasti važenja, zavisi od njene vrste, i može biti trajanje
15
izvršavanja bloka, funkcije ili programa. Na primjer, promjenljiva lokalna za blok, sa
trajanjem izvršenja bloka, zove se automatska (auto) promjenljiva, dok je promjenljiva
lokalna za blok sa trajanjem izvršenja programa – statička (static) promenljiva.

3. 6. Izrazi.

Komentar o tipovima. Dok je filozofija tipova podataka u Pascal-u – skrivanje


svojstava hardvera, adresa, bitova, filozofija tipova podataka u C-u je obezbjedzenje
pogodnog načina da se tim hardverom upravlja. Mada je nivo instrukcija u C-u obično viši od
mašinskog, objekti kojima operiše su nivoa sličnog mašinskom. U C-u se može jednostavno
pristupiti specifičnim fizičkim adresama, kao i specifičnim bitovima u riječi, što u Pascal-u
nije moguče ili nije jednostavno. Zbog mješanja buleanskog i cjelobrojnog tipa (svaka
cjelobrojna vrednost 6=0 u Cu se može interpretirati kao TRUE, a 0 – kao FALSE; logički
izraz dobija vrednost 1 ako je tačan, i 0 ako je netačan), C kompilatori ne mogu da otkriju
izvjesne greške koje se lako otkrivaju u Pascal-u. Na primjer, u C-u su sintaksno korektni
relacijski izrazi 1<2<3 i 3<2<1 i oba se izračunavaju na 1 (TRUE). Naime, izračunavanje
izraza ide s lijeva na desno. U prvom izrazu, 1<2 daje 1 (tačno), a 1<3 daje opet jedan. U
drugom izrazu, 3<2 daje vrijednost 0 (netačno), a 0<1 daje opet jedan. Nizovi različitih
dimenzija u Pascal-u su različitih tipova, pa se ne mogu napisati procedure (funkcije) koje
prihvataju nizove različitih dužina. Zato se ne može napisati biblioteka opštih rutina za obradu
stringova (nizova karaktera). U C-u ovaj problem ne postoji.

3. 7. Iskazi

U programskom jeziku C, svaki izraz može biti ”pretvoren” u iskaz ako mu se na kraj
doda tačka-zapeta (”;”); izraz se tada ”izvršava” da bi se izvršili njegovi bočni efekti, a
vrijednost koju izračunava – zanemaruje se.Serijska kompozicija. Iskaz dodjele u C-u je izraz
dodjele sa tačka zapetom na kraju. Dodjela se može izvršiti izmedzu svih tipova osim
nizovskog. Višestruke dodjele imaju smisla jer je dodjela – izraz. Na primer, i=j=k=0; jeste
izraz (odnosno iskaz) koji se izračunava z desna u lijevo tako što promjenljiva k dobija
vrijednost 0, pod izraz k = 0 dobija vrijednost 0, ta vrijednost se dodjeljuje promjenljivoj j,
pod izraz j = k = 0 dobija vrijednost 0, a ta vrijednost se dodjeljuje promjenljivoj i i cijeli izraz
dobija vrijednost promjenljive i (0). Niz iskaza grupiše se u jedan logički (serijski
komponovani) iskaz uokviravanjem zagradama (f, g). Osnovna konstrukcija za selekciju
(izbor) iskaza u C-u je oblika
if(uslov) iskaz1
else iskaz2
Uslov je izraz ˇcija je istinitosna vrijednost netačno ako je 0, a inače je tačno. Semantika
iskaza je ista kao i u drugim programskim jezicima. Za višestruki izbor prema vrednosti izraza
programski jezik C ima iskaz switch:
switch (izraz) f case konstantni izraz1: lista iskaza1;
case konstantni izraz2: lista iskaza2;

3. 8. Odnos izmedzu C i C++


16
Kao što je Paskal najtipičniji strukturno orijentirani programski jezik, tako je C++ (uz
javu međutim koja nasljeđuje večinu koncepata i sintaksu od C++) najtipičniji objektno
orijentirani programski jezik. C++ predstavlja proširenje programskog jezika C, u kojeg uvodi
koncept objektno orijentiranog programiranja. Jezik C ostao je i dalje uključen u jezik C++,
kao njegov podskup. Kao takav, C++ podržava oba programska koncepta: koncept
strukturnog programiranja i koncept objektno orijentiranog programiranja. Uprkos tome što
programi pisani u C- urade i u C++ u dosta slučajevanudi drukčiji put rješavanja istih
programskih jezika

Pogledajmo primjer jednog pravilno napisanog programa:


Zadatak: Napišite program koji će zbrojiti i oduzeti dva cijela broja.
Ulaz: U prvom retku se nalaze dva cijela broja A i B, menusobno odvojena jednim
razmakom.
Izlaz: U prvi redak ispišite zbroj, a u drugi redak razliku brojeva A i B.

Sistem za evaluaciju nalazi se na računaru s LINUX operativnim sustavom. Stoga, da bi se


vaš program uspješno evaluirao na Sistemu, ne smijete koristiti naredbe i funkcije specifične
za DOS. Tako npr. U Pascalu ne smijete koristiti CRT modul, a u C/C++-u conio.h i slične
module. Za dodjelu bodova važan je samo tačan ispis rezultata. Prilikom evaluacije nitko neće
gledati vaš izvorni kod već će on samo biti korišten za izradu izvršne datoteke, a bodove za
pojedini test podatak će dobiti samo oni programi koji će generirati tačan rezultat i regularno
završiti svoje izvonenje unutar predviđenog vremenskog i memorijskog ograničenja. Obratite
pažnju da ne nose svi zadaci jednak broj bodova. Lakši i brže rješivi zadaci nose manje
bodova, a teži zadaci za čije je rješavanje potrebno više vremena, znanja i koncentracije nose
više bodova. Težina zadataka je takva da većina natjecatelja neće uspjeti riješiti sve zadatke,
tako da ako i ne riješite neki zadatak, nemojte biti obeshrabreni nego rješavajte ostale zadatke.
Da bi program koji rješava problem iz nekog zadatka dobio maksimalni broj bodova,
primijenjeni algoritam mora biti valjan i efikasan tj. brz. Test podaci su unaprijed osmišljeni i
koncipirani na način da će programi koji koriste neke manje efikasne, ali valjane algoritme,
također dobiti određeni broj bodova (npr. od ukupno 60 bodova, jako loš i spor algoritam će
dobiti npr. 20 bodova, dok će dobar algoritam, ali ne i najbolji dobiti npr. 40 bodova).
Programi koji će raditi jako brzo za sve test podatke, ali neće davati tačne rezultate, naravno,
neće donositi bodove. Znači, valjanost algoritma je na prvom mjestu, a brzina izvršavanja na
drugom. Prilikom rješavanja zadataka preporučuje se korištenje olovke i papira za skiciranje.

17
4. ZAKLJUČAK

Definisali smo neke pojmove informatike vezano za ovu oblast, programski jezici se
danas sve više koriste kako u javnom tako i u privatnom sektoru što povečava njihovu
materijalnu vrijednost. Ja sam obradio dva važna jezika i zaključio njihove razlike odnosno
prednosti. Naime C++ je proširenje i inovacija od C jezika i C++ se danas koristi u svijetu za
proizvodnju novih softvera koji se pojavljuju na tržištima širom planete i njihove se cijene
kreču od nekoliko hiljada pa do nekoliko stotina miliona dolara što je za naše podnevlje
preskupo. Moje mišljenje je da če se pojaviti još neki novi jezik koji če biti jednostavniji i
prilagodniji za rad korisniku što je i cilj svake softverske kompanije što če im pružat veče
mogučnosti za prodajom komercijalnih softvera.

18
5. LITERATURA

 http://bs.wikipedia.org/wiki/Programski_jezik

 http://www.info.biz.hr

 http://www.hidd.hr/virref/znanja_programski.htm

 http://www.phy.hr/~tniksic/FI/materijali/C.pdf

 http://www.grad.hr/nastava/gs/oii2/pj.pdf

 http://laris.fesb.hr/predavanja/programskijezici.html

 Moja arhiva iz srednje škole

19

You might also like