 
                                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