Upload
layl-zan
View
32
Download
0
Embed Size (px)
Citation preview
Turbo PascalTurbo Pascal
Istorijski razvoj programskog jezika Istorijski razvoj programskog jezika PASCALPASCAL
Originalnu verziju programskog jezika Originalnu verziju programskog jezika PASCALPASCAL je razvio švajcarac je razvio švajcarac Niklaus Niklaus Wirth Wirth profesor na profesor na EIDGENOSSISCHE EIDGENOSSISCHE TECHNISCHE HOCHSCHULE-TECHNISCHE HOCHSCHULE-Cirih. Cirih. Programski jezik Pascal je dobio ime po Programski jezik Pascal je dobio ime po francuskom filozofu, matematičaru i francuskom filozofu, matematičaru i fizičaru Blejzu Pascalu /fizičaru Blejzu Pascalu /BLAISE BLAISE PASCALPASCAL/. /.
Programiranje u Programiranje u PASCALPASCAL-u se temelji -u se temelji na postavkama strukturnog na postavkama strukturnog programiranja. Pascal ima jednostavnu programiranja. Pascal ima jednostavnu sintaksu, omogućava modularnost, sintaksu, omogućava modularnost, dozvoljava rekurzivno pozivanje dozvoljava rekurzivno pozivanje procedura i funkcija, moguće je vlastito procedura i funkcija, moguće je vlastito definisanje tipova podataka. Naredbe definisanje tipova podataka. Naredbe IF, IF, CASE, FOR, WHILECASE, FOR, WHILE i i REPEATREPEAT omogućuju jednostavno i pregledno omogućuju jednostavno i pregledno pisanje programa.pisanje programa.
Faze razvoja programaFaze razvoja programa
Programiranje obuhvata nekoliko faza: Programiranje obuhvata nekoliko faza: Definisanje problemaDefinisanje problema. (bitna stavka). (bitna stavka) Glavni koraci rješenjaGlavni koraci rješenja. . ((uključuje veći uključuje veći
broj programera i programabroj programera i programa,, vvažno je ažno je međusobno uskladiti njihove poslovemeđusobno uskladiti njihove poslove))
Izbor algoritma i izrada algoritmaIzbor algoritma i izrada algoritma KodiranjeKodiranje Otklanjanje grešaka – DEBUGGINGOtklanjanje grešaka – DEBUGGING TestiranjeTestiranje DokumentacijaDokumentacija Održavanje programaOdržavanje programa
Elementi u PASCAL-uElementi u PASCAL-u Elementi programskog jezika su slova, cifre Elementi programskog jezika su slova, cifre
i specijalni znaci kao i ključne riječi i specijalni znaci kao i ključne riječi /KEYWORDS/. Naša slova č, ć, ž, š, đ ne /KEYWORDS/. Naša slova č, ć, ž, š, đ ne pripadaju skupu slova. pripadaju skupu slova.
Slova:Slova:A B C D E F G H I J K L M N O P Q R S T U A B C D E F G H I J K L M N O P Q R S T U V W X Y ZV W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y za b c d e f g h i j k l m n o p q r s t u v w x y z
Cifre:Cifre:0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Posebni znaciPosebni znaci
- * / := < > = <= >= <> , . : ; .. _ ' [ - * / := < > = <= >= <> , . : ; .. _ ' [ ] { } (* *) (. .) ] { } (* *) (. .)
Svaki program u Svaki program u PASCALPASCAL-u počinje se -u počinje se ključnom riječi ključnom riječi PROGRAMPROGRAM i imenom i imenom programaprograma..
Zatim moraju da se koriste riječ Zatim moraju da se koriste riječ BEGINBEGIN za za početak programa i riječ početak programa i riječ ENDEND za kraj za kraj programa. Ove riječi su obavezne bez obzira programa. Ove riječi su obavezne bez obzira na broj naredbi; za nijednu ili više na broj naredbi; za nijednu ili više PASCALPASCAL naredbi. naredbi.
Svaka naredba se završava sa tačka-zapetom, Svaka naredba se završava sa tačka-zapetom, osim zadnje (osim zadnje (ENDEND.), koja se završava sa .), koja se završava sa tačkom. tačkom.
Primjer 1Primjer 1
Program koji ispisuje na ekranu rijec Program koji ispisuje na ekranu rijec Zdravo.Zdravo.
Program Primjer;Program Primjer;
BeginBegin
Writeln(‘Zdravo’);Writeln(‘Zdravo’);
Readln;Readln;
End.End.
Vrste tipova podataka Tip podataka možemo podijeliti u tri grupe:
Prosti: Standardni prosti:
cjelobrojni(INTEGER) realni(REAL) znakovni (CHAR) logički (BOOLEAN)
Korisnički: pobrojani (ENUMERATED) intervalni (SUBRANGE)
Strukturni: skup (SET) niz (ARRAY) zapis (RECORD) fajl (FILE) i
pokazivači (POINTER)
Tipovi podataka Tip je uređen skup vrijednosti i dodjeljuje mu se skup
operacija (tip operanda i tip rezultata). Integer – cijeli broj, bez zareza koji može da
sadrži brojeve (od -32 768 do 32 767). Real – realni broj sa zarezom, ali piše se sa
tačkom(.) String – može da sadrži tekst, npr. ime,
rečenicu i slično (ograničen je sa 255 znakova)
Char – može da sadrži samo jedan znak Boolean – true/false (tačno/netačno) Longint – koristi se za veće brojeve (od -2 147
483 648 do 2 147 483 647)
Program – svaki program mora sadržavati ključnu riječ Program a poslije nje se navodi naziv programa. Naziv ne smije biti neka od ključnih riječi koje je Pascal rezervisao samo za sebe. Pascal ne razlikuje velika i mala slova, npr ako napišemo AUTO, aUtO ili auto Pascal će to tretirati kao jednu varijablu ili funkciju.
Pascal razlikuje nazive u prvih 8 znakova, npr Geografija i Geografijski on će tretirati isto, jer se ne razlikuju u prvih 8 znakova.
Početni znak naziva programa mora biti slovo i naziv programa ne može se sastojati od dvije riječi tj. ne može upotrebljavati razmak (space).
Begin – označava početak glavnog programa
End. – označava kraj glavnog programa i samo ova naredba sadrži tačku na kraju, a kod svih ostalih naredbi i funkcija piše se tačkazarez (;)
Writeln – u ovoj naredbi sve ono što se nalazi pod apostrofima (‘ ‘) biće ispisano. Takođe ova naredba služi za ispis rezultata programa.
Readln – da bismo koristili ovu naredbu, prvo je potrebno odrediti varijablu u koju ćemo smjestiti neku vrijednost. Služi za učitavanje podataka u program.
:= ova naredba se koristi kada nekoj varijabli želimo dodijeliti neku vrijednost
Var – varijable, koristi se prije početka glavnog programa, kada želimo da definišemo varijablu ili više njih. Poslije imena varijable slijedi dvotačka (:) a potom definišemo tip varijable nakon čega se piše ;
Primjer: Nabrajanje više varijabli različitih tipovavar
a,b:integer; c:char; d:real;
LINIJSKA STRUKTURA - LINIJSKA STRUKTURA - READ(LN) i WRITE(LN) READ(LN) i WRITE(LN)
Naredba Naredba WRITEWRITE((LNLN)) ispisuje tekst, ispisuje tekst, brojnu vrijednost, vrijednost brojnu vrijednost, vrijednost konstantekonstante,, promjenljive i promjenljive i aritmetičkog izraza. aritmetičkog izraza.
Ispisti vlastito prezime i ime u jednoj Ispisti vlastito prezime i ime u jednoj liniji, grad u drugoj liniji, ulicu i broj liniji, grad u drugoj liniji, ulicu i broj u trećoj liniji. u trećoj liniji.
Izaračunavanje u naredbi Izaračunavanje u naredbi ispisa WRITE(LN) ispisa WRITE(LN)
Tabela Operatori u PASCAL-uTabela Operatori u PASCAL-u
OperacijaOperacija PASCALPASCALSabiranjeSabiranje ++OduzimanjeOduzimanje --MnoženjeMnoženje **DijeljenjeDijeljenje //Cjelobrojno dijeljenjeCjelobrojno dijeljenje DIVDIVOstatak cjelobrojnog djeljenjaOstatak cjelobrojnog djeljenja MODMODKvadrat (x2)Kvadrat (x2) SQRSQRKvadratni korijen Kvadratni korijen SQRTSQRT
Napisati program za izračunavenje Napisati program za izračunavenje aritmetičkog izraza: aritmetičkog izraza: 9 + 2 (7 - 4)9 + 2 (7 - 4)..
PROGRAM Racun;PROGRAM Racun;
BEGINBEGIN
Writeln(9+2*(7-4));Writeln(9+2*(7-4));
Readln;Readln;
END. END.
Deklarisanje konstante Deklarisanje konstante /CONST/ /CONST/
Konstanta je zadana nepromjenljiva Konstanta je zadana nepromjenljiva vrijednost ili podatak. vrijednost ili podatak. DDefiniše sa efiniše sa naredbom naredbom CONST CONST iza koje se nalazi iza koje se nalazi onoliko deklaracija konstanti koliko onoliko deklaracija konstanti koliko trebate u programu. trebate u programu.
Primjer:Varijabla X u programu ima vrijednost 3 (konstanta). Ispisati vrijednos varijable X i uvećanu vrijednost X za 2.
Program Konstanta;Const x=3;Beginwriteln(‘x= ‘,x);writeln(‘x+2 = ‘,x+2)readln;End.
Operacije nad cijelim brojevima Operacija Operator
unarniČuvanje znaka +
Promjena znaka -
binarni
Sabiranje +Oduzimanje -Množenje *Količnik cijelog dijeljenja
DIV
Ostatak cijelog dijeljenja
MOD
Operandi i rezultati navedenih operacija su vrijednosti cijelog tipa. Dijeljenje nulom nije dozvoljeno, količnik je nedefinisan.
Operacije nad cijelim brojevima
Operacija Operator
unarniČuvanje znaka +Promjena znaka -
binarni
Sabiranje +Oduzimanje -Množenje *Dijeljenje /
Operandi i rezultati navedenih operacija su vrijednosti realnog tipa. Dijeljenje nulom nije dozvoljeno, količnik je nedefinisan.
Logički tip /BOOLEAN/
Logički (Bulov) tip je skup logičkih konstanti (vrijednosti) i skup operacija nad logičkim konstantama laž /FALSE/, istina /TRUEOperacije nad logičkim tipom:
Operacija Operator
Unarni Negacija NOT
Binarni Disjunkcija(ILI) OR
Konjukcija(I) AND
Operacije na logičkom tipu p q NOT p p OR q p AND q p=q p<>q p<=q
false false true false false true false true
false true true true false false true true
true false false true false false true false
true true false true true true false true
Relacijski operatori
Relacijski operator
= <> > >= <= <
Relacija jednako različito većeveće ili jednako
manje ili jednako
manje
Linijska struktura
Zadaci:
1)Napisati program za upis i ispis broja.
2)Napisati program za ispis zbira dva broja.
3)Napisati program koji izračunava sljedeće izraze:
c=x*y
d=x-y
e=c-x+y
4)Napisati program koji rješava jednačinu ax+b=0.
1) PROGRAM Broj; var a:integer; Begin Writeln(‘Unesi broj’); Readln(a); Writeln(‘Uneseni broj je ’, a); Readln; End.2) PROGRAM Zbir; var a,b:integer; Begin Writeln(‘Unesi brojeve’); Readln(a,b); Writeln(‘Zbir brojeve je ’, a+b); Readln; End.
3) PROGRAM Racun; VAR x, y, c, d, e : Integer; BEGIN Write(‘Unesi dva broja '); Readln(x, y); c := x * y; d := x - y; e := c - x + y; Writeln('c=', c, ' d=', d, ' e=',e); Readln; END.
4. Program jednacina;var a,b,x:real;Beginwriteln(‘Unesite a i b’);readln(a,b)x:=-b/a;writeln(‘Rjesenje jednacine je ’, x);readln;End.
Razgranata struktura
Naredba IF THEN je naredba grananja. Na osnovu istinitosti logičkog izraza donosi se odluka da li se izvodi naredba.
IF Logicki_izraz THEN Naredba S
znači, ako je Logicki_izraz istinit izvedi Naredbu S
Primjeri:
1. Sa tastature upisati broj. Ako je veći od nule napisati "BROJ JE POZITIVAN".
2. Napisati program za ispis uspjeha na osnovu prosjeka.
3. Zavisno o upisanoj vrijednosti časa 0-23 ispisati poruku:
0 – 8 Dobro jutro 9 – 18 Dobar dan 19 – 23 Dobro veče
1. PROGRAM pozitivan; VAR a: Real; BEGIN
Write('Vas broj '); Readln(a); IF a > 0 THEN Writeln('POZITIVAN'); Readln; END.2. PROGRAM uspjeh; VAR pr: REAL; BEGIN Writeln(Unesi prosjek '); Readln(pr); IF pr < 1.5 THEN Writeln('Nedovoljan'); IF (pr >= 1.5) and (pr < 2.5) THEN Writeln('Dovoljan'); IF (pr >= 2.5) and (pr < 3.5) THEN Writeln('Dobar'); IF (pr >= 3.5) and (pr < 4.5) THEN Writeln('Vrlo dobar'); IF (pr >= 4.5) and (pr<=5) THEN Writeln('Odlican'); Readln; END.
3. Program poruka;var h:integer;Beginwriteln(‘Unesi vrijeme 0-24 casa’);readln(h);if (h>=0) and (h<=8) then writeln(‘Dobro jutro’);if (h>=9) and (h<=18) thenwriteln(‘Dobar dan’); if (h>=19) and (h<=23) thenwriteln(‘Dobro vece’);readln;End.
IF THEN ELSE naredba
Ako je logički izraz istinit tada naredba1 inače naredba2.
Ispred ELSE naredbe se nikad ne piše tačka zaraz (;) jer je to dio IF THEN ELSE naredbe.
Primjeri:1. Napisati program za odredjivanje z po formuli: x+3, x>=0
z = x-1, x < 0
2. Od tri upisana broja (a, b, c) sa tastature naći najmanji i recipročnu vrijednost najmanjeg.
3. Za 3 učitana broja ispitati da li je jedan od njih jednak zbiru druga dva.
4. Napisati program koji od korisnika učitava godinu i utvrđuje da li je godina prestupna. Po gregorijanskom kalendaru prestupne godine se računaju na sljedeći način:
Ako je godina djeljiva sa 400, prestupna je Ako godina nije djeljiva sa 400, a djeljiva je sa
100, nije prestupna Ako godina nije djeljiva sa 100, a djeljiva je sa
4, prestupna je Ako godina nije djeljiva ni sa 100 ni sa 4 nije
prestupna
1. PROGRAM izracunavanje; VAR x, z : REAL; BEGIN WRITE('Broj '); READLN( x ); IF x >= 0 THEN z := x+3 ELSE z := x-1; WRITELN(' z= ',z ); READLN; END.
2. PROGRAM broj; VAR a, b, c, min: Real; BEGIN Write('Vasa tri broja '); Readln(a, b, c); min := a; IF b < min THEN min := b; IF c < min THEN min := c; Writeln('Najmanji broj je ', min); IF min <> 0 THEN Writeln('Reciprocna vrijednost najmanjeg je ', 1/min) ELSE Writeln('Dijeljenje sa nulom); Readln; END.
3. Program jednaki; var a,b,c:integer; begin
Writeln(‘Unesite tri broja’); Readln(a,b,c); IF (a=b+c) or (b=a+c) or (c=a+b) THEN
Writeln(‘Da, jednak je’)elsewriteln(‘Ne, nije jednak’);
Readln; END.
4. Program Godina;var god:integer;Beginwriteln(‘Unesi godinu’);readln(god);if (god mod 400=0) or ((god mod 4=0) and (god mod 100<>0)) thenwriteln(‘Godina je prestupna’)elseif (god mod 400<>0) and (god mod 100=0) thenwriteln(‘Nije prestupna godina’)elsewriteln(‘Nije prestupna godina’);readln;End.
CASE naredba
Naredba CASE omogućuje višestruko grananje.
Primjeri:1. Napisati program za upis bodova i ispis
uspjeha. 0..60 Nedovoljan
61..70 Dovoljan
71..80 Dobar
81..90 Vrlo dobar
91..100 Odlican
1. PROGRAM Test; VAR bb: 0..100; BEGIN Write('Broj bodova na testu (0 - 100)');
Readln(bb); CASE bb OF 0..60 : Writeln('Nedovoljan'); 61..70 : Writeln('Dovoljan'); 71..80 : Writeln('Dobar'); 81..90 : Writeln('Vrlodobar'); 91..100 : Writeln('Odlican'); END; Readln; END.
Ciklična struktura
FOR petlja
Kontrolna promjenljiva k odbrojava broj prolaza kroz petlju i mijenja se od početne do krajnje vrijednosti s jediničnim korakom.
Kontrolna promjenljiva mora biti prethodno deklarisana.
Tip početne i krajnje vrijednosti i tip kontrolne promjenljive se mora slagati.
Vrijednost kontrolne promjenljive nije dopušteno mijenjati unutar područja FOR naredbe.
ZADACI:
1. Napisati program za ispis prirodnih brojeva od 1 do 5.
2. Izračunati sumu parnih prirodnih brojeva u intervalu od k do n.
3. Napisati program za prebrojavanje brojeva od k do n djeljivih sa 3.
1. PROGRAM pet;
VAR i: INTEGER;
BEGIN
WRITELN('1 do 5');
FOR i:=1 TO 5 DO
WRITELN ('i=',i);
READLN;
END.
2. PROGRAM parni; VAR i, n, k, s : INTEGER; BEGIN WRITE(‘Unesi granice intervala '); READLN( k,n ); s := 0; FOR i := k TO n DO BEGIN IF i MOD 2 = 0 THEN s := s + i; END; WRITELN('od ', k, ' do ', n, ' suma parnih ', s); READLN; END.
3. PROGRAM prebrojavanje; VAR i,k,n,br:integer; BEGIN writeln ('k n '); readln(k,n); br:=0; FOR i := k TO n DOBEGIN IF i MOD 3 = 0 THEN br:=br+1; END; writeln('djeljivih sa 3 ', br); readln; END.
WHILE petlja
WHILE-naredba se izvršava na slijedeći način: izračunava se vrijednost logičkog izraza B ako je vrijednost logičkog izraza B istinita
(TRUE) izvršava se naredba S i prelazi na izvršavanje koraka 1
ako je vrijednost logičkog izraza B laž (FALSE) završava se izvršavanje WHILE naredbe.
ZADACI:1. Napisati program za ispis prirodnih
brojeva od 1 do 5. 2. Napisati program za ispis prirodnih
brojeva u intervalu od k do n. Granice intervala se upisuju sa tastature.
3. Napisati program za ispis parnih brojeva od 1 do n.
4. Izračunati i ispisati sumu prirodnih brojeva od k do n. Koristiti WHILE petlju.
5. Prebrojati prirodne brojeve iz intervala od k do n koji su djelivi sa 3.
1. PROGRAM prirodni;VAR i: Integer; BEGIN i := 1; WHILE i <= 5 DO BEGIN Writeln('i = ', i); i := i + 1; END; Readln; END.
2. PROGRAM kn;VAR i, k, n : INTEGER;BEGIN WRITELN('Interval k-n'); READLN(k,n); i: = k; WHILE i <= n DO BEGIN WRITELN('i=',i ); i := i+1; END; READLN;END.
3. PROGRAM arni;VAR i, n: Integer;BEGIN Writeln(' 'Do broja '); Readln(n); i := 1; WHILE i <= n DO BEGIN IF i MOD 2 = 0 THEN Writeln('i=',i); i:= i + 1; END; READLN;END.
4. PROGRAM suma;VAR i, n, k, s : INTEGER;BEGIN WRITE(‘Granice intervala’); READLN( k,n ); s := 0; i := k; WHILE i <= n DO BEGIN s := s + i; i: = i + 1 END; WRITELN('suma je', s ); READLN;END.
5. PROGRAM d3;VAR i, k, n, br: Integer;BEGIN Writeln('Granice intervala '); Readln(k, n); br := 0 ; i := k; WHILE i <= n DO BEGIN IF i MOD 3 = 0 THEN br := br + 1; i := i + 1; END; Writeln(' brojeva djeljivih sa 3 ima',br); Readln;END.
REPEAT UNTIL petlja
REPEAT-naredba se izvršava na slijedeći način: izvodi se naredba S izračunava se vrijednost logičkog izraza B ako je vrijednost logičkog izraza B laž (FALSE) prelazi na
izvršavanje koraka 1 ako je vrijednost logičkog izraza B istinita (TRUE) završava se
izvršavanje REPEAT naredbe.
ZADACI: Napisati program za ispis
prirodnih brojeva od 1 do 5. Napisati program za ispis prvih n
prirodnih brojeva unazad REPEATpetljom.
Izračunati sumu neparnih prirodnih brojeva u intervalu od k do n.
1. PROGRAM p5;VARi: INTEGER;BEGINi:=1; REPEATWRITELN('i=',i );i := i+1;UNTIL i>5;READLN;END.
2. PROGRAM p8;VAR i, n : INTEGER;BEGIN WRITELN(' n'); READLN(n); i:= n; REPEAT WRITELN('i =',i); i:=i - 1; UNTIL i<1; READLN;END.
3. PROGRAM p08;VAR i, k, n, s: Integer;BEGIN REPEAT Writeln('Granice'); Readln(k, n); UNTIL k<n; s := 0; i := k; REPEAT IF i MOD 2=1 THEN s := s + i; i := i + 1; UNTIL i > n; Writeln('Suma neparnih brojeva ', s); Readln;END.