Osnove programiranja
Pod programiranjem podrazumijevamo nekoliko faza pri rješavanju problema na računaru:
• analiza problema (početna faza i ne postoje pravila kako se može realizovati, jer postoje jednostavni i složeni matematički i naučni problemi)
• razrada algoritma i njegovo pretvaranje u željeni programski jezik
• prenošenje programa u računar i puštanje u rad
Riječ algoritam dolazi od imena arapskog matematičara AlHorezmija iz IX vijeka, koji je dao skup pravila precizno definisanih za izvođenje osnovnih aritmetičkih operacija. Algoritam je procedura-postupak sa skupom jasno definisanih koraka bez ikakave dvosmislenosti koja vodi ka rješenju problema.
Osnovne osobine svakog algoritma su:
• definisanost (u svakom algoritamskom koraku svi koraci su jasni i nedvosmisleni)
• konačnost (rad algoritma se obavlja u konačnom broju koraka)
• posjedovanje ulaza i izlaza (ulaza može biti nijedan, jedan i više, a izlaza može biti jedan i više)
• efikasnost (algoritam se izvršava u razumnom vremenskom intervalu)
• rezultativost (algoritam mora dati rješenje problema)
Prva programiranja su vršena u mašinskom jeziku (sagrađen od niza binarnih cifara) koji je razumljiv računaru bez prevođenja, dok se danas takvim programiranjima bave samo inženjeri-projektanti računara. Kasnije je binarni kod zamijenjen simbolima, a ta grupa nižih programskih jezika se nazivaju simbolički jezici ili asembleri. Jedan od nedostataka nižih programskih jezika je nemogućnost njihovog izvršavanja na razlišitim računarima. Vještački jezici koji su konstruisani radi pisanja programa koji služe za rješavanje složenih problema putem računara predstavljaju više programske jezike, na primjer:
- Fortran(za rješavanje matematičkih i naučnih problema),
- Cobol (za rješavanje poslovnih i komercijalnih problema),
- Basic,
- Algol,
- C,
- Pascal,
- C++,
- Java, SQL i dr.
Da bi računar prihvatio program napisan u višem programskom jeziku neophodni su specijalni programi prevodioci, koji služe za prevođenje u mašinski jezik, koji je jedini razumljiv računaru. Postoje dvije vrste programa za prevođenje viših programskih jezika na mašinski jezik računara:
• kompajler-program prevodioc koji viši programski jezik u cjelosti prevede u mašinski jezik, a zatim ga izvršava zahtjevan broj puta i
• interpleter-program prevodioc koji prevodi svaku naredbu pojedinačno, a zatim je izvršava
Elementarne algoritamska strukture (linijske)
Serijskim (rednim) povezivanjem osnovnih algoritamskih koraka gradi se linijska algoritamska struktura. U ovakvoj strukturi svaki algoritamski korak (modul) se izvršava samo jednom. Nakon izvršenja jednog algoritamskog koraka izvršava se drugi i tako redom. Ove algoritamske strukture sastoje se od isključivo algoritamskih koraka ulaza, obrade i izlaza.
Primjer linijske algoritamske strukture
Elementarne algoritamska strukture (razgranate)
U razgranatoj algoritamskoj strukturi postoje algoritamski koraci koji se jedanput izvrše, a postoje algoritamski koraci koji se uopšte ne izvrše. To znači da se izvršavanje algoritma obavlja samo kroz jednu od grana.
U ovim šemama mora postojati bar jedan uslovni algoritamski korak, koji može biti ispunjen (da) ili neuspunjen (ne).
Uslov može biti različite prirode, ali je to najčešće binarna relacija između veličina iz prethodnih algoritamskih koraka.
Ciklična algoritamska struktura
Struktura kod koje se jedan ili više algoritamskih koraka može izvršavati više od jedan put predstavlja cikličnu algoritamsku strukturu. Da biste kreirali cikličnu algoritamsku strukturu morate koristiti dvije linijske strukture i korake za uslovno i bezuslovno grananje. Prva linijska struktura (L1) prethodi dok je druga (L2) u ciklusu. U zavisnosti da li je uslov, koji se ispituje prije ili poslije algoritamskog koraka obrade i da li ciklus (petlja) radi uz istinit ili neistinit uslov, postoje četiri oblika cikličnih struktura: DO UNTIL, DO WHILE, UNTIL DO i WHILE DO.
• analiza problema (početna faza i ne postoje pravila kako se može realizovati, jer postoje jednostavni i složeni matematički i naučni problemi)
• razrada algoritma i njegovo pretvaranje u željeni programski jezik
• prenošenje programa u računar i puštanje u rad
Riječ algoritam dolazi od imena arapskog matematičara AlHorezmija iz IX vijeka, koji je dao skup pravila precizno definisanih za izvođenje osnovnih aritmetičkih operacija. Algoritam je procedura-postupak sa skupom jasno definisanih koraka bez ikakave dvosmislenosti koja vodi ka rješenju problema.
Osnovne osobine svakog algoritma su:
• definisanost (u svakom algoritamskom koraku svi koraci su jasni i nedvosmisleni)
• konačnost (rad algoritma se obavlja u konačnom broju koraka)
• posjedovanje ulaza i izlaza (ulaza može biti nijedan, jedan i više, a izlaza može biti jedan i više)
• efikasnost (algoritam se izvršava u razumnom vremenskom intervalu)
• rezultativost (algoritam mora dati rješenje problema)
Prva programiranja su vršena u mašinskom jeziku (sagrađen od niza binarnih cifara) koji je razumljiv računaru bez prevođenja, dok se danas takvim programiranjima bave samo inženjeri-projektanti računara. Kasnije je binarni kod zamijenjen simbolima, a ta grupa nižih programskih jezika se nazivaju simbolički jezici ili asembleri. Jedan od nedostataka nižih programskih jezika je nemogućnost njihovog izvršavanja na razlišitim računarima. Vještački jezici koji su konstruisani radi pisanja programa koji služe za rješavanje složenih problema putem računara predstavljaju više programske jezike, na primjer:
- Fortran(za rješavanje matematičkih i naučnih problema),
- Cobol (za rješavanje poslovnih i komercijalnih problema),
- Basic,
- Algol,
- C,
- Pascal,
- C++,
- Java, SQL i dr.
Da bi računar prihvatio program napisan u višem programskom jeziku neophodni su specijalni programi prevodioci, koji služe za prevođenje u mašinski jezik, koji je jedini razumljiv računaru. Postoje dvije vrste programa za prevođenje viših programskih jezika na mašinski jezik računara:
• kompajler-program prevodioc koji viši programski jezik u cjelosti prevede u mašinski jezik, a zatim ga izvršava zahtjevan broj puta i
• interpleter-program prevodioc koji prevodi svaku naredbu pojedinačno, a zatim je izvršava
Elementarne algoritamska strukture (linijske)
Serijskim (rednim) povezivanjem osnovnih algoritamskih koraka gradi se linijska algoritamska struktura. U ovakvoj strukturi svaki algoritamski korak (modul) se izvršava samo jednom. Nakon izvršenja jednog algoritamskog koraka izvršava se drugi i tako redom. Ove algoritamske strukture sastoje se od isključivo algoritamskih koraka ulaza, obrade i izlaza.
Primjer linijske algoritamske strukture
Elementarne algoritamska strukture (razgranate)
U razgranatoj algoritamskoj strukturi postoje algoritamski koraci koji se jedanput izvrše, a postoje algoritamski koraci koji se uopšte ne izvrše. To znači da se izvršavanje algoritma obavlja samo kroz jednu od grana.
U ovim šemama mora postojati bar jedan uslovni algoritamski korak, koji može biti ispunjen (da) ili neuspunjen (ne).
Uslov može biti različite prirode, ali je to najčešće binarna relacija između veličina iz prethodnih algoritamskih koraka.
Ciklična algoritamska struktura
Struktura kod koje se jedan ili više algoritamskih koraka može izvršavati više od jedan put predstavlja cikličnu algoritamsku strukturu. Da biste kreirali cikličnu algoritamsku strukturu morate koristiti dvije linijske strukture i korake za uslovno i bezuslovno grananje. Prva linijska struktura (L1) prethodi dok je druga (L2) u ciklusu. U zavisnosti da li je uslov, koji se ispituje prije ili poslije algoritamskog koraka obrade i da li ciklus (petlja) radi uz istinit ili neistinit uslov, postoje četiri oblika cikličnih struktura: DO UNTIL, DO WHILE, UNTIL DO i WHILE DO.