Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE
METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta u programu Većina programskih zadataka može se podijeliti u više manjih pod-zadataka Rješavanje programskog zadatka olakšano je smanjivanjem složenosti
METODE doprinose: čitljivosti programa lakšem opetovanom izvršavanju istog koda lakšem korištenju koda od strane drugih autora bržem testiranju i ispravljanju pogrešaka IME metode: IME metode: jasno opisuje njenu funkciju je jedna riječ (bez razmaka i specijalnih znakova) ne smije započinjati brojem
DEFINICIJA METODE static void NoviRed() ZAGLAVLJE Console.WriteLine( ); TIJELO POZIVANJE METODE static void Main() Console.WriteLine( Prva recenica. ); NoviRed(); NoviRed(); NoviRed(); Console.WriteLine( Druga recenica. ); Prva recenica. IZGLED ZASLONA Druga recenica.
METODE sa više parametara Kod metoda s parametara potrebno je deklarirati tip svakog argumenta u zaglavlju metode static void IspisiVrijeme(int sat, int minuta) Console.Write(sat); Console.Write( : ); Console.WriteLine(minuta); Parametri mogu biti različitog tipa i odvajaju se zarezom (za svaki parametar potrebno je navesti i tip)
METODA može pozvati drugu metodu: static void NoviRed() Console.WriteLine( ); static void TriReda() NoviRed(); NoviRed(); NoviRed(); Istu metodu moguće je pozivati više puta za redom Jedna metoda može pozivati drugu metodu static void Main() Console.WriteLine( Prva recenica. ); TriReda(); Console.WriteLine( Druga recenica. ); Izvršavanja programa uvijek započinje u metodi Main Metoda Main poziva metodu TriReda koja poziva metodu NoviRed
REDOSLIJED definicija metoda u programu ne utječe na izvođenje programa PROGRAME nije dobro čitati odozgo prema dole, već treba pratiti tijek izvršavanja koji započinje u metodi Main ČINJENICU da jedna metoda može pozvati drugu, treba uvijek imati na umu jer se izvođenjem npr. metode TriReda prelazi u metodu NoviRed koja dalje poziva metodu WriteLine, itd... NAKON što cijeli niz poziva iz metode TriReda završi, program nastavlja izvršavanje u Main metodi na mjestu gdje je stao
ARGUMENT metode je podatak koji se predaje metodi prilikom njenog pozivanja PARAMETAR metode je varijabla metode koja prima argument ARGUMENT I PARAMETAR moraju biti istog tipa LISTA ARGUMENATA (više argumenata) proslijeđuje se LISTI PARMETARA (više varijabli metode) pri pozivanju metode
DEFINICIJA METODE I PARAMETRA static void IspisiDvaput(string poruka) Console.WriteLine(poruka); Console.WriteLine(poruka); Ova metoda ima jedan parametar tipa string koji je proizvoljno nazvan poruka POZIVANJE METODE I POSTAVLJANJE ARGUMENTA static void Main() IspisiDvaput( Ispisi me samo jednom );
PROSLJEĐIVANJE ARGUMENATA pri pozivanju metode općenito se može izvesti na dva načina: PROSLJEĐIVANJE VRIJEDNOSTI JEDNOSTRANA KOMUNIKACIJA (glavni program-metoda) glavni program prosljeđuje podatke metodi, ali glavni program ne vidi promjene nad tim podatkom PROSLJEĐIVANJE REFERENCE OBOSTRANA KOMUNIKACIJA (glavni program-metoda) glavni program prosljeđuje podatke metodi, sve promjene koje metoda napravi nad podatkom vidljive su i u glavnom programu Kada koristimo varijable kao argumente pri pozivanju metoda C# koristi JEDNOSTRANU KOMUNIKACIJU glavni program-metodametoda
METODE SA REZULTATOM vraćaju vrijednosti Njih se može koristiti u izrazima kao varijable i ostale vrijednosti static double Povrsina(double r) double p = r * r * Math.PI; return p; Primjer poziva metode Povrsina: Console.WriteLine(Povrsina(10.0)); double r = 5.0; double a = Povrsina(r);
METODE S REZULTATOM moraju vrijednost vratiti s naredbom return double Kvadrat (double x) return x*x; Argument return naredbe mora biti istog tipa kao i tip metode u kojoj se return nalazi
METODE S REZULTATOM mogu imati više return naredbi u tijelu metode string Parnost (int broj) if (broj % 2 == 0) return paran ; else return neparan ; Operator % izračunava cjelobrojni ostatak dijeljenja dva cijela broja
METODE BEZ REZULTATA nemaju tip podatka kojeg vraćaju već se u zaglavlju definiraju kao void Metoda može prekinuti izvršavanje pozivanjem naredbe return koja u slučaju void metode nema argument void ispisi_korijen (double broj) void ispisi_korijen (double broj) if (broj < 0) return; Console.WriteLine( Math.Sqrt(broj));
LOKALNE VARIJABLE deklariraju se unutar metode i vidljive su jedino unutar metode PODRUČJE VIDLJIVOSTI VARIJABLI LOKALNE VARIJABLE moguće im je pristupiti unutar metode u kojoj su definirane GLOBALNE VARIJABLE - moguće im je pristupiti iz bilo kojeg dijela programa Varijable koje imaju isto područje vidljivosti moraju imati različita imena
GLOBALNE varijable dostupne su iz bilo kojeg dijela programa, nedostaci su: Mnoštvo globalnih varijabli čini vrlo složenim ispravljanje programa razumijevanje programa Ako metode koriste globalne varijable, tada je njihova prenosivost u druge programe znatno otežana
GLOBALNE KONSTANTE su nepromjenjive vrijednosti dostupne u cijelom programu s obzirom da ih program ne može promijeniti, puno su sigurnije za korištenje u takvu svrhu u odnosu na globalne varijable