Program Pertama

Struktur Module Program dengan Sub Main, Console.WriteLine, dan sintaks berorientasi baris.

Daftar isi

Topik ini membedah program console VB.NET paling sederhana, mulai dari struktur Module dan Sub Main sampai perintah yang menampilkan teks ke layar. Setelah selesai membaca, struktur setiap program console pada jalur ini akan terbaca sebagai pola yang sama dan bukan sekadar cetakan yang disalin tanpa dipahami. Pembahasan juga mencakup sifat sintaks VB.NET yang berorientasi baris, yaitu pernyataan dipisahkan oleh akhir baris dan tidak menggunakan titik koma.

Struktur Module dan Sub Main#

Setiap program console VB.NET minimal memuat satu Module yang di dalamnya terdapat prosedur Sub Main. Module adalah wadah yang mengelompokkan prosedur dan variabel pada level program, sedangkan anggotanya dapat dipanggil secara langsung tanpa membuat objek lebih dahulu. Di dalam Sub Main itulah pernyataan-pernyataan program ditulis, sehingga prosedur ini disebut titik masuk (entry point), yaitu bagian pertama yang dijalankan oleh runtime .NET ketika program dimulai.

Program berikut adalah program console paling sederhana sekaligus berkas utama topik ini.

vb Program.vb
Module Program

    Sub Main()
        Console.WriteLine("Halo, dunia!")
        Console.WriteLine("Ini program VB.NET pertama.")
    End Sub

End Module
text Keluaran
Halo, dunia!
Ini program VB.NET pertama.

Setiap baris pada program tersebut memegang peran yang tetap pada seluruh program console di jalur ini.

  1. Module Program membuka sebuah modul bernama Program. Nama modul bebas ditentukan, tetapi templat proyek .NET secara default menggunakan nama Program.
  2. Sub Main() mendeklarasikan prosedur utama. Tanda kurung kosong menandakan prosedur ini tidak menerima parameter, sedangkan kata args As String() pada templat bawaan boleh dihapus apabila argumen baris perintah tidak diperlukan.
  3. Console.WriteLine("Halo, dunia!") memanggil metode pada kelas Console untuk menampilkan satu baris teks.
  4. End Sub menutup isi Sub Main, sedangkan End Module menutup modulnya. Setiap pembuka selalu memiliki penutup yang sejajar secara indentasi.

Menampilkan teks dengan Console.WriteLine#

Console.WriteLine menampilkan nilainya ke console lalu memindahkan kursor ke baris berikutnya, sedangkan Console.Write menampilkan nilai tanpa memindahkan kursor. Kedua metode menerima teks, angka, maupun tipe lain dan mengonversinya menjadi string secara otomatis. Perbedaan keduanya tampak pada contoh yang dapat dijalankan berikut.

vb Contoh: perbedaan WriteLine dan Write
Module ContohTulis

    Sub Main()
        Console.WriteLine("baris pertama")
        Console.Write("tanpa pindah baris, ")
        Console.WriteLine("dilanjutkan di sini")
    End Sub

End Module
text Keluaran
baris pertama
tanpa pindah baris, dilanjutkan di sini

Satu aturan pemanggilan yang berlaku sejak awal adalah tanda kurung. Pemanggilan metode yang mengirim argumen selalu menuntut tanda kurung, sehingga Console.WriteLine("Halo") sah tetapi bentuk tanpa tanda kurung ditolak compiler. Untuk metode tanpa argumen seperti Console.Clear, tanda kurung boleh dihilangkan pada pernyataan panggilan, tetapi gaya baku tetap menuliskannya. Pemanggilan Console.WriteLine() tanpa argumen hanya memindahkan kursor ke baris baru, sehingga berguna untuk memberi jarak antarkelompok keluaran.

Sintaks berorientasi baris#

VB.NET adalah bahasa berorientasi baris, yaitu satu pernyataan umumnya ditulis pada satu baris dan akhir baris berfungsi sebagai akhir pernyataan. Tanda titik koma tidak digunakan, sehingga kebiasaan dari bahasa lain yang menaruh ; di akhir baris justru menghasilkan error sintaks. Apabila dua pernyataan pendek ingin diletakkan sebaris, pemisahnya adalah tanda titik dua.

vb Contoh: dua pernyataan dalam satu baris
Module ContohSatuBaris

    Sub Main()
        Dim a As Integer = 10 : Dim b As Integer = 20
        Console.WriteLine(a + b)
    End Sub

End Module
text Keluaran
30

Baris yang panjang boleh diputus ke baris berikutnya. Setelah sebuah operator seperti & atau =, compiler secara otomatis meneruskan pernyataan ke baris berikutnya, sedangkan pemutusan di posisi lain menggunakan garis bawah (_) sebagai tanda sambung.

