Programski jezici i programiranje

Document Sample
Programski jezici i programiranje Powered By Docstoc
					Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                                       UVOD U RAČUNARSTVO

                                       - Programski jezici i
                                       programiranje -
                                       Doc. dr Dragan Stojanović
                                       Katedra za računarstvo, Elektronski fakultet
                                       Univerzitet u Nišu
                                       dragans@elfak.ni.ac.yu




                       Aloritmi i programiranje
                           Algoritam je konačan, uređen skup, nedvosmislenih izvršnih
                           koraka za rešavanje određenog problema u konačnom
                           vremenskom periodu sa konačnom količinom podataka
                           Algoritam se opisuje tekstualnim i grafičkim simbolima u
                           obliku dijagrama toka ili blok šeme
                           Programski jezici definišu skup instrukcija, njihovu sintaksu
                           (format instrukcije i pravila za kombinovanje instrukcija i
                           veće celine) i semantiku instrukcija (značenje instrukcije i
                           akciju u programu koju izvršava)
                           Program predstavlja sekvencu instrukcija napisanih u nekom
                           programskom jeziku koje se mogu prevesti u instrukcije koje
                           računar može direktno izvršiti (mašinske instrukcije)


                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          1
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Programski jezici
                           Generacije programskih jezika
                                 Mašinski jezik
                                 Asemblerski (simbolički) jezik i makrasemblerski jezici
                                 Proceduralni programski jezici (jezici visokog nivoa, 3.
                                 generacije): Pascal, C, C++, Java, Basic, C#
                                 Neproceduralni programski jezici (deklarativni programski
                                 jezici, jezici vrlo viskog nivoa, 4. generacije): Prolog, SQL
                                 (upitni jezik baze podataka), generatori programa, jezici
                                 za specifikacije, itd.
                                 Jezici veštačke inteligencije i prirodni programski jezici



                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Mašinski jezik
                           Mašinski jezik predstavlja skup mašinskih naredbi kojima
                           se specificiraju elementarne operacije koje računar direktno
                           prepoznaje i izvršava. Ove elementarne operacije su zadate
                           u binarnom obliku i nazivaju se mašinske instrukcije i
                           svaki procesor ima svoj skup ugrađenih mašinskih
                           instrukcija koje direktno izvršava, dakle ove instrukcije su
                           ugrađene u sam hardver računara
                           U početku jedini način za pisanje programa je bio
                           korišćenjem mašinskog jezika, što je bio vrlo složen proces
                           podložan greškama.
                           Broj i vrsta mašinskih instrukcija ugrađenih u jedan računar
                           zavisi od tipa i karakteristika procesora:
                                 RISC i CISC tipovi procesora u zavisnosti od broja i kompleksnosti
                                 mašinskih instrukcija koje realizuju

                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          2
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Mašinske instrukcije
                           Kategorije mašinskih instrukcija
                                 Instrukcije za prenos podataka
                                 Aritmetičko-logičke instrukcije
                                 Instrukcije za upravljanje tokom izvršenja
                                 programa (grananje, uslovne ili bezuslovne
                                 skokove, pozive potprograma, itd.)
                                 Ulazno-izlazne instrukcije
                                 Ostale instrukcije
                           Format mašinske instrukcije
                                  Kod operacije – binarni kod koji specificira datu
                                  operaciju Uvod u računarstvo – Programski jezici i programiranje
                       Doc. dr Dragan Stojanović                                                         Januar 2006

                                  S         ifik t d                      d                       ifi i či




                       Asemblerski jezik
                           Programski jezik koji koristi simboličke oznake (mnemoničke
                           kodove) za predstavljanje instrukcija mašinskog jezika
                           Programer koristi ove alfanumeričke kodove umesto
                           binarnih cifara, 0 i 1.
                           Svakoj naredbi asemblerskog jezika odgovara jedna
                           mašinska instrukcija
                           Više naredbi asemblerskog jezika koje čine neku
                           funkcionalnu celinu može biti grupisano u jednu makro
                           naredbu i time je formiran makroasemblerski jezik




                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          3
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Programski prevodioci
                           Prevode program napisan u višem programskoj
                           jeziku u naredbe napisane u mašinskom jeziku
                           (mašinske naredbe), koje procesor može direktno
                           izvršavati
                           Vrste programskih prevodioca
                                 Asembleri i makroasemlberi – prevode program sa
                                 asemblerskog (makroasemblerskog) jezika, pri čemu se
                                 simbolička imena i oznake zamenjuju binarnim kodovima
                                 Kompilatori (kompajleri) – prevode program sa višeg
                                 programskog jezika u mašinski kod
                                 Interpretatori – prevode svaku naredbu programa i
                                 odmah je izvršavaju (interpretiraju)

                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Razvoj i izvršenje programa
                           Programski prevodilac (compiler) prevodi program napisan u
                           nekom programskom jeziku (izvorni program, kod) u
                           program napisan u mašinskom jeziku koji se naziva objektni
                           program (kod)
                           Povezivač (linker) je sistemski program integriše objektne
                           kodove programskih modula i modula sistemskih biblioteka i
                           formira izvršni program (kod) koji je u obliku datoteke
                           (.exe) na disku
                           Sistemski program punioc (loader) prenosi izvršni program
                           sa diska u glavnu memoriju prilikom startovanja izvršenja
                           programa (npr. dvostrukim klikom miša na ikonu programa)
                           aktivira se proces i započinje izvršavanje mašinskih
                           instrukcija programa


                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          4
