PASCAL Skripta

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 16

PASCAL skripta

Slavisa Savic

Programski jezik

1
Copyright mini-forum.rs.ba

PASCAL skripta
Sadrzaj:
UVOD: o Detaljna teorijska razrada o Iznalazenje konceptualnog rjesenja o Implementacija koriscenjem nekog programskog jezika O PROGRAMU: o Osnovne operacije o Rezervisane rijeci o Identifikatori o Komentari o Promjenljive o Konstante o Programske strukture: - Linijske - Razgranate - Ciklicne o Nizovi: - Jednodimenzioni - Dvodimenzioni

Slavisa Savic

2
Copyright mini-forum.rs.ba

PASCAL skripta
UVOD
Programiranje??? U danasnje vrijeme ovo je veoma primamljiv termin, pod kojim se najcesce podrazumeva kreiranje racunarskih programa, sto ukljucuje detaljnu teorijsku razradu problema,

Slavisa Savic

iznalazenje konceptualnog rjesenja i implementaciju koriscenjem nekog od programskih jezika.

Detaljna teorijska razrada


Kada kazemo detaljna teorijska razrada znaci da prije bilo kakvog daljeg rada prvo moramo razmotriti da li je trazeni zadatak(problem) moguce rjesiti. To podrazumjeva: odrediti relaciju izmedju trazenih(nepoznate promjenljive) i zadanih(poznate velicine) veza, koliko ce biti funkcionalan, tj da rjesava sto veci broj slicnih zadataka, i td. Nakon sto utvrdimo da je zadatak rjesiv, pristupamo izradi algoritma.

Iznalazenje konceptualnog rjesenja


Iznalazenje konceptualnog rjesenja predstavlja dobro formiran algoritam. A algoritam je niz operacija koje je potrebno obaviti da bi dosli do zeljenog rjesenja. Da bi lakse shvatili algoritam opisivacemo ga preko: prirodnim jezikom, pseudo kodom i dijagramom toka. Kada algoritam opisujemo prirodnim jezikom moramo biti dovoljno precizni i detaljni te je potrebno voditi racuna da ne budemo dvosmisleni, vec direktni sa hronoloski poredanim operacijama. Pseudo kod je kombinacija prirodnog jezika i nekog neformalnog programskog jezika, pa njegova primjena zahtijeva zapisivanje u obliku nekog programskog jezika, ali bes stroge notacije. Dijagram toka predstavlja graficki prikaz algoritma ciji su simboli usvojeni po ISO standardima. Simboli se mogu podijeliti u dvije grupe: simbole koji predstavljaju obradu i simbole koji opisuju tok obrade (strelice). Tokom razvoja algoritma program se moze rasclaniti u vise samostalnih cjelina. To su PROCEDURE I FUNCTION. Rasclanjivanjem na podprograme stedimo memoriju i preglednost programa, ali to nije toliko bitno, ako programiramo manji program.

3
Copyright mini-forum.rs.ba

PASCAL skripta
Simboli koji predstavljaju obradu

Slavisa Savic

Oznacava pocetak programa.

Oznacava sve ulazne informacije.

Oznacava postupak svih vrsta obrade. Moze se bezuslovno ponavljati vise puta za redom. Oznacava postavljanje uslova. Svaki uslov ima dvije izlazne grane DA I NE. Ako je zadani uslov ispunjen obrada prolazi kroz granu DA, u suprotnom kroz NE.

Oznacava sve izlazne informacije.

Oznacava kraj programa.

Implementacija koriscenjem nekog programskog jezika


Implementacija koriscenjem nekog programskog jezika je nista drugo nego algoritam zapisan u nekom programskom jeziku. Racunar je masina koja sama moze odradjivati neke osnovne funkcije poput sabiranja, oduzimanja, mnozenja, dijeljenja pomocu masinskog jezika koji razumije, a to su 0 i 1. Zato je programski jezik napravljen da ga razumije i racunar i programer. Ustvari racunar ne razumije ni jedan programski jezik, ali zato svaki programski jezik mora posjedovati svoj alat za prevodjenje ili interpretaciju programa. Prevodjenje je proces formiranja ekvivalentnog programa na masinskoi jezik, a interpretacija proces citanja od strane racunara i njegovo istovremeno izvrsavanje uz pomoc drugog programa interpretatora. Postoji dosta programskih jezika, jer naravno svaki od njih ima svoju posebnu namjenu, kao sto su BASIC, PASCAL, C++, JAVA, PHP i mnogi drugi.