Sifat berorientasi baris berdampingan dengan sifat kedua VB.NET, yaitu huruf besar-kecil tidak dibedakan. Kata kunci Module, module, dan MODULE dibaca sebagai kata yang sama, demikian pula nama variabel dan metode. Program berikut dikompilasi dan berjalan tanpa error.

vb Contoh: huruf besar-kecil tidak dibedakan
Module contohhuruf

    sub main()
        console.writeline("huruf besar-kecil tidak dibedakan")
    end sub

end module
text Keluaran
huruf besar-kecil tidak dibedakan

Bentuk penulisan pada contoh terakhir memang sah, tetapi bukan gaya yang dianjurkan. Konvensi penulisan yang rapi, termasuk penggunaan huruf kapital pada kata kunci, dibahas pada topik Komentar dan Konvensi.

Dari kode sumber ke keluaran#

VB.NET adalah bahasa terkompilasi, sehingga berkas .vb tidak dijalankan apa adanya. Compiler VB menerjemahkan kode sumber menjadi assembly .dll yang berisi Intermediate Language (IL), selanjutnya runtime .NET mengeksekusi Sub Main di dalamnya dan keluaran muncul di console. Berkas IL inilah yang dijalankan runtime pada platform mana pun .NET SDK-nya terpasang, sehingga kode sumber yang sama dapat dibangun di Windows maupun Linux. Diagram berikut merangkum alurnya.

Program.vbkode sumber VB.NETCompiler VBdotnet buildHalo.dllberisi ILRuntime .NETmenjalankan Sub Mainkeluaran ditampilkan di console
Alur dari kode sumber VB.NET sampai keluaran console

Langkah praktisnya menggunakan .NET SDK melalui dua perintah berikut. Perintah dotnet new membuat proyek dari templat, sedangkan dotnet run mengompilasi sekaligus menjalankannya.

bash
# tidak-dijalankan
# membuat proyek console VB.NET baru bernama Halo
dotnet new console -lang VB -o Halo
# mengganti isi Program.vb dengan kode program di atas melalui editor
# masuk ke folder proyek
cd Halo
# mengompilasi dan menjalankan program
dotnet run
text Transkrip terminal
$ dotnet new console -lang VB -o Halo
The template "Console App" was created successfully.

Processing post-creation actions...
Restoring /home/kal/my-project/build-scratch/dasar-bahasa__t-transkrip/Halo/Halo.vbproj:
  Determining projects to restore...
  Restored /home/kal/my-project/build-scratch/dasar-bahasa__t-transkrip/Halo/Halo.vbproj (in 68 ms).
Restore succeeded.


$ cd Halo
$ dotnet run
Halo, dunia!
Ini program VB.NET pertama.

Templat dotnet new console -lang VB menghasilkan Program.vb yang isinya serupa dengan contoh pada bagian pertama, sehingga penggantian teksnya cukup pada bagian Console.WriteLine saja.

Kesalahan umum#

Tiga kesalahan berikut paling sering muncul saat menulis program console pertama. Ketiganya tertangkap oleh compiler, sehingga perbaikannya cepat dilakukan.

  1. Menaruh titik koma di akhir pernyataan. VB.NET menandai barisnya sebagai error sintaks, dan perbaikannya adalah menghapus tanda tersebut karena akhir baris sudah berperan sebagai akhir pernyataan.
  2. Melupakan End Sub atau End Module. Compiler menuntut setiap pembuka blok memiliki penutupnya, sehingga pesan error muncul bahkan sebelum program dijalankan.
  3. Memanggil metode dengan argumen tanpa tanda kurung. Bentuk berikut ditolak compiler karena argumen dikirim tanpa tanda kurung.
vb
' tidak-dijalankan
Console.WriteLine "Halo, dunia!" ' error: tanda kurung wajib saat mengirim argumen

Perbaikan ketiganya konsisten mengikuti satu pola yang sama, yaitu membaca pesan error pada baris yang disebut compiler lalu menyesuaikan sintaksnya dengan contoh yang sudah berjalan.

Ringkasan#

  • Program console VB.NET terkecil terdiri atas Module Program yang memuat Sub Main, ditutup dengan End Sub dan End Module.
  • Sub Main adalah titik masuk yang dijalankan runtime secara otomatis, sedangkan Console.WriteLine menampilkan satu baris teks dan Console.Write tetap pada baris yang sama.
  • Pernyataan dipisahkan oleh akhir baris tanpa titik koma, huruf besar-kecil tidak dibedakan, dan tanda kurung wajib pada pemanggilan metode yang mengirim argumen.
  • dotnet new console -lang VB membuat proyek, sedangkan dotnet run mengompilasi dan menjalankannya dalam satu langkah.

Referensi#