Showing posts with label [VB.Net] Basic Algorithm. Show all posts
Showing posts with label [VB.Net] Basic Algorithm. Show all posts

Tuesday, January 6, 2009

Fibonacci Sequence [Iterative & Recursive]



Fibonacci Sequence / Deret Fibonacci adalah suatu deret matematika yang berasal dari penjumlahan dua bilangan sebelumnya, Algoritma ini ditemukan oleh Leonardo Pissano Fibonacci

Di bawah ini adalah algoritma berikut sintaksnya untuk Fibonacci sequence versi iterative dan recursive di VB.Net / Visual Basic 2008 :


Public Class FibonacciSequence
Dim angka() As Long

Private Sub tombolfibonacci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tombolfibonacci.Click
Dim n As Integer
ReDim angka(Val(TextBox1.Text) - 1)

'Aktifkan salah satu fungsi yang ingin dipakai
'=====================================
'Iteratif_fibonacci()
'rekursif_fibonacci(0)
'=====================================
End Sub

'Versi Iterative Fibonacci
Function Iteratif_fibonacci()
Dim i As Integer

For i = 0 To angka.Length - 1 Step +1
If (i = 0 Or i = 1) Then
angka(i) = i
Else
angka(i) = angka(i - 1) + angka(i - 2)
End If
Next i

For i = 0 To angka.Length - 1 Step +1
TextBox2.Text = TextBox2.Text & angka(i) & " , "
Next i
End Function

'Versi Recursive Fibonacci
Function rekursif_fibonacci(ByVal i As Integer)
If i < angka.Length Then
If (i = 0 Or i = 1) Then
angka(i) = i
Else
angka(i) = angka(i - 1) + angka(i - 2)
End If
TextBox2.Text = TextBox2.Text & angka(i) & " , "
i = i + 1
rekursif_fibonacci(i)
Else
Exit Function
End If
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Clear()
TextBox2.Clear()
TextBox1.Focus()
End Sub
End Class



----- Code'It, Write'It, Share'It, Love'It -----

----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong

Monday, December 22, 2008

Sorting by Bubble Sort, Selection Sort, Insertion Sort & Quick Sort



(klik on the image if want to see real image
)

Sorting adalah proses mengurutkan data sesuai aturan tertentu, tujuannya mengurutkan data dan mempercepat pencarian / searching
  • Ascending atau nondecreasing (dari yang paling kecil ke yang paling besar)
  • Descendng atau nonincreasing (dari yang paling besar ke yang paling kecil)
  • Internal sorting, seluruh data diletakkan di memory
  • External sorting, seluruh data berada pada secondary storage
Di bawah ini adalah algoritma berikut sintaksnya di VB.Net / Visual Basic 2008 untuk sorting atau mengurutkan dengan beberapa metode algoritma , seperti

  • Bubble Sort, kompleksitas algoritma O(n²)
Efisiensi BubbleSort

  • Selection Sort, kompleksitas algoritma 0,5n²+O(n)
Efisiensi Selection Sort

  • Insertion Sort, kompleksitas algoritma O(n²)
Efisiensi Insertion Sort

  • Quick Sort, kompleksitas algoritma O(n log n)
Efisiensi Quick Sort


Kesimpulan :
  • Quick Sort merupakan teknik sorting paling cepat
,- silahkan dipelajari :




Main
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ListBox1.Items.Clear()
ListBox2.Items.Clear()

Dim angka() As Long
Dim n, i As Integer

n = InputBox("Masukkan Banyaknya Angka ? ", "Sorting")

ReDim angka(n - 1)

For i = 0 To angka.Length - 1
angka(i) = InputBox("Masukkan Angka Ke-" & i + 1, "Sorting")
ListBox1.Items.Add(angka(i))
Next

'Aktifkan function yg ingin dipakai
'==================
'Bubble_sort(angka)
'Selection_Sort(angka)
'Insertion_sort(angka)
'Quick_sort(angka, 0, angka.Length - 1)
'==================

For i = 0 To angka.Length - 1
ListBox2.Items.Add(angka(i))
Next

End Sub



