uvod - laboratorij za sisteme v realnem času · 17.10.2008 3 izdelan iz 2300 polprevodniških...

10
17.10.2008 1 Od problema do programa http:\\www.rtsunimb.si Domen Verber domen.verber@unimb.si Matej Šprogar matej.sprogar@unimb.si Govorilne ure: Torek 9:30 – 11:30 F207 Govorilne ure: Torek 10:00 – 12:00 F202 Uvod Razjasnitev osnovnih definicij in pojmov Kako je sestavljen in kako deluje računalnik Kakšne probleme lahko rešujemo z računalniki i k kš in kane ne Programski jeziki Postopek prevajanja programov Orodja za razvoj programov Kaj je računalnik? Priprava za avtomatsko opravljanje računskih operacij Elektronska naprava za reševanje nalog na osnovi vloženega programa osnovi vloženega programa Računalnik, zgrajen na osnovi tehnologije visokointegriranih polprevodniških komponent, je mikroračunalnik. (Osebni računalniki so mikroračunalniki) Kaj je …? Kaj je računalništvo? Veda o (elektronskih) računalnikih in njihovi uporabi Kaj je informatika? Obravnavanje podatkov, informacij z (elektronskimi) računalniki. Vključuje razlago, analizo, hranjenje in dostop donjih. Kaj so tehnologije komuniciranja? Nabor znanj, veščin, metod in pristopov v povezavi s tehnološkimi rešitvami, s katerimi zagotovimo učinkovito komunikacijo, sodelovanje in organiziranost. Zajemajo vse vrste komunikacije, tako osebno, poslovno kot skupinsko; vse načine komuniciranja, govorno, pisno, elektronsko, vizualno, in najrazličnejše medije Kaj je …? Kaj so IKT informacijskokomunikacijske tehnologije (ICT – Information and communication technologies)? technologies)? Skupen izraz za nabor najrazličnejših računalniških, informacijskih in komunikacijskih naprav (strojna oprema), aplikacij (programska oprema), omrežij (Internet) in storitev. Strojna oprema računalnika

Upload: doannguyet

Post on 18-Aug-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

17.10.2008

1

Od problema do programa

\\http:\\www.rts‐uni‐mb.si

Domen Verberdomen.verber@uni‐mb.si

Matej Šprogarmatej.sprogar@uni‐mb.si

Govorilne ure:Torek 9:30 – 11:30 ‐ F‐207

Govorilne ure:Torek 10:00 – 12:00 ‐ F‐202

Uvod

• Razjasnitev osnovnih definicij in pojmov

• Kako je sestavljen in kako deluje računalnik

• Kakšne probleme lahko rešujemo z računalniki i k kšin kakšne ne

• Programski jeziki

• Postopek prevajanja programov

• Orodja za razvoj programov

Kaj je računalnik?

• Priprava za avtomatsko opravljanje računskih operacij

• Elektronska naprava za reševanje nalog na osnovi vloženega programaosnovi vloženega programa

• Računalnik, zgrajen na osnovi tehnologije visokointegriranih polprevodniških komponent, je mikroračunalnik.(Osebni računalniki so mikroračunalniki)

Kaj je …?• Kaj je računalništvo?

– Veda o (elektronskih) računalnikih in njihovi uporabi• Kaj je informatika?

– Obravnavanje podatkov, informacij z (elektronskimi) računalniki. Vključuje razlago, analizo, hranjenje in d d jihdostop do njih.

• Kaj so tehnologije komuniciranja?– Nabor znanj, veščin, metod in pristopov v povezavi s tehnološkimi rešitvami, s katerimi zagotovimo učinkovito komunikacijo, sodelovanje in organiziranost. Zajemajo vse vrste komunikacije, tako osebno, poslovno kot skupinsko; vse načine komuniciranja, govorno, pisno, elektronsko, vizualno, in najrazličnejše medije

Kaj je …?

• Kaj so IKT informacijsko‐komunikacijske tehnologije (ICT – Information and communicationtechnologies) ?technologies) ?– Skupen izraz za nabor najrazličnejših računalniških, informacijskih in komunikacijskih naprav (strojna oprema), aplikacij (programska oprema), omrežij (Internet) in storitev. 

Strojna oprema računalnika

17.10.2008

2

Strojna oprema ‐ CPE

Centralna procesna enota ‐ CPE

• Imenujemo jo tudi procesor oz. angl. CentalProcess Unit (CPU)

• Centralna procesna enota mikroračunalnika je mikroprocesor

