Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
223 changes: 223 additions & 0 deletions function.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
# 🚀 Metotlar (Fonksiyonlar)

Java'da **Metotlar** (ya da diğer adıyla **Fonksiyonlar**), sadece çağrıldığında kullanılan, belirli bir görevi yerine getiren kod bloklarıdır.

Metotlar, tıpkı matematikteki fonksiyonlar gibi, dışarıdan veri alabilir (bunlara **parametre** denir), bir işlem yapar ve isteğe bağlı olarak bir sonuç **geri döndürür**.

****⚠️ Program main metottan okumaya baslar!!***

---

## 🤔 Neden Metot Kullanırız?

Metot kullanmanın temel amaçları şunlardır:

1. **Tekrar Kullanılabilirlik (Reusability):** Bir kod parçasını programın birçok yerinde kullanmanız gerektiğinde, tek bir metot olarak tanımlar ve ihtiyacınız olduğunda çağırırsınız. Bu, kod tekrarını önler (DRY - Don't Repeat Yourself).
2. **Okunabilirlik ve Düzen:** Büyük bir problemi daha küçük, yönetilebilir parçalara bölerek programınızın anlaşılmasını kolaylaştırır.
3. **Nesne Yönelimli Programlamanın (OOP) Temeli:** Metotlar, Java'da nesnelerin davranışlarını tanımlayan temel yapı taşlarıdır.

---

## ✍️ Metot Tanımlama Sözdizimi (Syntax)

### Java'da bir metot tanımlarken aşağıdaki sözdizimi kullanılır:

```java
erişimBelirleyici geriDonusTipi metotAdi(parametre1Tipi parametre1, parametre2Tipi parametre2, ...) {
// Metot çağrıldığında çalışacak kod bloğu
// return; // Eğer geri dönüş tipi varsa burada kullanılır
}
```
| Bölüm Adı | Açıklama |
|----------------------|----------------------------------------------------------------------------------------------------------------|
| erişimBelirleyici | Metodun nereden çağrılabileceğini belirler (örneğin: public, private). |
| geriDonusTipi | Metodun işlemi bittikten sonra üreteceği sonucun veri tipidir (örneğin: int, String, boolean). |
| void | Eğer metot hiçbir değer geri döndürmeyecekse bu anahtar kelime kullanılır. (Sadece bir iş yapar ama bir sonuç vermez). |
| metotAdi | Metodunuzun benzersiz adıdır. |
| Parametreler | Metodun çalışması için dışarıdan alması gereken verilerdir. (Opsiyoneldir). |


## Örnek Metot Tanımlamaları:
### 1. Geri Değer Döndüren Metot (Return Type: int)
```java
public int toplama(int sayi1, int sayi2) {
// Geri dönüş tipi int olduğu için, int tipinde bir değer döndürmeliyiz.
return sayi1 + sayi2;
}
```
### 2. Geri Değer Döndürmeyen Metot (Return Type: void)
```java
public void selamVer(String isim) {
// Geri dönüş tipi void olduğu için return kullanmak zorunlu değildir.
System.out.println("Merhaba, " + isim + "!");
}
```
## 📞 Metot Çağırma (Return)
Tanımladığınız bir metodu kullanmak için, erişilebilir olduğu bir yerden ismini ve ardından parantezleri () yazarak çağırırsınız. Eğer parametre alıyorsa, parantez içine istenen tipte değerler (argümanlar) yazılmalıdır.

## ⚠️ Önemli Not (Java 101 için):
- main metodundan normal bir metodu çağırmak için, çağırdığınız metodun başına static anahtar kelimesini eklemeniz gerekir.⚠️
- metotlar siniflar icerisine yazilir. ✅
- metot icine metot yazilmaz ❌ (⚠️ class icine yazilir✅)

### Örnek Metot Çağırma:
```java
public class JavaPatika {

// Metot Tanımlaması: main içinde çağrılacağı için static ekledik.
static int toplama(int a, int b) {
return a + b;
}

// Ana Çalışma Bloğu
public static void main(String[] args) {

// Metodu Çağırma ve Sonucu Bir Değişkene Atama
int sonuc = toplama(5, 2);

System.out.println("Toplama Sonucu: " + sonuc);
// Çıktısı: 7

// Metodu Doğrudan Kullanma
System.out.println("Yeni Toplam: " + toplama(10, 3));
// Çıktısı: 13
}
}
```
## More Examples:
### 📘 Kod ve Açıklama:
```java
public class PatikaDev {
public static void main(String[] args) {
int x = 25; // x burada 25 olarak tanımlandı (ama sadece main içinde geçerli)
System.out.println(run(5)); // run metoduna 5 gönderiliyor
}

static int run(int x) {
x = 10; // burada parametre olarak gelen 5 değeri 10’a çevriliyor
return x; // metot 10 değerini geri döndürüyor
}
}
```
### 🧠 Nasıl Çalışıyor?

- main() içinde x = 25 tanımlanıyor ama bu main’e özel bir değişken.
- run(5) çağrıldığında run metoduna ayrı bir x parametresi geliyor.
- O parametreye 5 değeri atanıyor, ama sonra x = 10; satırıyla bu 5 → 10 oluyor.
- return x; ifadesi, metot bittiğinde 10 değerini geri gönderiyor.
- ystem.out.println(run(5)); bu dönen değeri yazdırıyor.

💡 Çıktı:
```java
10
```
- Yani burada return, metot bitmeden elde ettiğin sonucu dışarıya göndermeni sağlar.
System.out.println() da o sonucu ekrana yazdırır.
### 🔄 Örnek 1: Basit Toplama:
```java
public class ReturnExample1 {
public static void main(String[] args) {
int result = sum(3, 7); // sum metoduna 3 ve 7 gönderiliyor
System.out.println(result); // return değeri ekrana yazdırılıyor
}

static int sum(int a, int b) {
return a + b; // toplama sonucu dışarı gönderiliyor
}
}
```
Çıktı:
```java
10
```
Burada return → a + b işleminin sonucunu geri verir.

### 🔄 Örnek 2: Void (geri dönüşsüz metot)
```java
public class VoidExample {
public static void main(String[] args) {
sayHello(); // bu metot sadece bir şey YAZAR ama geri döndürmez
}

static void sayHello() {
System.out.println("Hello from void method!");
}
}
```
Çıktı:
```java
Hello from void method!
```
- Burada return yok çünkü metot sadece ekrana yazı yazıyor.
Void = “boş”, yani “geri dönüş değeri yok”.
### 🔄 Örnek 3: Return ile işlem sonucu kullanma
```java
public class ReturnExample2 {
public static void main(String[] args) {
int doubled = multiplyByTwo(6);
System.out.println("Sonuç: " + doubled);
}

static int multiplyByTwo(int number) {
int result = number * 2;
return result;
}
}
```
Çıktı:
```java
Sonuç: 12
```
- Burada multiplyByTwo(6) çağrıldığında return ile 12 döndürülüyor,
System.out.println() da bunu bastırıyor.
### 🔁 Örnek 4: Geri dönen değeri başka işlemde kullanmak:
```java
public class ReturnExample3 {
public static void main(String[] args) {
int a = 4;
int b = 6;
int total = sum(a, b); // 10 döner
int doubledTotal = total * 2; // sonucu 2 ile çarptık
System.out.println(doubledTotal); // 20 yazdırılır
}

static int sum(int x, int y) {
return x + y; // x + y sonucunu döndürür
}
}
```
Çıktı:
```java
20
```
Bu örnekte return, sadece sonucu göndermekle kalmıyor, o sonucu başka bir işlemde tekrar kullanabiliyoruz.

















## 💡 Ekstra Detay: Metot Aşırı Yüklenmesi (Method Overloading)
İlerleyen aşamalarda göreceğiniz bu kavram, aynı isimde fakat farklı parametre sayıları veya tipleri olan birden fazla metot yazabilmenizi sağlar.
```java
// Metot 1: İki tam sayı toplar
static int topla(int a, int b) { ... }

// Metot 2: Üç tam sayı toplar (İsim aynı, parametre sayısı farklı)
static int topla(int a, int b, int c) { ... }

// Metot 3: İki ondalıklı sayı toplar (İsim aynı, parametre tipleri farklı)
static double topla(double a, double b) { ... }

```