Programske petlje i potprogrami – Microsoft Small Basic 3.dio

gordana_sokol

Gordana Skol

slika3.1Dosad smo rješavali jednostavne probleme u kojima se svaki dio ponavljao samo jednom ili nijednom, ovisno o postavljenom uvjetu. No, u rješavanju programskih problema često je više puta potrebno ponoviti neki dio programa, odnosno slijed naredbi. Upisivanje slijeda naredbi koje se ponavljaju ponekad je vrlo dosadan i mukotrpan posao. Možemo ga olakšati upotrijebimo li naredbe koje omogućavaju ponavljanje slijeda naredbi određeni broj puta ili do ispunjenja zadanog uvjeta. Ovakve naredbe pronalazimo u svim programskim jezicima, a nazivamo ih petlje.

U Small Basicu ćemo vas upoznati s dvije petlje, naredbom For…EndFor i naredbom While…EndWhile.

For petlja

For petlju ćemo koristiti kada unaprijed znamo koliko puta treba izvršiti odgovarajući dio programa. Primjerice, ukoliko želimo ispisati prvih dvadeset prirodnih brojeva, napisat ćemo:

For i = 1 To 20
     TextWindow.WriteLine(i)
EndFor

slika3.2U petlji koristimo varijablu “i” kojoj dodjeljujemo početnu i završnu vrijednost. Prolaskom kroz petlju računalo će povećati vrijednost zadane varijable i izvršiti naredbe koje se nalaze između ključnih riječi For i EndFor. U našem slučaju računalo će ispisati redom brojeve od 1 do 20.

 
Primjer programa s For petljom

U mnogim slučajevima vrijednost varijable neće rasti uvijek za jedan. Primjerice, kod ispisivanja samo neparnih brojeva, vrijednost varijable “i” će se povećavati za 2. Kako bismo to postigli, For petlji treba dodati jedan dodatak, takozvani korak petlje. Korak petlje dodajemo na sljedeći način:

For i = 1 To 20 step 2
     TextWindow.WriteLine(i)
EndFor

Pomoću koraka petlje, ključna riječ Step, možemo odrediti bilo koje povećanje pa čak i negativno. Negativno ćemo povećanje (primjerice, od -1) upotrijebiti u zadacima kad želimo da računalo broji unatrag – recimo pri ispisivanju brojeva od najvećeg do najmanjeg.slika3.3

For i = 20 To 1 Step –1
     TextWindow.WriteLine(i)
EndFor

Primjer zadatka u kojemu se vrijednost varijable
u For petlji povećava za 2 i smanjuje za 1

While petlja

While petlju ćemo koristiti kada unaprijed nećemo znati koliko puta se treba izvršiti neka naredba ili niz naredbi. Ova će petlja izvršavati sve navedene nslika3.4aredbe dok je postavljeni uvjet istinit, odnosno završiti izvođenje naredbi i predati kontrolu sljedećoj naredbi kada postavljeni uvjet postane lažan. Važno je napomenuti da treba osigurati da uvjet postavljen unutar petlje jednom mora postati lažan kako se ne bismo našli unutar tzv. beskonačne petlje.

Zadatak koji se izvodi beskonačno

Pogledajmo jednostavan primjer While petlje:

broj = 150
While (broj > 1)
         TextWindow.WriteLine(broj)
         broj = broj / 2
EndWhile

slika3.5Program dijeli zadani broj s brojem 2 te ispisuje rezultat dijeljenja sve dok je rezultat veći od 1. Kao što vidimo iz primjera, postavljeni uvjet ispituje se na početku petlje i, ukoliko je uvjet istinit, izvršavaju se naredbe koje se nalaze između ključnih riječi While i EndWhile.

Pomoću ove dvije petlje riješit ćemo mnoge matematičke, ali i druge zadatke poput određivanja djelitelja broja.

Grafički prikaz While petlje

Još neke primjere u kojima se upotrebljavaju For i While petlja potražite među primjerima (Primjer 3.1. do Primjer 3.8.).

Primjer 3.1. (.sb / .exe)
Primjer 3.2. (.sb / .exe)
Primjer 3.3. (.sb / .exe)
Primjer 3.4. (.sb / .exe)
Primjer 3.5. (.sb / .exe)
Primjer 3.6. (.sb / .exe)
Primjer 3.7. (.sb / .exe)
Primjer 3.8. (.sb / .exe)

Rad s potprogramima

