DeretCode|

Tips, Trik dan Tutorial
Seputar IT, Coding, Internet Marketing, Keahlian, Pendidikan, Hobi Dan Lainnya
Night :

Menampilkan Data Bertingkat Atau Multi Level Dengan Metode Rekursif Pemrograman

advertisement
    
Tutorial menampilkan data bertingkat dengan metode rekursif
    Rekursif adalah sebuah fungsi perulangan dimana fungsi tersebut memanggil dirinya sendiri secara terus menurus. Dalam dunia nyata contoh rekursif terjadi pada dua buah cermin yang saling berhadapan, sehingga akan saling memantulkan bayanganya atau sebuah mikrophone dihadapkan ke speaker outpunya.
Rekursif pada cermin
Rekursif pada cermin
Rekursif pada sound sistem
Rekursif pada sound sistem

 Dalam dunia pemrograman rekursif bisa dilakukan dengan membuat sebuah methode memanggil dirinya sendiri.
Contoh Penerapan Rekursif

    Dengan metode rekursif kita dapat membuat sebuah menu multi level tak terbatas, kategori artikel, membuat struktur organisasi, membuat multi level group, membuat sistem multi approval dan lain sebagainya. 
Ilustrasi metode rekursif
    Hal menarik dari metode rekursif adalah proses yang terjadi di level atas tidak terhapus atau tertimpa oleh proses di level turunanya tetapi tertahan sampai proses yang terjadi di level turunan selesai. Akibat dari mekanisme ini, semakin banyak turunannya semakin besar memori yang digunakan. Kerennya lagi kalian bisa membuat Artificial Intelligence dengan membuat Neural Network dengan metode rekursif, tentunya tidak sesederhana penjelasan di artikel kali ini.

    Berbeda dengan perulangan yang menggunakan For, While, Do While dan lainnya, yang akan menimpa proses di level sebelumnya yang akan mengakibatkan tidak adanyanya percabangan data.
Ilustrasi metode looping
    Sekarang kita lanjut ke cara implementasinya, tapi karena saya tidak tahu bahasa pemrograman yang kalian kuasai, jadi saya berikan pseudokodnya agar bisa kalian impementasi di bahasa pemrograman masing masing.

Rekursif Algoritma

Berikut adalah preudokod menampilkan data bertingkat menggunakan metode rekursif.
Begin
Call Recursive(0)
Function Recursive(param_id,param_sparator)
    val datas = getDataByParentId(param_id)
    ForEach data in datas 
        param_sparator = param_sparator & "--"
        println(param_sparator & "|" & data)
        Recursive(getIdFrom(data),param_sparator)
    End ForEach
End Function
End

Pada bagian getDataByParentId dan getIdFrom ganti dengan fungsi pengambilan database kalian (Kueri: select * from  [nama_table] where [nama_kolom]= [value])

Contoh Program Rekursif

sebagai contohnya disini saya akan membuat sebuah program sederhana menggunakan vb.net dan c# dengan database sql server.
  1. Silahkan buat database kemudian eksekusi kueri berikut
    create table kategori(id int primary key, kategori varchar(30),parent_id int);
    insert into kategori (id,kategori,parent_id) values(1,'IT',0);
    insert into kategori (id,kategori,parent_id) values(2,'Programmer',1);
    insert into kategori (id,kategori,parent_id) values(3,'Tester',1);
    insert into kategori (id,kategori,parent_id) values(4,'Sistem Analis',1);
    insert into kategori (id,kategori,parent_id) values(5,'Database Designer',1);
    insert into kategori (id,kategori,parent_id) values(6,'Back End',2);
    insert into kategori (id,kategori,parent_id) values(7,'Front End',2);
  2. Buat sebuah program console app dan copy paste code berikut
    Systex versi vb.net:
    
    Imports System.Data.SqlClient
    
    Module Module1
    
        Sub Main()
            Recursive("0", "")
            Console.ReadLine()
        End Sub
    
        Sub Recursive(ByVal id As String, ByVal sparator As String)
            Dim datas As DataTable = getDataByParentId(id)
            For Each data As DataRow In datas.Rows
                sparator = sparator & "--"
                Console.WriteLine(sparator & "|" & data.Item("kategori"))
                Recursive(data.Item("id"), sparator)
            Next
        End Sub
    
        Function getDataByParentId(ByVal id As String) As DataTable
            Dim ds As New DataSet
            'Ganti dengan koneksi database kalian
            Dim sqlcon = New SqlConnection("DATA SOURCE=ANNAJIYAH\SQLEXPRESS;INITIAL CATALOG=Rekursif; USER ID=sa; PASSWORD=123")
            Dim query = "select * from kategori where parent_id = '" & id & "'"
            sqlcon.Open()
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(query, sqlcon)
            adapter.Fill(ds)
            sqlcon.Close()
            Return ds.Tables(0)
        End Function
      
    Systex versi c#:
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Rekursif_csharp
    {
        class Program
        {
            static void Main(string[] args){
                Program.Recursive("0","");
                Console.ReadLine();
            }
            static void Recursive(String id,String sparator){
                DataTable datas = getDataByParentId(id);
                foreach (DataRow data in datas.Rows){
                    sparator += "--";
                    Console.WriteLine(sparator + "|" + data.ItemArray[1]);
                    Recursive(data.ItemArray[0].ToString(), sparator);
                }
            }
    
            static DataTable getDataByParentId(String id){
                DataSet ds = new DataSet();
                SqlConnection con = new SqlConnection("DATA SOURCE=ANNAJIYAH\\SQLEXPRESS;INITIAL CATALOG=Rekursif; USER ID=sa; PASSWORD=123");
                String query = "select * from kategori where parent_id = '" + id + "'";
                con.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(query, con);
                con.Close();
                adapter.Fill(ds);
                return ds.Tables[0];
            }
        }
    }
Silahkan kalian jalankan programnya, maka hasilnya akan seperti gambar berikut:
Contoh Program Rekursif

    Terimakasih sudah mampir di artikel cara menampilkan data bertingkat dengan metode rekursif. Jangan lupa di share jika kalian merasa artikel ini bermanfaat, kalau ada pertanyaan silahkan tulis di kolom komentar. Good luck

advertisement



1 komentar:

  1. Terimakasih mas, Penjelasannya sangat jelas

    BalasHapus

Silahkan berkomentar dengan baik dan bijak!