Structure



Visual Basic menyediakan perintah Structure untuk pembentukan tipe data terstruktur, misalnya kita akan mengolah data ujian mahasiswa dengan tabel sebagai berikut :

Nim
Nama
Tugas
Mid
Semester

















Dimana dapat ditulis sebagai struktur berikut ini :

Structure Ujian
  <VBFixedString(10)> Public Nim As String
  <VBFixedString(30)> Public Nama As String
  Public Tugas, Mid, Semester As Single
End Structure
 
Catatan :

Sebagaimana telah dinyatakan sebelumnya bahwa secara default string pada Visual Basic adalah variable length, dan untuk membentuk string dengan fixed length kita membutuhkan vbFixedStringAttribute Class, dimana pada awal deklarasi string kita mencantumkan <VBFixedString(ukuran)>

Salah satu keunggulan pada Structure di Visual Basic adalah kita dapat menambahkan koding kedalamnya untuk membuat metoda dan property, contoh misalnya kita akan menambah property Rata-rata untuk menghitung nilai rata-rata Tugas, Mid dan Semester, sehingga deklarasi Structure dapat ditulis menjadi :

Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModStruct
    Structure Ujian
      <VBFixedString(10)> Public Nim As String
      <VBFixedString(30)> Public Nama As String
      Public Tugas,Mid,Semester As Single
      Public ReadOnly Property RataRata() As Single
         Get
           Return (Tugas+Mid+Semester)/3
         End Get
      End Property
    End Structure
    Dim DaftarUjian As Ujian
    Sub Main()
        DaftarUjian.Nim = "920403024"
        DaftarUjian.Nama = "Hendra Soewarno"
        DaftarUjian.Tugas = 90
        DaftarUjian.Mid = 90
        DaftarUjian.Semester = 90
        Console.WriteLine(DaftarUjian.RataRata)
    End Sub
End Module

Contoh program membaca data ke array structure dan mencetak kembali :

Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModStruct
    Structure Ujian
      <VBFixedString(10)> Public Nim As String
      <VBFixedString(30)> Public Nama As String
      Public Tugas,Mid,Semester As Single
      Public ReadOnly Property RataRata() As Single
         Get
           Return (Tugas+Mid+Semester)/3
         End Get
      End Property
    End Structure
    Dim Jd As Integer = 0
    Dim DaftarUjian() As Ujian
    Private Sub BacaData
      Dim Nim As String
      Do
        Console.WriteLine("Record ke {0}",Jd+1)
        Console.Write("Nim : ")
        Nim = Console.ReadLine()
        If Nim.Trim.Length > 0
           ReDim Preserve DaftarUjian(Jd)
           DaftarUjian(jd).Nim = Nim
           Console.Write("Nama : ")
           DaftarUjian(jd).Nama = Console.ReadLine()
           Console.Write("Tugas : ")
           DaftarUjian(jd).Tugas = Console.ReadLine()
           Console.Write("Mid : ")
           DaftarUjian(jd).Mid = Console.ReadLine()
           Console.Write("Semester : ")
           DaftarUjian(jd).Semester = Console.ReadLine()
           Jd = Jd + 1
        End If
      Loop Until Len(Trim(Nim)) = 0
    End Sub
    Private Sub CetakData()
      Dim Record As Ujian
      Console.WriteLine("Daftar Ujian Mahasiswa")
      Console.WriteLine
      Console.WriteLine("Nim        Nama                            T      M      S      R     ")
      Console.WriteLine("----------------------------------------------------------------------")
      For Each Record In DaftarUjian
          Console.WriteLine("{0} {1} {2,6:f2} {3,6:f2} {4,6:f2} {5,6:f2}", _
             Record.Nim.PadRight(10), _
             Record.Nama.PadRight(30), _
             Record.Tugas, _
             Record.Mid, _
             Record.Semester, _
             Record.RataRata)
      Next
    End Sub
           
    Sub Main()
        Call BacaData
        Call CetakData
    End Sub
End Module