# Method

Suatu fungsi, dapat dipanggil dengan parameter maupun tanpa parameter, tergantung dari deklarasi fungsi itu sendiri. Suatu fungsi juga bisa mengembalikan nilai dengan tipe data yang dideklarasikan pada deklarasi fungsinya. Beberapa kategori dari fungsi adalah sebagai berikut:

## Fungsi tanpa parameter dan tanpa return value

Apabila suatu fungsi tidak memiliki parameter, maka ketika fungsi tersebut dipanggil, maka tidak ada parameter yang dikirimkan. Ketika fungsi ini juga tidak memiliki return value, maka ketika dipanggil, fungsi ini juga tidak akan mengembalikan nilai kepada pemanggilnya.

Contoh deklarasi fungsi

```csharp
void nama_fungsi();
```

Contoh cara memanggil

```csharp
nama_fungsi();
```

Contoh kode

```csharp
using System;
namespace ProgrammingFundamental {
    class FunctionExample {
        public void main() {
            value();
        }
        
        void value() {
            int year = 1, period = 5, amount = 5000, inrate = 12;
            float sum = 0;
            sum = amount;
            while(year <= period) {
                sum = sum + (1 + inrate);
                year = year + 1;
            }
            Console.WriteLine("The total amount is {0}", sum);
        }
    }
}
```

Output hasil eksekusi

```
The total amount is 5065
```

## Fungsi dengan parameter dan tanpa return value

Fungsi yang dipanggil perlu mengirimkan parameter, fungsi ini tidak mengembalikan nilai.

Deklarasi fungsi

```csharp
void Value(int a, int b, string str);
```

Cara panggil

```csharp
value(1, 3, "hello world");
```

Contoh kode

```csharp
using System;
namespace ProgrammingFundamental {
    class FunctionExample2 {
        public void main() {
            value(1, 3, "hello world");
        }
        
        void value(int a, int b, string str) {
            Console.WriteLine("nilai dari a adalah: {0}", a);
            Console.WriteLine("nilai dari b adalah: {0}", b);
            Console.WriteLine("nilai dari str adalah: {0}", str);
        }
    }
}
```

Output hasil eksekusi

```
nilai dari a adalah: 1
nilai dari b adalah: 3
nilai dari str adalah: hello world
```

## Fungsi tanpa parameter dan dengan return value

Fungsi yang dipanggil tidak mengirimkan parameter, fungsi ini akan mengembalikan nilai.

Deklarasi fungsi

```csharp
int sum();
```

Cara panggil

```csharp
int result = sum();
```

Contoh kode

```csharp
Using System;

namespace ProgrammingFundamental {
    class FunctionExample3 {
        public void main() {
            int result = sum();
            Console.WriteLine("hasil penjumlahan: {0}", result.ToString());
        }
        
        int sum() {
            int a = 50, b = 80;
            return a + b;
        }
    }
}
```

Output hasil eksekusi

```
hasil penjumlahan: 130
```

## Fungsi dengan parameter dan dengan return value

Fungsi yang dipanggil perlu mengirimkan parameter, fungsi ini mengembalikan nilai.

Deklarasi fungsi

```csharp
int sum(int a, int b);
```

Cara panggil

```csharp
int result = sum(4, 2);
```

Contoh kode

```csharp
using System;

namespace ProgrammingFundamental {
    class FunctionExample4 {
        public void main() {
            int satu = 4, dua = 3;
            int result = sum(satu, dua);
            Console.WriteLine("hasil penjumlahan {0} + {1} = {2}",
                satu.ToString(), dua.ToString(), result.ToString());
        }
        
        int sum(int a, int b) {
            return a + b;
        }
    }
}
```

Output hasil eksekusi

```
hasil penjumlahan 4 + 3 = 7
```

## Fungsi dengan opsional parameter dan tanpa return value

Fungsi bisa dipanggil dengan parameter maupun tanpa parameter, fungsi tidak mengembalikan nilai.

Deklarasi fungsi

```csharp
void pangkat(int a, int kuadrat = 2);
```

Cara panggil

```csharp
pangkat(2);
pangkat(2, 3);
```

Contoh kode

```csharp
using System;
namespace ProgrammingFundamental {
    class FunctionExample5 {
        public void main() {
            pangkat(2);
            pangkat(2, 3);
        }
        
        void pangkat(int a, int kuadrat = 2) {
            int res = 1;
            for(int i=0; i<kuadrat; i++)
                res = res * 2;
            
            Console.WriteLine("{0} pangkat {1} adalah {2}",
                a.ToString(), kuadrat.ToString(), res.ToString());
        }
    }
}
```

Output hasil eksekusi

```
2 pangkat 2 adalah 4
2 pangkat 3 adalah 8
```

## Fungsi dengan opsional parameter dan dengan return value

Fungsi ini bisa dipanggil dengan parameter maupun tanpa parameter, fungsi ini mengembalikan nilai.

Deklarasi fungsi

```csharp
int pangkat(int a, int kuadrat = 2);
```

Cara panggil

```csharp
int res = pangkat(2);
int res2 = pangkat(2, 3);
```

Contoh kode

```csharp
using System;
namespace ProgrammingFundamental {
    class FunctionExample6 {
        public void main() {
            int angka 2, pemangkat = 3;
            int res = pangkat(angka);
            Console.WriteLine("{0} kuadrat adalah {1}",
                angka.ToString(), res.ToString());
            int res2 = pangkat(angka, pemangkat);
            Console.WriteLine("{0} pangkat {2} adalah {1}",
                angka.ToString(), pemangkat.TosTring(), res2.ToString());
        }
        
        int pangkat(int a, int kuadrat = 2) {
            int res = 1;
            for(int i=0; i<kuadrat; i++)
                res = res * a;
            return res;
        }
    }
}
```

Output hasil eksekusi

```
2 kuadrat adalah 4
2 pangkat 3 adalah 4
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://amn.gitbook.io/training/dasar-pemrograman/method.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
