210 likes | 555 Views
Šta je program i kako ga napisati. Admir Džaferović. Što je program?. Program je skup instrukcija koje računar treba izvršiti. Program. Podaci. Računar. Izlaz. Pojednostavljeni prikaz izvršavanja programa. Šta je program?.
E N D
Šta je program i kako ga napisati Admir Džaferović
Što je program? • Program je skup instrukcija koje računar treba izvršiti. Program Podaci Računar Izlaz Pojednostavljeni prikaz izvršavanja programa
Šta je program? • Ulaz računar čine dvije osnovne komponente: program i podaci. Računar slijedi instrukcije u programu i na neki način izvodi proces. Podaci su ono što smatramo ulazom programa. Npr. ako program zbraja dva broja, onda su ta dva broja podaci. Drugim riječima, podaci su ulaz programa, a podaci zajedno sa programom čine ulaz računara (putem operacijskog sustava). • Kada računaru zadamo da izvrši program i osiguramo podatke za program, a kažemo da smo pokrenuli program za te podatke, a za računar kažemo da izvršava program na podacima. Pojam podatak općenito označava svaku informaciju koja je računaru na raspolaganju.
Programska podrška • Računar može rješavati različite zadatke uz pomoć programske podrške. Programska podrška je skup svih programa koji se mogu izvršavati na računaru. • Dio programa korisnik obično kupuje pri nabavi sklopovlja, a ostale nabavlja ovisno o svojim potrebama. • Računalni program je skup uputa računaru što treba učiniti i kako to izvesti. Postoje razne vrste programa ovisno o zadatku koji želimo da program izvrši. Tako postoje tekst procesori za pisanje teksta, proračunske tablice za izradu tablica, baze podataka i dr. • Računalni program se pomoću jezičnog prevoditelja mora prevesti u binarni brojevni sustav da bi ga računar razumio i izvršavao.
Naredbe - program • Računar može riješiti postavljeni zadatak samo ako dobije uputstvo (niz naredbi) kako to učiniti. • Kombinacijom naredbi nastaje program. Programer pišući program niže naredbe u smislenom redoslijedu. • Naredbe moraju biti u obliku u kojem će ih računalo razumjeti.
Programski jezici Programski jezici su jezici kojima se pišu računarski programi.
O jezicima? • Jezik je skup pravila za komunikaciju između korisnika. • • Pomoću jezika se predstavljaju i prenose informacije. • Jezike možemo podijeliti na prirodne i vještačke. • •Prirodni jezik se koristi za komunikaciju između ljudi u • pisanoj i govornoj formi.
Programski jezik • Programski jezik je vještački jezik koji prvenstveno služi za komunikaciju između čovjeka i računara, mada se ponekad programski jezik koristi i za komunikaciju između ljudi. Programski jezik služi za opis programa. Preko programa se obavlja komunikacija između čovjeka i računara. Za razliku od prirodnih, programski jezici su jednoznačni. Poželjne osobine programskih jezika su: jednostavnost, izražajnost, prenosivost, efikasnost ...
Nauka o jeziku • Sintaksa – opisuje skup pravila za određivanje pravilnih konstrukcija jezika. • Semantika – opisuje kako se sintaksom korektne strukture izvršavaju, tj. interpretiraju. • Gramatika – skup pravila koji opisuje sve validne konstrukcije datogjezika. • Osnovni elementi gramatike su: skup terminalnih simbola, skup neterminalnihsimbola, skup pravila i startni simbol (startni simbol, naravno, ne sme biti terminalan simbol) • Pragmatika – nauka kojom se određuje utjecaj jezičnih konstrukcija na okruženje.
Elementi jednog programskog jezika • Većina komandi svakog programskog jezika se može podijeliti u 5 glavnih kategorija: • Obrada ulaznih podataka - Podatke preuzeti sa tastature, iz datoteke ili nekog drugog izvora. • Obrada izlaznih podataka - Podatke predati monitoru, datoteci, bazi podataka ili nekom drugom medijumu. • Matematička obrada podataka - Podatke obraditi pomoću matematičke operacije, kao npr. sabiranje, oduzimanje ili dijeljenje. • Poređenje i izbor - Provjera određenih uslova i kontrola izvršavanja komandi. • Ponavljanje - Posebnim pravilima regulisano ponavljanje izvršavanja komandi (obično sa varijacijama podataka ili pravila ponavljanja).
Generacije programskih jezika • Prva generacija (Mašinski jezici) • Druga generacija (Asembler jezici) • Treća generacija (Jezici višeg nivoa) • Četvrta generacija (Objektni i jezici posebne namjene) • Peta generacija (Opisni jezici)
Prva Generacija • Prva generacija programskih jezika (1GL) predstavlja jezike na mašinskom nivou. • Pojavljuju se uporednosa prvim komercijalnim računarima 1953. • Programiranje je rađeno korištenjem binarnog koda (kombinacije nula i jedinica). • Komande su se zapisivale direktno u mašinskom jeziku, u vidu niza naredbi koje su se učitavale u komandni registar procesora i tamo izvodile. • Komande su zavisile od arhitekture procesora, pa je portiranje ovakvih programa bilo skoro nemoguće. • Danas se ovakav način direktnog programiranja ne koristi, osim u posebnim slučajevima, na primjer kada se radi o kritičnim hardverskim operacijama.
Primjer mašinskog koda 0010 0100 1011 01111000 1110 1100 10110101 1001 0010 00010111 0010 0011 11010001 0000 1001 01001000 1001 1011 11100001 0011 0101 10010111 0010 0011 11010001 0000 1001 00001000 1001 1011 11111001 1101 1001 11100111 0010 0011 11010001 0000 1001 00000111 0010 0011 11010001 0011 1001 1100
Druga generacija • Druga generacija programskih jezika (2GL) predstavljaju simbolički asembleri. Za razliku od kombinacija nula i jedinica (binarnog koda) se koriste simboli ili mnemonici. Prvi put se programi počinju prevoditi (kompajlirati). Uvode se i podprogrami, a jezički procesi se dijele na prevođenje i tumačenje.Jezici druge generacije su se ponekada koristili u kernelima i drajverima za uređaje (iako se C općenito koristi za ovo u modernim kernelima), ali mnogo češće su nalazili upotrebu u izuzetno intenzivnim procesima, kao što su igre, uređivanje videa, i grafička manipulacija/renderiranje. • Npr. ako treba zbrojiti dva broja, a mjesta u memoriji na kojima su ti brojevi zapisani označimo s X i Y, tada u asemblerskom jeziku pišemo ADD X,Y umjesto 0110 001110 010101 u nekom strojnom jeziku.
Asemblerski jezici Neke od glavnih mana takvih programa su loša čitljivost, (posebno izraženo pri velikim projektima), te složenost koda i praktično nemogućnost konvertiranja istog koda na drugu procesorsku arhitekturu. Zbog tih mana se assembler danas koristi samo u sistemima realnog vremena i ostalim specifičnim sistemima.
Treća generacija • Treća generacija programskih jezika (3GL) predstavlja jezike koji su dorađena verzija jezika druge generacije. • Jedna naredba ovih programskih jezika prevodi se u više naredbi mašinskog jezika. Odlikuje ih nezavisnost od računara što znači da nije potrebno poznavanje arhitekture, instrukcija i registara računara za koji se programira. Drugim riječima programi su bili prenosivi. Jedna od osnovnih karakteristika ovih programa je struktura, te se često klasificiraju kao strukturalni jezici što znači da se svi događaji dešavaju po predviđenoj strukturi programskog koda. Programski kod je algoritam napisan sintaksom određenog programskog jezika. U principu svi oni, uvažavajući specifičnosti svakog od njih, sadrže: ključne riječi, komentare, varijable, konstante, petlje i blokove. Veći dio programa ove vrste dozvoljava pozivanje vanjskih funkcija, te upotrebu potprograma i procedura.
#include <iostream> using namespace std; int main() { cout << "Pozdrav!" << endl; cout << "Ovo je moj prvi C++ program." << endl; } • Najvažniji predstavnici: • FORTRAN • ALGOL • BASIC • COBOL • LISP • JOVIAL • PL/I • C • C++ • PASCAL • MODULA-2 • OBERON
Četvrta generacija • Četvrta generacija programskih jezika (4GL) je produkt naglog razvoja tehnologija 80-ih godina 20. vijeka. Ove jezike nazivamo jezicima posebne namjene, jer se koriste za određene klase problema. • Mogu se podijeliti u nekoliko klasa: • Jezici 4GL za generalnu upotrebu: Agile Business Suite, Clipper, DataFlex • Jezici za pristupanje bazama podataka: Progress 4GL, SQL • Jezici za manipulisanje podacima i analize: ABAP, MATLAB, PL/SQL • Jezici za Web razvoj: ColdFusion itd.
MATLAB • MATLAB je okruženje za numeričke proračune i programski jezik koji proizvodi firma MathWorks. • MATLAB omogućava lako manipulisanjematricama, iscrtanjefunkcija i fitovanje, implementaciju algoritama, stvaranje korisničkog interfejsa kao i povezivanje sa programima pisanim u drugim jezicima.