1 / 19

zima 2009/10

Programiranje I. zima 2009/10. Metodi. Ideja: složen zadatak podeliti u više jednostavnijih zadataka Dva strane svakog metoda Definisanje (pisanje) metoda Pozivanje (izvršavanje) metoda Kako organizovati program sa metodima?. Metodi. Primer: da li je rečenica palindrom? radar

teneil
Download Presentation

zima 2009/10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programiranje I zima 2009/10

  2. Metodi • Ideja: složen zadatak podeliti u više jednostavnijih zadataka • Dva strane svakog metoda • Definisanje (pisanje) metoda • Pozivanje (izvršavanje) metoda • Kako organizovati program sa metodima? Programiranje I

  3. Metodi • Primer: da li je rečenica palindrom? • radar • aroma sa mora • sir ima miris • Ana voli Milovana • E sine, ženi se! Programiranje I

  4. Lokalne i globalne promenljive • Promenljive (polja) se mogu definisati van metoda u klasama • Oblast važenja imena: deo teksta programa u kojem se može koristiti definisano ime • Pravilo: ime (identifikator) važi u bloku u kome je definisano Programski jezici

  5. Lokalne i globalne promenljive • Primer: publicclass IgraSaKartama { String pobednik; // globalna promenljiva (polje) ... void odigrajIgru() { String igrač; // lokalna promenljiva // Ostale naredbe metoda ... } ... } Programski jezici

  6. Lokalne i globalne promenljive • Primer: for (int i = 0; i < n; i++) { // Telo petlje . . . } if (i == n) // GREŠKA: ovde ne važi ime i System.out.println("Završene sve iteracije"); Programski jezici

  7. Lokalne i globalne promenljive • Primer: void neispravanMetod(int n) { int x; while (n > 0) { int x; // GREŠKA: ime x je već definisano ... } } Programski jezici

  8. Dužina trajanja promenljivih • “Životni vek” promenljivih • Alociranje (rezervisanje) promenljive • kada se izvrši naredba definicije promenljive • Dealociranje (uklanjanje) promenljive • lokalne promenljive: kada se poziv metoda završi • parametri metoda: kada se poziv metoda završi • globalne promenljive : postoje sve vreme Programski jezici

  9. Dužina trajanja promenljivih • Primer: publicclass Test { int x = 0; publicstaticvoid main(String[] args) { int y = 0; dodaj1(y); System.out.println(“x= ” + x + “ y= ” + y); } publicstaticvoid dodaj1(int n) { n = n + 1; x = x + 1; } } Programski jezici

  10. Metodi • Primer: igra pogađanja broja sa ograničenjem Pogodite broj> 50 Zamislio sam manji broj Pogodite broj> 25 Zamislio sam veći broj Pogodite broj> 44 Bravo, pogodili ste broj Želite li da ponovo igrate (d/n)? n Pogodili ste jedanput Do viđenja ... Programiranje I

  11. Rekurzivni metodi • Da li metod može da poziva sam sebe? • Da ─ rekurzivan metod • Primer: izračunavanje stepena xn, x realan broj i n ceo broj • Gotovo rešenje: Math.pow(x,n) Programiranje I

  12. Rekurzivni metodi • Iterativno rešenje za xn : double stepen(double x, int n) { double y = 1; for (int i = 0; i < n; i++) y = y * x; return y; } Programiranje I

  13. Rekurzivni metodi • Rekurzivno rešenje za xn : double stepen(double x, int n) { if (n == 0) return 1; else return x * stepen(x, n-1); } Programiranje I

  14. Rekurzivni metodi • Mehanizam pozivanja rekurzivnih metoda se ne razlikuje od standardnog načina za pozivanje običnih metoda: • argumenti u pozivu metoda se dodeljuju parametrima metoda kao početne vrednosti • izvršava se telo pozvanog metoda Programiranje I

  15. Rekurzivni metodi • Lanac rekurzivnih poziva istog metoda • Primer: stepen(1.5,3) Programiranje I

  16. Rekurzivni metodi • Rekurzivno rešavanje problema: svođenje na sličan prostiji problem • Odogovor na pitanje: kako rešiti polazni problem ukoliko je poznato rešenje za sličan prostiji problem (ili više njih) • Rekurzivno rešenje • bazni slučaj • opšti slučaj Programiranje I

  17. Rekurzivni metodi • Fibonačijev niz brojeva 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... • Primer: izračunavanje n-tog člana Fibonačijevog niza brojeva n=6: fib(6) → 8 n=11: fib(11) → 89 n=23: fib(23) → 28657 Programiranje I

  18. Rekurzivni metodi • Iterativno rešenje: int fib(int n) { int x = 1, y = 1, z = 1; for (int i = 3; i <= n; i++) { z = x + y; x = y; y = z; } return z; } Programiranje I

  19. Rekurzivni metodi • Rekurzivno rešenje: int fib(int n) { if (n <= 2) // bazni slučaj return 1; else // opšti slučaj return fib(n-1) + fib(n-2); } Programiranje I

More Related