210 likes | 438 Views
RP&PB Računalniško programiranje. Uvod: metode in orodja za računalniško programiranje Danijel Rebolj 2010. Dodatni viri. M. Gams: Osnove dobrega programiranja. C Z, Ljubljana, 1985 http://en.wikipedia.org/wiki/Programming_language
E N D
RP&PBRačunalniško programiranje Uvod: metode in orodja za računalniško programiranje Danijel Rebolj 2010
Dodatni viri • M. Gams: Osnove dobrega programiranja. CZ, Ljubljana, 1985 • http://en.wikipedia.org/wiki/Programming_language • http://en.wikipedia.org/wiki/Timeline_of_programming_languages
Programski jezikiStrojni jeziki • preprosta binarna koda, • enostavno berljiv za stroj • težko razumljiv za človeka 0110000101100111 1000111001011010 0010010111010110
centralni procesor hitri pomnilnik (RAM, ROM) osnovne I/O enote izhodne enote zunanji pomnilniki tipkovnica miška tiskalniki risalniki zaslon disk CD Programski jeziki – strojni jezikiIzvajanje programa centralni elektronski kompleks podatkovna vodila (bus) I/O podsistem (periferija)
Programski jezikiNizkonivojski jeziki • tudi assembly language • še vedno na ravni strojnih ukazov • razumljivejši za človeka LDA 3220 MLT 0012 STO 2423
Programski jezikiVisokonivojski (visoki) jeziki • So na bistveno višji abstraktni ravni kot nizkonivojski jeziki • Preprosti za razumevanje in uporabo (programiranje) za človeka • Niso neposredno razumljivi računalniku P = L*H
Programski jezikiZnačilnosti visokih jezikov • neodvisnost od vrste računalnika prenosljivost • podobni so naravnim jezikom • veliko število (preko 2000) – nastali so zaradi različnih potreb (npr. podatkovno usmerjeni, algoritemski, funkcijski, logični itd.)
Programski jezikiJeziki prihodnosti Napovedprogramerjev za 2013
modul 1 modul 1 prevajalnik (compiler) združevalnik (linker) izvajalni program modul 2 modul 2 ... ... modul n modul n sistemska knjižnica program v izvorni kodi program v vmesni strojni kodi program v strojni kodi Prevajalniki in združevalniki • Prevajalnik transformira izvorni program v semantično identičen strojni jezik. • Združevalnik poveže prevedene module.
Prevajalniki in združevalniki Primer: JAVA • TextPad: zapišemo program v jeziku Java program.java • Javac: prevedemo programprogram.java program.class • Java: program.class + vsi potrebni moduli (sprotno povezovanje)
“Klasično” programiranje • Temelji na pojmu algoritma, spremenljivke in Von Neumanovega stroja • Značilnosti: • ročno načrtovanje, • sekvenčno programiranje, • sekvenčno izvajanje programov, • ročno kodiranje, • ročno upravljanje procesa programiranja (kodiranje, prevajanje, združevanje in testiranje)
Orodja klasičnega programiranja • urejevalnik (EDI, EDIT) • prevajalnik (Fortran, Cobol, Basic, C, C++, Ada, Pascal, Lisp, Java,...) • združevalnik (LINK, LNK) • razhroščevalnik (DEBUG) • obstajajo tudi kombinirana okolja za podporo klasičnemu postopku progra-miranja (npr. LSED, TextPad, Bluefish)
Sintaksa in semantika • Pravila, ki določajo kaj je dovoljeno, imenujemo sintaksa jezika (slovnica) • Sintaktično pravilen program je tisti, ki upošteva sintaktična pravila • Pomen programa imenujemo njegovo semantiko (= programska logika) • Semantično pravilen program je tisti, ki počne, kar od njega pričakujemo
Ravni programiranja • Kreiranje kompleksnih programov je mogoče le, če predhodno določimo jasno splošno strukturo. • Načrtovanje splošne strukture programa (Top-down načrt) imenujemo tudi “programiranje v širšem smislu” • “Programiranje v ožjem smislu” (kodiranje), se nanaša na izvajanje detajlov načrta.
Programski gradniki • Podatki: • Spremenljivke (reference na pomnilnik) • osnovni tipi (integer, double, string), • izpeljani tipi (kombinacije osnovnih tipov), • datoteke (sekvenčne, direktne, indeksne). • Instrukcije: • Krmilne strukture (sekvenca, selekcija, repeticija) • Moduli (podprogrami)
Primer enostavnega programa • Osnova programa je algoritem za izračun kvadratne enačbe:
Primer enostavnega programa Podatkovne strukture: Double a, b, c, D, x1, x2 Instrukcije (procedura): Input a, b, c D=b^2-4*a*c if D < 0 then print “Ni rešitve…” else x1=(-b-D^0.5)/(2*a) x2=(-b+D^0.5)/(2*a) print “Rešitev:”,x1, x2 end if
Primer enostavnega programa • Kako to “vidi” računalnik: 1.0 input a,b,c 2.0 D=b*b-4*a*c x1=(-b-D^0.5)/(2*a) -3.0 x2=(-b+D^0.5)/(2*a) 16.0 -3.0 print x1,x2 1.0
Primer enostavnega programa Različice uporabniškega vmesnika