4
Copyright mini-forum.rs.ba

PASCAL skripta
O PROGRAMU
Programski jezik Pascal se ubraja u siroko rasprostranjene programske jezike. Odlikuje se veoma jednostavnom sintaksom i bas zbog toga je najbolji za mlade programere, tj. za obuku u programiranju, iako je star 30-ak godina. Originalnu verziju ovog programskog jezika stvorio je Niclaus Wirth, a kasnije su razvijene nove verzije kao sto je Borlandov Turbo Pascal. Pascal kao program ne zauzima mnogo memorije, svega oko 5 Mb, tako da mu je i okruzenje jednostavno i lakopamtljivo. Osnovne opcije programa su: - compile (prevodjenje) - Alt+F9; - run (pokretanje) - Ctrl+F9; - user screen (korisnik zaslona) - Alt+F5; -save (sacuvavanje) - F2; -open (otvaranje) - F3; -exit (izlaz) - Alt+X; Sto se tice pisanja programa u PASCALU mogu se koristiti i velika i mala slova engleske abecede, s tim sto nema razlike izmedju velikih i malih slova, takodje razdvajanje cjelina razmakom i praznim redom nece uticati na rad programa. Elementi programa se zavrsavaju ( ; ), a kraj programa sa ( . ). Rezervisane rijeci (naredbe) su rijeci koje definisu neku naredbu koja ce biti odradjena, PROGRAM(oznacava pocetak programa), VAR, BEGIN(pocetak glavnog programa), WRITE, READ, ELSE, END i td. Identifikatori su znakovi koje unosi programer po svome izboru kojima definise objekte programa, identifikatori takodje nesmiju biti rezervisane rijeci. Pa cemo tako i napisati najprostiji program, koji izgleda ovako.

Slavisa Savic

PROGRAM bilo_koja_rijec; BEGIN END.

U ovom programu imamo rezervisane rijeci PROGRAM, BEGIN, END i identifikator bilo_koja_rijec, bitna stvar je da ime programa mora biti jedna rijec, bez razmaka. Takodje primjetimo da na kraju PROGRAM stoji ( ; ), a na kraju BEGIN ne, to je zato sto iza BEGIN nikad

5
Copyright mini-forum.rs.ba

PASCAL skripta
ne stoji ( ; ), kao ni iza THEN, ELSE( to cemo primjetiti kasnije kod postavljanja uslova), ako bi stavili kompilacija ne bi bila moguca. Pored rezervisanih rijeci i identifikatora, u programu se mogu pisati i komentari. Komentari nemaju nikakvu funkciju osim sto nam bolje objasne o cemu se radi u programu. Mogu se pisati na pocetku reda, u sredini, na kraju, pri cemu se ne mora svaki red zagradjivati. Komentari se obiljezavaju sa (* komentar *), a mogu i { komentar }.

Slavisa Savic

PROGRAM bilo_koja_rijec; {bilo_koja_rijec je naziv programa} BEGIN END.


Promjenljive (VAR) su takodje rijeci koje su strogo tipizirane, sto znaci da svaka promjenljiva ima odredjeni tip. Postoje cetiri vrste promjenljivih, a to su: boolean logicki tip, sa vrijednostima true(tacno) i false(netacno); integer cjelobrojni tip; real realni tip; char znakovni tip, kome odgovaraju vrijednosti znakova i simbola

PROGRAM bilo_koja_rijec; VAR a:boolean; b:integer; c:real; d:char; BEGIN END.

{bilo_koja_rijec je naziv programa} {promjenljiva a je logickog tipa} {promjenljiva b je cjelobrojnog tipa} {promjenljiva c je realnog tipa} {prmojenljiva d je znakovnog tipa}

Konstante (CONST) su nista drugo vec konstante koje se uvode, ako su nam potrebne u programu, a nisu definisane ranije. Npr. konstanta je definisana u samom programskom jeziku (pi), pa je necemo posebno navoditi, ako u programu racunamo povrsinu ili zapreminu kruga, ali konstantu koja nije definisana cemo uvesti na sledeci nacin.

PROGRAM bilo_koja_rijec; VAR a:boolean; b:integer; c:real; d:char; CONST h:8.56 BEGIN END.

{bilo_koja_rijec je naziv programa} {promjenljiva a je logickog tipa} {promjenljiva b je cjelobrojnog tipa} {promjenljiva c je realnog tipa} {prmojenljiva d je znakovnog tipa} {uveli smo konstantu h cija je vrijednost 8.56}

