MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/Ders.aspx?dersId=101 1 Metot • Metotlar sınıfların(class) içinde yer alan küçük program parçacıklarıdır. • Metot yapısının ana sebebi programları modüler hale getirmektir. • Aynı zamanda aynı program parçacığının tekrarlanmasını önlemeyi de sağlar. • Her metot çağrıldığı proğram parçacığına belli bir değişkeni aktarabilir. • Metotların tanımlarında aktardıkları değişken türü tanımlanır. • Eğer metot hiçbir değişken aktarmıyorsa void sözcüğüyle tanımlanır. Metotların genel tanımı aşağıdaki gibidir. Genel Metot tanımı (public) (static) sınıf değişken türü sınıf ismi( sınıf değişken girdi listesi) { sınıf içinde geçerli degişken tanımları Metotun ana gövdesi return metot çıktı değişkeni } 2 Örnek Bir Metot Tanımı: public static double metotornegi(int x, double y) { double z = 3.5; double f ; f = z*x*x+y; return f; } Bu metotdaki x ve y gerçek (double) değişkenleri metotun girdi değişkenleridir. z ve f değişkenleri metotun yerel değişkenleridir ve bu metot dışında tanımları yoktur. Metot f değişkeninin değerini çıktı olarak metotun dışına aktarmaktadır. Eğer yukarıdaki metot main metotunda aşağıdaki gibi bir örnekte kullanılırsa double z = 2.5; double r ; int i = 3; r = metotornegi(i,z); System.out.println(“r = “+r); r = 34 sonucuna ulaşılır. 3 Metot örneği-1 import javax.swing.*; public class metotornek1 { public static double kare(double x) { return x*x; } public static void main(String[] args) { double sayi=Double.parseDouble(JOptionPane.showInputDialog("Bir gerçek sayı giriniz : ")); JOptionPane.showMessageDialog(null,"girilen sayının karesi : "+kare(sayi)); } } 4 5 Metot örneği-2 import javax.swing.*; public class metotornek2 { public static long faktoriyel(int x) { long faktoriyel=1; for(int sayi=1;sayi<=x;sayi++) { faktoriyel=faktoriyel*sayi; } return faktoriyel; } public static void main(String args[]) { int faktoriyelsayi; faktoriyelsayi=Integer.parseInt(JOptionPane.showInputDialog("Bir tam sayı giriniz : ")); String s=faktoriyelsayi+" faktoriyel: "+faktoriyel(faktoriyelsayi); JOptionPane.showMessageDialog(null,s); } } 6 7 Metot örneği-3 import javax.swing.JOptionPane; public class metotornek3 { public static double kuvvet(double sayi,int kuvvet) { double sonuc=1; for(int i=1;i<=kuvvet;i++){ sonuc=sonuc*sayi; } return sonuc; } public static void main(String[] args) { double cikti; double sayi=Double.parseDouble(JOptionPane.showInputDialog("Bir gerçek sayı giriniz : ")); int derece=Integer.parseInt(JOptionPane.showInputDialog("Kuvvetini giriniz : ")); cikti=kuvvet(sayi,derece); JOptionPane.showMessageDialog(null,sayi+" üzeri "+derece+" = "+cikti); } } 8 9 Metot örneği-4 (Değer Döndürmeyen Metot Tanımı) public class metotornek4 { public static void PrintLine() { System.out.println("This is a line of text."); } public static void main(String[] args) { System.out.println("Start Here"); PrintLine(); System.out.println("Back to the Main"); PrintLine(); System.out.println("End Here"); } } Çıktı: Start Here This is a line of text. Back to the Main This is a line of text. End Here 10 Math kütüphanesindeki hazır metotlara örnekler Metot Tanım Örnek abs(x) x değişekeninin mutlak değeri Math.abs(9.2) = 9.2 Math.abs(-9.2) = 9.2 ceil(x) x degişkenini bir üst tamsayıya dönüştürür (türkçesi : tavan) Math.ceil(9.2) = 10 Math.ceil(-9.8) = -9 floor(x) cos(x) x değişkenini bir alt tamsayıya dönüştürür. (türkçesi : taban) x in trigonometrik cosünisü (x radyan ) Math.floor(9.2) = 9 Math.floor(-9.8) = -10 Math.cos(1.0)=0.54030230568 sin(x) tan(x) acos(x) asin(x) x in trigonometrik sinüsü (x radyan cinsinden tanımlanmıştır.) x in trigonometrik tanjantı (x radyan ) x in trigonometrik cosünisünün tersi (sonuç radyan) x in trigonometrik sinüsü (sonuç radyan ) Math.sin(1.0)=0.8414709840709 Math.tan(1.0)=1.557040724655 Math.acos(0.54030230568)=1.0 Math.asin(0.8414709840709)=1.0 atan(x) atan2(x,y) x in trigonometrik tanjantı (sonuç radyan ) 4.0*Math.atan(1.0)=3.14159265359 4.0*Math.atan2(1.0,1.0)=3.14159265 exp(x) x e e(2.7182818284590452354) nin x inci kuvveti log(x) log10(x) pow(x,y) max(x,y) e tabanına göre logaritma 10 tabanına göre logaritma x in y inci kuvveti x ve y nin büyük olanı. x değeri double, float ve int ve long olarak tanımlanmıştır x ve y nin küçük olanı. x değeri double, float ve int ve long olarak tanımlanmıştır Raslantısal sayı (0 ile 1 arasinda) Math.exp(1.0) =2.718281828459 Math.exp(2.0) =7.389056098931 Math.log(2.718281828459)=1.0 Math.log(10.0)=1.0 Math.pow(3,2)=9.0 Math.max(2.3,12.7)=12.7 min(x,y) random() Math.min(2.3,12.7)=2.3 Math.random() = 0 ila bir arasında her sayı çıkabilir 11 Java kütüphanelerinden metot kullanım örneği (Sayı Tahmin Oyunu) import javax.swing.*; public class sayitahmin { public static void main(String[] args) { // TODO Auto-generated method stub double tutulansayi=Math.round(Math.random()*10); System.out.println("Tutulan sayi="+tutulansayi); double tahmin=-1; while(tahmin!=tutulansayi){ tahmin=Double.parseDouble(JOptionPane.showInputDialog("Bir sayi tahmin edin")); if (tahmin<tutulansayi) JOptionPane.showMessageDialog(null, "Sayı daha büyük"); else if (tahmin>tutulansayi) JOptionPane.showMessageDialog(null, "Sayı daha küçük"); } JOptionPane.showMessageDialog(null, "Tebrikler doğru tahmin"); } } 12 13 KAYNAKÇA 1. Turhan Çoban, Java Bilgisayar Diliyle Programlama. 14