• Krmilna enota skrbi za delovanje računalnika kot• Krmilna enota skrbi za delovanje računalnika kot celote

• Računska enota (Aritmetično‐logična enota ‐ ALE) skrbi za izvajanje aritmetičnih (+,‐,*,…) in logičnih (AND, OR, <, >,…) operacij

• Registri so hitre pomnilniške celice za shranjevanje vmesnih rezultatov

Strojna oprema ‐ pomnilnik

00000001000200030004

31081207

• Je zaporedje pomnilniških celic, ki so sposobne hraniti neko informacijo

• Vsaka celica ima določen (enoličen) naslov (“hišno številko”)

• Procesna enota lahko v celice  vpisuje vrednosti oz jih iz njih bere

10191020102110221023

2225503966

vrednosti oz. jih iz njih bere• Pomnilnik lahko razdelimo na:

Podatkovni pomnilnik (pomnilnik  za podatke)Programski pomnilnik (pomnilnik za program)

Vhodno/izhodne naprave

• Vhodno/izhodne naprave skrbijo za komunikacijo računalnika z okolico (človekom ali drugo napravo)– Tipkovnica, miška, monitor …– Temperaturni senzor, električni ventil, …– Dejansko komunikaciji izvajajo periferni vmesniki (grafična kartica, USB vmesnik, serijski vmesnik, …)

• Sem spadajo tudi zunanje pomnilne enote in naprave, ki razširjajo pomnilniške kapacitete računalnika– Diski, optični čitalniki, …

Zgledi1946 ‐ ENIAC – Eden prvih elektronskih računalnikov

• ENIAC ‐ Electrical Numerical Integrator andComputer– Uporabljen za izračune gibanja balističnih izstrelkov

– Natančnost 10 decimalnih mest– 18000 elektronk – “polprevodniške žarnice”– 170 m2, 30 ton, 140 kW porabe– Vhodno izhodna naprava: bralec/luknjalnik kartic– Hitrost: 5,000 seštevanj, 360 množenj na sekundo

17.10.2008

3

Izdelan iz 2300 polprevodniških elementov  ‐tranzistorjev

Sodobni mikroprocesorji (Pentium4)  jih imajo več 

1970 – prvi mikroračunalnik

Mikroprocesor 4004

( ) j jdeset milijonov

• 1975: Prvi osebni računalnik Altair 8800

• 1981: Prvi “pravi” osebni računalnik (IBM PC)

Kako deluje računalnik?

• Procesna enota računalnika je sposobna izvesti določeno število enostavnih ukazov 

• Ukazi so predstavljeni v strojni (binarni) obliki • Kakšen postopek (program) bo izvedel računalnik, je določeno z zaporedjem ukazov shranjenih vje določeno z zaporedjem ukazov shranjenih v pomnilniku 

• Procesna enota bere ukaze iz pomnilnika in jih izvaja enega za drugim

• Ob določenih ukazih se lahko izvajanje programa premakne iz ene vrstice programa na drugo ‐skoki

Programska oprema

• Delimo jo na:– Sistemsko programsko opremo (operacijski sistem, gonilniki “drajverji”), …Skrbi za normalno delovanje strojne opreme č l ik i j j tračunalnika, izvajanje programov, ter za 

komunikacijo računalnika z uporabnikom in drugimi strojnimi napravami

– Uporabniško programsko opremo (aplikacije)Omogoča “uporabo” računalnika (urejevalniki besedil, preglednice, računalniške igre, …)

Kaj je računalniški program?

• Računalniški program je skupina napotkov, kaj naj računalnik naredi oz. kako naj reši podani problem

• Lahko je podan v obliki, ki jo računalnik razume neposredno (strojna koda programa) – takšen program se lahko naloži v pomnilnik računalnika, kjer se izvaja s 

čj tpomočjo procesne enote• Program napisan v človeku razumljivi obliki se imenuje izvorna koda programa. Preden jo lahko računalnik izvede, jo moramo prevesti v računalniku razumljivo obliko 

• Za opis izvorne kode programa se uporablja računalniški jezik. Za pretvorbo iz izvorne kode v strojno potrebujemo prevajalnik.

Kaj je programiranje?

• Programiranje je konstrukcija seznama napotkov (programa) za reševanje postavljenega problema

• Programiranje je kreativni proces in zahteva g j j pdobro poznavanje področja za katerega rešujemo problem=>V splošnem se (dobro) programiranje obravnava bolj kot umetnost kot pa znanost ali inženirstvo

17.10.2008

