Algoritmi - uvod u programiranje

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: Algoritmi i programiranje 1. razred
Knjiga: Algoritmi - uvod u programiranje
Otisnuo/la: Gost (anonimni korisnik)
Datum: srijeda, 25. prosinca 2024., 09:02

Opis

Programske strukture

Algoritmi


Algoritam je apstraktni koncept koji nam služi za razvijanje logičkih vještina ne samo u programiranju nego i u rješavanju svakodnevnih životnih situacija. Kako različite osobe često različito percipiraju problem, što bitno ovisi i o preciznosti definiranja problema, tako su i rješenja često različita i nejednako detaljno razrađena.

Izrada algoritama potiče:

  1. kreativnost
  2. prosuđivanje
  3. iznalaženje različitih načina za rješavanje problema

Algoritam je procedura koja do posljednjih detalja opisuje aktivnosti i njihov redoslijed, potreban da se obradom ulaznih podataka, u konačnom broju koraka dođe do izlaznih podataka, odnosno rješenja.


Programski jezik C++  je viši programski jezik koji je razvijen za objektno orijentirano programiranje a razvijen je u Bell Labsu (laboratorij telekomunikacijske tvrtke Bell) pod rukovodstvom Bjarne Stroustropa tokom 1980-tih kao proširenje programskog jezika C.

Za pisanje programskog koda u C++-u koristiti ćemo CodeBlocks (ili DEVC++)



Cilj algoritma je cjelokupni zadatak svesti na niz jednostavnih, manjih radnji, te na temelju ulaznih podataka dobiti rezultat.
Koraci koje prolazimo prilikom izrade algoritma:
koraci u izvođenju algoritma
Algoritam treba imati slijedeća svojstva:

  1. Konačnost – mora uvijek završiti nakon konačnog broja koraka
  2. Definiranost – svaki korak mora biti precizno definiran – akcije koje treba poduzeti moraju biti jednoznačno (nedvosmisleno) definirane
  3. Ulaz – može ali i ne mora imati ulazne veličine koje su dane inicijalno prije početka algoritma
  4. Izlaz – ima jednu ili više izlaznih veličina koje su u specificiranom odnosu sa ulaznim veličinama
  5. Efikasnost - sve operacije koje se obavljaju u algoritmu moraju biti jednostavne tako da se mogu obaviti u točno i u konačnom vremenu
Naš cilj pri izradi je pronaći algoritam koji najbrže, najučinkovitije i najsigurnije dovodi do rezultata.




Algoritam je prvi od koraka pri pretvorbi zadatka u računalni program.