Jedan od vrlo čestih načina rješavanja programskih problema, posebno onih kompliciranijih u kojima je potrebno više puta ponoviti isti niz naredbi, je dijeljenje problema na manje i jednostavnije probleme. Na ovaj način lakše ćemo riješiti vrlo složene probleme, izbjeći nepotrebna ponavljanja pisanja istih nizova naredbi, a naši programi će biti pregledni i razumljivi. Programi će biti pogodniji za daljnje uređivanje, testiranje i, ukoliko je potrebno, popravljanje.
Ove male i jednostavnije programe koji se upotrebljavaju u gotovo svim programskim jezicima nazivamo potprogramima.

Potprogram je dio programskog koda koji se nalazi unutar većeg programa, a obično izvršava neku specifičnu zadaću i može se pozvati iz bilo kojeg dijela programa. U Small Basicu potprogram dolazi između ključnih riječi Sub i EndSub. Iza ključne riječi Sub dolazi naziv potprograma i pomoću naziva NazivPotprograma() pozivamo potprogram na izvršenje unutar glavnog programa. Napomenut ćemo da su zagrade „()“ potrebne kako bi računalo znalo da želimo izvršiti program.

slika3.6

 

Na slici pogledajte primjer programa u kojemu se koristi potprogram koji nam daje trenutno sistemsko vrijeme iskazano u obliku 19:34:45 (odnosno sat:minuta:sekunda).

 
Primjer upotrebe potprograma za
ispisivanje sistemskog vremena

Pomoću ove naredbe ispisat ćemo vrijeme. Kako svaki potprogram započinjemo ključnom riječju Sub iza koje slijedi naziv potprograma dok potprogram završavamo ključnom riječju EndSub, naš potprogram će izgledati ovako:

Sub PrintTime
       TextWindow.Write(Clock.Time)
EndSub

Kako bismo potprogram pozvali na izvršenje unutar programa, dovoljno je napisati PrintTime(). U našem programu to izgleda ovako:

TextWindow.Write(“Sada je točno: “)
PrintTime()
TextWindow.WriteLine(” sati.”)

Potprograme ćemo ponekad morati pozivati i unutar petlji. U tim slučajevima izvršavat će se isti niz naredbi, ali s drukčijim vrijednostima u jednoj ili više varijabli. Primjerice, neka potprogram pod nazivom ProvjeriPrim provjerava i utvrđuje je li zadani broj prost. Ako napišemo program koji korisniku omogućuje unos broja, pomoću tog potprograma možemo utvrditi je li uneseni broj prosti broj. Potprogram ProvjeriPrim prihvaća vrijednost varijable broj i pokušava je podijeliti s manjim brojevima. Ako nakon dijeljenja vrijednosti slika3.7varijable broj s nekim brojem nema ostatka, vrijednost varijable broj nije prosti broj. Tada potprogram varijabli jePrim dodjeljuje vrijednost “False“, laž, i završava izvođenje. Ako broj nije djeljiv niti s jednim manjim brojem, vrijednost varijable jePrim ostaje “True“, istina, što znači da je broj prost.

Jeste li upisali prim broj ili ne?

Rješenje ovog i mnoštva drugih primjera u kojima su upotrijebljeni potprogrami potražite među našim primjerima.

Primjer 3.9. (.sb / .exe)
Primjer 3.10. (.sb / .exe)
Primjer 3.11. (.sb / .exe)
Primjer 3.12. (.sb / .exe)
Primjer 3.13. (.sb / .exe)
Primjer 3.14. (.sb / .exe)
Primjer 3.15. (.sb / .exe)

slika3.8Na kraju ćemo napomenuti da varijablama koje upotrebljavamo unutar programa možemo pristupiti i koristiti ih i u programu i u potprogramima. Primjerice, ukoliko unutar jednog programa u više navrata moramo pronaći veći od dva broja, za njihovo uspoređivanje upotrijebit ćemo potprogram u kojemu ćemo koristiti iste varijable. Primjer takvog programa pogledajte na slici.

Program za uspoređivanje brojeva s primjerom izlaznog rezultata. Uočite da se varijabla max koristi i unutar i izvan potprograma.

Oglasi

O autoru Pogled kroz prozor

Digitalni časopis za obrazovne stručnjake, pišu ga učitelji i nastavnici.
Ovaj unos je objavljen u Programiranje i označen sa , , . Bookmarkirajte stalnu vezu.