Uvod u računarstvo - Programski jezici i                                                                                             Januar 2006
programiranje




                       Razvoj                                                                               Izvorni
                       programa                                     Editor teksta                           program




                                                                     Kompilator

                                                   Sistemska
                                                   biblioteka
                                                                                                                 Objektni
                                                                                                                 program
                                                                       Povezivač



                                                                          Izvršni program


                       Doc. dr Dragan Stojanović        Uvod u računarstvo – Programski jezici i programiranje         Januar 2006




                       Programski jezici
                           Imperativni ili proceduralni programski jezici
                                 FORTRAN, COBOL, Basic, C, Pascal, Ada
                           Objektno-oriejentisani programski jezici (uključuju i
                           karakteristike proceduralnih)
                                 SIMULA, Smalltalk, C++, Java, C#
                           Deklarativni (logički) programski jezici
                                 Prolog
                           Funkcionalni programski jezici
                                 LISP, Scheme (verzija LISP), ML




                       Doc. dr Dragan Stojanović        Uvod u računarstvo – Programski jezici i programiranje         Januar 2006




Doc. dr Dragan Stojanović                                                                                                                     5
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Tipovi podataka
                           Tip podataka definiše skup vrednosti koje podaci tog tipa mogu da
                           imaju, način njihove memorijske reprezentacije, kao i operacije koje se
                           mogu izvršavati nad podacima tog tipa
                           Osnovni tipovi podataka
                                 Celi brojevi (Integer, Long Integer). Programski jezici definišu nekoliko
                                 verzija celih brojeva različite veličine i opsega vrednosti u zavisnosti od broja
                                 bajtova koji se koriste za njihovu reprezentaciju. Operacije nad celim
                                 brojevima su standardne aritmetičke i relacione operacije.
                                 Realni brojevi jednostruke i dvostuke tačnosti (Real, Double). Operacije nad
                                 realnim brojevima su standardne aritmetičke i relacione operacije.
                                 Znakovi (Character) – predstavljeni ASCII kodom ili UNICODE (1 ili 2 bajta)
                                 Aritmetičke i logičke operacije nad znakovima odnose se na njihove kodove.
                                 Bool-ove vrednosti. Podaci ovog tipa imaju dve vrednosti: tačno i netačno
                                 (true, false). Logičke operacije nad ovim podacima (AND, OR, NOT, XOR, …)
                                 Nizovi znakova (String) – Sekvenca znakova koja se tretira kao jedinstven
                                 podatak, npr. “Ovo je string”. Operacije nad nizovima znakova su
                                 konkatenacija (spajanje) i relacione operacije u odnocu na leksikografsko
                                 uređenje
                           Promenljiva je lokacija u memoriji na koju se referencira identifikatorom
                           (simboiličkim imenom) i koja sadrži podatke određenog tipa
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Upravljačke strukture
                           Upravljačka struktura je instrukcija programa koja određuje
                           redosled izvršavanja ostalih instrukcija programa
                           Upravljačke strukture su: sekvenca, selekcija, petlja i poziv
                           potprogama
                                 Sekvenca predstavlja izvršenje instrukcija programa u sekvenci,
                                 jedne za drugom, dok se ne naiđe na instrukciju kojom se menja
                                 ovaj redosled
                                 Selekcija na osnovu ispunjenosti ili neispunujenosti određenog
                                 uslova određuje koje će instrukcije sledeće biti izvršavane
                                 Petlja ponavlja izvršenje određenog skupa instrukcija dok je (ne
                                 bude) zadovoljen određeni uslov. I selekcija i petlja uslov
                                 specificiraju logičkim (Bool-ovim) izrazom
                                 Poziv potprograma – započinje se sa izvršavanjem posebno
                                 izdvojene grupe instrukcija koje čine potprogram
                           Strukturno programiranje je metodologija programiranja u
                           kojoj svaka logička jedinica programa treba da ima jedan
                           ulaz i jedan izlaz
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          6
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Bool-ov izraz
                           Bool-ov izraz predstavlja sekvencu konstanti,
                           promenljivih ili izraza povezanih odgovarajućim
                           operatorima čija je vrednost tačno ili netačno
                           Bool-ov izraz može biti
                                 Bool-ova konstanta (true, false) ili promenljiva
                                 Dva ili više aritmetička ili znakovna izraza povezana
                                 relacionim operatorima (<, >, ≤, =, !=,…)
                                 Dva ili više Bool-ova izraza povezana logičkim
                                 operatorima (AND, OR, NOT, XOR, EQV, …)



                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Deklaracija
                           Instrukcija programa kojom se pridružuje identifikator nekoj
                           promenljivoj, funkciji ili nekom drugom elementu
                           programskog jezika, tako da se programer može
                           referencirati na taj element putem tog identifikatora (imena)
                           Za imena elemenata ne mogu se koristiti rezervisane
                           (ključne) reči programskog jezika
                           U zavisnosti od programskog jezika ista imena napisana
                           različitim slovima (velikim ili malim) predstavljaju različita
                           imena
                           Primer deklaracija promenljivih u C++/Java
                                 int num;
                                 float sum = 0.0;
                                 char per;

                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          7
Uvod u računarstvo - Programski jezici i                                                                                                Januar 2006
programiranje




                       Naredba dodele i naredbe ulaza/izlaza
                           Naredba dodele je naredba kojom se promenljivoj sa leve
                           strane znaka jednakosti dodeljuje vrednost izraza
                           navedenog sa desne strane znaka jednakosti u obliku
                           promenljiva = izraz
                                 Primer:           xp = asd * (t - 12.45) / 9.25;
                           Naredbe ulaza/izlaza se po strukturi i sintaksi veoma
                           razlikuju u programskim jezicima visokog nivoa
                           Ulazne naredbe tretiraju ulazne podatke kao niz znakova
                           podeljen u linije, a samom naredbom se definiše kako se
                           tumače vrednosti definisane ovim znakovima (kao celi
                           brojevi, realni brojevi, stringovi, itd.)
                           Izlazne naredbe vrednosti promenljivih u odgovarajućem
                           formatu prevode u niz znakova koji se prikazuje na
                           monitoru, upisuje u datoteku ili prikazuje na štampaču.
                       Doc. dr Dragan Stojanović         Uvod u računarstvo – Programski jezici i programiranje           Januar 2006




                       Naredba selekcije
                           Naredba selekcije (if naredba) omogućava programu da
                           ispita vrednosti programskih promenljivih korišćenjem Bool-
                           ovog izraza i u zavisnosti od vrednosti izraza izvrši određenu
                           sekvencu naredbi
                                                            tačno                          Bool-ov                     netačno
                                                                                            izraz



                                                    Nula ili više naredbi                                    Nula ili više naredbi
                                                    programa u sekvenci                                      programa u sekvenci




                                                                                     Ostatale naredbe
                                                                                         programa
                       Doc. dr Dragan Stojanović         Uvod u računarstvo – Programski jezici i programiranje           Januar 2006




