Algoritmi i programiranje Metode Prof. dr. sc. Tonči Carić
Sadržaj Definicija metoda Argument i parametar Metode s više parametara Metode bez rezultata Metode s rezultatom Logičke metode Globalne i lokalne varijable Predavanja argumenata metodi Povratne vrijednosti metoda
Definicija metoda 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 Metoda predstavlja u primjeni crnu kutiju Poznat ulaz i izlaz te koji se problem/zadatak rješava Način rješavanja nije poznat ni bitan Rješavanje programskog zadatka olakšano je smanjivanjem složenosti
Definicija metoda METODE doprinose Čitljivosti programa Lakšem opetovanom izvršavanju istog kôda Lakšem korištenju kôda od strane drugih autora Bržem testiranju i ispravljanju pogrešaka IME metode Jasno opisuje njenu funkciju Jedna riječ (bez razmaka i specijalnih znakova) Ne smije započinjati brojem Preporuka da ime metode počinje velikim slovom
Dijelovi metode Definicija metoda static void NoviRed() ZAGLAVLJE Console.WriteLine( ); Pozivanje metode Izgled zaslona TIJELO static void Main() Console.WriteLine( Prva recenica. ); NoviRed(); NoviRed(); NoviRed(); Console.WriteLine( Druga recenica. ); Prva recenica. Ispis01 Druga recenica.
Definicija metoda Pozivanje metoda 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šavanje programa uvijek započinje u metodi Main Metoda Main poziva metodu TriReda koja poziva metodu NoviRed Ispis02
Definicija metoda 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
Predavanja argumenata metodi ARGUMENT metode Podatak koji se predaje metodi prilikom njenog pozivanja PARAMETAR metode Varijabla metode koja prima argument Argument i Parametar moraju biti istog tipa Po potrebi treba izvršiti pretvorbu prilikom prosljeđivanja argumenta pomoćnoj metodi Lista argumenata (više argumenata) prosljeđuje se listi parametara (više varijabli metode) pri pozivanju metode
Predavanja argumenata metodi 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 );
Predavanja argumenata metodi METODE s više parametara Kod metoda s više parametara potrebno je deklarirati tip svakog parametra 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
Povratne vrijednosti metoda Metode bez rezultata Nemaju tip podatka kojeg vraćaju već se u zaglavlju definiraju kao void (engl. za ništavilo, praznina) Metoda može prekinuti izvršavanje pozivanjem naredbe return koja u slučaju void metode nema argument void ispisi_korijen (double broj) if (broj < 0) return; Console.WriteLine( Math.Sqrt(broj) );
Povratne vrijednosti metoda 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); Povrsina01
Povratne vrijednosti metoda Metode sa 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 Definirane su samo operacije između varijabli istog tipa Po potrebi se koristi pretvorba tipa varijabli
Logičke metode Metoda Logičke metode Metode mogu vratiti logičku vrijednost kao što mogu vratiti i bilo koji drugi tip podataka Metoda koja vraća logičku vrijednost true, false vrlo je prikladna za prikrivanje testova unutar metode static bool Jednoznamenkast (int x) if (x >= 0 && x < 10) Ili još kraće return true; else return false; static bool Jednoznamenkast (int x) return (x >= 0 && x < 10); LogickaMetoda Uputno je davati ime logičkoj metodi na način da predstavlja jednostavno pitanje na koje postoji DA/NE odgovor, kao npr. ime metode u ovom primjeru: Jednoznamenkast
Povratne vrijednosti metoda Metode sa rezultatom mogu imati više return naredbi u tijelu metode Metoda završava izvršavanjem samo jedne od više return naredbi string Parnost (int broj) if (broj % 2 == 0) return paran ; else return neparan ; Parnost Operator % izračunava cjelobrojni ostatak dijeljenja dva cijela broja Operator % čita se mod odnosno modulo
Kompozicija metoda static double Povrsina(double polumjer) return Math.PI * polumjer * polumjer; static double Povrsina(double x1, double y1, double x2, double y2) return Povrsina( Dist(x1, y1, x2, y2) ); Interesantno je uočiti da druga verzija metode Povrsina poziva prvu Za ovakvo komponiranje metoda potreban je oprez jer lako dolazi do zabune kada se koja verzija metode poziva
Ugrađene metode Matematičke C# poziv Opis Math.Abs(broj) Math.Cos(double kut) Math.Sin(double kut) Math.Log(double broj) Math.Log(double broj, double baza) Math.Log10(double broj) Math.Pow(double baza, double eksponent) Math.Sqrt(broj) Math.Round(double vrijednost, int znamenke) Vraća apsolutnu vrijednost predanog broja Vraća kosinus predanog kuta koji je u radijanima Vraća sinus predanog kuta koji je u radijanima Vraća prirodni logaritam predanog broja Vraća logaritam predanog broja, prema predanoj bazi Vraća logaritam s bazom 10 od predanog broja Vraća broj koji je rezultat izračuna predanih baze i eksponenta Vraća korijen predanog broja Zaokružuje decimalnu vrijednost na broj znamenka predan kao drugi parametar
Globalne i lokalne varijable Definira vidljivost pojedine varijable u programu Podjela područja 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 i lokalne varijable Lokalne varijable Deklariraju se unutar metode i vidljive su jedino unutar metode Globalne varijable Dostupne su iz bilo kojeg dijela programa Nedostatak što 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 i lokalne varijable 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 Preporuka je takve vrijednosti deklarirati na jednom mjestu u programu Olakšana kasnija dorada programa (npr. promjena PDV-a) Dio konstanti (stalnica) već definiran u C# Ludolfov broj (Pi) -> Math.PI Prirodni (Eulerov) broj -> Math.E
Zadaci
1. zadatak Udaljenost između točaka Potrebno je izračunati udaljenost između dvije točke u 2D koordinatnom sustavu Koordinate točaka t1(x1, y1) i t2(x2, y2) predaju se kao argumenti metodi y t2(x2, y2) Euklidska udaljenost: x t1(x1, y1)
2. zadatak Opseg trokuta Potrebno je izračunati opseg trokuta Koordinate točaka trokuta t1(x1, y1), t2(x2, y2) i t3(x3, y3) predaju se kao argumenti metodi t3(x3, y3) y t2(x2, y2) Opseg trokuta: x t1(x1, y1)
3. zadatak Površina trokuta Potrebno je izračunati površinu trokuta Heronovom formulom P = s(s a)(s b)(s c) gdje je s jednak s = a+b+c 2 Koordinate točaka trokuta t1(x1, y1), t2(x2, y2) i t3(x3, y3) predaju se kao argumenti metodi t3(x3, y3) P y t2(x2, y2) x t1(x1, y1)
4. zadatak Površina mnogokuta Potrebno je izračunati površinu nepravilnog mnogokuta Površina mnogokuta računa se dijeljenjem mnogokuta na više trokuta, računanjem njihove površine, te zbrajanjem površina O = P1 + P2 + P3 t4(x4, y4) t3(x3, y3) y P3 P2 P1 t2(x2, y2) x t5(x5, y5) t1(x1, y1)