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