Programska podrška i programiranja

Embed Size (px)

DESCRIPTION

Osnove programiranja

Citation preview

  • PROGRAMSKA PODRKA I PROGRAMIRANJE

  • 1. UVODPoslovni sustav -> Informacijski sustav -> Model -> Algoritam

    Programi su raunalna implementacija nekog procesa iz realnog (poslovnog) sustava.

    Da bismo od poslovnog procesa doli do njegove raunalne implementacije tj. programa, potrebno je proi kroz sljedee korake:

    1. Analiza realnog sustava

    a. ralaniti funkcije realnog sustava na procese i podprocese, teodluiti koji e od njih biti informatizirani

    b. identificirati tokove podataka meu (pod)procesima

    2. Oblikovanje programskog sustava

    a. podijeliti (pod)procese na elementarne zadatke (tj. procedure)

    b. definirati ulazne i izlazne podatke za svaku od procedura

  • 3. Realizacija programskog sustava

    a. opis svake od procedura pomou algoritama (konani niz korakakoji u konanom vremenu jednoznano dovode do rjeenjaproblema) koji se za potrebe programiranja najee iskazuju u"polu-formalnoj/polu-slobodnojezinoj formi" (npr. pomoupseudokoda) ili u grafikom obliku (npr. blok-dijagrami) ili umatematikom obliku.

    b. implementacija algoritama u konkretnom programskom jeziku injihovo povezivanje u cjelinu = programiranje

    4. Testiranje programskog sustava provjerava seispravnost rada programskog sustava, pri emu se koristeprethodno definirani ulazni podaci

    5. Izrada dokumentacije programskog sustava

    6. Uvoenje u rad

    1. UVODPoslovni sustav -> Informacijski sustav -> Model -> Algoritam

  • Programski jezik bismo najkrae mogli definirati kao formalni umjetni jezik koji

    krajnjim korisnicima (ljudima) omoguuje izdavanje uputa raunalu.

    1. UVODPoslovni sustav -> Informacijski sustav -> Model -> Algoritam

  • 2. STRUKTURA PROGRAMSKOG JEZIKA

    Kao takav, programski jezik sastoji se od sljedeih elemenata:

    1. Kljune rijei Jo ih nazivamo i naredbama

    Svaka naredba izvrava nekakav elementarni zadatak na nivou programskog jezika

    Kombiniranjem kljunih rijei u vee cjeline nastaje izvorni kod programa, tj. program napisan u odreenom programskom jeziku

  • 2. Pravila pisanja naredbi (sintaksa)

    Program nastaje povezivanjem veeg broja naredbi nekog programskog jezika u vee cjeline, ali se pri tome treba drati nekih ogranienja:

    naredbe se ne mogu i ne smiju nizati bilo kakvim redoslijedom, ve logiki ispravnim redoslijedom (semantika ispravnost)

    pojedinane naredbe moraju biti zadane na pravilan nain u skladu sa pravilima (sintaksom) pisanja naredbi za dotini programski jezik

    kod pisanja naredbi treba pripaziti na upotrebu velikih i malih slova

    neke naredbe zahtijevaju argumente (parametre) za ispravan rad, a neke ne treba pripaziti da se navedu svi potrebni argumenti, i to u ispravnom redoslijedu

    2. STRUKTURA PROGRAMSKOG JEZIKA

  • 3. Editor programskog koda

    razvojno programsko okruenje unutar kojeg piemo kljune rijei programskog jezika prema zadanim pravilima pisanja naredbi (= izvorni kod programa)

    izvorni kod programa moemo pisati i u najobinijem editoru teksta, a moemo ga pisati i unutar sofisticiranih razvojnih okruenja (IDE Integrated Development Environment), koja, pored mogunosti ureivanja teksta, u jedno okruenje integriraju i:

    isticanje kljunih rijei programskog jezika

    podrku za prevoenje i/ili izvravanje programa

    podrku za ispravljanje greaka u programu (debugging), itd.

    2. STRUKTURA PROGRAMSKOG JEZIKA

  • 4. Program prevoditelj

    Program napisan u programskom jeziku (izvorni kod) je razumljiv ovjeku, ali ne i raunalu koje e ga morati izvravati

    Izvorni kod programa mora se prevesti u raunalu razumljiv strojni oblik, tj. strojne instrukcije (nizovi 0 i 1)

    S obzirom na vrstu i namjenu programskog jezika, prevoenje se moe izvriti kao kompiliranje (kompajliranje) ili kao interpretiranje u tu se svrhu koriste programi prevoditelji kompajleri ili interpreteri

    2. STRUKTURA PROGRAMSKOG JEZIKA

  • Kompajleri prevode izvorni kod programa kroz sljedee korake:

    1. uitavanje kompletnog izvornog koda programa

    2. leksika (semantika) i sintaktika analiza izvornog koda pronalaenje i ispravljanje pogreaka u programu

    3. konstrukcija radnog programa zamjena naredbi u izvornom kodu sa strojnim instrukcijama faza prevoenja u uem smislu

    4. optimizacija prevedenog programa

    5. dobivanje izvrne datoteke

    2. STRUKTURA PROGRAMSKOG JEZIKAProgrami prevoditelji -> kompajleri i interpreteri

  • Rezultat postupka kompajliranja je izvrna datoteka (execute datoteka) s prevedenim strojnim instrukcijama.

    Postupak prevoenja se radi samo jednom, a izvrna datoteka se moe pokretati bilo kada, bez potrebe za ponovnim prevoenjem izvornog koda u strojne instrukcije.

    Kompajlerski jezici C, C++, C#, Pascal, ...

    2. STRUKTURA PROGRAMSKOG JEZIKAProgrami prevoditelji -> kompajleri i interpreteri

  • Interpreteri prevode izvorni kod programa kroz sljedee korake:

    1. uitavanje jedne linije izvornog koda programa

    2. leksika i sintaktika analiza uitane linije izvornog koda

    3. prevoenje naredbi iz uitane linije izvornog koda u strojne instrukcije

    4. izvoenje strojnih instrukcija iz prevedene linije izvornog koda

    5. itanje idue linije izvornog koda i ponavljanje kompletnog postupka opisanog u koracima 2-5 sve dok se ne izvede i zadnja linija izvornog koda

    2. STRUKTURA PROGRAMSKOG JEZIKAProgrami prevoditelji -> kompajleri i interpreteri

  • Rezultat postupka interpretiranja je izvreni program, tj. obrada podataka

    ne stvara se izvrna datoteka, nego se prilikom svakog pokretanja programa mora napraviti i prevoenje izvornog koda u strojne instrukcije postupkom interpretiranja.

    Interpreterski jezici Basic, PHP, ASP, Python ...

    2. STRUKTURA PROGRAMSKOG JEZIKAProgrami prevoditelji -> kompajleri i interpreteri

  • Kod razvoja kompleksnijih programa poeljno je organizirati budui program na papiru, koristei pri tome

    a. mjeavinu govornog jezika i izabranog programskog jezika (tj. pseudokod) za opis elementarnih postupaka, ili

    b. grafiki prikaz pomou simbola koji predstavljaju elementarne postupke (tj. blok-dijagram)

    3. OSNOVNE PROGRAMSKE STRUKTURE

  • Svaki problem je u konanici mogue dekomponirati na nekoliko osnovnih programskih struktura (strukturno programiranje)

    Povezivanjem i kombiniranjem osnovnih programskih struktura u skladu s problemom kojeg treba rijeiti dobivamo eljeni program na razini pseudokoda.

    Konkretizacijom pseudokoda u ciljni programski jezik (zamjenom osnovnih struktura s naredbama ciljnog programskog jezika) dobivamo eljeni program u obliku izvornog koda.

    3. OSNOVNE PROGRAMSKE STRUKTURE

  • Koritenjem pseudokoda ili blok-dijagrama moemo opisati sljedee temeljne programske strukture:

    1. Sekvenca (slijed) niz naredbi koje se izvravaju jedna za drugom, onim redoslijedom kako su i zadane

    naredba1

    naredba2

    naredba3

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    Pseudokod Blok-dijagram

    naredba1

    naredba2

    naredba3

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    Podesi budilicu

    Spavaj

    Ustani

    Obavi uobiajene jutarnje aktivnosti

    Izai na svjei zrak

    Budilica

    zvoni

    SE

    KV

    EN

    CA

  • Pseudokod Blok-dijagram

    IF uvjet THEN

    blok naredbi 1

    (ukoliko je

    zadovoljen

    uvjet, izvrava

    blok naredbi 1)

    2. Selekcija (odabir) ovisno o ispunjenju nekog uvjeta, izvrava se jedan od vie blokova (sekvenci) naredbi

    uvjet

    blok naredbi 1

    DA

    NE

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    uvjet

    blok naredbi 1

    DA

    NE

    IF-

    THEN

    Vani je

    pljusak?

    Iskljui budilicu

    Produi spavanje za N sati

    DA

    NE

    Podesi budilicu

    Spavaj

    Ustani

    Obavi uobiajene jutarnje aktivnosti

    Izai na svjei zrak

    SE

    KV

    EN

    CA

    IF-THEN

    Budilica

    zvoni

  • Pseudokod Blok-dijagram

    IF uvjet THEN

    blok naredbi 1

    ELSE

    blok naredbi 2

    (ukoliko je

    zadovoljen uvjet,

    izvrava se blok

    1,a ukoliko nije

    izvrava se blok 2)

    uvjetDA NE

    blok naredbi 2blok naredbi 1

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    DA NE

    Ustani

    Obavi uobiajene jutarnje aktivnosti

    Doi na nadoknadu predavanja

    Iskljui budilicu

    Produi spavanje za N sati

    Nezgodno

    jutro nakon

    brucoijade?

    Podesi budilicu

    Spavaj Budilica

    zvoni

    Naui gradivo s nadoknade

    IF-THEN-

    ELSE

    SE

    KV

    EN

    CA

  • Pseudokod Blok-dijagram

    SWITCH izraz

    CASE vrijednost 0

    blok naredbi 1

    CASE vrijednost 1

    blok naredbi 2

    CASE vrijednost 2

    blok naredbi 3

    - ili -

    IF izraz=vr0 THEN

    blok naredbi 1

    ELSE IF izraz=vr1 THEN

    blok naredbi 2

    ELSE IF izraz=vr2 THEN

    blok naredbi 3

    (ovisno o

    vrijednosti

    izraza, izvrava

    se odreen blok

    naredbi i to

    samo jedan

    blok)

    izraz =

    vr. 0

    DA

    NE

    blok naredbi 2

    blok naredbi 1

    izraz =

    vr. 1

    DA

    izraz =

    vr. 2

    NE

    blok

    naredbi 3

    DA

    NE

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    pr -> prosjena ocjena

    pr = unos(Brojani prosjek)

    IF pr

  • Pseudokod Blok-dijagram

    WHILE uvjet DO

    blok naredbi

    (petlja prvo

    ispituje uvjet ,a

    onda izvrava blok

    naredbi ovisno o

    ispunjenju uvjeta)

    3. Iteracija (ponavljanje, petlja) izvrava odreeni blok naredbi tako dugo dok je uvjet ispunjen

    a. Petlja sa izlazom na vrhu - ako uvjet nije ispunjen, ne izvrava se nijedna naredba u bloku

    uvjet

    DA

    NE

    blok naredbi

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    Neprolazno?

    DA

    NE

    Ui

    Rijei pripremni test

    Rijei pripremni test

    Pristupi ispitu

    WHILE-DO

    SE

    KV

    EN

    CA

  • Pseudokod Blok-dijagram

    DO

    blok naredbi

    WHILE uvjet

    (petlja izvrava

    blok naredbi, a

    onda ispituje

    ispunjenje uvjeta)

    b. Petlja sa izlazom na dnu blok naredbi izvrava se

    barem jednom, neovisno o ispunjenju uvjeta

    uvjetDA

    NE

    blok naredbi

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • 3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

    DA

    NE

    Neprolazno?

    Ui

    Rijei pripremni test

    Pristupi ispitu

    DO-WHILE

    SE

    KV

    EN

    CA

  • Pseudokod Blok-dijagram

    FOR broja od m do n

    blok naredbi

    NEXT

    (petlja izvrava blok

    naredbi tako dugo

    dok je broja u

    zadanom rasponu;

    na kraju svake

    iteracije se broja

    uveava za 1)

    c. Petlja s konanim brojem ponavljanja blok

    naredbi izvrava se zadani broj puta

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • c. Petlja s konanim brojem ponavljanja blok naredbi izvrava se

    zadani broj puta

    3. OSNOVNE PROGRAMSKE STRUKTURESlijed (sekvenca) Odabir (selekcija) Ponavljanje (iteracija)

  • Za jednog studenta je potrebno izraunati ukupni iznos rauna za jedan obrok. Potrebno je omoguiti unos cijene artikala i njihovih koliina za sve stavke na raunu, te izraunati i prikazati ukupni iznos na raunu.

    4. PRIMJER

  • Program Raun

    Poetak

    ukupni_iznos = 0

    jos_stavaka = da

    RADI DOK JE jos_stavaka = da

    Unesi cijena

    Unesi koliina

    iznos_stavke = cijena * koliina

    ukupni_iznos = ukupni_iznos + iznos_stavke

    Unesi jos_stavaka

    KRAJ-RADI

    Ispii ukupni_iznos

    Kraj

    4. PRIMJERPseudokod

    1. Omoguiti unos cijene

    artikala i njihovih koliina

    za sve stavke na raunu

    2. Izraunati i prikazati

    ukupni iznos na raunu.

  • 4. PRIMJERBlok-dijagram

  • PRIMJER:

    Za jednog studenta je potrebno izraunati ukupni iznos rauna za jedan obrok. Potrebno je omoguiti unos cijene artikala i njihovih koliina za sve stavke na raunu, te izraunati i prikazati ukupni iznos na raunu.

    PROIRIMO NAVEDENI PRIMJER SA: Provjeriti da li je iznos vei od 100.

    Ako je, onda se ispisuje "Prekoraenje dnevnog limita".

    Ako nije, onda se ispisuje "Raun uredan".

    4. PRIMJERProirenje

  • 1. Potrebno je unijeti dva broja. Ako je prvi broj vei od drugog, onda ih treba oduzeti. Ako je suprotno, brojeve treba zbrojiti i ispisati to se radilo, te konani rezultat.

    2. Unijeti jedan cijeli broj vei od 0. Izraunati i ispisati zbroj brojeva od 1 do tog unesenog broja.

    3. Proiriti prethodni primjer na nain da se zbrajaju samo parni brojevi.

    5. PRIMJERI ZA SAMOSTALNI RAD

  • Program Raun

    Poetak

    ukupni_iznos = 0

    jos_stavaka = da

    RADI DOK JE jos_stavaka = da

    Unesi cijena

    Unesi koliina

    Iznos_stavke = cijena * koliina

    ukupni_iznos = ukupni_iznos + iznos_stavke

    Unesi jos_stavaka

    KRAJ-RADI

    Ispii ukupni_iznos

    Kraj

  • Python je jedan od najpopularnijih programskih jezika dananjice: zbog vrlo jednostavne i jasne sintakse sve se ee preporuuje kao prvi

    programski jezik

    prikladan i za programere poetnike i povremene programere

    izuzetno bogate biblioteke najrazliitijih alata daju mu ogromnu snagu

    ima vrlo iroko podruje primjene - od jednostavnih skripti (zamjena za ljusku OS-a ili jezika za Web programiranje), do oblikovanja vrlo sloenih programskih sustava

    Prednost skriptnih jezika: krai programi

    manja mogunost pogreke

    bri ciklus provjere (ureivanje koda i testiranje)

    bri razvoj programa

    nema deklaracije varijabli (ili to moda i nije uvijek prednost?)

    popularnost im vrlo brzo raste

    6. PROGRAMSKI JEZIK PYTHON

  • ukupni_iznos = 0

    jos_stavaka = "da"

    while jos == "da":

    cijena = input("Unesi cijenu: ")

    kolicina = input("Unesi kolicinu: ")

    iznos_stavke = float(cijena) * int(kolicina)

    ukupni_iznos = ukupni_iznos + iznos_stavke

    jos = input("Da li zelite obracunati jos jednu stavku? : ")

    print("Ukupni iznos racuna:", ukupni_iznos, "kn")

    6. PROGRAMSKI JEZIK PYTHONPrimjer napisan u Pythonu

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (1)

    print("Zdravo svijete!)

    Python

    using System;

    namespace ZdravoSvijeteAplikacija

    {

    class ZdravoSvijeteAplikacija

    {

    static void Main(string[] args)

    {

    Console.WriteLine("Zdravo svijete!");

    }

    }

    }

    C#

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (2)

    using System;

    namespace Prehrana

    {

    class Iznos_racuna

    {

    static void Main(string[] args)

    {

    float ukupni_iznos = 0;

    string jos = "da";

    float cijena, iznos_stavke;

    int kolicina;

    C#

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (2)

    while (jos == "da")

    {

    Console.Write("Unesi cijenu: ");

    cijena = float.Parse(Console.ReadLine());

    Console.Write("Unesi kolicinu: ");

    kolicina = int.Parse(Console.ReadLine());

    iznos_stavke = cijena * kolicina;

    ukupni_iznos = ukupni_iznos + iznos_stavke;

    Console.Write("Da li zelite obracunati jos jednu stavku? ");

    jos = Console.ReadLine();

    }

    Console.WriteLine("Ukupni iznos racuna: " + ukupni_iznos + " kn");

    }

    }

    }

    C# (nastavak )

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (2)

    ukupni_iznos = 0

    jos_stavaka = "da"

    while jos_stavaka == "da":

    cijena = input("Unesi cijenu: ")

    kolicina = input("Unesi kolicinu: ")

    iznos_stavke = float(cijena) * int(kolicina)

    ukupni_iznos = ukupni_iznos + iznos_stavke

    jos_stavaka = input("Da li zelite obracunati jos jednu stavku? : ")

    print("Ukupni iznos racuna:", ukupni_iznos, "kn")

    Python

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (3)

    using System;

    namespace Prehrana

    {

    class Iznos_racuna

    {

    static void Main(string[] args)

    {

    float ukupni_iznos = 0;

    string jos = "da";

    float cijena, iznos_stavke;

    int kolicina;

    C#

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (3)

    while (jos == "da")

    {

    Console.Write("Unesi cijenu: ");

    cijena = float.Parse(Console.ReadLine());

    Console.Write("Unesi kolicinu: ");

    kolicina = int.Parse(Console.ReadLine());

    iznos_stavke = cijena * kolicina;

    ukupni_iznos = ukupni_iznos + iznos_stavke;

    Console.Write("Da li zelite obracunati jos jednu stavku? ");

    jos = Console.ReadLine();

    }

    Console.WriteLine("Ukupni iznos racuna: " + ukupni_iznos + " kn");

    C# (nastavak )

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (3)

    if (ukupni_iznos > 100)

    {

    Console.WriteLine("*Prekoracenje dnevnog limita*");

    }

    else

    {

    Console.WriteLine("Racun je u redu.");

    }

    }

    }

    }

    C# (nastavak )

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona (3)

    ukupni_iznos = 0

    jos_stavaka = "da"

    while jos_stavaka == "da":

    cijena = input("Unesi cijenu: ")

    kolicina = input("Unesi kolicinu: ")

    iznos_stavke = float(cijena) * int(kolicina)

    ukupni_iznos = ukupni_iznos + iznos_stavke

    jos_stavaka = input("Da li zelite obracunati jos jednu stavku? : ")

    print("Ukupni iznos racuna:", ukupni_iznos, "kn")

    if ukupni_iznos > 100:

    print("*Prekoracenje dnevnog limita*")

    else:

    print("Racun je u redu.")

    Python

  • 6. PROGRAMSKI JEZIK PYTHONRazlike izmeu C# i Pythona

    Koji jezik je blii pseudokodu?

  • 7. PYTHON RESURSI

    Python 3.4 instalacijska datoteka (Windows):

    https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi

    (Python 3.x e biti koriten na lab. vjebama. Sastavni dio

    instalacije je i razvojno okruenje IDLE pogledati u

    izbornik Start > All Programs nakon instalacije)

    Slubeno web mjesto:

    http://www.python.org

    Slubena dokumentacija (na engleskom):

    http://docs.python.org/