Jumat, 04 April 2014

MEMBUAT BELAH KETUPAT MENGGUNAKAN VISUAL BASIC

SOURCE KODE DAN ALGORITMA MEMBUAT BELAH KETUPAT DENGAN VISUAL BASIC

Contoh keluaran yang dihasilkan:



 Saya sering melihat artikel yang sama di blog-blog yang lain tentang cara membuat pola belah ketupat dengan string bintang (*) tapi hanya membeberkan source kodenya saja. Dan bahkan pembaca hanya bisa meniru atau sekedar copy paste saja dari artikel tersebut tanpa mengetahui algoritma dan maksud dari tiap baris kode tersebut. Oke disini kita akan kupas semua algoritma dan source kode dari pembuatan pola tersebut hingga pembaca bisa mencoba kembali membuat pola tersebut tanpa bantuan membaca artikel ini kembali.

Bila dilihat dari contoh:


'baris 1: Spasi=x=4,bintang=y=1
'baris 2: x=3,y=3
'baris 3: x=2,y=5
'baris 4: x=1,y=7
'baris 5: x=0,y=9
'baris 6: x=1,y=7
'baris 7: x=2,y=5
'baris 8: x=3,y=3
'baris 9: x=4,y=1

Dari contoh diatas kita akan membuat beberapa variabel;
spasi, bintang=1(di awal), bintang_maksimal(baris 5)=9, perubahan_bintang(per baris)=2.

lalu kita buat rumus;
spasi=(bintang_maksimal-1)/2
bintang=bintang+perubahan_bintang

kata kunci yang harus di gunakan yaitu suatu loop for, untuk menampilkan spasi,bintang dan garis baru. karena pola terbentuk hanya dari ketiga karakter ini. Sementara variabel spasi dan bintang kita deklarasikan untuk membatasi suatu loop.

sekarang kita tuangkan ke dalam source kode:

Module module1
    Sub main()
        'module1 membuat sebuah pola belah ketupat
        Dim spasi, bintang, bintang_maksimal, perubahan_bintang, i, j As Integer 'mendeklarasikan variabel
        bintang_maksimal = 9 'inisialisasi variabel
        perubahan_bintang = 2
        For bintang = 1 To bintang_maksimal Step perubahan_bintang 'loop menampilkan gabungan ketiga karakter(spasi,bintang,garis baru)
            spasi = ((bintang_maksimal - bintang) / 2) 'inisialisasi variabel spasi
            For i = 1 To spasi Step 1 'loop menampilkan spasi
                Console.Write(" ")
            Next
            For j = 1 To bintang Step 1 'loop menampilkan bintang
                Console.Write("*")
            Next
            Console.WriteLine() 'menampilkan garis baru
        Next
    End Sub
End Module



Mungkin sekarang anda bingung kenapa keluaran yang ditampilkan hanya membentuk setengah pola belah ketupat. Jawabanya "Belum Beres Cuy". Saya memotong menjadi dua bagian karena mustahil membentuk sebuah pola belah ketupat hanya menggunakan satu loop untuk menggabungkan tampilan dari ketiga karakter yaitu Spasi(" "),bintang("*"),dan garis baru.
Oke begini kelanjutanya...

Tampilan keluaran sejauh ini:



Sekarang yang harus kita selesaikan adalah menampilkan kembali bintang di baris selanjutnya dengan satu spasi dan 7 bintang. Yang

berarti menambah satu spasi di baris berikutnya dan megurangi dua bintang di baris berikutnya.


    *
   ***
  *****
 *******
*********
 *******    'baris 1: x=1,y=7
  *****        'baris 2: x=2,y=5
   ***        'baris 3: x=3,y=3
    *        'baris 4: x=4,y=1

yang berarti sekarang kita ubah nilai dari variabel variabel sebelumnya;perubahan_bintang=-2, bintang=bintang_maksimal-2. Dan kita

harus mendeklarasikan bintang_minimum dan menginisialisasikanya dengan nilai 0, agar menjadi batas minimum suatu loop.

Sekarang kita sempurnakan Source kodenya:


Module module1_
    Sub main()
        'module1 membuat sebuah pola belah ketupat
        Dim spasi, bintang, bintang_maksimal, perubahan_bintang, i, j As Integer 'mendeklarasikan variabel
        bintang_maksimal = 9 'inisialisasi variabel
        perubahan_bintang = 2
        For bintang = 1 To bintang_maksimal Step perubahan_bintang 'loop menampilkan gabungan ketiga karakter(spasi,bintang,garis

baru)
            spasi = ((bintang_maksimal - bintang) / 2) 'inisialisasi variabel spasi
            For i = 1 To spasi Step 1 'loop menampilkan spasi
                Console.Write(" ")
            Next
            For j = 1 To bintang Step 1 'loop menampilkan bintang
                Console.Write("*")
            Next
            Console.WriteLine() 'menampilkan garis baru
        Next
        Dim bintang_minimal = 0
        perubahan_bintang = -2
        bintang = 7
        For bintang = 7 To bintang_minimal Step perubahan_bintang
            spasi = ((bintang_maksimal - bintang) / 2)
            For i = 1 To spasi Step 1
                Console.Write(" ")
            Next
            For j = 1 To bintang Step 1
                Console.Write("*")
            Next
            Console.WriteLine()
        Next
    End Sub
End Module

SELAMAT BELAJAR!!!!


Anda juga bisa memodifikasi source kode yang saya berikan dengan mengganti inisialisasi program maksimum dengan membaca nilai yang

dimasukan pengguna menggunakan console.readline. Seperti Source kode berikut ini:

module module1
    Sub main()
        'module1 membuat sebuah pola belah ketupat
        Dim spasi, bintang, bintang_maksimal, perubahan_bintang, i, j As Integer 'mendeklarasikan variabel
        Console.WriteLine("POLA BELAH KETUPAT KARYA HARI ACHMAD")
        Console.Write("Masukan angka ganjil untuk menjadi bintang yang terbanyak: ")
        bintang_maksimal = Console.ReadLine()
        perubahan_bintang = 2
        For bintang = 1 To bintang_maksimal Step perubahan_bintang 'loop menampilkan gabungan ketiga karakter(spasi,bintang,garis

baru)
            spasi = ((bintang_maksimal - bintang) / 2) 'inisialisasi variabel spasi
            For i = 1 To spasi Step 1 'loop menampilkan spasi
                Console.Write(" ")
            Next
            For j = 1 To bintang Step 1 'loop menampilkan bintang
                Console.Write("*")
            Next
            Console.WriteLine() 'menampilkan garis baru
        Next
        Dim bintang_minimal = 0
        perubahan_bintang = -2
        bintang = bintang_maksimal - 2
        For bintang = bintang_maksimal - 2 To bintang_minimal Step perubahan_bintang
            spasi = ((bintang_maksimal - bintang) / 2)
            For i = 1 To spasi Step 1
                Console.Write(" ")
            Next
            For j = 1 To bintang Step 1
                Console.Write("*")
            Next
            Console.WriteLine()
        Next
    End Sub
End Module

KELUARAN TERAKHIR: