Programski jeziki
Transcription
Programski jeziki
Razvojna orodja Za razvoj in izdelavo programske opreme RAČUNALNIŠTVO Uporabnik – višji jezik K=i+j Programski jeziki in razvoja orodja Prevod Računalnik – strojna koda 1010000100001000111110000100001100000000 000000110000010100010000111110000100001100000000 1010001100001100111110000100001100000000 Borut Golob Kaj je program in kako deluje? Zaporedje ukazov, ki jih izvaja računalnik. podatki->računalnik(CPU,pomnilnik)>rezultati ENOSTAVNOST UPORABE Kdaj pišemo program? Ponavljajoče in/ali računsko zahtevne operacije. Ga ne najdemo med dosegljivimi. Potrebujemo hitrost izvajanja in natančnost rezultatov. Borut Golob Računalništvo - Programski jeziki 3 Izvajanje program Računalništvo - Programski jeziki prevajalnik (compiler) prevajalnik (compiler) tolmač (interpreter) objektna koda (OBJ) 5 Borut Golob vmesna koda lažje, standardizirano prevajanje srednje hitro izvajanje vmesna koda je neodvisna od računalnika prenosljivost na nivoju vmesne kode Računalništvo - Programski jeziki 4 prevod po vsaki spremembi hitro izvajanje za izvajanje ne potrebujemo izvorne kode zahtevno odkrivanje napak povezovalnik (linker) prevod (EXE) statične knjižnice dinamične knjižnice (DLL) Računalništvo - Programski jeziki 6 Programski jeziki Strojna koda – binarni – razume procesor Zbirnik – assembler – simbolični zapis Višjenivojski tolmač (interpreter) knjižnice Postopkovni – Fortran, Basic, Pascal, C Nepostopkovni Objektni – C++ Relacijski – prolog Funkcijski – LISP Sprotno prevajanje Sproti (ob izvajanju) se prevedejo samo tisti deli programa (moduli), ki jih je dejansko potrebno izvesti. Borut Golob Zbirni jezik -assembler program Izvorno kodo prevedemo v nek standardizirani jezik, ki: ni strojni, je neodvisen od konkretnega računalnika, ga je treba ob izvajanju interpretirati. Strojni jezik Delno prevajanje v vmesni jezik Java C in C++ Fortran program Računalništvo - Programski jeziki Prevajalniki – programski jezik Borut Golob knjižnice Tolmači – programski jezik Excel Maple Matlab Mathematica VisualBasic, … Preglednice Prevajanje Izvajanje po vsaki spremembi počasno izvajanje potrebujemo izvorno kodo in tolmač lažje odkrivanje napak "samospreminjanje" programa Borut Golob 2 Katero programsko orodje? HITROST IN MOŽNOSTI VODENJA Program Računalništvo - Programski jeziki Drugi – povpraševalni, opisni, … 7 Borut Golob Računalništvo - Programski jeziki 8 Razvoj programskih jezikov Razvoj programskih jezikov Prva generacija Druga generacija strukturirano programiranje višji programski jeziki Tretja generacija Četrta generacija predmetno (objektno) programiranje ZNAČILNI JEZIKI POSAMEZNIH GENERACIJ PROGRAMSKIH JEZIKOV razvojna okolja Strojni jezik jez. 5. gen. Zbirni jezik jeziki 4. generacije FORTRAN zbirni jeziki BASIC strojni jeziki C 1950 1960 1970 1980 HTML 1990 1940 Borut Golob Računalništvo - Programski jeziki Strojni jezik Binarni ukazi, ki jih neposredno izvaja računalnik izredno zamudno in težko programiranje vsak računalnik (procesor) ima svoj strojni jezik Zgled: seštevanje dveh števil (Pentium) Borut Golob 9 11 Borut Golob 13 Prvotni višjenivojski jeziki Borut Golob Računalništvo - Programski jeziki 10 Borut Golob Zgled: seštevanje dveh števil i in j v k (Pentium) mov eax,[i] add eax,[j] mov [k],eax Računalništvo - Programski jeziki 12 Borut Golob Računalništvo - Programski jeziki 14 C, … preprosti podatkovni tipi: celo in realno število, znak, polje (števil, znakov) krmilni stavki: prireditev, vejitev, goto, zanke s štetjem (DO, for) Računalništvo - Programski jeziki 2000 Strukturirano programiranje (Fortran, Basic, LISP, ...) 1990 Bližje naravnemu jeziku, lažje učenje Enostavnejše in preglednejše programiranje, manj napak Veliko število, namenjeni reševanju različnih problemov Prenosljivost Možnost prevajanja ali tolmačenja definiranje podatkovnih struktur (spremenljivk) – deklaracijski del definiranje poteka izvajanja programa – izvajalni del. Računalništvo - Programski jeziki 1980 Višje nivojski jeziki Simbolični jeziki, katerih ukazi se prevedejo v več strojnih ukazov. Praviloma obsegajo ukaze za: 1970 en ukaz zbirnika ustreza enemu strojnemu ukazu bistveno izboljšana razumljivost in preglednost elementarne operacije: programiranje še vedno zamudno programi še vedno odvisni od procesorja potreba po prevajalniku iz zbirnega v strojni jezik Višji programski jeziki 1960 Zbirni jezik, assembler 10100001 00001000 11111000 01000011 00000000 00000011 00000101 00010000 11111000 01000011 00000000 10100011 00001100 11111000 01000011 00000000 Računalništvo - Programski jeziki Borut Golob 1950 15 Borut Golob Program = Podatkovne strukture + Algoritmi. izpopolnjeni, strukturirani podatkovni tipi: nizi znakov, zapisi (record, struct, union), množice. krmilni stavki: zanke s pogoji (while, repeat), večkratne vejitve (case, switch), izpopolnjeni izrazi. razvoj programov "od zgoraj navzdol", z razgradnjo problemov na podprobleme: intenzivna uporaba podprogramov (procedure, funkcije) Računalništvo - Programski jeziki 16 Postopkovno programiranje Postopkovni jeziki Zgled: seštevanje dveh števil i in j v k Programski jeziki 3. generacije Izvorni programi v jezikih podobnih naravnemu jeziku. Programer mora zelo natančno opredeliti postopek delovanja. Predstavniki: Fortran, COBOL, Basic, pascal Borut Golob Računalništvo - Programski jeziki 17 Nepostopkovni jeziki Računalništvo - Programski jeziki NAJRAJE.Sladoled = PRODAJA.Sladoled Borut Golob 21 Borut Golob Računalništvo - Programski jeziki Ime računa Št. računa Obresti Stanje Razvoj multimedijskih spletnih strani in aplikacij. podatki metode prenos Borut Golob sporočilo storno Računalništvo - Programski jeziki 22 Programiranje v Internetu položi 100,00 € 20 Povezanost podatkov in metod, ki po logiki sodijo skupaj dobro definirani in nadzorovani vmesniki do objekta dedovanje: hierarhično izpeljevanje novih objektov iz obstoječih z dodajanjem podatkov in/ali spreminjanjem metod enkapsulacija, to je "skrivanje“ notranjih podatkov pred uporabo od zunaj podrobnosti realizacije - večja prilagodljivost podatki: opisujejo (notranje) stanje objekta metode: podprogrami, ki delujejo nad podatki dvig % odgovor Računalništvo - Programski jeziki Lastnosti Računalništvo - Programski jeziki polog visji(stolpnica,hisa). % DEJSTVO manjsi(X,Y) :- visji(Y,X). % PRAVILO ?- manjsi(hisa,stolpnica). % VPRASANJE YES 19 Objekt – samostojen programski modul: 18 select Slaščičarna from PRODAJA,NAJRAJE where NAJRAJE.Otrok = ”Jure” and Objektno programiranje Računalništvo - Programski jeziki Program je množica predmetov, ki med seboj komunicirajo in s tem opravljajo določeno nalogo. Predmet = Podatki + Metode. Številne prednosti pri razvoju velikih programov. Borut Golob Borut Golob Zgled: Prolog (Smalltalk, C++, Java, ...) K is I+J. (SETQ K (+ I J)) Objektno programiranje Prolog: LISP: Zgled. SQL Usmerjeni k rezultatu: predpišemo kaj želimo rešiti, ne kako Potratni, zahtevajo zmogljivo opremo Praviloma se tolmačijo Neprilagodljivi: rešujejo ozko omejene probleme Razširjeni predvsem v zvezi z bazami podatkov za poizvedovanje (SQL) in generiranje poročil Borut Golob k := i+j; k = i+j; K = I+J ADD I J GIVING K. LET k = i+j Nepostopkovni jeziki Jeziki 4. generacije Pascal: C, java: Fortran: COBOL: Basic: 23 Borut Golob HTML – opisni jezik za izdelavo interaktivnih strani. XML – opisni jezik za izdelavo strukturiranih dokumentov. Java – objektno orientiran programski jezik za pisanje aplikacij za izvajanje na spletu. PHP, PERL, … CGI, ASP, … JavaScript – skriptni jezik za spletne strani Računalništvo - Programski jeziki 24 Razvojna okolja Razvoj programske opreme (Delphi, Visual Basic, JBuilder, ...) Izdelava grafičnih uporabniških vmesnikov s povezovanjem in določanjem lastnosti vnaprej definiranih gradnikov: oken, gumbov, vnosnih polj, ... Povezovanje vmesnika s programsko kodo. Dogodkovno naravnano programiranje. DEFINICIJA PROBLEMA vhodni podatki: katere podatke poznamo rezultati: kaj želimo dobiti cilji in zahteve NAČRTOVANJE REŠITVE (idejna rešitev) razgradnja problema opredelitev postopkov reševanja algoritem zapisovanje algoritmov: diagram poteka, psevdokoda REALIZACIJA REŠITVE NAČRTOVANJE REŠITVE REALIZACIJA REŠITVE programiranje (izbira metode): PROBLEM strukturirano programiranje objektno programiranje postopki: kodiranje PROGRAM preverjanje (testiranje) dokumentiranje realizacija: programski jeziki Borut Golob razvojna okolja Računalništvo - Programski jeziki Borut Golob Računalništvo - Programski jeziki Faze programiranja 25 Elementarni deli programov Logične napake Vhod – potrebni podatki Izhod – prikaz rezultatov Opredelitev spremenljivk Algebrične rešitve (numerične) Vejenje – logične odločitve Ponavljanje – zanke Shranjevanje (podatkov in rezultatov). Pravopisne napake Podatki ? S Manjka vejica READ *, X, Y X Y2 i K = Y/X IF (k>1) THEN Y = k*X Deljenje z ničlo ELSE X = k*Y Izjeme ? END IF PRINT *,k,X,Y Rezultat Grafi ? Zasnova programa Borut Golob Razvoj algoritma Kodiranje Napačni rezultati Odpravljanje napak 27 Algoritem Borut Golob Računalništvo - Programski jeziki Zaporedno Navodila oz. zaporedje ukazov, ki v končnem številu korakov pripeljejo do rešitve problema, pri čemer je vsak korak dobro znana operacija. Odločitve Prenos Pogojne Vnos / ? ? Prikaz Diagram poteka Psevdokoda Ponavljanje – zanke Razvejitev Štete Obdelava Borut Golob Računalništvo - Programski jeziki 29 Borut Golob Problem Splošna napotki: Razdeli problem na manjše podprobleme. Izoliraj in posploši dele, ki se ponavljajo. Preslikaj vsak del v algoritem. Zapiši psevdokodo za algoritem. Računalništvo - Programski jeziki Računalništvo - Programski jeziki 30 Iskanje največjega elementa v polju Potrebno je znanje podkrepljeno s časom in izkušnjami 2. 3. 4. Borut Golob Algoritem Definiranje algoritma 1. 28 Grafičen zapis algoritma Zapis zaporedja izvajanja programa. 26 MAX P[1] Iz podanega polja celih števil, poiščite število z maksimalno vrednostjo! Vhodni podatki: polje celih števil P dolžine N, N>0 Rezultat: MAX: največji element polja 31 Borut Golob Računalništvo - Programski jeziki I1 da IN? ne I I+1 P[I]>MAX ? ne da MAX P[I] 32 Algoritem Največji element v polju Izračun ocene pri predmetu (0) Definicija problema: Pisni del: Preberi podatke: N, P Števec = 1 i=1 Max = prvi Max = P(1) Dokler je števec < N ponavljaj do konca -100: neustrezna -10: podpovprečna 0: povprečna +10: nadpovprečna Povečaj števec i=i+1 Če P(i) >Max -> Max = P(i) Ustni del (0-100) Končna ocena (0-10) Konec ponavljanja Borut Golob Računalništvo - Programski jeziki 33 Algoritem izračunati R, končno oceno izpita Borut Golob Računalništvo - Programski jeziki 35 Algoritem Izračunaj oceno iz kolokvijev RK iz K1, K2 in K3; Iz RK in RP izračunaj oceno iz kolokvijev in pisnega dela izpita RKP; Spremeni RKP glede na oceno seminarske naloge; Izračunaj končno oceno R iz RKP in U. Borut Golob Računalništvo - Programski jeziki 36 Izdelava programa Izračun ocene pri predmetu (3) Psevdokoda: Pisanje programa Beri podat k e (K 1,K 2,K 3,P ,S,U) P reveri k olok vije: IF(K ? <40) EXIT P opreč je k olok vijev: RK =(K 1+K 2+K 3)/3 K ombiniraj k ol. in iz pit :RK P =MAX(RK ,P ) P riš t ej s eminars k o: RK P =RK P +S D oloč i oc eno: R=(60%RK P +40%*U) Zaok rož i oc eno: R=INT(R+9.99)/10 Računalništvo - Programski jeziki Urejevalnik - editor Izvajanje Tolmač – interpreter Prevajanje Prevajalnik – compiler Povezovalnik – linker Razvojno okolje Programming environment Preverjanje, testiranje Borut Golob 34 Osnovni koraki št. točk na treh kolokvijih št. točk na pisnem izpitu ocena ustnega izpita ocena seminarske naloge Rezultat: Računalništvo - Programski jeziki Izračun ocene pri predmetu (2) Vhodni podatki: K1,K2,K3: P: U: S: Borut Golob Algoritem Izračun ocene pri predmetu (1) pisni del: višja ocena iz kolokvijev ali pisnega izpita ocena seminarske naloge se prišteje pisnemu delu končna ocena (60% pisni + 40% ustni) Izpiši Max Ustavi 3 kolokviji (0:100)(povprečje, nobeden manj od 40) Pisni izpit (0:100) Seminarska naloga Razhroščevalnik - debugger 37 38 pisanje programske kode Urejevalnik teksta, npr. EDIT Zgled.f90 ali ukaz NEW FILE Zapis programske kode: Editor Program v izvorni kodi Po končanem pisanju shranimo Zgled.f90 prevajanje Neuspešno prevajanje Faze Prevajalnik FORTRAN npr. FL32 Zgled.f90 ali ukaz COMPILE Podprogrami Knjižnice Neuspešno povezovanje Povezovalnik npr. LINK Zgled.obj ali ukaz BUILD izvajanje in testiranje Izvajalni program Zgled.exe Nepravilno delovanje Borut Golob Preveden program v binarni obliki – objektna koda Zgled.obj povezovanje kodi ranja Podprogrami Program npr. Zgled Vhodni podatki 1, 3.141, 2.1E6 Vstavi podatke Računalništvo - Programski jeziki 39 Računalništvo - Programski jeziki 40 Zapis programske kode: razvojno okolje Borut Golob Računalništvo - Programski jeziki Izvajanje programa 41 Napotki za programiranje Računalništvo - Programski jeziki Računalništvo - Programski jeziki 42 Dober program je: Problem reši jasno in brez ovinkov. Izogibaj se vmesnim rezultatom, če niso nujni. Oblikuj program za preglednost. Uporabljaj mnemonična imena. Programiraj samostojne logične enote. Programiraj splošne programe in podprograme. Teži k čim večji neodvisnosti med programskimi enotami. Borut Golob Borut Golob Pravilen (deluje za vse podatke), robusten (neobčutljiv na podatke), zanesljiv (izteče se pravilno, čim manj napak), razumljiv (jasen, pregleden), prilagodljiv (dopolnitve), učinkovit (idejna rešitev), uporabniško prijazen, pametno izrablja računalniške kapacitete, je lahko popravljati, spreminjati in vzdrževati, je dobro dokumentiran. 43 Borut Golob Računalništvo - Programski jeziki 44