Professional Documents
Culture Documents
Alem Kozar
Alem Kozar
SEMINARSKI RAD
PROGRAMSKI JEZICI
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.
3
1. 1. Osnovni pojmovi u programskim jezicima
Realni brojevi
Primjer 12.34:
12.34 = 12.34*
12.34 = 123.4*
12.34 = 1234.*
12.34 = 12340*
12.34 = 0.1234*
12.34 = 0.01234*
Baza- predznak
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.
4
Realni brojevi u dvostrukoj preciznosti ( 8 bajta = 64 bita)
Opseg realnih brojeva koji mogu biti predstavljeni u računaru je ograničen brojem
Realne konstante
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
Inteligentni 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
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.
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
6
programskih jezika. Cijena ovih jezika se kreče od nekoliko stotina hiljada pa do nekoliko
miliona eura.
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
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
Deklaracija određenih tipova podataka može biti širokog opsega iz tog razloga sve
djelimo na proste i složene tipove podataka.
logički tipovi
7
cjelobrojni tipovi
realni tipovi
znakovni tipovi
Logički tip
TRUE – istina 1
FALSE – laž 0
Cjelobrojni tip
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 +, -.
18 DIV 4 = 4
18 MOD 4= 2
sqr(x) - , abs(x) – x
Realni tip
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
Znakovni tip
Ovim tipom su obuhvačeni znakovi engleske abecedei nad ovim tipom su definisane sljedeče
funkcije: pred, succ
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
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
Znak ‘A’..’Z’;
2. 7. 2. Nepobrojani tip
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)
readln READLN
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:
READLN (x);
READ(y, z);
Izvršavanje
2. 9. Naredba pisanja
WRITE (‘znakovna_konstanta’,v1,…v1);
WRITE (‘znakovna_konstanta’,v1,…v1);
Primjer:
Izvorni kod
READ(x);
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.
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:
#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:
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.
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;
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
19