3 Uvod v računalniško programiranje

Download Report

Transcript 3 Uvod v računalniško programiranje

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. CZ, Ljubljana, 1985
http://en.wikipedia.org/wiki/Programmi
ng_language
http://en.wikipedia.org/wiki/Timeline_of
_programming_languages
Programski jeziki
Strojni jeziki
preprosta binarna koda,
enostavno berljiv za stroj
težko razumljiv za človeka
0110000101100111
1000111001011010
0010010111010110
Programski jeziki – strojni jeziki
I/O podsistem
(periferija)
centralni
elektronski
kompleks
Izvajanje programa
centralni
procesor
hitri pomnilnik
(RAM, ROM)
podatkovna
vodila (bus)
osnovne I/O enote izhodne enote zunanji pomnilniki
tipkovnica tiskalniki
miška
risalniki
zaslon
disk
CD
Programski jeziki – strojni jeziki
Izvajanje programa
Programski jeziki
Nizkonivojski jeziki
tudi assembly language
še vedno na ravni strojnih ukazov
razumljivejši za človeka
LDA 3220
MLT 0012
STO 2423
Programski jeziki
Visokonivojski (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 jeziki
Znač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 jeziki
Jeziki prihodnosti
Napoved
programerjev
za 2013
Prevajalniki in združevalniki
Prevajalnik transformira izvorni program
v semantično identičen strojni jezik.
Združevalnik poveže prevedene module.
modul 1
modul 2
...
modul n
program v
izvorni kodi
modul 1
prevajalnik
(compiler)
modul 2
...
modul n
program v
vmesni strojni kodi
združevalnik
(linker)
sistemska
knjižnica
izvajalni
program
program v
strojni kodi
Prevajalniki in združevalniki
Primer: JAVA
TextPad: zapišemo program v jeziku
Java  program.java
Javac: prevedemo program
program.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 programiranja (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:
ax  bx  c  0
2
Algoritem
za rešitev :
D  b  4a c
2
x1 
b
2a
D
, x2 
b
2a
D
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:
a
1.0
1
input a,b,c
b
2.0
2
D=b*b-4*a*c
c
-3.0
3
x1=(-b-D^0.5)/(2*a)
16.0
x1 -3.0
4
x2=(-b+D^0.5)/(2*a)
print x1,x2
D
x2 1.0
5
Primer enostavnega programa
Različice
uporabniškega
vmesnika