4

Kaj je algoritem?

• Algoritem je formalno ime za postopek, s katerim rešujemo nek problem (računalniški ali kakšen drugi)

• Algoritem se opisuje na veliko bolj abstraktnem nivoju kot je računalniški program => računalniki algoritmov ne morejo neposredno izvajati; potrebno jih je 

t itipretvoriti v program • Z algoritmi na teoretičnem nivoju se ukvarja posebna veja računalništva: teorija algoritmov

• Njeni osnovni cilji so:– poiskati najbolj optimalne algoritme (postopke) za reševanje določenih tipov nalog,

– ugotoviti katere probleme je sploh možno rešiti na enostaven način

Kakšne probleme lahko rešujemo z računalniki?

• Računalniki problemov ne rešujejo sami. Nekdo jim mora povedati kaj in kako naj to naredijo=>=> 

Z računalniki lahko rešujemo samo probleme, za katere obstaja postopek kako priti do rešitve. Postopek moramo bodisi napisati mi ali pa to za nas naredi nekdo drug

Kakšnih problemov ne moremo reševati z računalniki?

• Z računalniki ne moremo reševati problemov, za katere na obstaja postopek do rešitve oz. postopka ni mogoče prevesti v računalniku razumljivo oblikorazumljivo obliko

• V določenih primerih postopek sicer poznamo vendar njegova izvedba traja predolgo za praktično uporabo

Kaj je programski jezik?

• Programski jezik je jezik, v katerem pišemo napotke (programe) za računalnik

• Potrebujemo ga zato, ker računalnik ne more neposredno razumeti naravnega jezikap g j

• Vsak programski jezik ima strogo določeno obliko (kako tvorimo “besede” in “stavke” programa ‐ slovnica oz. sintaksa jezika) in pomen (kaj “besede” in “stavki” pomenijo ‐semantika programskega jezika).

Vrste programskih jezikov

• Strojni jezik• Zbirni jezik• Visokonivojski programski jeziki• Jeziki za pospešen razvoj aplikacij (RAD jeziki)• Jeziki za pospešen razvoj aplikacij (RAD jeziki)• Programski jeziki za delo s podatkovnimi bazami

• Skriptni programski jeziki• Programski jeziki za spletne aplikacije

Strojni jezik

• Programiranje poteka z neposrednim vpisom ničel in enk v pomnilnik računalnika bodisi preko stikal bodisi z izdelavo pomnilnika, ki ima vnaprej postavljeno vsebino strojne kodeima vnaprej postavljeno vsebino strojne kode

• Slabosti:– Velika možnost napak

– Program je praktično nečitljiv, zahteva dosti časa za programiranje

17.10.2008

5

Strojni jezik

• Prednosti– Programer ima popolni nadzor nad delovanjem računalnika

– Programska koda zapisana neposredno v strojnemProgramska koda zapisana neposredno v strojnem jeziku se lahko izvaja hitreje in zaseda manj prostora kot programska koda, ki nastane iz višje nivojskih programskih jezikov

Zgledi

• Prvi računalniki – za njih programski jeziki še niso bili razviti

• Prvi osebni računalnik

Zbirni jezik

• Zbirni jezik (assembly language) je programski jezik, kjer so kode strojnega jezika nadomeščene s kratkimi in človeku razumljivimi oznakami (mnemoniki)

• Vsaki kodi (ali skupini kod) strojnega jezikaVsaki kodi (ali skupini kod) strojnega jezika pripada en ukaz zbirnega jezika, ki označuje kaj ukaz dela

• Pred uporabo moramo program napisan v zbirnem jeziku pretvoriti v strojno obliko. Pretvorbo izvaja posebna oblika prevajalnika, t.i. zbirnik (assemler), postopek pretvorbe pa se imenuje zbiranje (assembling)

Visokonivojski programski jeziki

• Podajajo rešitve problema na bolj abstrakten način in bližje človekovemu načinu razmišljanja

• Obstaja velika množica različnih programskih j p gjezikov, ki so specializirani za reševanje določenega tipa nalog

• Programe napisane v visokonivojskih programskih jezikih moramo pred izvajanjem preslikati v strojno kodo

Visokonivojski programski jeziki

• Prednosti visokonivojskih programskih jezikov– Pisanje programov je veliko hitreje, manjša je možnost napak, programi so veliko bolj čitljivi

– Učenje visokonivojskih programskih jezikov je lažjeUčenje visokonivojskih programskih jezikov je lažje kot učenje zbirnega ali strojnega jezika

