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
I1
da
IN?
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