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
© Copyright 2024