Visokonivojski programski jeziki

• Slabosti visokonivojskih programskih jezikov– Večina visokonivojskih programskih jezikov omejuje dostop do nizkih nivojev računalnika

– Koda napisana v višjem programskem jeziku se (poKoda napisana v višjem programskem jeziku se (po prevajanju) običajno izvaja počasneje in zaseda več prostora v pomnilniku računalnika

17.10.2008

6

Jeziki za pospešeni razvoj aplikacij (RAD –Rapid Developement Languages)

• Niso posebni programski jeziki ampak kombinacija enega ali več programskih jezikov in različnih orodij, ki omogočajo hitro izdelavo aplikacij z bogatimi uporabniškimi vmesnikiaplikacij z bogatimi uporabniškimi vmesniki, poenostavljeno delo s podatki, izdelavo poročil, ipd. 

• Zgledi: Visual Basic, Delphi, Visual C++, VisualStudio .Net

Jeziki za pospešeni razvoj aplikacij (RAD –Rapid Developement Languages)

• Prednosti:– Omogočajo zelo hitro izdelavo uporabniških aplikacij, ki temeljijo na bogatih uporabniških vmesnikih, množični obdelavi podatkov, izdelavi poročil, spletnim dostopom, ipd. (npr. programi za računovodstvo, študentsko evidenco, …)

– Programer se tako lahko osredotoči samo na dejanske probleme, ki jih je potrebno rešiti. 

– Ker temeljijo na obstoječih programskih jezikih, jih je enostavno osvojiti. 

Jeziki za pospešeni razvoj aplikacij (RAD –Rapid Developement Languages)

• Slabosti:– RAD programski jeziki so običajno vezani na določeno računalniško platformo (Windows, Linux, Macintosh), ker so tudi uporabniški , ), pvmesniki, podatkovne baze, ipd. vezane na te platforme

– Generirana koda je v večini primerov večja in počasnejša od kode napisane v »čistih« programskih jezikih 

Programski jeziki za delo s podatkovnimi bazami

• So namenski programski jeziki za poizvedovanje v podatkovnih bazah in za manipulacijo podatkov v njih. (Informatika je ?)(Informatika je …?)

• Običajno temeljijo na principu t.i. entitet (tabel) in relacij (povezav) med njimi.

17.10.2008

7

Programski jeziki za delo s podatkovnimi bazami

• Prednosti:– Omogočajo zelo abstrakten način obdelave velike množice podatkov

SELECT ImePredmeta,Ocena FROM PrijavniceWHERE VpisnaStevilka='E1000000‘

SELECT AVG(Ocena) FROM PrijavniceWHERE VpisnaStevilka='E1000000‘

UPDATE ZaposleniSET Placa=Placa*2WHERE PriimekInIme='Verber Domen‘

DELETE FROM KreditiWHERE PriimekInIme='Verber Domen'

Programski jeziki za delo s podatkovnimi bazami

• Slabosti:– Niso primerni za reševanje splošnih problemov, čeprav večina kompleksnejših programskih jezikov za podatkovne baze podpira tudi postopkovno obdelavo podatkov v bazi

Skriptni programski jeziki

• Se običajno uporabljajo za razširitev možnosti obstoječih programskih orodij in drugih uporabniških programov. 

• Gre za ozko namenske programske jezike ki• Gre za ozko namenske programske jezike, ki omogočajo enostavno implementacijo različnih nalog v gostujočih aplikacijah.

• Zgledi: Visual Basic for Applications (VBA)

Skripta za program Excel, ki pretvori besedila v označenih celicah v male črke.Formule ostanejo nespremenjene.

Kaj je to ???

Skriptni programski jeziki

• Prednosti:– Običajno so enostavnejši in se jih je lažje naučiti kot splošno namenske programske jezike

– Programer se lahko osredotoči samo na reševanje problema, problem zajemanja in prikaza informacij rešuje gostujoči program

• Slabosti:– Delujejo samo v okolju osnovnega programa in niso primerni za reševanje splošnih nalog

– Izvajanje programov napisanih v skripnih jezikih je počasno

17.10.2008

8

Programski jeziki za spletne strani in spletne aplikacije

• Omogočajo interaktivno delo s spletnimi stranmi

• Običajno so to skriptni programski jeziki (VBScript, JavaScript, PHP), ki delujejo v povezavi s spletnim brskalnikom, ali pa posebne izvedbes spletnim brskalnikom, ali pa posebne izvedbe drugih programskih jezikov (npr. Java, .Netdružina programskih jezikov)

