1 / 36

Methods

Methods. Tanitim. Gercek dunya problemlerini cozmeye yonelik programlar oldukca karmasik ve buyuk hacimli koda sahiptirler.

Download Presentation

Methods

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. Methods Java'da Programlama

  2. Tanitim • Gercek dunya problemlerini cozmeye yonelik programlar oldukca karmasik ve buyuk hacimli koda sahiptirler. • Tecrubeler sunu gosterdi: Buyuk capli bir programi gelistirmenin ve bakimini iyi bir sekilde yapmanin en iyi yolu, onu kucuk parcalara bolmek suretiyle moduler bir sekilde gelistirmektir. Bu kucuk parcalara module ler denir. • Yukarida belirtilen teknige de divide and conquer teknigi denir. Java'da Programlama

  3. Method lar ve Class lar • Java daki moduller method ve class lar seklindedir. • Java API (java class library) • Onceden tanimlanmis ve hazir olarak programcilara sunulan cesitli method ve class lari barindirir. • Matematik islemleri • String islemleri • Hata kontrol • Input/output (giris/cikis) islemleri Java'da Programlama

  4. Math Class Methods • abs(x) // absolute value • ceil(x) // x i x den kucuk olmayan en // kucuk integer a yuvarlar • cos(x) // x in radians • exp(x) // ex • floor(x) // x i x den buyuk olmayan en // buyuk sayiya yuvarlar • max(x,y) • min(x,y) • pow(x,y) // yx Java'da Programlama

  5. import java.awt.Graphics; import java.applet.Applet; public class SquareInt extends Applet { public void paint(Graphics g) { int xPosition =25; for(int x=1; x<=10; x++) { g.drawString(String.valueOf(square(x)),xPosition,25); xPosition+=20; } } // squarae method definition public int square(int y){ return y * y; } } Java'da Programlama

  6. Java'da Programlama

  7. Method tanimlamasi return-value-type method-name(parameter-list) { decleartion ve statement lar } Eger donen degerin type i void ise, bu metodun hic bir seydondurmedigi anlamina gelir Java'da Programlama

  8. public class Maximum extends Applet implements ActionListener{ Label label1, label2, label3, resultLabel; TextField number1, number2, number3, result; int num1, num2, num3, max; public void init(){ label1=new Label("Enter first integer:"); number1=new TextField("0",10); label2=new Label("Enter second integer:"); number2=new TextField("0",10); label3=new Label("Enter third integer:"); number3=new TextField("0",10); resultLabel=new Label("Maximum value is:"); result=new TextField("0",10); result.setEditable(false); number1.addActionListener(this); number2.addActionListener(this); number3.addActionListener(this); Java'da Programlama

  9. add(label1); add(number1); add(label2); add(number2); add(label3); add(number3); add(resultLabel); add(result); } public int maximum(int x, int y, int z){ return Math.max(x, Math.max(y,z)); } Java'da Programlama

  10. public void actionPerformed(ActionEvent e) { num1=Integer.parseInt(number1.getText()); num2=Integer.parseInt(number2.getText()); num3=Integer.parseInt(number3.getText()); max=maximum(num1,num2,num3); result.setText(Integer.toString(max)); } } Java'da Programlama

  11. Java'da Programlama

  12. Java API Packages • java.applet : The Java Applet Package • java.awt: The Java Abstract Windowing Toolkit Package • java.awt.event: The Java Abstract Windowing Toolkit Event Package • java.beans: The Java Beans Package • java.io: The Java Input/Output Package • java.lang: The Java Language Package • java.net: The Java Networking Package • java.sql: The Java Database Connectivity Package Java'da Programlama

  13. import java.awt.Graphics; import java.applet.Applet; public class RandomInt extends Applet{ public void paint(Graphics g) { int xPosition = 25; int yPosition =25; int value; for(int i=1; i<=20; i++){ value=1+(int)(Math.random()*6); g.drawString(Integer.toString(value), xPosition,yPosition); if(i%5!=0) xPosition+=40; else { xPosition = 25; yPosition+=15; } } } } Java'da Programlama

  14. Java'da Programlama

  15. Automatic Variables • Bir degiskenin duration (lifetime) i soyle tanimlanir. Degisken in bellekte var oldugu zaman peryoduna denir. • Bir degiskenin scope u: Program icerinde bu variable e erisilebilen kod bolgesini tanimlar Java'da Programlama

  16. Automatic Variables • Bir method a ait local degiskenleri tanimlayan belirtecler (parametreler, ve method icerisinde tanimlanan degiskenler) automatic duration a sahiptirler. Yani bu degiskenler, program kontrolu degiskenin tanimlandigi bloka gectiginde bellekte olusturulurlar, block aktif oldugu surece aktif kalirlar, ve ilgili bloktan cikildiginda yok edilirler. • Automatic degiskenlere, kullanilmadan once programci tarafindan baslangic degerleri atanmali Java'da Programlama

  17. Class Scope & Block Scope • Bir class a ait methodlar ve instance variable lar class scope a sahiptir. Class scope class a ait kodun ‘{‘ ve ‘}’ arasinda kalan kod parcasidir. • Bir block icerisinde tanimlanan degiskenler block scope a sahip olurlar. Block scope degiskenin tanimlandigi yerden baslayan ve blogun sonunu gosteren ‘}’ arasinda kalan kod bolgesidir. Java'da Programlama

  18. import java.awt.Graphics; import java.applet.Applet; public class Scoping extends Applet { int x=1; public void paint(Graphics g) { g.drawString("See command line for output",25,25); int x=5; System.out.println("local x in paint is "+x); a(); b(); a(); b(); System.out.println("\nlocal x in paint is " + x); } Java'da Programlama

  19. void a(){ int x=25; System.out.println("\nlocal x in a is " +x+ " after entering a"); ++x; System.out.println("local x in a is " +x +" before exiting a"); } void b(){ System.out.println("\ninstance variable x is " +x+ " on entering b"); x*=10; System.out.println("instance variable x is " +x+ " on exiting a"); } } Java'da Programlama

  20. Java'da Programlama

  21. Recursion (Kendi kendini cagirma) • Genellikle bir metod baska bir metodu cagirir. • Ancak bazi durumlarda bir metodun kendi kendini cagirmasi soz konusu olabilir • Ozellikle bazi problemlerin cozumunde cok buyuk kolaylik saglar • Bazi problemler dogasindan dolayi recursive olarakkolayca ifade edilebilirler. Java'da Programlama

  22. Recursion • Kendi kendini direkt veya dolayli olarak baska bir method tarafindan cagiran metodlara recursive metod denir. Java'da Programlama

  23. Recursive cozum • Recursive cozumde iki farkli durum var • Base case (durum): Problem yeterince basitse dogrudan cozum getirilir • Recursion case: Eger problem yeterince basit degilse (base case e uymuyorsa), problem daha kucuk boya recursion suretiyle indirgenir. Java'da Programlama

  24. Ornek: Factorial • Factorial problemi asagidaki gibi tanimlanir. • n!=nx(n-1)x(n-2)x(n-3)x ……x1 • Bu fonksiyonu asagidaki gibi ifade edebiliriz. 1, eger n=1 veya n=0 // base case f(n) = nxf(n-1), diger durumlarda // recursion Java'da Programlama

  25. Factorial problemi cozumu • 1. Cozum: iterative cozum. factorial =1; for(int counter = number; counter >=1; counter--) factorial *= counter; Java'da Programlama

  26. Factorial problemi cozumu • 2. Cozum: recursive cozum if(number == 0 || number ==1) return 1; else return number * factorial(number –1); Java'da Programlama

  27. 2. Cozume devam 5! 5! 5!=5x24 =120 donduruldu 5x4! 5x4! 4!=4x6 =24 donduruldu 4x3! 4x3! 3!=3x2 =6 donduruldu 3x2! 3x2! 2!=2x1 =2 donduruldu 2x1! 2x1! 1 donduruldu 1 1 Her bir recursive cagrimdan donen degerler Recurive cagrimlar Java'da Programlama

  28. Fibonacci fonksiyonu 0, eger n=0 fibonacci(n) = 1, eger n=1 fibonacci(n-1) + fibonacci(n-2) Java'da Programlama

  29. package PackageFibonacciTest; import java.awt.*; import java.applet.Applet; import java.awt.event.*; /** * * */ public class ClassFibonacciTest extends Applet implements ActionListener{ Label numLabel, resultLabel; TextField num, result; Java'da Programlama

  30. public void init(){ numLabel= new Label("Enter an integer and press return"); num = new TextField(10); num.addActionListener(this); resultLabel = new Label("Fibonacci value is"); result = new TextField(15); result.setEditable(false); add(numLabel); add(num); add(resultLabel); add(result); } Java'da Programlama

  31. public void actionPerformed(ActionEvent e) { long number, fibonacciValue; number=Long.parseLong(num.getText()); showStatus("Calculating ..."); fibonacciValue=fibonacci(number); showStatus("Done."); result.setText(Long.toString(fibonacciValue)); } long fibonacci(long n){ if(n==0 || n==1) return n; // base case else return fibonacci(n-1)+fibonacci(n-2); // recursive case } } Java'da Programlama

  32. Java'da Programlama

  33. Method Overloading • Java ayni class a ait olmak uzere ayni isimli fakat farkli fonksiyon signature (imzasi) sahip birden fazla method un tanimlanmasina olanak saglar. Buna method overloading denir. • Fonksiyon signature u ne belirler • Method un ismi • Parametrelerin sayisi • Parametrelerin tipleri • Parametrelerin sirasi Java'da Programlama

  34. Ornek package MethodOverloadPackage; import java.awt.Graphics; import java.applet.Applet; public class MethodOverloadClass extends java.applet.Applet { /** Initialization method that will be called after the applet is loaded * into the browser. */ public void init() { // TODO start asynchronous download of heavy resources } // TODO overwrite start(), stop() and destroy() methods Java'da Programlama

  35. public void paint(Graphics g) { g.drawString("The square of integer 7 is " +square(7), 25,25); g.drawString("The square of double 7.5 is " + square(7.5),25,40); } int square(int x) { return x*x; } double square(double y) { return y*y; } } Burada ayni isimli (square) fonksiyonu overload edilmis. Iki fonksiyonu birbirinden ayirt edici husus, her ne kadar ikisi de tek parametre aliyorlarsa da parametrelerinin tipleri farkli. Java'da Programlama

  36. Java'da Programlama

More Related