Wednesday, October 7, 2015

fungsi Jump Statement dalam pemrograman c-sharp (c#)

Jump statement digunakan untuk mentransfer kontrol eksekusi dari suatu bagian ke bagian lain dalam program. Beberapa statement yang termasuk dalam jenis ini sebaiknya diminimalkan penggunaaanya, contohnya goto, continue, dan break. Alasannya adalah karena penggunaan statement-statement tersebut mengurangi kejelasan flow program. Selain itu pula, kemungkinan terjadinya bug juga semakin besar terutama jika bagian-bagian yang akan dilompati tersebut memiliki bagian inisiasi dan terminasi.
a.         Break
Statement ini digunakan untuk melompat keluar dari while, for, dan switch statement yang sudah dibahas sebelumnya. Berikut ini adalah satu contoh penggunaan break:
using System;
namespace csharpku
{
    class ContohBreak
    {
        public static void Main()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("i=" + i);
  if (i == 5)break;
            }
            Console.ReadLine();
        }
    }
}
Dalam contoh di atas, walaupun bentuk perulangan for di atas dispesifikasikan untuk dijalankan sebanyak 10 kali, pada saat nilai mencapai 5, break dijalankan. Akibatnya, eksekusi akan melompat keluar dari badan perulangan. Jadi pada kenyataannya, perulangan hanya dilakukan sebanyak 6 kali.
Tips: gunakan model for semacam ini untuk melakukan perulangan yang jumlah maksimum iterasinya sudah diketahui di awal dan ada kondisi-kondisi tertentu yang mungkin menyebabkan iterasi berhenti sebelum mencapai jumlah maksimumnya. Dengan cara ini, iterasi pasti akan berhenti setelah dijalankan n-kali. Bila yang digunakan adalah bentuk while (kondisi) kemungkinan terjadinya infinite loop lebih besar.
b.        Continue
Continue dapat digunakan dalam semua struktur perulangan, misalnya for dan while. Statement continue ini berfungsi untuk melanjutkan eksekusi program ke iterasi berikutnya dengan melompati statement-statement berikutnya dalam badan loop. Perhatikan contoh berikut:
using System;
namespace csharpku
{
    class ContohContinue
    {
        public static void Main()
        {
            for (int i = 0; i < 10; i++)
            {
                if (i == 5) continue;
                Console.WriteLine("i=" + i);
            }
            Console.ReadLine();
        }
    }
}
Pada contoh di atas, bila i==5, perintah continue akan dijalankan. Akibatnya statement berikutnya dalam badan loop (Console.WriteLine) akan diabaikan dan eksekusi program akan dilanjutkan pada iterasi berikutnya (i=6).
c.         goto
Goto digunakan untuk melanjutkan eksekusi program di label yang sudah didefinisikan sebelumnya. Jika jump statement lainnya penggunaannya terbatas, goto ini termasuk yang lebih bebas, dalam arti kata ia bisa digunakan untuk melakukan lompatan ke bagian mana saja dari program kecuali melompat ke dalam suatu blok.
Berikut adalah contoh penggunaan goto:
using System;
namespace csharpku
{
    class ContohGoto
    {
        public static void Main()
        {
            for (int i = 0; i < 10; i++)
            {
                if (i == 5) goto selesai; Console.WriteLine("i=" + i);
            }
        selesai:
            Console.ReadLine();
        }
    }
}
Statement ini termasuk yang agak kontroversial. Hampir semua buku kuliah dan dosen akan mengharamkan penggunaan goto dalam program. Tidak sedikit orang yang protes terhadap penyertaan statement ini dalam C#. Well, itu di luar wilayah bahasan blog ini. :)
d.        return
Seperti halnya dalam bahasa turunan C lainnya, perintah return digunakan untuk mengembalikan kontrol eksekusi ke pemanggil. Misalnya method A memanggil method B, pada saat perintah return dijalankan dalam method B, maka kontrol eksekusi akan dikembalikan ke method A dan perintah selanjutnya yang akan dijalankan adalah perintah berikutnya dalam method A. Contoh:
using System;
namespace csharpku
{
    class ContohReturn
    {
        public static void FungsiB()
        {
            Console.WriteLine("FungsiB");
            Console.WriteLine("Akan menjalankan return ...");
            return;
        }
        public static void FungsiA()
        {
            Console.WriteLine("FungsiA");
            Console.WriteLine("Akan memanggil FungsiB");
            FungsiB();
            Console.WriteLine("Melanjutkan    perintah    FungsiA berikutnya");
        }
        public static void Main()
        {
            FungsiA(); Console.ReadLine();
        }
    }
}
Ada dua jenis penggunaan return, yaitu return dengan menyertakan suatu nilai dan return tanpa nilai. Return tanpa nilai digunakan dalam method yang tipe nilai kembaliannya void, dengan kata lain method tersebut tidak mengembalikan nilai. Dalam hal ini return hanya berfungsi untuk mengembalikan kontrol eksekusi ke pemanggil.
Jenis penggunaan yang kedua, return dengan menyertakan nilai, selain mengembalikan kontrol eksekusi, juga akan mengembalikan nilai tersebut ke pemanggil. Tipe nilai yang dikembalikan oleh return harus sama dengan tipe nilai kembalian dari method.
e.        Throw
Penggunaan throw ini berkaitan dengan penanganan error (try statement) dalam C#. Throw digunakan untuk membangkitkan exception dalam program. Untuk lebih jelasnya perhatikan contoh berikut.
using System;
namespace csharpku
{
    class ContohThrow
    {
        public static void Main()
        {
            try
            {
                Console.Write("Ketik nama Anda: "); string nama = Console.ReadLine(); if (nama != "risman")
                    throw new System.ApplicationException("Nama tidak dikenal");
                Console.Write("Selamat, Anda termasuk orang terkenal ;)");
            }
            catch (ApplicationException ae)
            {
                Console.WriteLine("Exception: " + ae.Message);
            }
            Console.ReadLine();
        }
    }
}
Dalam program di atas proses utamanya diletakkan dalam blok try, kemudian disertai oleh blok catch. Ini berarti jika ada exception yang ditimbulkan dalam blok try, eksekusi program akan melompat ke block catch (jika tipe exceptionnya sesuai).
Selain dihasilkan/dibangkitkan oleh sistem, misalnya DivideByZeroException dan IndexOutOfRangeException, exception juga bisa dibangkitkan oleh aplikasi. Pada contoh di atas, kondisi nama!=risman itu sendiri pada dasarnya bukan merupakan exception namun aplikasi ingin memperlakukan itu sebagai exception. Untuk keperluan inilah perintah throw digunakan. Jadi jika nama!=risman, maka aplikasi akan membangkitkan exception sehingga eksekusi program akan melompat ke bagian penanganan exception (blok catch).
Exception dijelaskan secara lebih detail pada Posting berikutnya: Debugging dan Penanganan Error.

0 komentar

Post a Comment