IT Računalniško programiranje

23
IT Računalniško programiranje Primeri algoritemskih programov (sortiranje, matrične operacije, geometrijske transformacije) Danijel Rebolj, FG

description

IT Računalniško programiranje. Primeri algoritemskih programov (sortiranje, matrične operacije, geometrijske transformacije) Danijel Rebolj, FG 2007/2008. Literatura. D. Knuth: The art of computer programming, Addison Wesley Volume 1 - Fundamental Algorithms - PowerPoint PPT Presentation

Transcript of IT Računalniško programiranje

Page 1: IT Računalniško programiranje

ITRačunalniško

programiranjePrimeri algoritemskih

programov (sortiranje, matrične operacije,

geometrijske transformacije)

Danijel Rebolj, FG 2007/2008

Page 2: IT Računalniško programiranje

Literatura

D. Knuth: The art of computer programming, Addison Wesley Volume 1 - Fundamental Algorithms Volume 2 - Seminumerical Algorithms Volume 3 - Sorting and Searching Volume 4 – 7 v pripravi

Page 3: IT Računalniško programiranje

Časovna zahtevnost

Podatek o tem, koliko časa se bo algoritem pri danih vhodnih podatkih izvajal, preden bo vrnil rešitev

Čas običajno merimo v osnovnih operacijah stroja

Časovno zahtevnost podamo kot funkcijo velikosti vhodnih podatkov (npr. velikost seznama)

Page 4: IT Računalniško programiranje

Časovna zahtevnost

O-notacija označuje red rasti problemaPrimeri (n-velikost vhoda, c-

konstanta):O (log n)O (n)O (n2)O (nc)O (cn)

Page 5: IT Računalniško programiranje

Primeri algoritemskih programovZaporedja (primer: Fibonaccijevo)Operacije z množicami točkRotacija kockeMatrične operacije Iskanje v seznamu (linearno,

binarno)Sortiranje (bubble sort, selektivno)

Page 7: IT Računalniško programiranje

Operacije z množicami točk

PremikSkaliranjeZrcaljenjeRotacijaKoordinatno oknoObseg poligona

Page 8: IT Računalniško programiranje

Geometrijske transformacije

premik

skaliranje

zrcaljenje

zasuk

tp'p

][Sp'p

z

y

x

s

s

s

00

00

00

][ zSp'p

][][][ zyx RRRp'p

cossin0

sincos0

001

cos0sin

010

sin0cos

100

0cossin

0sincos

Page 9: IT Računalniško programiranje

Rotacija kocke

UkazNastavi UkazRotiraj

DolociKocko

Izris

Rotiraj3D

Rotacija Odmor

RotacijaYIzracun projekcij

RotacijaX RotacijaZ

Page 10: IT Računalniško programiranje

Rotacija kocke

Private Type Tocka X As Double Y As Double Z As Double XP As Double YP As DoubleEnd TypePrivate Type Daljica p1 As Long p2 As LongEnd Type

Page 11: IT Računalniško programiranje

Rotacija kocke

Dim Ogl(8) As Tocka ‘OgliščaDim Rob(12) As Daljica ‘robovi kockeDim IndexOffset As Long ‘zamik indeksaDim Odmik As Single ‘odmikDim Ocisce As SingleDim KotRotacije As SingleDim IzrisObstaja As BooleanDim Rotiraj As BooleanDim Hitrost As Single

Page 12: IT Računalniško programiranje

Rotacija kocke

Sub Rotacija() If RotacijaX Then _ call RotirajKoordinateOkoliX_ (KotRotacije) If RotacijaY Then _ call RotirajKoordinateOkoliY_ (KotRotacije) If RotacijaZ Then _ call RotirajKoordinateOkoliZ_ (KotRotacije)End Sub

Page 13: IT Računalniško programiranje

Rotacija kocke

Sub RotirajKoordinateOkoliX(Kot As single) Dim i As Long, NovY As Single Dim NovZ As Single For i = 1 To 8 NovY = Ogl(i).Y * Cos(Kot) - _ Ogl(i).Z * Sin(Kot) NovZ = Ogl(i).Y * Sin(Kot) + _ Ogl(i).Z * Cos(Kot) Ogl(i).Y = NovY Ogl(i).Z = NovZ Next iEnd Sub

Page 14: IT Računalniško programiranje

Rotacija kocke

Sub IzracunajProjekcijeTock() Dim i As Long For i = 1 To 8 Ogl(i).XP = Ogl(i).X * Ocisce / _ (Ocisce + Ogl(i).Z) + Odmik Ogl(i).YP = Ogl(i).Y * Ocisce / _ (Ocisce + Ogl(i).Z) + Odmik Next iEnd Sub

Page 15: IT Računalniško programiranje

Matrične operacije

Osnova je dvojna zanka:FOR i = 1 TO n FOR j = 1 to m Matrika (i,j) = 0 NEXT jNEXT i

seštevanjemnoženje

Page 16: IT Računalniško programiranje

Množenje matrik

DIM M(iMmax,jMax),N(jMax,kMax),P(iMax,kMax)

FOR i = 1 TO iMax FOR k = 1 TO kMax P (i, k) = 0 FOR j = 1 to jMax P (i,k) = P (i,k) + M (i,j)*N(j,k) NEXT j NEXT kNEXT i

Page 17: IT Računalniško programiranje

Linearno iskanje v seznamu

Strategija:V neurejenem seznamu podatkov

preverimo vsak element ali ustreza iskanemu podatku

Iskanje se konča, ko je iskani element najden ALI ko se senam konča

Page 18: IT Računalniško programiranje

Binarno iskanje v seznamu

Zahteva urejen seznam elementovUporabno kadar mora biti iskanje

hitro in se pogosto ponavljaTemelji na primerjavi med

elementom v sredini seznama in iskano vrednostjo

Implementacija je mogoča tudi v rekurzivni obliki

Page 19: IT Računalniško programiranje

Sortiranje

Enostavno sortiranje ima časovno zahtevnost O (n2):

selektivno sortiranje, bubble sortManjša zahtevnost: QuickSort,

Merge,...Primerjava algoritmov Podroben prikaz delovanja

algoritma QuickSort

Page 20: IT Računalniško programiranje

Selektivno sortiranje

Poiščemo najmanjši element v seznamu in ga zamenjamo s prvim (v primeru, ko želimo naraščajoče vrednosti)

Postopek ponavljamo za preostali del seznama dokler ni celoten seznam urejen

Page 21: IT Računalniško programiranje

Selektivno sortiranjeSub SelektivniSort(n AS Long, seznam()) For i = 1 To n-1 smin = seznam(i): jmin = i For j = i + 1 To n If seznam(j) < smin Then smin = seznam(j): jmin = j endif Next j seznam(jmin) = seznam(i) seznam(i) = smin Next iEnd Sub

Page 22: IT Računalniško programiranje

Bubble sort

Elemente v seznamu primerjamo v parih in ju zamenjamo, če je naslednik manjši od predhodnika

Največji element se po enem prehodu seznama znajde na zadnjem mestu (kot mehurček)

Postopek ponavljamo za preostali del seznama dokler ni celoten seznam urejen

Page 23: IT Računalniško programiranje

Bubble sortSub BubbleSort(n AS Long, seznam()) FOR i = 0 TO iMax Prvi = Seznam(i) FOR j = i+1 TO iMax Drugi = Seznam (j) if Drugi < Prvi then Seznam(i) = Drugi Seznam(j) = Prvi Prvi = Drugi endif NEXT j NEXT IEnd Sub