Transcript Algoritem

Algoritem Algoritem je z nizom navodil podan postopek za reševanje nekega problema. Biti mora nedvoumen, ustavljiv in zapisan z elementarnimi navodili.

Strategija reševanja problemov Zanjo je značilno:

učenec uporablja računalnik kot sredstvo za reševanje problemov

učenca vodi v spoznavanje in reševanje ne le šolskih, ampak tudi zahtevnejših problemov

Strategija reševanja problemov

1. faza DEFINIRANJE PROBLEMA 2. faza ZBIRANJE IN UREJANJE INFORMACIJ 3. faza ISKANJE SOODVISNOSTI, SKLEPANJE 4. faza PREVERJANJE SKLEPOV OZ.

PRAVILNOSTI REŠITVE

Strategija reševanja problemov

KONČNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV DELNA REŠITEV INFORMACIJE INFORMACIJE INFORMACIJE INFORMACIJE INFORMACIJE INFORMACIJE

Testiranje

• • •

groba ocena rezultata kontradikcija povratna metoda

Pristopi k reševanju problemov

• • • •

strukturirano ali sistematično programiranje (problem razdelimo na manjše brobleme) interaktivno programiranje (srečamo na velikh računalnikih, programer ne obdela celega postopka reševanja problema, ga le nadgradi) modularno programiranje ( delitev programskih funkcij oz. logične programske strukture na module) načrtovanje z vrha navzdol (razvilo se je iz modularnega programiranja)

Načrtovanje z vrha navzdol

GLAVNI PROGRAM VHODNI POSTOPKI VODEČI POSTOPKI IZHODNI POSTOPKI MODUL 1 MODUL 2 MODUL 3

Strukturirano programiranje

Omogoča nam čitljivost in razumljivost programa.

Razmišljanje postane sistematičen proces.

Globalno razmišljanje o problemu Prve možne odločitve (moduli) Prve bolj določene odločitve in popravki Končne odločitve

Strukture programov

Strogo drevesna struktura Drevesna struktura s prekrivanjem

Delitev problemov

• • -

odprti problemi: realni problemi več rešitev od okolja odvisno, kateri način bo izbran zaprti oz. formalni problemi v bistvu šolski problemi samo ena rešitev zgrajeni predvsem za šolsko delo

Zaprti problem

Primer algoritma za zaprti problem: procedure kvadrat; var x:integer; kv:integer; begin write('Vpiši x: '); readln(x); kv:=x*x; write('Kvadrat št. ',x,' je število ',kv:10:0,'.'); readln; end;

Odprti problem

Primer algoritma za odprti problem Procedure sortiranje(a:array); var k:integer; x:integer; begin for i:=1 to n-1 do begin k:=i; x:=a[i]; for j:=i+1 to n do if a[j]

Grafična predstavitev algoritmov

• • •

diagram poteka Nassi-Schneidermanov diagram miselni vzorec

Osnovni stavki

• • •

zanke pogojni stavki prireditve

Zanke - Repeat

Diagram poteka Nassi-Scnhneiderman Miselni vzorec ...

i>10 NE DA S1 S2 S3 REPEAT UNTIL I<10 A Začetek B Ime programa Konec

Zanke - While

Diagram poteka Nassi-Scnhneiderman Miselni vzorec i>10 NE ...

DA S1 S2 S3 REPEAT UNTIL I<10 B A Začetek Ime programa Konec

Pogojni stavki - If

Diagram poteka Nassi-Scnhneiderman Miselni vzorec i>10 DA NE True S1 i<10 S2 False A Začetek B C Ime programa Konec

Pogojni stavki - Case

Diagram poteka Nassi-Scnhneiderman Miselni vzorec Case stavka se z diagramom poteka ne da narisati S1 1 S2 2 A S3 3 C B A D Začetek Ime programa Konec

Prireditveni stavki

Diagram poteka Nassi-Scnhneiderman Miselni vzorec A=1 A=1 A=1

Diagram poteka

(kvadrat števila) ZAČETEK X KV := X*X KV KONEC

Diagram poteka

(navadno sortiranje) ZAČETEK A k:=i x:=A[i] i<=n-1 i=1...(n-1) j=1...n

j<=n A[j]

Nassi-Schneidermanovi diagrami

• • • •

So ugodni iz naslednjih razlogov: po strukturi so najbližji Pascalu ne ohrabrujejo uporabe stavka GO TO grafično prikazujeju strukturo programov so zelo blizu človeškemu dojemanju

Nassi-Schneidermanov diagram

(kvadrat števila) PREBERI X Kv=X*X IZPIŠI Kv

Nassi-Schneidermanov diagram

(navadno sortirnje) PREBERI A I=1 WHILE I

Miselni vzorci

• • • • • •

je zapis ključnih besed osrednja misel v središču pomembnejše misli bliže središču, manj pomembne ob robu usklajen z našim načinom mišljenja za dodatno poudarjenost določene stvari podčrtamo, obkrožimo ali uporabimo barve misli povežemo s puščicami, ki nakazujejo medsebojne povezave

