Sunday 4 September 2016

10. Methods C# (Basic/Dasar)

Hello guys semoga tetap semangat untuk belajar koding, kali ini kita akan membahas tentang methods, lalu apakah method itu sebenarnya? Method adalah kumpulan dari statement yang membentuk sebuah task, mungking dalam bahasa pemrograman lain methods juga disebut sebagai function atau procedure. Setiap program dalam C# terdiri minimal mempunyai  sebuah class dan Main method.

Untuk menggunakan method kita harus:
  • Mendefinisikan Method
  • Memanggil Method tesebut
Mendefinisikan Method dalam C#:

Berikut adalah format untuk membuat sebuah method dalam C#:

<access specifier> <return type> <method name> (Parameter List)
{
   Method Body
}

Berikut adalah penjelasan dari format diatas:

  • Access Specifier: Mengatur akses specifier terhadap class lain, apakah boleh diakse atau tidak, akses specifier telah kita bahas pada bab sebelumnya. Akses specifier bisa berupa public, private, protected, internal atau protected internal.
  • Return Type: Method mungkin akan mengembalikan nilai bisa berupa hasil perhitungan atau object sesuai dengan tipe data yang akan dikembalikan. Jika method tidak mengembalikan nilai apa - apa maka return type bisa disidefinisikan dengan void.
  • Method Name: Nama untuk method harus unique tidak boleh sama dengan identifier yang lain di dalam class. Nama method bersifat case sensitive (huruf besar dan kecil akan dianggap berbeda).
  • Parameter List: Berada diantara tanda kurung (parameter list),  parameter list digunakan untuk memberikan data masukan ke dalam method atau data keluaran dari method. Parameter list bersifat optional bisa ada atau tidak. Mungkin ada juga method yang tidak memerlukan parameter.
  • Method Body: Adalah bagian yang merupakan kumpulan instruksi atau statement dalam method.
Berikut ini adalah contoh pendefinisian method untuk menentukan nilai terbesar dari dua buah nilai. Dua buah nilai itu akan dimasukkan kedalam parameter untuk dibandingkan dan mengembalikan salah satu yang paling besar.

class NumberManipulator
{
   public int FindMax(int num1, int num2)
   {
      /* local variable declaration */
      int result;

      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result;
   }
   ...
}

Memanggil Method di dalam C#:

Untuk memanggil method di dalam C# kita cukup memanggil namanya saja. Contoh berukut mengilustrasikan pemanggilan method dalam C#.

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int FindMax(int num1, int num2)
      {
         /* local variable declaration */
         int result;
         
         if (num1 > num2)
            result = num1;
         else
            result = num2;
         return result;
      }
      static void Main(string[] args)
      {
         /* local variable definition */
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = new NumberManipulator();

         //calling the FindMax method
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

Setelah program di eksekusi akan memberikan hasil sebagai berikut:

Max value is : 200

Kita juga dapat memanggil method dari class dengan menggunakan instance dari class. Sebagai contoh method FindMax adalah method dari class NumberManipulator, Kita bisa memanggil nya dari class lain sebagai contoh adalah class Test.

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int FindMax(int num1, int num2)
      {
         /* local variable declaration */
         int result;
         
         if(num1 > num2)
            result = num1;
         else
            result = num2;
         
         return result;
      }
   }
   
   class Test
   {
      static void Main(string[] args)
      {
         /* local variable definition */
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = new NumberManipulator();
         
         //calling the FindMax method
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

Setelah program dijalankan akan memberikan hasil sebagai berikut:

Max value is : 200

Pemanggilan Method secara Recursive:

Method dapat memanggil dirinya sendiri, hal ini desebut sebagi recursive. Berikut adalah contoh penghitungan factorial dengan menggunakan recursive.

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int factorial(int num)
      {
         /* local variable declaration */
         int result;
         if (num == 1)
         {
            return 1;
         }
         else
         {
            result = factorial(num - 1) * num;
            return result;
         }
      }
      
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         //calling the factorial method
         Console.WriteLine("Factorial of 6 is : {0}", n.factorial(6));
         Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7));
         Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8));
         Console.ReadLine();
      }
   }
}

Hasil keluaran program setelah program selesai dijalankan:

Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320

Pemanggilan Method dengan Parameter:

Ketika method didefinisikan menggunakan parameter, maka untuk memanggilnya juga harus menggunakan parameter. Ada tiga cara untuk memasukkan data sebagai parameter ke dalam methods:

1. Parameter Nilai:

Paramenter jenis ini adalah default ketika kita mendifinisikan method, maksud dari parameter nilai adalah ketika kita memasukkan sebuah nilai kedalam method dan ada perubahan nilai pada parameter tersebut maka tidak akan berpengaruh pada nilai aslinya atau dengan kata lain nilai akan dicopy terlebih dahulu sebelum digunakan.

Berikut adalah contoh parameter nilai:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(int x, int y)
      {
         int temp;
         
         temp = x; /* save the value of x */
         x = y;    /* put y into x */
         y = temp; /* put temp into y */
      }
      
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* local variable definition */
         int a = 100;
         int b = 200;
         
         Console.WriteLine("Before swap, value of a : {0}", a);
         Console.WriteLine("Before swap, value of b : {0}", b);
         
         /* calling a function to swap the values */
         n.swap(a, b);
         
         Console.WriteLine("After swap, value of a : {0}", a);
         Console.WriteLine("After swap, value of b : {0}", b);
         
         Console.ReadLine();
      }
   }
}

Setelah program selesai dieksekusi maka akan memberikan hasil sebagai berikut, bisa kita lihat manipulasi didalam method tidak berpengaruh pada nilai asli.

Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :100
After swap, value of b :200

2. Parameter Reference:

Parameter jenis ini menuntuk pada lokasi memory dari variabel, sehingga ketika melakukan perubahan pada nilai variable tersebut akan mengubah nilai asli dari variabel tersebut. Untuk mendefinisikan parameter refecence kita bisa menggunakan keyword ref pada saat mendefinisikan method.

Contoh berikut mengilustrasikan parameter reference:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(ref int x, ref int y)
      {
         int temp;

         temp = x; /* save the value of x */
         x = y;    /* put y into x */
         y = temp; /* put temp into y */
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a = 100;
         int b = 200;

         Console.WriteLine("Before swap, value of a : {0}", a);
         Console.WriteLine("Before swap, value of b : {0}", b);

         /* calling a function to swap the values */
         n.swap(ref a, ref b);

         Console.WriteLine("After swap, value of a : {0}", a);
         Console.WriteLine("After swap, value of b : {0}", b);
 
         Console.ReadLine();

      }
   }
}

Hasil keluaran program setelah dieksekusi adalah sebagai berikut, terlihat nilai asli variabel ikut berubah ketika nilainya diubah di dalam method:

Before swap, value of a : 100
Before swap, value of b : 200
After swap, value of a : 200
After swap, value of b : 100

3. Parameter Output:

Parameter output digunakan jika kita ingin mengembalikan hasil lebih dari satu nilai. Parameter output hampir sama dengan parameter reference. Perbedaannya adalah method akan mengembalikan nilai dan akan di assign ke variabel dan tidak langsung masuk ke lokasi memory.

Berikut adalah contoh untuk mengilustrasikan parameter output:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValue(out int x )
      {
         int temp = 5;
         x = temp;
      }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a = 100;
         
         Console.WriteLine("Before method call, value of a : {0}", a);
         
         /* calling a function to get the value */
         n.getValue(out a);

         Console.WriteLine("After method call, value of a : {0}", a);
         Console.ReadLine();

      }
   }
}

Setelah program dijalankan akan memberikan hasil sebagai berikut:

Before method call, value of a : 100
After method call, value of a : 5

Parameter output sangat bermanfaat ketika kita ingin menginisialisasi variabel yang didefinisikan tanpa nilai, berikut adalah contoh program untuk mengilustrasikannya:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void getValues(out int x, out int y )
      {
          Console.WriteLine("Enter the first value: ");
          x = Convert.ToInt32(Console.ReadLine());
          Console.WriteLine("Enter the second value: ");
          y = Convert.ToInt32(Console.ReadLine());
      }
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         
         /* local variable definition */
         int a , b;
         
         /* calling a function to get the values */
         n.getValues(out a, out b);
         
         Console.WriteLine("After method call, value of a : {0}", a);
         Console.WriteLine("After method call, value of b : {0}", b);
         Console.ReadLine();
      }
   }
}

Ketika program dijalankan makan akan meminta kita untuk memasukkan nilai a dan b, kemudian nilai input yang kita masukkan akan di assign ke a dan b.

Enter the first value:
7
Enter the second value:
8
After method call, value of a : 7
After method call, value of b : 8

Ok guys sekian dulu tutorial kali ini sampai ketemu ditutorial berikutnya Nullables.

No comments:

Post a Comment