Function Bubble Sort
Function Bubble_sort(ByRef angka() As Long)
Dim i, j As Integer
Dim temp As Long

For i = 0 To angka.Length - 1
For j = angka.Length - 1 To i + 1 Step -1
If angka(j - 1) > angka(j) Then
'tukar
temp = angka(j)
angka(j) = angka(j - 1)
angka(j - 1) = temp
End If
Next
Next
End Function



Function Selection Sort
Function Selection_Sort(ByVal angka() As Long)
Dim i, j, temp As Integer
Dim bucket As Long

For i = 0 To angka.Length - 2
temp = i
For j = i + 1 To angka.Length - 1
If (angka(j) < temp =" j"> i) Then
'tukar
bucket = angka(temp)
angka(temp) = angka(i)
angka(i) = bucket
End If
Next
End Function



Function Insertion Sort
Function Insertion_sort(ByVal angka() As Long)
Dim i, j, temp As Integer

For i = 1 To angka.Length - 1
temp = angka(i)
j = i
Do While (j > 0 AndAlso (angka(j - 1) > temp))
angka(j) = angka(j - 1)
j = j - 1
Loop
angka(j) = temp
Next
End Function



Function Quick Sort
Function Quick_sort(ByVal angka() As Long, ByVal kiri As Integer, ByVal kanan As Integer)
Dim j, k As Integer
Dim temp As Long

If (kiri < kanan) Then
j = kiri
k = kanan + 1

Do

Do
j = j + 1
If j = k Then
GoTo keluar
End If
Loop While (angka(j) < angka(kiri) AndAlso j < k)

keluar:

Do
k = k - 1
Loop While (angka(k) > angka(kiri))

If (j < k) Then
'tukar
temp = angka(j)
angka(j) = angka(k)
angka(k) = temp
End If
'Console.WriteLine(angka(j) & " " & angka(k))
Loop While (j < k + 1)

'tukar
temp = angka(kiri)
angka(kiri) = angka(k)
angka(k) = temp

'recursive
Quick_sort(angka, kiri, k - 1)
Quick_sort(angka, k + 1, kanan)

End If

End Function



----- Code'It, Write'It, Share'It, Love'It -----
----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong

Sunday, December 21, 2008

Random Berulang & Random Tak Berulang



(klik on the image if want to see real image)

Di bawah ini adalah algoritma berikut sintaksnya untuk menggenerate random angka baik berulang atau tidak berulang di VB.Net / Visual Basic 2008,- silahkan dipelajari :


Public Class Random

Private Sub SimpleButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SimpleButton1.Click
Dim angka((Val(TextBox1.Text) - 1)) As Integer
Dim acak As New Random
Dim arrlist As New ArrayList
Dim i, angka2 As Integer

ListBox1.Items.Clear()
ListBox2.Items.Clear()

For i = 0 To angka.Length - 1
angka(i) = (acak.Next(Val(TextBox1.Text)) - 1) + 2
ListBox1.Items.Add(angka(i))
Next

i = 0

Do
angka2 = (acak.Next(Val(TextBox1.Text)) - 1) + 2
If Not arrlist.Contains(angka2) Then
arrlist.Add(angka2)
ListBox2.Items.Add(arrlist.Item(i))
i = i + 1
End If
Loop Until (i > Val(TextBox1.Text) - 1)

End Sub

End Class


----- Code'It, Write'It, Share'It, Love'It -----
----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong

Friday, December 19, 2008

Remove Duplicate Array



(klik on the image if want to see real image)

Algoritma remove duplicate array adalah algoritma untuk meremove inputan angka yang sama, contoh :

Input : 2,3,5,2,2,5,6,5,6,7

Result : 2,3,5,6,7

Di bawah ini adalah algoritma berikut sintaksnya untuk meremove duplikasi array di VB.Net / Visual Basic 2008,- silahkan dipelajari :


Public Class RemoveDuplicateArray

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
ListBox2.Items.Clear()

Dim angka() As Long
Dim n, i As Long

n = InputBox("Masukkan banyaknya angka ?", "Angka")

ReDim angka(n - 1)

For i = 0 To n - 1
angka(i) = InputBox("Masukkan Angka ke-" & i + 1, "Angka")
Next

