PASCAL Skripta

  • 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