Algoritam možemo zapisati:

  1. pseudojezikom (pseudo kodom)
  2. dijagramom tijeka
  3. programskim kodom u odabranom programskom jeziku

    Pseudojezik (pseudokod) je tobožnji program  (grč. pseudos – laž) koji se sastoji od kratkih izraza na govornom jeziku koji opisuju i ukratko objašnjavaju pojedine zadatke algoritma.

    Za pisanje pseudojezika možemo koristiti bilo koji tekstualni editor.  

    Dijagram tijeka je grafički prikaz algoritma. Sastoji od nekoliko jednostavnih geometrijskih likova spojenih usmjerenim crtama. Usmjerene crte pokazuju tijek rješavanja zadatka pa odatle i naziv dijagrama.


    Za izradu dijagrama tijeka koristiti ćemo aplikaciju Flowgorithm.

    Prednosti dijagrama tijeka:

    1. pregledno prikazuje algoritam
    2. omogućava lakšu analizu i provjeru predloženog rješenja
    3. omogućuje pronalaženje boljih postupaka rješavanja zadatka - optimizaciju


    Umna mapa

    Operatori, funkcije, naredbe


    Programska struktura je ustrojstvo programa, odnosno način i redoslijed rješavanja pojedinih manjih radnji da bi se došlo do konačnog rješenja zadatka.

    Da bismo od ulaznih podataka došli do izlaznih,  podatke je potrebno pohraniti u memoriji. Mjesto u memoriji  rezervirano za pohranu podatka naziva se varijabla. Varijablama dajemo sugestivna imena. Ime ne smije početi brojem, a može sadržavati slova engleskog alfabeta, brojeve  i _. 


    Obrada podataka najčešće se svodi ma matematičke logičke operacije i funkcije nad njima.


    Operatori

    Operatori


    Definirane funkcije


    Definirane funkcije


    Prioritet izvršavanja 


    Prioriteti


    Osnovne naredbe u programskim jezicima


    Osnovne naredbe

    *sve tablice preuzete su sa sjedišta NCVOO


    Pri zapisu algoritma pseudojezikom zanemarujemo tipove podataka

    No da bismo na bilo koji način obrađivali podatke u aplikaciji Flowgorithm  (dijagram tijeka) moramo im odrediti tip, kako bi računalo znalo kako s njima postupati. 

    Flowgorithm razlikuje:

    1. Cjelobrojne tipove podataka (integer)
    2. Realne tipove podataka (real)
    3. Tekstualne tipove podataka (string)
    4. Logičke tipove podataka (boolean)




    Podaci u programima mogu biti:
    1. Konstante  - vrijednosti im se ne mijenja (npr. g=9.81 m/s2 ili π = 3.14)
    2. Varijable – promjenjive se (često ih unosi korisnik tijekom izvođenja programa ili su među rezultat)

    Identifikatori su imena za varijable, funkcije, razrede... U aplikaciji Flowgorithm možemo ih zadavati proizvoljno poštujući slijedeća pravila:

    1. Može sadržavati kombinaciju engleskih slova A-Z ili a-z, brojeva 0-9 
    2. Prvi znak mora biti slovo 
    3. Ne smiju se koristiti razmaci
    4. Ne smiju biti jednaki ključnim riječima (naredbama) ili alternativnom oznakama operatora
    5. Aplikacija ne razlikuje velika i mala slova 
    6. Treba izbjegavati dugačka imena
    U aplikaciji Flowgorithm imamo tri pohranjene konstante:


    Želimo li neku vrijednost koristiti kao konstantu, definiramo je kao varijablu i dodijelimo joj vrijednost unutar dijagrama tijeka.


    Za rad sa stringovima nema puno funkcija koje možemo zapisati pseudojezikom i dijagramom tijeka.

    U biti stringove možemo samo zbrajati, odnosno spojiti:


    ili zapisano pseudojezikom:




    Pojedine operacije se u pseudo jeziku izvršavaju različitim prioritetima 

    Redoslijed  izvršavanja

    Operatori
    1.(  )
    2.NE
    3.*,    /,    div,    mod,    I
    4.+,    - ,   ILI
    5.<,   <=,   >=,   <>,   =


    1. primjer: 

     x=23 div 5* 5 mod 3

    Svi su operatori ravnopravni, izraz se izvršava s lijeva u desno ovim redoslijedom:

    1.     23 div 5 = 4

    2.     4 * 5 = 20

    3.     20 mod 3 = 2  (ostatak dijeljenja 20/3)

    4.     x=2


    2. primjer:

     x=(23 div 5)*( 5 mod 3)

    Zagrade poništavaju prioritete operatora pa se izvršava ovim redoslijedom:

    1.     23 div 5 = 4

    2.     5 mod 3= 2

    3.    4 * 2 = 8

    4.    x = 8


    3. primjer:

     x = 3*4+6/3–(7 mod 6)

    S obzirom na prioritete, operacije se izvršavaju ovim redoslijedom: 

    1.     7 mod 6 = 1

    2.     3 * 4 = 12

    3.     6 / 3= 2

    4.     12 + 2 - 1 = 13

    5.    x = 13



    U pseudo jeziku koristimo ključne riječi ulaz i izlaz. Tip varijabli nije potrebno deklarirati, a odjednom možemo unositi i ispisivati više vrijednosti. Npr.:


    ulaz (a,b)

    O=2*(a+b)

    P=a*b

    izlaz (O,P)


    U dijagramu tijeka također imamo ulaz i izlaz u posebnim oblicima (paralelogram plave i zelene boje). Prije unosa podataka potrebno je deklarirati tipove varijabli. Za ulaz podataka koristimo zasebne ulazne elemente, dok ispis - izlaz možemo napraviti u jednom izlaznom elementu.