For i = 0 To angka.Length - 1
ListBox1.Items.Add(angka(i))
Next

RemoveDuplicate(angka, n)

End Sub

Function RemoveDuplicate(ByVal angka() As Long, ByVal n As Long)
Dim arrlist As New ArrayList
Dim i As Integer
For i = 0 To angka.Length - 1
If Not arrlist.Contains(angka.GetValue(i)) Then
arrlist.Add(angka.GetValue(i))
End If
Next
angka = arrlist.ToArray(GetType(Long))

For i = 0 To angka.Length - 1
ListBox2.Items.Add(angka(i))
Next
End Function
End Class


----- Code'It, Write'It, Share'It, Love'It -----
----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong

Bilangan Prima




(klik on the image if want to see real image)

Bilangan prima : adalah bilangan yang hanya bisa dibagi 1 dan dirinya sendiri, 4, 6 dan 9 bukan bilangan prima karena 4, 6 dan 9, jika dibagi 2 atau 3 (selain dirinya sendiri dan 1) maka sisa hasil baginya adalah 0, contoh 20 pertama bilangan prima adalah :

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71

Di bawah ini adalah algoritma berikut sintaksnya untuk mendapatkan n bilangan prima pertama di VB.Net / Visual Basic 2008,- silahkan dipelajari :

Public Class BilanganPrima

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ListBox1.Items.Clear()

Dim n As Long
Dim a As Long
Dim i As Long
Dim angka() As Long

n = InputBox("Masukkan Banyaknya Angka", "Angka ?")

ReDim angka(n - 1)

For i = 1 To 1000000 Step +1
If a = n Then
GoTo keluar
ElseIf bilprima(i) Then
angka(a) = i
a = a + 1
End If
Next i
keluar:

For i = 0 To n - 1
ListBox1.Items.Add(angka(i))
Next

End Sub



Function bilprima(ByVal i As Long) As Boolean

If i = 2 Then
Return True
ElseIf (i Mod 2 = 0) Or i = 1 Then
Return False
End If

For j As Integer = 2 To i - 1
If i Mod j = 0 Then Return False
Next

Return True

End Function

End Class



----- Code'It, Write'It, Share'It, Love'It -----
----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong

Thursday, December 18, 2008

Palindrome



(klik on the image if want to see real image)

Palindrome : adalah kata, kalimat, bilangan yang jika dibaca dari arah berlainan memiliki tulisan yang sama, untuk lebih lengkapnya silahkan klik disini , Misalkan :

1. KataK
2. KodoK
3. SuguS
4. KasuR RusaK
5. KasuR NababaN RusaK
6. SatoR ArepO TeneT OperA RotaS
7. 121 23 42 56 65 24 32 121

Di bawah ini adalah algoritma berikut sintaksnya untuk mengecek apakah kata ini palindrome atau bukan di VB.Net / Visual Basic 2008,- silahkan dipelajari :


Public Class Palindrome

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str() As String
Dim n, i As Integer

n = InputBox("Masukkan banyaknya string ?", "Cek Palindrome")

ReDim str(n - 1)

For i = 0 To str.Length - 1
str(i) = InputBox("Masukkan Kata Ke-" & i + 1, "Cek Palindrome")
str(i) = UCase(str(i))
ListBox1.Items.Add(str(i))
Next

cekpalindrome(str)

End Sub

Function cekpalindrome(ByVal str() As String)
Dim rts(str.Length - 1) As String
Dim i, j As Integer

For i = 0 To str.Length - 1
For j = Len(str(i)) To 1 Step -1
If Mid(str(i), j, 2) = " " Then
j = j - 1
End If
rts(i) = rts(i) & Mid(str(i), j, 1)
Next j
Next i

For i = 0 To str.Length - 1
If rts(i) = str(i) Then
ListBox2.Items.Add("PALINDROME")
Else
ListBox2.Items.Add("BUKAN PALINDROME")
End If
Next

End Function


End Class



----- Code'It, Write'It, Share'It, Love'It -----
----------- IT Field It's My Passion -----------

Correct Me If I'am Wrong