Upload
djuka65
View
274
Download
1
Embed Size (px)
Citation preview
7/29/2019 PASCAL Skripta
1/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
1
Programski jezik
7/29/2019 PASCAL Skripta
2/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
2
Sadrzaj:
UVOD:o Detaljna teorijska razradao Iznalazenje konceptualnog rjesenjao Implementacija koriscenjem nekog programskog jezika
O PROGRAMU:o Osnovne operacijeo Rezervisane rijecio Identifikatorio Komentario Promjenljiveo Konstanteo Programske strukture:
- Linijske- Razgranate- Ciklicne
o
Nizovi:- Jednodimenzioni- Dvodimenzioni
7/29/2019 PASCAL Skripta
3/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
3
UVOD
Programiranje??? U danasnje vrijeme ovo je veoma primamljiv termin, pod kojim se najcesce
podrazumeva kreiranje racunarskih programa, sto ukljucuje detaljnu teorijsku razradu problema,
iznalazenje konceptualnog rjesenjai 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 jepotrebno voditi racuna da ne budemo dvosmisleni, vec direktni sa hronoloski poredanim
operacijama.
Pseudo kod je kombinacija prirodnog jezika i nekog neformalnog programskog jezika, panjegova primjena zahtijeva zapisivanje u obliku nekog programskog jezika, ali bes stroge
notacije.
Dijagram toka predstavlja graficki prikaz algoritma ciji su simboli usvojeni po ISOstandardima. 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.
7/29/2019 PASCAL Skripta
4/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
4
Simboli koji predstavljaju obradu
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.
7/29/2019 PASCAL Skripta
5/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
5
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.
PROGRAM bilo_koja_rijec;
BEGINEND.
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
7/29/2019 PASCAL Skripta
6/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
6
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 }.
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; {bilo_koja_rijec je naziv programa}
VAR a:boolean; {promjenljiva a je logickog tipa}
b:integer; {promjenljiva b je cjelobrojnog tipa}
c:real; {promjenljiva c je realnog tipa}
d:char; {prmojenljiva d je znakovnog tipa}
BEGIN
END.
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; {bilo_koja_rijec je naziv programa}
VAR a:boolean; {promjenljiva a je logickog tipa}
b:integer; {promjenljiva b je cjelobrojnog tipa}
c:real; {promjenljiva c je realnog tipa}
d:char; {prmojenljiva d je znakovnog tipa}CONST h:8.56 {uveli smo konstantu h cija je vrijednost 8.56}
BEGIN
END.
7/29/2019 PASCAL Skripta
7/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
7
Prethodno opisane vrste promjenljivih imaju i odredjene operacije i funkcije koje su dole
predstavljene:
LOGICKE
Operacije:
Operator Operacija
NOT negacija
OR diskusija
AND konjugacija
Standardni relacijski operatori:
Operator Operacija
= jednako
razlicito
< manje
> vece
vece ili jednako
CJELOBROJNEUgradjenje operacije:
Operator Operacija
+ odredjivanje znaka
- promjena znaka
+ sabiranje
- oduzimanje
* mnozenje
DIV cjelobrojno dijeljenje
MOD ostatak cjelobrojnog dijeljenja
7/29/2019 PASCAL Skripta
8/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
8
Standardne funkcije:
Funkcija Tip Opis
abs(x) integer->integerapsolutna
vrijednost
sdd(x) integer->booleantrue(istina) ako je x
neparan, inace
false(laz)
sqr(x) integer->integer kvadrat
REALNEUgradjene operacije:
Operator Operacija
+ odredjivanje znaka
- promjena znaka
+ sabiranje
- oduzimanje
* mnozenje
/ dijeljenje
Standardne funkcije:
Funkcija Tip Opis
abs(x) real->real apsolutna vrijednost
sin(x) real->real sinus
cos(x) real->real kosinus
arctan(x) real->real arkus tangens
exp(x) real->real exponent: ex
ln(x) real->real prirodni logaritam
sqr(x) real->real kvadrat: x2
sqrt(x) real->real kvadratni korijen
frac(x) real->real decimalni dio: x-[x]
int(x) real->real cjelobrojni dio: [x]
7/29/2019 PASCAL Skripta
9/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
9
Programske strukture:
Linijske programske structure Razgranate programske structure Ciklicne programske structure
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; {ime programa jedna rijec}
var a,b,c:integer; {a,b,c su promjenljive cjelobrojnevrijednosti}
begin {pocetak}
write ('unesi prvi broj '); {poruka ispisana korisniku programa}
readln (a); {ucitana promjenljiva a}
write ('unesi drugi broj '); {poruka ispisana korisniku programa}
readln (b); {ucitana promjenljiva b}
c:=a+b; {obrada programa c=a+b}
writeln ('zbir je ', c); {puruka ispisana korisniku vrijednosti
promjenljive c}
end. {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.
7/29/2019 PASCAL Skripta
10/16
PRIMJER: Zadatak 1.1
Vrijeme na ulazu u satima, minuta
Program:program zadatak_1_1;
var h,m,s,sk:integer;
begin
write (vrijeme u satima,
readln (h,m,s);
sk:=h*3600+m*60+s;
writeln ('vrijeme u sekun
end.
Ako ucitavamo vise vrijednosti p
PRIMJER: Zadatak 1.2
Od 5 brojeva sa ulaza ispisati sre
Provjera: ulaz: 5, 3, 4, 4, 2 izlaz:
PRIMJER: Zadatak 1.3
Odrediti povrsinu i obim kruga za
Provjera: ulaz: 5 izlaz: P=78.5 O
Razgranata programska struktur
grana. Ovom strukturom ispitujem
paran neparan i td. Naredba raz
i THEN ubaciti OR sto cemo vidje
PRIMJER: Zadatak 1.4
Ispitati broj na ulazu da li je pozi
Copyright mini-forum.rs.ba
PASCA
a i sekundama pretvoriti u vrijeme u sekundama.
{ime
{promjenljive cjelobroj
{pocetak
min. i sek. '); {ispis korisniku
{ucitava sve tri prom
{obrada ulaznih
dama je ', sk); {ispis korisniku
{kraj
romjenljivih odjednom, potrebno ih je odvojiti
nju vrijednost.
3.6
uneseni precnik.
=31.4
asamo ime kaze omogucuje grananje programa n
o razne uslove koji su nam zadani npr. pozitivan -
ranate strukture je IF..THEN..ELSE, takodje m
ti u sledecim primjerima
ivan ili negativan.
Slavisa skripta
10
rograma}
og tipa}
rograma}
rograma}
jenljive}
odataka}
rograma}
programa}
zarezom ( , ).
dvije ili vise
negativan broj,
zemo izmedju IF
7/29/2019 PASCAL Skripta
11/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
11
program zadatak_1_4;
var a:real; {promjenljiva a je realna vrijednost}
begin
write ('unesi realan broj ');
readln (a);
if a
7/29/2019 PASCAL Skripta
12/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
12
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.
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 strukturapredstavlja 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.
7/29/2019 PASCAL Skripta
13/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
13
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.
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
7/29/2019 PASCAL Skripta
14/16
7/29/2019 PASCAL Skripta
15/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
15
end;
end.
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(1,2) n(1,3) n(1,j)
n(2,1) n(2,2) n(2,3) n(2,j)
n(i,1) n(i,2) n(i,3) n(i,j)
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 MNOZENJE
A+B=B+A A*B B*A
A+(A+B)=(A+B)+C A*E=E*A=A
A+0=0+A=A 0*A=A*0=0
(k+1)*A=k*A+1*A A*(B*C)=(A*B)*Ck*(A+B)=k*A+k*B k*A*B=(k*A)*B=A*k*B
(A+B)*C=A*C+B*C
7/29/2019 PASCAL Skripta
16/16
Copyright mini-forum.rs.ba
SlavisaPASCAL skripta
16
PRIMJER: Zadatak 1.13
Ucitati cjeloborjnu matricu A, koja ima n redova i m kolona (n,m