Java Fonksiyonlar

advertisement
FONKSİYONLAR (FUNCTIONS)
M.İlkuçar MAKU-MYO 2014
1
FONKSİYONLAR (FUNCTIONS)
Fonksiyon :
Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak
kullanılması.
Fonksiyonun faydaları :
 Programın modülerliğini arttırır.
 Aynı işi yapan program parçası tekrar tekrar yazılmaz.
 Fonksiyon farklı programlama dillerinde yazılabilir. Fraklı dillerde kullanılabilir.
 Program iş parçalarını bölünerek birden çok kişi aynı program üzerinde çalışabilir.
 Fonksiyon program içerisinde gerektiği zaman kullanılır, gerekmedikçe kullanılmaz.
M.İlkuçar MAKU-MYO 2014
2
Main( ) Ana fonksiyon
{
İş parçası- 1
İş parçası -2
void Main ( )
{
……
İş parçası-1 ( ) ;
…..
İş parçası-2 ( ) ;
…….
}
void İş parçası-1 ( )
{
……
}
void İş parçası-2( )
{
…….
}
} Ana fonksiyon sonu
M.İlkuçar MAKU-MYO 2014
3
FONKSİYONLAR (FUNCTIONS)
fonksiyon
Hazır
Kullanıcı Tanımlı
Aritmetik
void fonksiyonlar
Değen döndüren fonk
String
Overloading
Recursive
M.İlkuçar MAKU-MYO 2014
4
FONKSİYONLAR (FUNCTIONS)
Bir fonksiyonun genel yapısı :
Erişim_izni static veri_tipi
{
…….
fonksiyon_adi ( parametreler )
Fonksiyon gövdesi
}
Public
Protected
Erişim izinleri : public , protected , private
Private
Not: Erişim izini olarak hiçbir şey yazılmaz ise default(varsayılan) değeri protect
M.İlkuçar MAKU-MYO 2014
5
FONKSİYONLAR (FUNCTIONS)
Fonksiyon nereye yazılmalıdır ?
public class JavaApplication1
{
Fonksiyonlar, bu alana yazılabilir
public static void Main ( String[ ] args) // Temel (ana ) fonksiyon
{
….
}
Fonksiyonlar, bu alana da yazılabilir
}
M.İlkuçar MAKU-MYO 2014
6
FONKSİYONLAR (FUNCTIONS)
void (tipi olmayan) fonksiyonlar
public static void fonksiyon_adi ( parametreler)
{
…
…
…
}
M.İlkuçar MAKU-MYO 2014
7
FONKSİYONLAR (FUNCTIONS)
public static void MesajYaz ( )
{
System.out.print ( «Çıkmak için Bir tuşa basınız» );
}
Kullanımı:
MesajYaz( );
public static void MesajYaz ( String msg)
{
System.out.print ( msg );
}
Kullanımı:
MesajYaz( « merhaba»);
String s=«merhaba» ;
MesajYaz( s );
M.İlkuçar MAKU-MYO 2014
8
FONKSİYONLAR (FUNCTIONS)
public class Program
{
// kullanıcı tanımlı fonksiyon
public static void MesajYaz ( String msg)
{
System.out.print( msg );
}
// Temel (ana ) fonksiyon
public static void Main ( String[ ] args)
{
MesajYaz (“ Bugün Hava Çok Güzel ”);
}
}
M.İlkuçar MAKU-MYO 2014
9
FONKSİYONLAR (FUNCTIONS)
void tipli parametresiz fonksiyonlar.
public class Program
{
public static void topla ( int x , int y)
{
int z = x + y;
System.out.print (“ Toplam : ” + z );
}
public static void Main ( String[ ] args)
{
topla ( 5, 7 ) ; // viod fonksiyonun çağırılması
int a= 4 ;
int b= 7;
topla ( a, b );
// viod fonksiyonun çağırılması
}
}
M.İlkuçar MAKU-MYO 2014
10
FONKSİYONLAR (FUNCTIONS)
public class Program
{
// kullanıcı tanımlı fonksiyon
buplic static void Sayac ( )
{
for( int x=1 ; x<= 5 ; x++)
System.out.println( x );
}
// Temel (ana ) fonksiyon
public static void Main ( String[ ] args)
{
Sayac( );
}
}
M.İlkuçar MAKU-MYO 2014
11
FONKSİYONLAR (FUNCTIONS)
public class Program
{
// kullanıcı tanımlı fonksiyon
public static void Sayac ( int k )
{
for( int x=1 ; x<= k ; x++) System.out.println( x );
}
// Temel (ana ) fonksiyon
public static void Main ( String[ ] args)
{
Sayac( 5 ) ;
int a=6;
Sayac( a );
}
}
M.İlkuçar MAKU-MYO 2014
12
FONKSİYONLAR (FUNCTIONS)
Değer döndüren fonksiyonlar
Public static veritipi FonksiyonAdı ( parametreler)
{
…
…
return (döndüreleck değer) ;
}
M.İlkuçar MAKU-MYO 2014
13
FONKSİYONLAR (FUNCTIONS)
değer döndüren fonksiyonlar.
public class Program
{
public static int Ekle ( int x)
{
return ( x+6 );
}
public static void Main( String[] args)
{
int sonuc = Ekle( 7 ) ;
// 13
System.out.print ( sonuc ); // 13
System.out.print ( Ekle( 3 ) ); // 9
}
}
M.İlkuçar MAKU-MYO 2014
14
FONKSİYONLAR (FUNCTIONS)
değer döndüren fonksiyonlar.
public static int topla ( int x, int y)
{
int z = x + y;
return z;
}
public static void main ( String[] args)
{
int a= 5, b= 9;
int sonuc = topla (3 , 5);
System.out.print ( topla (a,b) );
if ( topla (4,9) > 13 ) System.out.print (“A”);
System.out.print ( topla (3.15 , 9) ); // YANLIŞ KULLANIM parametre veri tipleri uyuşmuyor
topla (7,9) ;
// YANLIŞ KULLANIM hata vermez ama sonuç bir yerde kullanılmıyor
}
M.İlkuçar MAKU-MYO 2014
15
FONKSİYONLAR (FUNCTIONS)
değer döndüren fonksiyonlar.
public static int fakt ( int x )
{
int f=1;
if( x==0 || x==1 ) return 1;
for ( int m=1 ; m<= x ; m++ ) f = f * m ;
return f;
}
public static void main ( String [] args)
{
int a= 4;
int sonuc = fakt(a);
System.out.print ( fakt (5) );
}
M.İlkuçar MAKU-MYO 2014
16
FONKSİYONLAR (FUNCTIONS)
public static int[] Sirala(int [] x) {
public static int[] DiziYap(int x) {
int [] d= new int [x];
int [] d=x;
for(int i=0; i<d.length; i++)
for (int i = 0; i <d.length; i++) {
for (int j = i; j <d.length; j++) {
d[i]=(int)(Math.random()*100);
if(d[i]>d[j]) {
return d;
int temp=d[i];
}
d[i]=d[j];
public static void Yazdir(int [] x) {
d[j]=temp;
for(int a:x) System.out.print(" "+ a);
}
}
}
}
public static void main(String[] args) {
return d;
int []a= DiziYap(10);
Yazdir(a);
}
Sirala(a); System.out.println("");
Yazdir(a);
}
M.İlkuçar MAKU-MYO 2014
17
FONKSİYONLAR (FUNCTIONS)
Overloading Functions
Aşırı yüklenmiş Fonksiyon
M.İlkuçar MAKU-MYO 2014
18
11- FONKSİYONLAR (FUNCTIONS)
Overloading Functions ( Aşırı yüklenmiş Fonksiyon) :
İsimleri aynı, parametrelerinin sayısı veya veri tipi farklı olan
fonksiyonlar
System.out.print ( );
System.out.print( 2 );
System.out.print( 3.14 );
System.out.print(“ MAKÜ meslek yüksekokulu ” );
System.out.print( ‘A’ );
System.out.print(“ Sonuç: ” + (6+8) );
M.İlkuçar MAKU-MYO 2014
19
FONKSİYONLAR (FUNCTIONS)
Overloading – Aşırı yüklenmiş Fonksiyon: İsimleri aynı, parametrelerinin sayısı veya veri tipi farklı olan fonksiyonlar
static float carp ( int x , int y)
{
return ( x * y);
}
static float carp ( int x , float y)
{
return ( x * y);
}
static float carp ( float x , int y)
{
return ( x * y);
}
static float carp ( float x , float y)
{
return ( x * y);
}
System.out.print (
System.out.print (
System.out.print (
System.out.print (
carp (4 , 6)
);
carp (3.5 , 2)
);
carp (4 , 2.5) );
carp (2.5 , 3.14) );
M.İlkuçar MAKU-MYO 2010
20
Overloading – Aşırı yüklenmiş Fonksiyon: isimleri aynı parametreleri farklı olan
fonksiyonlar
class Program
{
static void F1(int x) // Tek parametreli
{
x = 12;
System.out.print (x + “ int dir");
}
static void F1(int x, int y) //İki parametreli
{
System.out.print (x + " ve " + y + “ int dir");
}
//temel fonksiyon
static void Main()
{
int a = 12;
int b = 12;
int c = 12;
F1 (a);
// tek parametreli
F1 (b, c); // iki parametreli
}
}
M.İlkuçar MAKU-MYO 2014
21
FONKSİYONLAR (FUNCTIONS)
Recursiv Functions
Öz Yinelemeli Fonksiyon
(Kendi kendini çağıran fonksiyonlar)
M.İlkuçar MAKU-MYO 2014
22
Recursive (öz yinelemeli) Kendi kendini çağıran
class Program
{
static void Yaz ( int x )
{
if (x > 5) return;
// Base şarta bağlı fonksiyondan çıkar
else
{
System.out.ptintln ( x );
Yaz (x + 1);
// Call myself (kendini çağırır)
}
}
Çıktı:
1
2
3
4
5
static void Main()
{
Yaz (1 ) ; // fonksiyonun çağrılması
}
}
M.İlkuçar MAKU-MYO 2014
23
FONKSİYONLAR (FUNCTIONS)
Recursive – Özyinelemeli Fonksiyon
x=24
public static float fakt ( int x)
{
float f = 1;
if (x>1) f = x * fakt ( x - 1);
return f ;
}
public static void Main ( )
{
x =fakt(4)
f=4*6 ->24
f = 4 * fakt(4 -1)
f = 3 * fakt(3 -1)
f=3*2 ->6
f = 2 * fakt(2 -1)
f=2*1 ->2
Geri dönüş noktası
çağırma
f=1
f=fakt(1)
Geriye doğru işleme
float x = fakt( 4 );
System.out.print ln (x);
}
M.İlkuçar MAKU-MYO 2014
24
FONKSİYONLAR (FUNCTIONS)
Fibonecci Sayıları:
public static int fibonecci(int n){
if(n<=0) return 0;
if(n==1) return 1;
return fibonecci(n-1) + fibonecci(n-2);
}
public static void main (String [] args )
{
int x = 8;
System.out.println( x + »Fibonecci:» + fibonecci(x));
}
Kaynak: 2140101 Computer Programming for International Engineers
INTERNATIONAL SCHOOL OF ENGINEERING
CHULALONGKORN UNIVERSITY
25
FONKSİYONLAR (FUNCTIONS)
Örnek: Recursive – Özyinelemeli Fonksiyon ile üs alma işlemi
public static float uslama ( int taban, int us)
{
float f = 1;
if (us==0) f=1;
else f = taban * usalama ( taban, us - 1);
return f ;
}
public static void main (String [] args )
{
float x = usalama( 2,3 );
System.out.println(« 2 üssü 3 =« + x);
}
M.İlkuçar MAKU-MYO 2014
26
FONKSİYONLAR (FUNCTIONS)
Global ve Local Variables
Genel ve Yerel Değişkenler
Global (Genel) : Programın tümünde geçerli olan değişkenlerdir
Local(Yerel)
: Sadece tanımlandığı fonksiyon içerisinde geçerli olan
değişkenlerdir.
M.İlkuçar MAKU-MYO 2014
27
FONKSİYONLAR (FUNCTIONS)
Genel (Global) ve yerel (local) değişkenler.
class Program
{
static int a = 2; // GENEL programın tümünde kullanılabilir
static void test( )
{
int x=5;
// yerel sadece bu fonksiyon içerisinde geçerli
System.out.ptintln(a);
a=8;
}
static void main( String [] args)
{
int x=10; // yerel sadece bu fonksiyon içerisinde geçerli
test();
System.out.ptintln (a);
a=17;
}
a=9;
}
M.İlkuçar MAKU-MYO 2014
28
FONKSİYONLAR (FUNCTIONS)
Genel (Global) ve yerel (local) değişkenler.
class Program
{
static int g ;
// genel
static int topla ( int x , int y)
{ int z = 1; // yerel
z = x+ y;
g = z;
return z;
}
static void main(String[] args)
{
int a=4, b=6;
// yerel
System.out.ptintln ( topla ( a, b) );
System.out.ptintln ( g );
}
}
M.İlkuçar MAKU-MYO 2010
29
FONKSİYONLAR (FUNCTIONS)
Genel (Global) ve yerel (local) değişken isimleri aynı ise;
Genel değişkeni ayırt etmek için nesneismi.genel_değişken (ORNEK.x) şeklinde ayırılır.
public class ORNEK
{
static int x =8 ;
// genel
static void islem ( )
int x=5;
ORNEK.x= x ;
}
static void main(String[] args)
{
System.out.ptintln ( x ); // 8
islem();
System.out.ptintln ( x ); // 5
}
}
M.İlkuçar MAKU-MYO 2010
30
FONKSİYONLAR (FUNCTIONS)
Çeşitli Örnekler
M.İlkuçar MAKU-MYO 2014
31
FONKSİYONLAR (FUNCTIONS)
M.İlkuçar MAKU-MYO 2014
32
FONKSİYONLAR (FUNCTIONS)
recursive yöntemiyle
İterasyon yöntemiyle
static float oklit ( int x, int y)
{
while (x != y )
{
static float oklit ( int x, int y)
{
if (x == y ) return x; // base
if(x>y) x = x-y;
if(x>y) return oklit (x-y , y);
else y = y-x ;
}
else return oklit (x , y-x );
}
return x;
}
static void Main ( )
{
static void main ( String [] args )
{
float sonuc = oklit( 7,2 );
System.out.ptintln (oklit( 7,2) );
float sonuc = oklit ( 7 , 2 );
System.out.ptintln ( oklit ( 7 , 2) );
}
}
Sonuç: 1.0 dır
M.İlkuçar MAKU-MYO 2014
33
FONKSİYONLAR (FUNCTIONS)
Parametresi Dizi(array) olan fonksiyonlar :
class Program
{
static void DiziYaz(int[] d)
{
for(int tmp : d) System.out.println(tmp);
}
static void main(String [] atgs)
{
int[] z = { 4,7,3,6 };
DiziYaz(z);
}
}
M.İlkuçar MAKU-MYO 2014
34
FONKSİYONLAR (FUNCTIONS)
Parametresi Dizi(array) olan fonksiyonlar :
static double topla( int [] d )
{
double top = 0;
for(int i = 0; i < d.Length; i++) top += d [ i ];
return top ;
}
static void main(string [] args)
{
int [] x = {3,9,4,2,7};
System.out.ptintln( topla( x ) );
}
M.İlkuçar MAKU-MYO 2010
35
Parametresi Dizi(array) olan fonksiyonlar :
class Program
{
static void DiziYaz( int[,] D )
{
for (int sat=0; sat<D.length; sat++)
{
for(int sut=0; sut <D[sat].length ; sut ++)
{
System.out.ptint(“ ” + D[ sat, sut] );
}
System.out.ptintln();
}
}
static void main( String [] args)
{
int[,] z = { {4, 5}, {2, 6}, {9, 3}, {7, 1} };
DiziYaz(z);
}
}
M.İlkuçar MAKU-MYO 2010
Çıktı:
4 5
2 6
9 3
7 1
36
FONKSİYONLAR (FUNCTIONS)
Geri dönüş değeri Dizi(Array) olan fonksiyon :
static int [ ] dizi_olustur ( int adet )
{
Random r = new Random();
int [ ] d= new int [adet];
for ( int i=0 ; i< adet ; i ++ )
d [i] = (int) (Math.random() *100);
return d ;
}
static void main(String[] args)
{
int say = 5 );
int [ ] D = dizi_olustur ( say ) ;
for ( int k : D ) System.out.ptint (" " + k );
}
M.İlkuçar MAKU-MYO 2010
37
1 FONKSİYONLAR (FUNCTIONS)
Örn: y =1 + x + x2 + x3 + …. +xn
hesaplayıp yazdıran programı yazınız ?
denkleminde klavyeden girilecek x ve n değeri için y değerini
static int usal ( int x, int y )
{
int top =1;
for ( int i=1 ; i<= y ; i ++ )
top *= x; ;
return top ;
}
static void main( String[] args)
{
Scanner oku= new Scanner (System.in);
int x = oku.nextInt();
int n =oku.nextInt();
int y=0;
for (int i = 0; i <= n; i++)
y += usal (x, i);
System.out.ptintf("\n x:%d , n:%d , y:%d", x, n, y );
}
M.İlkuçar MAKU-MYO 2014
38
FONKSİYONLAR (FUNCTIONS)
Örn: y =1 - x + x2 /2! - x3 /3!+ …. + xn /n! klavyeden girilecek x ve n değeri için y değerini hesaplayıp
yazdıran programı yazınız ?
static int fakt ( int x )
{
int f =1;
for ( int i=1 ; i<= x ; i ++ )
return f ;
}
static int usal ( int x, int y )
{
int top =1;
for ( int i=1 ; i<= y ; i ++ )
return top ;
}
f *= i ;
top *= x; ;
static void Main(string[] args)
{
Scanner oku= new Scanner (System.in);
int x = oku.nextInt();
int n = oku.nextInt();
int y=0;
for (int i = 0; i <= n; i++)
{
if( i%2== 0) y += (usal (x, i) / fakt(i) );
else y -= (usal (x, i) / fakt(i) );
}
System.out.ptintf("\n x:%d , n:%d , y:%d", x, n, y );
}
M.İlkuçar MAKU-MYO 2014
39
FONKSİYONLAR (FUNCTIONS)
Dizinin, bir fonksiyonun geri dönüş tipi olarak kullanılması :
static double [ ] sirala ( double [ ] d
)
{
for(int i = 0; i < d.Length-1; i++)
{
for(int k = i+1; k < d.Length; k++)
{
if(d[i] > d[k] )
{
public static void yazdir(int[][] x)
int temp= d[i];
{
d [i]= d[k];
for (int sat = 0; sat < x.length; sat++) {
d[k]=temp;
}
for (int sut = 0; sut < x[sat].length; sut++) {
}
System.out.print(" "+x[sat][sut]);
}
}
t += d [ i ];
System.out.println();
return t ;
}
}
}
void main (String [ ] args)
{
int [ ] x = { 3,9,4,2,7 } ;
yazdir ( x ) ;
x= sirala ( x);
yazdir ( x ) ;
}
M.İlkuçar MAKU-MYO 2014
40
Download