Miselni vzorec

(kvadrat števila) Izpiši Kv Kv:=X*X Konec Preberi X KVADRAT ŠTEVILA Začetek

Miselni vzorec

(navadno sortiranje) Konec ponavljanja Konec ponavljanja Ponavljaj od 1 do (n-1) Ni še ponovil dovoljkrat k:=i x:=A[ i ] Ponavljaj od i+1 do n Ni še ponovil dovoljkrat k:=j x:=A[ j ] Preberi A NAVADNO SORTIRANJE Začetek A[k]:=A[ i ] A[ i ]:=x Izpiši A Konec

Delitev jezikov po generacijah

• • • •

strojni jezik assembler, macro assembler programski jeziki namenski jeziki

(Mathematica, Derive, SQL)

Pascal-Borland Lisp Modula2 Ada Logo Cobol Visual Basic Script Java Script Unix Shell DOS C++ SmallTalk Basic Object Pascal C Pascal Visual Basic PL/1 Java Eiffel Delphi Visual C++ Prolog

Zanimivi naslovi

Seznam jezikov: http://home.nvg.ntnu.no/~sk/lang/lang.html

Seznam programskih jezikov: http://public.logica.com/~stepneys/cyc/p/prog.htm

Delitev jezikov: http://www.cs.cmu.edu/~mleone/language/overviews.html

Primerjave in kritike med OO jeziki: http://www.eiffel.com/doc/manuals/technology/oo_comparison/

Objektno orientirano programiranje

Namen: pakirati skupaj podatke (atribute) in procedure (metode)

Objekt: skupina postopkov in podatkov

Značilnost OOP: tipe se da hierarhično organizirati

Objektno orientirano programiranje

Dobre lastnosti izhajajo iz delitve na module:

večja preglednost

lažje vzdrževanje

ponovna raba že narejenih delov

kompleksnost

Algoritmi v objektno orientiranem programiranju

• • •

Zapisati se jih da z: diagramom poteka (ni najprimernejši) strukturiranim jezikom psevdokodo

Reševanje problemov v objektno orientiranem programiranju

• • • • • • •

Podobno, kot smo obravnavali prej: (analiza zahtev) analiza načrtovanje implementacija testiranje vzdrževanje (prototipiranje?)

Načrtovanje programa v objektno orientiranem programiranju

V uporabi so UML razredni diagrami: Članek v reviji COTL

http://lisa.uni-mb.si/cot/cotl/99pomlad/index.shtml

Načrtovanje programa v objektno orientiranem programiranju

a) objektni model Vsebuje identifikacijo objektov (imena, atributi, metode) in povezave med njimi.

PRIMER: - atributi - metode

Načrtovanje programa v objektno orientiranem programiranju

a) objektni model

- povezave med objekti

Načrtovanje programa v objektno orientiranem programiranju

b) diagram prehajanja stanj za vsak objekt

končni avtomat

slika

PRIMER: Končni avtomat, ki sprejema realne številke

d B d .

d + d S A H .

.

d G

Načrtovanje programa v objektno orientiranem programiranju

c) diagram toka podatkov v njem opišemo procese Nato lahko rešitev problema zapišemo z algoritmom v obliki:

pseudokode

strukturiranega jezika

diagrama poteka

Načrtovanje programa v objektno orientiranem programiranju

c) diagram toka podatkov

PRIMER: Povezave med razredi iz navedenega primera Definirajmo razrede s pseudkodo:

Objekt Razred = Ime : Niz {Ime razreda} Število_učencev : Število {Število učencev v razredu} Razrednik : Niz; {Ime in priimek razrednika} Prij : Razred; {S katerim razredom so si v dobrem odnosu} RazredA, RazredB, RazredC, RazredD so tipa Razred; RazredA.Ime='4.a' RazredB.Ime='4.b' RazredC.Ime='4.c' RazredD.Ime='4.d;'

Načrtovanje programa v objektno orientiranem programiranju

c) diagram toka podatkov

PRIMER: Povezave med razredi iz navedenega primera Zapišimo del programa s pseudokodo:

Če RazredD.Prij=RazredB Potem RazredD.Prij=RazredA; Drugače RazredD.Prij=Null; Klici;

Načrtovanje programa v objektno orientiranem programiranju

c) diagram toka podatkov

PRIMER: Povezave med razredi iz navedenega primera Narišimo še z diagramom poteka:

RazredD.Prij=Razre dA T RUE RazredD.Prij= RazredB FALSE RazredD.Prij=Null Klici

VAJA

Narišite diagram prehajanja stanj na semaforju!

Z

z pr

Stanja: U - utripa rumena (semaforji izključeni) R - gori rdeča RU - gori rumena Z - gori zelena UZ - utripa zelena U Ru UZ

r i pz

R Prehodi: z - iz utripajoče rumene se prižge zelena r - iz utripajoče rumene se prižge rdeča pr - prej je gorela rdeča pz - prej je gorela zelena i - izklop semaforjev