6
Copyright mini-forum.rs.ba

PASCAL skripta
Prethodno opisane vrste promjenljivih imaju i odredjene operacije i funkcije koje su dole predstavljene: LOGICKE

Slavisa Savic

Operacije: Operator NOT OR AND Operacija negacija diskusija konjugacija

Standardni relacijski operatori: Operator = <> < > <= => Operacija jednako razlicito manje vece manje ili jednako vece ili jednako

CJELOBROJNE Ugradjenje operacije: Operator + + * DIV MOD Operacija odredjivanje znaka promjena znaka sabiranje oduzimanje mnozenje cjelobrojno dijeljenje ostatak cjelobrojnog dijeljenja

7
Copyright mini-forum.rs.ba

PASCAL skripta
Standardne funkcije: Funkcija abs(x) Tip integer->integer Opis apsolutna vrijednost true(istina) ako je x neparan, inace false(laz) kvadrat

Slavisa Savic

sdd(x) sqr(x)

integer->boolean integer->integer

REALNE

Ugradjene operacije: Operator + + * / Operacija odredjivanje znaka promjena znaka sabiranje oduzimanje mnozenje dijeljenje

Standardne funkcije: Funkcija abs(x) sin(x) cos(x) arctan(x) exp(x) ln(x) sqr(x) sqrt(x) frac(x) int(x) Tip real->real real->real real->real real->real real->real real->real real->real real->real real->real real->real Opis apsolutna vrijednost sinus kosinus arkus tangens exponent: ex prirodni logaritam kvadrat: x2 kvadratni korijen decimalni dio: x-[x] cjelobrojni dio: [x]

8
Copyright mini-forum.rs.ba

PASCAL skripta
Programske strukture: Linijske programske structure Razgranate programske structure Ciklicne programske structure

Slavisa Savic

Linijska programska stuktura je struktura u kojoj se obrada vrsi za obradom samo jednom u citavom program i na kraju izdaje rjesenje. PRIMJER: Zadatak 1.0 Ucitati dva cijela broja te izdati njihov zbir.