• Spletne aplikacije se lahko deloma izvajajo na spletnem strežniku, deloma pa na uporabnikovem računalniku

Programski jeziki za spletne strani in spletne aplikacije

• Prednosti– Za njihovo izvajanje zadostuje spletni brskalnik

• SlabostiV i b k l iki d i j h j ik h– Vsi brskalniki ne podpirajo vseh jezikov oz. vseh možnosti, ki jih ti jeziki ponujajo

– Hitrost delovanja je odvisna tudi od hitrosti mrežnih povezav

– Možnosti uporabniških vmesnikov so relativno omejene

Programski jezik C

• Leži nekako na prehodu med zbirnim programskim jezikom in visokonivojskimi programskimi jeziki

• Razvijalci, ki so razvili programski jezik C, so želeli izboljšati nekatere lastnosti zbirnega jezika in ohraniti njegove prednosti– Lažje pisanje in branje programske kode– Večja prenosljivost programov– Ohranitev nadzora nad vsemi komponentami računalnika

Programski jezik C

• Iz programskega jezika C je bilo izpeljanih veliko drugih visokonivojskih programskih jezikov– C++– C++

– C#

– …

• Programski jezik C ni najprimernejši jezik za učenje osnov programiranja

Kateri programski jezik je najboljši?

1. Tisti, s katerim zadani problem rešite najhitreje in najučinkoviteje

2. Tisti, ki ga poznate 

3 Ti i ki j d b ž3. Tisti, ki je podoben že znanemu

4. Tisti, ki ga zahteva delodajalec

Vrste računalniških programov (aplikacij)

• Konzolne aplikacije– S programom komuniciramo preko tipkovnice in terminalskega zaslona

• Okenske aplikacije– Imajo bogat grafični uporabniški vmesnik, omogočajo 

b škuporabo miške, …• Spletne aplikacije

– Se izvajajo v sklopu brskalnika• Vgrajene aplikacije

– So vgrajene v različne večje sisteme (gospodinjske naprave, mobilniki, proizvodni stroji, letala, …) in običajno nimajo neposrednega uporabniškega nadzora – delujejo samostojno

17.10.2008

9

Postopek izvajanja programov

Izvornakoda Prevajalnik

Objektnakoda

PrevajanjeTest.c Test.o

Postopek izvajanja programov

Izvornakoda Prevajalnik

Objektnakoda

Prevajanje

Povezovanje

Test.c Test.o

Povezovalnik

Programskeknjižnice

Izvedljivakoda

Disk

Math.oStdIO.o

Test.exe

Postopek izvajanja programov

Izvornakoda Prevajalnik

Objektnakoda

Prevajanje

Povezovanje

Nalaganje

Test.c Test.o

Povezovalnik

Programskeknjižnice

Izvedljivakoda

Disk

Nalagalnik

Math.oStdIO.o

Test.exe

Postopek izvajanja programov

Izvornakoda Prevajalnik

Objektnakoda

Prevajanje

Povezovanje

Nalaganje

Izvajanje

Test.c Test.o

Povezovalnik

Programskeknjižnice

Izvedljivakoda

Disk

Nalagalnik

Math.oStdIO.o

Test.exe

Orodja za izdelavo programov

• Urejevalnik– Razen pisanja izvorne kode lahko omogočajo še: sintaksno barvanje, označevanje programskih blokov, integracijo s prevajalnikom, …

l k• Prevajalnik– Prevede in (po potrebi) poveže program v izvedljivo datoteko, generira poročilo  o prevajanju, seznam uporabljenih spremenljivk, …

– Preverja in poroča o sintaksnih (slovničnih) napakah v izvorni programski kodi oz. nudi namige za učinkovitejšo kodo

Orodja za izdelavo programov

• Razhroščevalnik (debugger)– Omogoča odkrivanje logičnih napak v programski kodi

– Omogoča izvajanje programa korak po korakOmogoča izvajanje programa korak po korak

– Omogoča vpogled v podatke (spremenljivke) programa

– Omogoča zagon programa in ustavitev na t.i. prekinitvenih točkah, …

17.10.2008

10

Orodja za izdelavo programov

• Diagnostična orodja (profilers)– Se uporablja za odkrivanje ozkih grl ob izvajanju programa

• Druga pomožna orodja za:g p j– Dostop do baze podatkov– Generiranje poročil– Izdelavo sistema pomoči

• Vsa ta različna orodja se danes združujejo v RAD programska okolja