2.1 Uvod v računalniško programiranje

Download Report

Transcript 2.1 Uvod v računalniško programiranje

IT
Računalniško
programiranje
Uvod: metode in orodja za
računalniško programiranje
Danijel Rebolj, FG 2007/2008
Literatura
M. Gams: Osnove dobrega
programiranja. CZ, Ljubljana, 1985
Izvajanje programa
I/O podsistem
(periferija)
centralni
elektronski
kompleks
na enoprocesorskem računalniku
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
Izvajanje programa
Programski jeziki
Strojni jezik
preprosta binarna koda,
enostavno berljiv za stroj
težko razumljiv za človeka
0110000101100111
1000111001011010
0010010111010110
Programski jeziki
Nizkonivojski jeziki (assembly language)
še vedno na ravni strojnih ukazov
razumljivejši za človeka
LDA 3220
MLT 0012
STO 2423
Programski jeziki
Visokonivojski (visoki) jeziki
En stavek predstavlja več strojnih
ukazov
So na bistveno višji abstraktni ravni kot
nizkonivojski jeziki
Preprosti za razumevanje in uporabo
(programiranje) za človeka
Niso neposredno razumljivi računalniku
Visoki programski jeziki
Značilnosti
prenosljivost (neodvisni od vrste
računalnika)
podobni so naravnim jezikom
veliko število (preko 2000) – nastali so
zaradi različnih potreb (npr. podatkovno
usmerjeni, algoritemski, funkcijski,
logični itd.)
“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)
Osnovna 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)
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)
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 izvedbo
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
Algorit emza rešit ev:
D  b2  4  a  c
b D
b D
x1 
, x2 
2a
2a
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
x1=(-b+D^0.5)/(2*a)
print x1,x2
D
x2 1.0
5
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
Različice
uporabniškega
vmesnika