Program:
program zadatak_1_0; var a,b,c:integer; vrijednosti} begin write ('unesi prvi broj '); readln (a); write ('unesi drugi broj '); readln (b); c:=a+b; writeln ('zbir je ', c); promjenljive c} end. {ime programa jedna rijec} {a,b,c su promjenljive cjelobrojne {pocetak} {poruka ispisana korisniku programa} {ucitana promjenljiva a} {poruka ispisana korisniku programa} {ucitana promjenljiva b} {obrada programa c=a+b} {puruka ispisana korisniku vrijednosti {kraj programa}

Rezervisane rijeci READ ili READLN i WRITE ili WRITELN imaju u sustini istu funkciju, jedina razlika je sto LN omogucuje korisniku da unos vrsi u sledeci red.

9
Copyright mini-forum.rs.ba

PASCAL skripta
PRIMJER: Zadatak 1.1 Vrijeme na ulazu u satima, minutama i sekundama pretvoriti u vrijeme u sekundama. Program:

Slavisa Savic

program zadatak_1_1; gram {ime programa} var h,m,s,sk:integer; teger; {promjenljive cjelobrojnog tipa} begin {pocetak programa} write (vrijeme u satima, min. i sek. '); atima, {ispis korisniku programa} readln (h,m,s); {ucitava sve tri promjenljive} va promjenljive sk:=h*3600+m*60+s; {obrada ulaznih podataka} rada writeln ('vrijeme u sekundama je ', sk); ndama {ispis korisniku programa} end. {kraj programa}

Ako ucitavamo vise vrijednosti promjenljivih odjednom, potrebno ih je odvojiti zarezom ( , ).

PRIMJER: Zadatak 1.2 Od 5 brojeva sa ulaza ispisati srednju vrijednost. Provjera: ulaz: 5, 3, 4, 4, 2 izlaz: 3.6

PRIMJER: Zadatak 1.3 Odrediti povrsinu i obim kruga za uneseni precnik. ti Provjera: ulaz: 5 izlaz: P=78.5 O=31.4

Razgranata programska struktura samo ime kaze omogucuje grananje programa na dvije ili vise a a grana. Ovom strukturom ispitujemo razne uslove koji su nam zadani npr. pozitivan - negativan broj, paran neparan i td. Naredba razgranate strukture je IF..THEN..ELSE, takodje mozemo izmedju IF i THEN ubaciti OR sto cemo vidjeti u sledecim primjerima PRIMJER: Zadatak 1.4 Ispitati broj na ulazu da li je pozitivan ili negativan.

10
Copyright mini-forum.rs.ba

PASCAL skripta
program zadatak_1_4; var a:real; begin write ('unesi realan broj '); readln (a); if a<0 then writeln ('broj je negativan') else writeln ('broj je pozitivan'); end. {promjenljiva a je realna vrijednost}

Slavisa Savic

{postaljamo uslov} {ispis za dati uslov} {uslov ako prethodni nije tacan} {ispis ako prethodni nije tacan}

U ovom zadatku smo za ucitanu promjenljivu a postavili uslov IF(ako) je manja < od 0 program ce ispisati da je broj negativan, ELSE(inace) je pozitivan. Da smo npr u zadatku naveli pozitivan, negativan ili 0 onda bi glasio ovako.

program zadatak_1_4; var a:real; begin write ('unesi realan broj '); readln (a); if a<0 then writeln ('broj je negativan') or a=0 then writeln (broj je 0) else writeln ('broj je pozitivan'); end.

PRIMJER: Zadatak 1.5 Provjeriti za ucitani broj da li je paran, ili neparan.

program zadatak_1_5; var a:integer; begin write ('unesi broj '); readln (a); if a mod 2=0 then writeln ('broj je paran') else writeln ('broj je neparan'); end.

11
Copyright mini-forum.rs.ba

PASCAL skripta
Ako neki broj a (npr. 4) dijelimo po modulu sa 2 i pri tome imamo ostatak 0 znaci da je taj broj dijeljiv sa 2, a samim tim i paran, inace je neparan.

Slavisa Savic

PRIMJER: Zadatak 1.6 Ucitati dva broja, a zatim ispisati veci. Provjera: ulaz: 5, 1 izlaz: 5

PRIMJER: Zadatak 1.7 Ispitati da li je pri broj sa ulaza djeljiv sa drugim, i ispisati rezultat ako je dijeljiv, inace ispisati ostatak. Provjera: ulaz: 10, 2 izlaz: rjesenje je 5 ulaz: 10, 3 izlaz: ostatak je 1

Ciklicna programska struktura predstavlja obrtanje nekog ciklusa oderedjeni broj puta, koji takodje mi definisemo. Neke od naredi za ciklicnu strukturu je FOR..TO(DOWNTO)..DO, WHILE, REPEAT i td. PRIMJER: Zadatak 1.8 Ispisati sumu ucitanog broja.

program zadatak_1_8; var n,i,s:integer; begin write ('unesi broj: '); readln (n); s:=0; for i:=1 to n do s:=s+i; write (s,' '); writeln; end.

12
Copyright mini-forum.rs.ba

PASCAL skripta
U ovom zadatku smo prvo postavili pocetnu vrijednost sume s , a zatim definisali da brojac i ide od 1 pa sve do n te vrijednosti koju smo ucitali. Tako da se ciklus ponavlja n broj puta, sve dok ne dostigne n.

Slavisa Savic

PRIMJER: Zadatak 1.9 Ispisati sumu ucitanog broja, naredbmom WHILE.

program zadatak_1_9; var n,s,i:integer; begin write ('unesi broj '); readln (n); s:=0; i:=1; while i<=n do begin s:=s+i; i:=i+1; end; writeln ('suma prvih ',n,' prirodnih brojeva je ',s); writeln; end.

I u ovom slucaju petlja ce se ponavljati n puta, sve dok brojac i ne dostigne vrijednost n.

PRIMJER: Zadatak 1.10 Ispisati sve djelioce ucitanog broja. Provjera: ulaz: 12 izlaz: 1, 2, 3, 4, 6, 12

PRIMJER: Zadatak 1.11 Ispisati sve netrivijalne(trivijalani su 1 i taj isti broj) djelioce ucitanog broja. Provjera: ulaz: 12 izlaz: 2, 3, 4, 6

13
Copyright mini-forum.rs.ba

PASCAL skripta
Nizovi Jednodimenzioni Dvodimenzioni

Slavisa Savic

Jednodimenzioni Nizovi se uopsteno koriste u slucajevima kada imamo veliki proj promjenljivih, zato uvodimo promjenljive koje imaju isto ime n, ali se razlikuju po indeksu n1, n2, n3, n4..n(i). Niz je skup promjenljivih koji se sastoji od elemenata niza n(i). Definise se: TYPE niz=ARRAY M1..M2 of INTEGER; U prevodu, uveli smo novi niz zvan niz koji ima vrijednost od M1 do M2, M1 i M2 predstavljaju neke vrijednosti, INTEGER nam govori o tome da je niz cjelobrojne vrijednosti. Npr. TYPE niz=ARRAY [1..30] of INTEGER; U prevodu to je niz niz koji ima cjelobrojnu vrijednost od 1 do 30. Npr. dat je niz A= 58 69 45 34 A smo definisali kao promjenljivu niz pa ona ima vrijednost: A1=58 A2=69 A3=45 A4=34 PRIMJER: Zadatak 1.12 Ucitati cjelobrojni niz A koji ima najvise 20 elemenata, pa ispisati sve elemente onim redom kojim su uneseni.

program zadatak_1_12; const maxniz=20; type niz=array [1..maxniz] of integer; var n,i:integer; A:niz; begin write ('koliko ima elemenata u nizu (n<20) n= '); readln (n); if (n<1) or (n>maxniz) then writeln ('nekorektan unos!!!') else begin for i:=1 to n do begin write ('A[',i,']='); readln (A[i]); end; writeln ('brojevi su uneseni ovim redom: '); for i:=1 to n do write (A[i],' '); writeln;

14
Copyright mini-forum.rs.ba

PASCAL skripta
end; end.

Slavisa Savic

Nemojte da vas zbuni sto je BEGIN napisano vise puta, to je samo zbog potrebnih podprograma, tako da se podprogrami zavrsavaju sa END;, a glavni sa END..

Dvodimenzioni Kao i kod jednodimenzionih, tako i kod dvodimenzionih nozvova korstimo ih kada imamo veliku broj promjenljivih, a potrebno ih jes sortirati u kolone i redove, radi sto lakse preglednosti. To se zove formiranje matrice od i redova i j kolona. Definise se: n(i,j) n(1,1) n(2,1) n(i,1) n(1,2) n(1,3) n(1,j) n(2,j) n(i,j)

n(2,2) n(2,3) n(i,2) n(i,3)

n(i,j) predstavlja element dvodimenzionalnog niza gdje je indeks i broj reda, a j indeks kolone. Nizovi su isti samo u slucaju kada sui m svi elementi isti. Elementi n(1,1), n(2,2)n(i,j) predstavljaju glavnu dijagonalu dvodimenzionog niza, a n(1,j), a(2,3)n(i,1) sporednu dijagonalu. Nizovi kod kojih su svi elementi osim onih na glavnoj dijagonali jednaki 0, nazivaju se dijagonalnim, a oni kod kojih su svi elementi na glavnoj dijagonali jednaki 1 nazivaju se jedinicni. U program se definisu kao: TYPE niz=ARRAY [1..5, 1..7] of INTEGER; Dati niz ima 5 redova i 7 kolona. Sabiranje dvodimenzionih nizova je ostvarivo jedino u slucaju, ako niz A ima isti broj elemenata kao i niz B, a mnozenje samo ako niz A ima isti broj kolona kao i niz B. SABIRANJE A+B=B+A A+(A+B)=(A+B)+C A+0=0+A=A (k+1)*A=k*A+1*A k*(A+B)=k*A+k*B MNOZENJE A*B B*A A*E=E*A=A 0*A=A*0=0 A*(B*C)=(A*B)*C k*A*B=(k*A)*B=A*k*B (A+B)*C=A*C+B*C

15
Copyright mini-forum.rs.ba

PASCAL skripta
PRIMJER: Zadatak 1.13 Ucitati cjeloborjnu matricu A, koja ima n redova i m kolona (n,m<=10). Ucitanu matricu ispisati u obliku tabele.

Slavisa Savic

program zadatak_1_13; const maxel=20; type matrica=array [1..maxel] of integer; var i,j,n,m:integer; A:matrica; begin write ('n= '); readln (n); write ('m= '); readln (m); if (n<1) or (n>maxel) or (m<1) or (m>maxel) then writeln ('nekorektan unos!!!') else begin for i:=1 to n do for j:=1 to m do begin write ('A[',i,',',j,']= '); readln (A[i,j]); end; writeln ('ucitana je matrica: '); for i:=1 to n do begin for j:=1 to m do write (A[i,j]:6); writeln; end; end; end.

16
Copyright mini-forum.rs.ba

You might also like