Doc. dr Dragan Stojanović                                                                                                                        8
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Primer if naredbe u programskim
                       jezicima
                           VB




                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Naredba “češlja” (case)
                           Da bi se ispitali višestruki uslovi, u granama if naredbe
                           mogu biti nove if naredbe (ugnježdene if naredbe)
                           Mnogi programski jezici visokog nivoa uključuju naredbu
                           “češlja”, case (switch) naredbu
                           Ona omogućava izvršavanje različitih sekvenci naredbi u
                           zavisnosti od diskretnih vrednosti promenljive ili izraza iz
                           skupa definisanih verdnosti
                           Primer:        switch op
                                               case a1: sekvenca naredbi 1
                                               case a2: sekvenca naredbi 2
                                               …
                                               case an: sekvenca naredbi n
                                               default: sekvenca naredbi n+1
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                          9
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Naredbe petlje
                              Naredbe petlje omogućavaju višestruko izvršavanje istog
                              bloka naredbi programa
                              Naredba sa neodređenim brojem prolaza kroz petlju
                              (while)

                          Uslov izlaska iz petlje je
                          zadat kao Bool-ov izraz čija
                          se vrednost ispituje pre                                        tačno Sekvenca naredbi
                          svakog prolaska kroz                       Bool-ov
                          petlju, ukoliko je tačan (ili               izraz                        programa
                          netačan) izlazi se iz petlje
                                                                               netačno

                                                                Ostale naredbe
                                                                  programa
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Petlja sa određenim brojem prolaza
                           Koristi specijalnu promenljivu nazvanu brojač petlje, koja pri
                           svakom izvršenju naredbi u petlji menja svoju vrednost
                           počev od startne vrednosti, do konačne vrednosti za
                           određeni inkrement (for naredba)
                           Primer:       for i = 1 to N
                                                naredbe petlje
                           Primer      VB




                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                         10
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Naredbe potprograma
                           Potprogram je deo programskog koda koji obavlja tačno
                           određenu funkciju i koji se može izdvojiti kao posebna
                           programska celina, sa odredjenim nazivom po kome se
                           poziva u okviru ostalih programa
                           Potprogram definiše listu identifikatora određenog tipa koji
                           su neophodni za njegovo izvršavanje i to su parametri
                           potprograma (fiktivni, formalni parametri)
                           Pri pozivu potprograma uz naziv potrpograma, glavni
                           program prosleđuje listu argumenata koji po broju, tipu i
                           redosledu odgovaraju parametrima (stvarni parametri,
                           argumenti)
                           Prenos argumenata potprogramu
                                 Po vrednosti – na osnovu parametra se očekuje da se vrednost
                                 argumenta kopira i prenese potprogramu
                                 Po referenci - na osnovu parametra se očekuje da se adresa
                                 (referenca) argumenta prenese potprogramu tako da je svaka
                                 promena argumenta u potpogramu vidljiva i u glavnom programu
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Rekurzija
                           Rekurzija je sposobnost potprograma da poziva sam sebe
                           Pri svakoj rekurziji postoje dva slučaja u zavisnosti od
                           određenog uslova:
                                 Izlaz iz potprograma
                                 Rekurzivni poziv istog potprograma sa smanjenom verzijom
                                 problema
                           Na primer, faktorijel broja N koji predstavlja proizvod svih
                           celih brojeva od 0 do N, može se rekurzivno predstaviti :
                                                      N! = N * (N − 1)!
                          i realiovati rekurzivnim potprogramom




                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                         11
Uvod u računarstvo - Programski jezici i                                                                                              Januar 2006
programiranje




                       Složeni tipovi podataka - Slog
                           Slog (record, structura) je imenovana
                           kolekcija heterogenih elemenata pri čemu se
                           svakom elementu pristupa po imenu.
                           Elementi sloga mogu biti različitog tipa
                           Primer deklaracije sloga u C++




                           Primer pristupa elementima sloga
                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje               Januar 2006




                       Složeni tipovi podataka - Polje
                           Polje je imenovana kolekcija homogenih                                           tenThings
                           elemenata u kome se svakom elementu
                           pristupa na osnovu pozicije u kolekciji
                           koja se označava indeksom (-ima)
                                 Jednodimenzionalno polje – niz
                                 Dvodimenzionalno polje - matrica
                           Primer deklaracije niza u C++/Java




                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje               Januar 2006




Doc. dr Dragan Stojanović                                                                                                                     12
Uvod u računarstvo - Programski jezici i                                                                                  Januar 2006
programiranje




                       Objektno-orijentisani programski jezici
                           Enkapsulacija – karakteristika programskog jezika
                           kojom se u okviru strukture definišu atributi i funkcije
                           (metodi) koje pristupaju atributima i obavljaju obradu nad
                           njima. Ova struktura se naziva klasa, a objekti
                           predstavljaju promenljive tipa klase (instance klase).
                                                                    Deklaracija objekta klase
                                    Class Osoba                         Osoba pl1
                             char ime[10]                           Postavljanje vrednosti atributa
                             char prezime[20]                       objekta
                             int jmbg                                   pl1.ime = “Petar”
                                                                    Poziv funkcije objekta
                             promeniIme(char nIme)
                                                                        pl1.promeniIme(“Milan”)



                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




                       Objektno-orijentisani programski jezici
                           Nasleđivanje (inheritance) – definicija klase koja nasleđuje
                           sve atribute i funkcije osnovne klase, i definiše specifične
                           atribute i funkcije.
                           Na primer, klasa Student nasleđuje klasu Osoba i definiše
                           svoje atribute: broj indeksa, semestar, prosečna ocena, itd.,
                           kao i funkcije za pristup i obradu tih atributa koje su
                           karakteristične za objekte te klase
                           Polimorfizam – karakteristika objektno-orijentisanih
                           programskih jezika da se u okviru klasa definišu funkcije sa
                           istim nazivom i listom parametara, a da se u vreme
                           izvršenja programa određuje koja će funckija bioti pozvana
                           u zavisnosti od tipa objekta za koji je pozvana.
                           Polimorfizam i nasleđivanje omogućavaju programeru da
                           razvije hijerarhiju klasa koja se može upotrebiti u različitim
                           aplikacijama

                       Doc. dr Dragan Stojanović   Uvod u računarstvo – Programski jezici i programiranje   Januar 2006




Doc. dr Dragan Stojanović                                                                                                         13