Osnovni napotki za izdelavo domačih nalog

Napotki za izdelavo domačih Napotki
za izdelavo domačih
nalogg
Besedilo naloge
Besedilo naloge
Izdelajte postopek, ki bo izračunal in izpisal j p
p
p
koliko pločevink pijače lahko kupite, če imate na razpolago določen znesek denarja in če je
na razpolago določen znesek denarja in če je znana cena ene pločevinke. Znesek denarja in ceno pločevinke preberemo preko tipkovnice
ceno pločevinke preberemo preko tipkovnice. V primeru napačnih vhodnih podatkov naj se izpiše obvestilo o napaki.
Analiza problema
Analiza problema
• Prvi faza reševanja problema je analiza. g
j p
Ugotoviti moramo kaj sploh moramo narediti, kaj so vhodni podatki in kaj bo rezultat ‐ skoraj vsi računalniki problemi so oblike:
vsi računalniki problemi so oblike: zajemi vhode ‐ izvedi obdelavo ‐ prikaži izhode (rezultate)
Vhodi
Obdelava
Izhodi
Analiza
• Kaj je problem?
p
Izračun števila pločevink
• Kaj so vhodi?
Znesek denarja cena pločevinke
Znesek denarja, cena pločevinke
• Kaj so izhodi?
Izračunano število pločevink
Z analizo določimo KAJ naj naredi program ne pa kako.
Analiza
• Del analize je tudi, da poiščemo vse j
p
g
informacije, ki so potrebne za rešitev naloge
– Kakšna je formula za izračun števila pločevink?
Polovice pločevinke ne moremo kupiti=>potrebno
Polovice pločevinke ne moremo kupiti
>potrebno je določiti kolikokrat gre cena pločevinke v celoti v razpoložljivi znesek denarja
razpoložljivi znesek denarja
N = Znesek/Cena brez decimalk – Kako porežemo decimalke? K k
ž
d i lk ?
V večini programskih jezikov obstaja funkcija floor
N = floor(Znesek/Cena) Analiza
• Del analize je tudi, da poiščemo vse j
p
g
informacije, ki so potrebne za rešitev naloge
– Na kaj moramo paziti?
Vhodni podatki morajo biti pravilni. Kaj to
Vhodni podatki morajo biti pravilni. Kaj to pomeni? Cena mora biti večja od nič, razpoložljivi znesek pa večji ali enak nič.
znesek pa večji ali enak nič.
Cena > 0 Znesek >= 0
Znesek >
0
Analiza
• Za lažjo prestavo, lahko v analizo vključimo jp
p
tudi nekaj primerov vhodnih parametrov in pričakovanih rezultatov na izhodu. Poleg normalnih primerov, vključimo še primerov vključimo še "robne"
robne "normalnih"
primere.
• Te primere lahko kasneje uporabimo, da l hk k
b
preverimo pravilnost delovanja programa.
Razgradnja problema
Razgradnja problema
• Č
Če gre za kompleksnejše probleme si problem k
l k jš
bl
i
bl
razdelimo na manjše dele in skušamo analizirati ter poiskati rešitev za vsak podproblem posebej.
• V našem primeru razgradnja na podprobleme ,
j p
ni smiselna, ker je problem enostaven in ne zahteva kompleksnejše rešitve.
• Kasneje bomo uvedli pojem podprogramov, Kasneje bomo uvedli pojem podprogramov
kjer bomo reševanje problema dejansko razdelili na manjše bloke
razdelili na manjše bloke.
Načrt rešitve problema
Načrt rešitve problema
• Načrt rešitve opiše rešitev problema na način, č
ši
iš
ši
bl
či
ki omogoča prevedbo v programsko kodo. Z njim nakažemo KAKO se reši problem.
• Načrt rešitve problema lahko podamo na p
p
različne načine: z diagramom poteka, s p
psevdokodo, (pri predmetu Napredno , (p p
p
programiranje) z razrednimi diagrami, (pri predmetu Podatkovne baze) z entitetno‐
predmetu Podatkovne baze) z entitetno
relacijskimi diagrami, …
Načrt rešitve problema ‐ diagram poteka
• Diagram poteka predstavi rešitev problema na i
k
d
i ši
bl
grafičen način
• Prednosti: – Bolj nazoren (vizualen) prikaz postopka
– V njem lahko opišemo nekatere programske konstrukte, ki ji v psevdokodu težko predstavimo
• Slabosti
– Pri večjem številu operacij postane nepregleden
– Težje ga je neposredno preslikati v programsko kodo
– Opišemo lahko operacije, ki niso strukturirane (se ne držijo načel "lepega" programiranja)
Načrt rešitve problema ‐ diagram poteka
• Č
Čeprav za izdelavo diagramov poteka obstajajo p
j j
j j j
splošno uveljavljeni standardi, le‐ti vključujejo določene oznake, ki niso primerni za sodobne računalniške arhitekture (npr luknjan trak
računalniške arhitekture (npr. luknjan trak, magnetni disk, …). Zato bomo mi uporabljali samo omejen nabor simbolov
samo omejen nabor simbolov. Obdelava
Izbira
Branje in
izpis
Začetek ali
konec postopka
Potek izvajanja
Komentar
Načrt rešitve problema ‐ diagram poteka
Start
1. Branje cene pločevinke
1.
Branje cene pločevinke
in razpoložljivega zneska
denarja
2a. Kontrola cene pločevinke
2b. Kontrola razpoložljivega zneska 3. Izračun števila
pločevink
4. Izpis izračunane
vrednosti
read Cena
read Znesek
Cena>0
?
Yes
Znesek≥0
?
Yes
No
No
N = ⎣Znesek/cena⎦
print N
End
print
"Napaka"
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
• Presvdokod
d k d predstavlja tekstovni opis rešitve d
lj
k
i i ši
problema na bolj ali manj formalni način
• Prednosti: – Je običajno bližje programskim elementom višjih Je običajno bližje programskim elementom višjih
programskih jezikov ‐ zato ga lahko lažje prevedemo v programsko kodo
– Na enostaven način podpira strukturno programiranje
• Slabosti
– Je manj nazoren kot diagram poteka
Je manj nazoren kot diagram poteka
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
• Obstajajo različne variante psevdokoda
b j j
lič
i
d k d
– Neformalno: Seznam zaporedja korakov, ki smo ga vključili v analizo problema je najbolj enostaven psevdokod ‐ ni ga enostavno pretvoriti v programsko kodo
k k d
– Formalno: V psevdokodu uporabimo konstrukte programskih jezikov (if‐then, while, …)
kih j ik (if th
hil
)
• Za domače naloge bomo seznam zaporedja stavkov iz razgradnje problema uporabili kot komentarje v psevdokodi oz. diagramu poteka
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
• Elementi psevdokoda
– Prireditveni stavek
set spremenljivka = izraz
– Vhodni stavek
Vhodni stavek
read spremenljivka
– Izhodni stavek
print spremenljivka
p
p
j
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
• Elementi psevdokoda
– Odločitveni stavki
if pogoj then
stavek
stavek
…
end if
if pogoj then
stavek
stavek
…
else
stavek
stavek
…
end if
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
• Elementi psevdokoda
– Ponovitveni stavki
for števec=spodnja_meja to zgornja_meja step korak do
stavek
stavek
…
end for
while logični_pogoj do
stavek
stavek
…
end while
do
stavek
…
while logični_pogoj
Načrt rešitve problema psevdokod
Načrt rešitve problema ‐
// 1. Branje cene pločevinke in razpoložljivega zneska denarja
read Cena, Znesek
// 2a Kontrola cene pločevinke (Cena>0)
// 2a. Kontrola cene pločevinke (Cena>0)
if Cena<=0 then
print "Napačna cena"
// b
// 2b. Kontrola razpoložljivega zneska (Znesek>=0)
l
l žl
k (
k
)
elseif Znesek<0 then
print "Napačen znesek" else
//Izračun števila pločevink
set N = floor(Znesek/Cena) (
/
)
// Izpis izračunane vrednosti števila pločevink
print N
end if
Načrt rešitve problema ‐ psevdokod v slovenščini
• Namesto angleških besed, lahko uporabimo tudi l ških b d l hk
bi
di
slovenske izraze ‐ seveda jih moramo v programu pretvoriti v angleške
t iti
l šk
• Elementi psevdokoda
– Prireditveni stavek
postavi spremenljivka na izraz
– Vhodni stavek
prečitaj spremenljivka
– Izhodni stavek
izpiši spremenljivka
Načrt rešitve problema ‐ psevdokod v slovenščini
• Elementi psevdokoda
– Odločitveni stavki
če je(ni) pogoj potem
stavek
stavek
…
konec če
konec če
če je(ni) pogoj potem
stavek
stavek
…
sicer
stavek
stavek
…
konec če
Načrt rešitve problema ‐ psevdokod v slovenščini
• Elementi psevdokoda
– Ponovitveni stavki
ponavljaj za števec od spodnja_meja do zgornja_meja s korakom korak
stavek
stavek
…
konec ponavljaj
dokler je(ni) logični_pogoj ponavljaj
stavek
stavek
…
konec ponavljaj
konec ponavljaj
ponavljaj
stavek
stavek
…
dokler je(ni) logični pogoj
dokler je(ni) logični_pogoj
Načrt rešitve problema ‐ psevdokod v slovenščini
// 1. Branje cene pločevinke in razpoložljivega zneska denarja
prečitaj Cena, Znesek
// 2a Kontrola cene pločevinke (Cena>0)
// 2a. Kontrola cene pločevinke (Cena>0)
če Cena<=0 potem
izpiši "Napačna cena"
// b
// 2b. Kontrola razpoložljivega zneska (Znesek>=0)
l
l žl
k (
k
)
sicer, če Znesek<0 potem
izpiši "Napačen znesek" sicer
//Izračun števila pločevink
postavi N na floor(Znesek/Cena) p
(
/
)
// Izpis izračunane vrednosti števila pločevink
izpiši N
konec če
konec če