Saturday, December 24, 2016

Bab 3. Visual Basic .NET Belajar Dari Contoh



3. Struktur Kendali Bagian 1







Struktur Kendali

Visual Basic menyediakan tiga jenis struktur seleksi, yang akan didiskusikan pada bab ini dan bab berikutnya. Struktur seleksi If/Then menyeleksi (melakukan) sebuah aksi (atau runtun aksi) jika kondisi bernilai true atau melompati sebuah aksi (atau runtun aksi) jika kondisi benilai false. Struktur seleksi If/Then/Else melakukan (menyeleksi) sebuah aksi (atau runtun aksi) jika kondisi bernilai true dan melakukan sebuah aksi yang berbeda jika kondisi bernilai false. Struktur Select Case, yang didiskusikan pada Bab 4, melakukan salah satu dari banyak aksi (runtun aksi), bergantung pada nilai dari sebuah ekspresi.

Struktur If/Then dikenal dengan struktur seleksi-tunggal karena ia memilih atau mengabaikan sebuah aksi tunggal (atau sebuah runtun aksi). Struktur If/Then/Else dikenal dengan struktur seleksi-ganda karena memilih di antara dua aksi yang berbeda (atau dua runtun aksi yang berbeda). Struktur Select Case dikenal dengan struktur seleksi-jamak karena memilih di antara berbagai aksi atau runtun aksi yang berbeda.

Visual Basic menyediakan tujuh jenis struktur repetisi, While, Do While/Loop, Do/Loop While, Do Until/Loop, Do/Loop Until, For/Next, dan For Each/Next. Struktur repetisi While, Do While/Loop, dan Do Until/Loop akan dibahas pada bab ini; Do/Loop While, Do Loop/Until, dan For/Next akan dibahas pada Bab 4. Struktur kendali For Each/Next akan dijelaskan pada Bab 6.  

Kata-kata If, Then, Else, End, Select, Case, While, Do, Until, Loop, For, Next, dan Each semuanya adalah katakunci Visual Basic (lihat Gambar 3.1). Visual Basic memiliki himpunan katakunci yang jauh lebih besar dari bahasa pemrograman lainnya.


Struktur Seleksi If/Then
Dalam sebuah program, struktur seleksi memilih di antara beberapa aksi. Sebagai contoh, jika dimisalkan bahwa syarat nilai kelulusan pada suatu ujian adalah 60 (dari skala 100), maka statemen pseudocode

If nilai mahasiswa lebih besar dari atau sama dengan 60
   Tampilkan “Lulus”

menentikan apakah kondisi “nilai mahasiswa lebih besar dari atau sama dengan 60” bernilai true atau false. Jika kondisi bernilai true, maka “Lulus” akan ditampilkan, dan statemen pseudocode berikutnya akan dieksekusi (ingat bahwa pseudocode bukanlah bahasa pemrograman riil). Jika kondisi bernilai false, maka statemen untuk menampilkan akan diabaikan, dan statemen pseudocode berikutnya akan dieksekusi.




Gambar 3.1 Katakunci dalam Visual Basic

Statemen pseudocode tersebut dapat ditulis dalam Visual Basic sebagai

If nilaiMahasiswa >= 60 Then
    Console.WriteLine("Lulus")
End If

Struktur seleksi If/Then tersebut dapat pula ditulis dalam satu baris sebagai

If nilaiMahasiswa >= 60 Then Console.WriteLine("Lulus")

Grafik-alir pada Gambar 3.2 mengilustrasikan struktur If/Then seleksi-tunggal. Grafik-alir ini memuat simbol paling penting: simbol diamond (atau keputusan), yang mengindikasikan bahwa sebuah keputusan harus dibuat. Simbol keputusan memuat sebuah kondisi, yang bisa bernilai true atau false. Simbol keputusan memiliki dua garis yang mengalir keluar. Satu garis mengindikasikan arah yang akan diambil ketika kondisi di dalam simbol bernilai true; garis yang lain mengindikasikan arah yang akan diambil ketika kondisi bernilai false.



Gambar 3.2 Grafik-alir struktur seleksi-tunggal If/Then


Struktur Seleksi If/Then/Else
Seperti yang telah dijelaskan, struktur seleksi If/Then melakukan sebuah aksi (atau runtun aksi) hanya jika kondisi bernilai true; sebaliknya, aksi (runtun aksi) akan dilompati. Struktur seleksi If/Then/Else mengijinkan programer untuk menentukan sebuah aksi (runtun aksi) dilakukan ketika kondisi bernilai true dan melakukan sebuah aksi (runtun aksi) yang berbeda ketika kondisi bernilai false. Sebagai contoh, statemen pseudocode

If nilai mahasiswa lebih besar dari atau sama dengan 60
    Tampilkan “Lulus”
Else
    Tampilkan “Gagal”

akan menampilkan “Lulus” jika nilai mahasiswa lebih dari atau sama dengan 60, dan menampilkan “Gagal” jika nilai mahasiswa kurang dari 60. Pada tiap kasus, setelah pesan ditampilkan, pseudocode berikutnya akan dieksekusi.

Statemen pseudocode If/Then/Else tersebut dapat dituliskan dalam Visual Basic sebagai

If nilaiMahasiswa >= 60 Then
    Console.WriteLine("Lulus")
Else
    Console.WriteLine("Gagal")
End If

Perhatikan bahwa tubuh klausa Else diidentasi sehingga sejajar dengan tubuh klausa If.

Grafik-alir pada Gambar 3.3 mengilustrasikan aliran kendali pada struktur If/Then/Else. Pada model pemrograman aksi/keputusan berikut, di samping simbol lingkaran kecil dan anak-panah, digunakan simbol persegi-panjang (untuk aksi) dan simbol diamond (untuk keputusan).



Gambar 3.3 Grafik-alir struktur seleksi-ganda If/Then/Else


Struktur seleksi If/Then/Else bersarang untuk kondisi jamak dikonstruksi dengan menempatkan struktur seleksi If/Then/Else di dalam struktur If/Then/Else lainnya. Sebagai contoh, statemen pseudocode berikut akan menampilkan “A” untuk nilai ujian yang lebih besar dari atau sama dengan 90, “B” untuk nilai dalam rentang 80-89, “C” untuk nilai dalam rentang 70-79, “D” untuk nilai dalam rentang 60-69, dan “F” untuk nilai lainnya.

If nilai mahasiswa lebih besar dari atau sama dengan 90
    Tampilkan “A”
Else
    If nilai mahasiswa lebih besar dari atau sama dengan 80
        Tampilkan “B”
    Else
        If nilai mahasiswa lebih besar dari atau sama dengan 70
            Tampilkan “C”
        Else
            If nilai mahasiswa lebih besar dari atau sama dengan 60
                Tampilkan “D”
            Else
                Tampilkan “F”

Pseudocode di atas dapat dituliskan dalam Visual Basic sebagai

If nilaiMahasiswa >= 90 Then
    Console.WriteLine("A")
Else
    If nilaiMahasiswa >= 80 Then
        Console.WriteLine("B")
    Else
        If nilaiMahasiswa >= 70 Then
            Console.WriteLine("C")
        Else
            If nilaiMahasiswa >= 60 Then
                Console.WriteLine("D")
            Else
                Console.WriteLine("F")
            End If
        End If
    End If
End If

Jika nilaiMahasiswa lebih besar dari atau sama dengan 90, maka empat kondisi pertama akan bernilai true, tetapi hanya statemen Console.WriteLine dalam tubuh pengujian pertama yang akan dieksekusi. Setelah Console.WriteLine tersebut dieksekusi, klausa Else dari statemen If/Then/Else sebelah luar dilompati.

Kebanyakan programer Visual Basic lebih suka menulis struktur If/Then/Else tersebut menggunakan katakunci ElseIf sebagai

If nilaiMahasiswa >= 90 Then
    Console.WriteLine("A")
ElseIf nilaiMahasiswa >= 80 Then
    Console.WriteLine("B")
ElseIf nilaiMahasiswa >= 70 Then
    Console.WriteLine("C")
ElseIf nilaiMahasiswa >= 60 Then
    Console.WriteLine("D")
Else
    Console.WriteLine("F")
End If


Struktur Repetisi While
Struktur repetisi memampukan programer untuk menentukan sebuah aksi yang akan diulang, bergantung pada nilai dari kondisi. Statemen pseudocode

While masih terdapat item pada daftar belanja
    Beli item berikutnya
    Hapus dari daftar belanja

menjelaskan aksi repetitif yang terjadi pada saat seseorang berbelanja. Kondisi, “masih terdapat item pada daftar belanja” dapat bernilai true atau false. Jika bernilai true, maka aksi “Beli item berikutnya” dan “Hapus dari daftar belanja” akan dilakukan secara berurutan. Kedua aksi ini dieksekusi secara berulang ketika kondisi tetap bernilai true. Jika kondisi bernilai false, maka repetisi akan berhenti, dan statemen pertama yang berada setelah struktur repetisi akan dieksekusi.

Sebagai contoh dari sebuah struktur While, perhatikan program berikut yang didesain untuk mencari angka pertama (yang dipangkat dua) yang lebih besar dari 1000 (kode 3.1). Pada baris 7, dipakai sebuah fitur Visual Basic yang memampukan penginisialisasian variabel digabungkan dengan deklarasinya. Ketika struktur While dieksekusi (baris 11), hasil bernilai 2. Variabel hasil secara berulang dikalikan dengan 2 (baris 13), yang menghasilkan 4, 8, 16, 32, 64, 128, 256, 512, dan 1024. Ketika hasil menjadi 1024, kondisi hasil <= 1000 di dalam struktur While menjadi false. Ini akan menghentikan repetisi, dimana 1024 menjadi nilai akhir dari hasil. Eksekusi akan berlanjut ke statemen berikutnya yang berada setelah katakunci End While.

Grafik-alir pada Gambar 3.4 mengilustrasikan aliran kendali dari struktur repetisi While, yang tercantum pada kode 3.1. Perhatikan bahwa (di samping simbol lingkaran kecil dan anak-panah) grafik-alir hanya memuat simbol persegi-panjang dan simbol diamond.



Gambar 3.4 Grafik-alir struktur repetisi While

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
' Kode 3.1: While.vb
' Demonstrasi struktur While.

Module modWhile

    Sub Main()
        Dim hasil As Integer = 2

        ' struktur mengalikan dan menampilkan hasil
        ' ketika hasil kurang dari atau sama dengan 1000
        While hasil <= 1000
            Console.Write("{0} ", hasil)
            hasil = hasil * 2
        End While

        Console.WriteLine() ' menampilkan baris kosong

        ' menampilkan hasil
        Console.WriteLine("Pangkat dua terkecil " & _
           "yang lebih besar dari 1000 adalah {0}", hasil)
    End Sub ' Main

End Module ' modWhile
2 4 8 16 32 64 128 256 512
Pangkat dua terkecil yang lebih besar dari 1000 adalah 1024


Struktur Repetisi Do While/Loop
Struktur repetisi Do While/Loop berperilaku seperti struktur repetisi While. Sebagai suatu contoh dari sebuah struktur Do While/Loop, perhatikan versi lain dari program yang didesain untuk mencari pangkat dua pertama yang lebih besar dari 1000 (kode 3.2).


Ketika struktur Do While/Loop dieksekusi, nilai dari hasil adalah 2. Variabel hasil secara berulang dikalikan dengan 2, yang menghasilkan nilai-nilai 4, 8, 16, 32, 64, 128, 256, 512, dan 1024. Ketika hasil menjadi 1024, kondisi di dalam struktur Do While/Loop, hasil <= 1000, menjadi false. Ini akan menghentikan repetisi, dnegan nilai akhir dari hasil adalah 1024. Eksekusi program berlanjut ke statemen pertama yang berada setelah struktur Do While/Loop. Grafik-alir pada Gambar 3.5 mengilustrasikan aliran kendali pada struktur repetisi Do While/Loop, yang identik dengan aliran kendali pada struktur repetisi While pada Gambar 3.4.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
' Kode 3.2: DoWhile.vb
' Demonstrasi struktur DoWhile.

Module modDoWhile

    Sub Main()
        Dim hasil As Integer = 2

        ' struktur mengalikan dan menampilkan hasil
        ' ketika hasil kurang dari atau sama dengan 1000
        Do While hasil <= 1000
            Console.Write("{0} ", hasil)
            hasil = hasil * 2
        Loop

        Console.WriteLine() ' menampilkan baris kosong

        ' menampilkan hasil
        Console.WriteLine("Pangkat dua terkecil " & _
           "yang lebih besar dari 1000 adalah {0}", hasil)
    End Sub ' Main

End Module ' modDoWhile
2 4 8 16 32 64 128 256 512
Pangkat dua terkecil yang lebih besar dari 1000 adalah 1024



Gambar 3.5 Grafik-alir struktur repetisi DoWhile/Loop


Struktur Repetisi Do Until/Loop
Tidak seperti struktur repetisi While dan Do While/Loop, struktur repetisi Do Until/Loop menguji kondisi apakah bernilai false agar repetisi dapat dilanjutkan. Statemen-statemen dalam tubuh Do Until/Loop dieksekusi secara berulang sepanjang pengujian kontinuasi-loop bernilai false. Sebagai sebuah contoh dari suatu struktur repetisi Do Until/Loop, sekali lagi perhatikan sebuah program (kode 3.3) yang dirancang untuk menemukan pangkat dua pertama yang lebih besar dari 1000.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
' Kode 3.3: DoUntil.vb
' Demonstrasi atas struktur Do Until/Loop.

Module modDoUntil

    Sub Main()
        Dim hasil As Integer = 2

        ' mencari pangkat dua pertama yang lebih besar dari 1000
        Do Until hasil > 1000
            Console.Write("{0} ", hasil)
            hasil = hasil * 2
        Loop

        Console.WriteLine() ' menampilkan baris kosong

        ' menampilkan hasil
        Console.WriteLine("Pangkat 2 terkecil " & _
            "yang lebih besar dari 1000 adalah {0}", hasil)
    End Sub ' Main

End Module ' modDoUntil
2 4 8 16 32 64 128 256 512
Pangkat 2 terkecil yang lebih besar dari 1000 adalah 1024

Grafik-alir pada Gambar 3.6 mengilustrasikan aliran kendali dalam struktur repetisi Do Until/Loop yang ditunjukkan pada kode 3.3.



Gambar 3.6 Grafik-alir struktur repetisi Do Until/Loop


Operator Penugasan
Visual Basic .NET menyediakan beberapa operator penugasan untuk statemen penugasan dipersingkat. Sebagai contoh, statemen

nilai = nilai + 3

dapati disingkat dengan operator penugasan penjumlahan += sebagai

nilai += 3

Operator += menjumlahkan nilai dari operand kanan ke nilai dari operand kiri dan menyimpan hasil penjumlahan pada variabel operand kiri. Sembarang statemen dengan bentuk

variabel = variabel operator ekspresi

dapat dituliskan menjadi bentuk

variabel operator= ekspresi

dimana operator adalah salah satu dari operator-operator biner +, -, *, ^, &, / atau \, dan variabel merupakan sebuah lvalue (“nilai kiri”). Lvalue merupakan sebuah variabel yang dapat ditempatkan di sisi kiri dari suatu statemen penugasan. Gambar 3.7 mencantumkan semua operator penugasan aritmatik, ekspresi contoh menggunakan operator-operator tersebut, dan penjelasannya.

Meskipun simbol =, +=, -=, *=, /=, \=, ^=, dan &= merupakan operator, yang tidak dicantumkan pada tabel derajat keutamaan operator. Ketika sebuah operator penugasan dievaluasi, ekspresi yang ada di sisi kanan operator selalu dievaluasi terlebih dahulu, kemudian ditugaskan kepada lvalue di sebelah kiri. Tidak seperti operator lain pada Visual Basic, operator penugasan hanya bisa terjadi dalam sebuah statemen. Kode 3.4 menghitung pangkat dua menggunakan operator penugasan eksponensiasi.

Operasi Penugasan
Contoh ekspresi
Penjelasan
Menugaskan
Diasumsikan: c = 4, d = “Ha”

+=
-=
*=
/=
\=
^=
&=


c +=7
c -= 3
c *= 4
c /= 2
c \= 3
c ^= 2
d &= “llo”


c = c + 7
c = c – 3
c = c * 4
c = c / 2
c = c \ 3
c = c ^ 2
d = d & “llo”


11 kepada c
1 kepada c
16 kepada c
2 kepada c
1 kepada c
16 kepada c
“Hallo” kepada d

Gambar 3.7 Operator-operator penugasan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
' Kode 3.4: Penugasan.vb
' Menggunakan operator penugasan untuk menghitung pangkat 2.

Module modPenugasan

    Sub Main()
        Dim eksponen As Integer ' masukan pangkat oleh pengguna
        Dim hasil As Integer = 2 ' tingkat kepangkatan

        ' meminta pengguna untuk memasukkan eksponen
        Console.Write("Masukkan sebuah eksponen integer: ")
        eksponen = Console.ReadLine()

        hasil ^= eksponen ' sama hasilnya dengan hasil = hasil ^ eksponen
        Console.WriteLine("hasil ^= eksponen: {0}", hasil)

        hasil = 2 ' mereset hasil menjadi 2
        hasil = hasil ^ eksponen
        Console.WriteLine("hasil = hasil ^ eksponen: {0}", hasil)

    End Sub ' Main

End Module ' modPenugasan
Masukkan sebuah eksponen integer: 9
hasil ^= eksponen: 512
hasil = hasil ^ eksponen: 512

Baris 14 dan 18 memiliki efek sama pada variabel hasil. Perhatikan bahwa hasil dari kedua perhitungan adalah identik.


Memformulasikan Algoritma: Studi Kasus 1 (Repetisi Terkendali Kounter)
Untuk mengilustrasikan bagaimana algoritma dikembangkan, berikut akan diselesaikan dua variasi dari sebuag masalah pererataan kelas. Perhatikan statemen masalah berikut:

Sebuah kelas yang terdiri-dari sepuluh mahasiswa mengadakan kuis. Nilai-nilai (integer dalam rentang 0 sampai 100) untuk kuis ini tersedia bagi Anda. Tentukan rerata kuis tersebut.

Rerata kelas sama dengan jumlah nilai dibagi dengan jumlah mahasiswa. Algoritma untuk menyelesaikan masalah ini pada sebuah komputer adalah membaca masukan setiap nilai, melakukan perhitungan pererataan, dan menampilkan hasil.

Akan digunakan pseudocode untuk mencantumkan aksi-aski yang akan dieksekusi dan untuk menentukan urutan eksekusi. Akan digunakan repetisi terkendali kounter untuk membaca nilai satu demi satu. Teknik ini menggunakan sebuah variabel yang dinamakan dengan sebuah kounter untuk menentukan berapa kali sehimpunan statemen akan dieksekusi. Repetisi terkendali kounter juga disebut dengan repetisi definitif karena jumlah repetisi telah diketahui sebelum loop dieksekusi. Pada contoh ini, repetisi berhenti ketika kounter melebihi 10. Bagian ini menyajikan sebuah algoritma pseudocode (Gambar 3.8) dan program terkait (kode 3.5).

Tetapkan total menjadi nol
Tetapkan kounter nilai menjadi satu

While kounter nilai kurang dari atau sama dengan 10
    Baca nilai berikutnya
    Jumlahkan nilai pada total
    Tambahkan satu pada kounter nilai

Tetapkan rerata kelas sebagai total dibagi dengan 10
Tampilkan rerata kelas

Gambar 3.8 Algoritma pseudocode yang menggunakan repetisi terkendali kounter untuk menyele-saikan masalah pererataan kelas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
' Kode 3.5: Rerata1.vb
' Menggunakan repetisi terkendali kounter.

Module modRerata

    Sub Main()
        Dim total As Integer ' jumlah nilai
        Dim kounterNilai As Integer ' jumlah nilai yang dimasukkan
        Dim nilai As Integer ' nilai yang dimasukkan pengguna
        Dim rerata As Double ' rerata kelas

        ' fase inisialisasi
        total = 0 ' menetapkan total menjadi nol
        kounterNilai = 1 ' menyiapkan loop

        ' fase pemrosesan
        While kounterNilai <= 10

            ' meminta masukan dari pengguna
            Console.Write("Masukkan nilai integer: ")
            nilai = Console.ReadLine()

            total += nilai ' menambahkan nilai pada total

            kounterNilai += 1 ' menambahkan 1 pada kounterNilai
        End While

        ' fase terminasi
        rerata = total / 10

        ' menampilkan baris kosong dan rerata kelas
        Console.WriteLine()
        Console.WriteLine("Rerata kelas adalah {0}", rerata)

    End Sub ' Main

End Module ' modRerata
Masukkan nilai integer: 89
Masukkan nilai integer: 70
Masukkan nilai integer: 73
Masukkan nilai integer: 85
Masukkan nilai integer: 88
Masukkan nilai integer: 92
Masukkan nilai integer: 57
Masukkan nilai integer: 98
Masukkan nilai integer: 67
Masukkan nilai integer: 76

Rerata kelas adalah 79.5

Perhatikan referensi algoritma (Gambar 3.8) dari total dan kounter. Total merupakan merupakan sebuah variabel yang dipakai untuk menghitung penjumlahan dari sederet nilai. Kounter adalah sebuah variabel yang menghitung, pada kasus ini, kounter menjejak banyaknya nilai yang dimasukkan oleh pengguna. Adalah hal penting bagi variabel yang dipakai sebagai total dan kounter untuk diberikan nilai awal sebelum digunakan. Kounter biasanya diinisialisasi dengan nol. Total umumnya diinisialisasi dengan nol. Jika variabel numerik tidak diinisialisasi sebelum digunakan, maka Visual Basic akan menginisialisasinya dengan nol.

Baris 7-10 mendeklarasikan variabel total, kounterNilai, dan nilai menjadi bertipe Integer dan rerata menjadi bertipa Double. Pada contoh ini, total mengakumulasi penjumlahan nilai yang dimasukkan, dan kounterNilai menghitung banyaknya nilai yang dimasukkan. Variabel nilai menyimpan nilai yang dimasukkan (baris 21).

Perhatikan dari keluaran bahwa meskipun setiap nilai yang dimasukkan adalah integer, kalkulasi pererataan sangat mungkin akan menghasilkan sebuah angka dengan titik desimal (angka pecahan atau titik-mengambang). Tipe Integer tidak bisa merepresentasikan angka pecahan, jadi program ini menggunakan tipe data Double, yang menyimpan angka-angka titik-mengambang kepresisian-ganda. Visual Basic juga menyediakan tipe data Single untuk menyimpan angka titik-mengambang kepresisian-tunggal. Tipe data Double memerlukan memori yang lebih besar dalam menyimpan sebuah nilai titik-mengambang, tetapi lebih akurat daripada Single. Tipe Single berguna dalam aplikasi yang menghemat memori dan tidak memerlukan keakuratan seperti Double.

Baris 13-14 menginisialisasi total dengan 0 dan kounterNilai dengan 1. Baris 17 mengindikasikan bahwa struktur While harus beriterasi ketika nilai dari kounterNilai kurang dari atau sama dengan 10. Baris 20-21 berkaitan dengan statemen pseudocodeMasukkan nilai berikutnya”. Statemen pada baris 20 menampilkan “Masukkan nilai integer: ” pada command window. Statemen kedua (baris 21) membaca nilai yang dimasukkan pengguna, dan menyimpannya dalam variabel nilai.

Selanjutnya, program memperbarui total dengan nilai baru yang dimasukkan pengguna, baris 23 menjumlahkan nilai pada nilai sebelumnya dari total dan menugaskan hasilnya kepada total menggunakan operator penugasan +=. Variabel kounterNilai diinkremen (baris 25) untuk mengindikasikan bahwa sebuah nilai telah diproses. Baris 25 menambahkan 1 pada kounterNilai, sehingga kondisi dalam struktur While akhirnya menjadi false dan menghentikan loop. Baris 29 menugaskan hasil dari perhitungan rerata kepada variabel rerata. Baris 32 menampilkan suatu baris kosong untuk mempercantik keluaran. Baris 33 menampilkan sebuah pesan yang memuat string “Rerata kelas adalah “ yang diikuti oleh nilai dari variabel rerata.


Memformulasikan Algoritma: Studi Kasus 2 (Repetisi Terkendali Sentinel)
Akan digeneralisir permasalahan pererataan kelas. Perhatikan permasahalan berikut:

Kembangkanlah sebuah permasalahan pererataan kelas yang mereratakan sejumlah (banyak sembarang) nilai setiap kali program dijalankan.

Pada contoh pererataan kelas yang pertama, banyak nilai (10) telah diketahui lebih dahulu. Pada contoh ini, tidak ada indikasi yang diberikan tentang berapa banyak nilai yang akan dimasukkan. Program harus memproses sembarang jumlah nilai. Bagaimana program menentukan kapan harus berhentu membaca masukan? Bagaimana program mengetahui kapan menghitung dan menampilkan rerata kelas?

Salah satu cara menyelesaikan permasalahan ini adalah dengan menggunakan sebuah nilai spesial, yang dikenal dengan nilai sentinel (nilai pengawal), untuk mengindikasikan akhir pembacaan data. Pengguna memasukkan semua nilai dan kemudian mengetikkan nilai sentinel untuk mengindikasikan bahwa nilai terakhir telah dimasukkan. Repetisi terkendali sentinel disebut pula dengan repetisi tak-pasti karena jumlah repetisi tidak diketahui sebelum loop mulai dieksekusi.

Sangat penting untuk menggunakan sebuah nilai sentinel yang berbeda dari nilai masukan yang diinginkan. Nilai-nilai pada sebuah kuis normalnya adalah integer tak-negatif, jadi -1 merupakan nilai sentinel yang logis untuk masalah ini. Program, misalnya, akan memproses aliran masukan seperti 96, 95, 87, 74, 89, dan -1. Program akan menghitung dan menampilkan rerata kelas untuk nilai-nilai 96, 95, 87, 74, dan 89. Nilai sentinel -1 tidak disertakan dalam perhitungan rerata.

Ketika menyelesaikan masalah yang lebih kompleks, representasi pseudocode sangat diperlukan. Akan dimulai representasi pseudocode teratas:

Menentukan rerata kelas untuk kuis

Statemen di atas menyampaikan tujuan umum dari program, yang merupakan representasi utuh dari sebuah program. Karena sifatnya yang umum, maka perlu buat lebih spesifik. Hal ini melibatkan pembagian statemen tersebut menjadi beberapa tugas yang lebih kecil sebagai berikut:

Menginisialisasi variabel-variabel
Membaca, menjumlahkan, dan menghitung banyak nilai kuis
Menghitung dan menampilkan rerata kelas

Untuk melanjutkan ke level penspesifikasian berikutnya. Diperlukan total berjalan dari angka-angka yang dimasukkan, kounter untuk menghitung berapa banyak angka yang telah diproses, sebuah variabel untuk menerima nilai dari setiap masukan, dan sebuah variabel untuk menampung rerata yang telah dihitung. Statemen pseudocode

Menginisialisasi variabel-variabel

dapat dispesifikasi sebagai berikut:

Menginisialisasi total menjadi nol
Menginisialisasi kounter menjadi nol

Perhatikan bahwa hanya variabel total dan kounter yang diinisialisasi sebelum digunakan; variabel rerata dan nilai (program pada kode 3.5 menggunakan kedua variabel tersebut untuk rerata terhitung dan masukan pengguna) tidak perlu diinisialisasi karena penugasan nilainya tidak bergantung pada nilai sebelumnya.

Statemen pseudocode

Membaca, menjumlahkan, dan menghitung nilai kuis

memerlukan sebuah struktur repetisi (sebuah loop) yang memproses setiap nilai. Anda tidak mengetahui berapa banyak nilai yang akan diproses, jadi digunakan repetisi terkendali sentinel. Pengguna memasukkan nilai yang valid satu demi satu. Setelah nilai valid terakhir diketikkan, pengguna mengetikkan nilai sentinel. Program menguji nilai setinel setelah tiap nilai dibaca dan menghentikan loop ketika pengguna memasukkan nilai sentinel. Penspesifikasian atas statemen pseudocode tersebut adalah

Memasukkan nilai pertama (bisa saja nilai sentinel)

Ketika pengguna tidak memasukkan sentinel
    Tambahkan nilai ini pada total berjalan
    Tambahkan satu pada kounter nilai
    Masukkan nilai berikutnya (bisa saja sentinel)

Statemen pseudocode

Menghitung dan menampilkan rerata kelas

dapat dispesifikasi sebagai berikut:

If kounter tidak sama dengan nol
    Menetapkan rerata sebagai total dibagi dengan kounter
    Menampilkan rerata
Else
    Menampilkan “Tidak ada nilai yang dimasukkan”

Penspesifikasian utuh dari algoritma pseudocode atas permasalahan pererataan kelas ditampilkan pada Gambar 3.9.

Menginisialisasi total menjadi nol
Menginisialisasi kounter menjadi nol

Memasukkan nilai pertama (bisa saja nilai sentinel)

Ketika pengguna tidak memasukkan sentinel
    Tambahkan nilai ini pada total berjalan
    Tambahkan satu pada kounter nilai
    Masukkan nilai berikutnya (bisa saja sentinel)

If kounter tidak sama dengan nol
    Menetapkan rerata sebagai total dibagi dengan kounter
    Menampilkan rerata
Else
    Menampilkan “Tidak ada nilai yang dimasukkan”

Gambar 3.9 Algoritma pseudocode yang menggunakan repetisi terkendali sentinel untuk menyelesaikan permasalahan rerata kelas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
' Kode 3.6: RerataKelas2.vb
' Menggunakan repetisi terkendali sentinel untuk
' menampilkan rerata kelas.

Module modRerataKelas

    Sub Main()
        Dim total As Integer ' jumlah nilai
        Dim kounterNilai As Integer ' banyak nilai yang dimasukkan
        Dim nilai As Integer ' nilai yang dimasukkan pengguna
        Dim rerata As Double ' rerata dari semua nilai

        ' fase inisialisasi
        total = 0 ' menginisialisasi total
        kounterNilai = 0 ' menyiapkan loop

        ' fase pemrosesan
        ' meminta masukan dan membaca masukan dari pengguna
        Console.Write("Masukkan nilai integer, -1 untuk keluar: ")
        nilai = Console.ReadLine()

        ' loop terkendali sentinel dimana -1 adalah nilai sentinel
        While nilai <> -1
            total += nilai ' menambahkan nilai pada total
            kounterNilai += 1 ' menambahkan 1 pada kounterNilai

            ' meminta masukan dan membaca masukan dari pengguna
            Console.Write("Masukkan nilai integer, -1 untuk keluar: ")
            nilai = Console.ReadLine()
        End While

        ' fase terminasi
        If kounterNilai <> 0 Then
            rerata = total / kounterNilai

            ' menampilkan rerata kelas
            Console.WriteLine()
            Console.WriteLine("Rerata kelas adalah {0:F}", rerata)
        Else ' tidak ada nilai yang dimasukkan
            Console.WriteLine("Tidak ada nilai yang dimasukkan")
        End If

    End Sub ' Main

End Module ' modRerataKelas
Masukkan nilai integer, -1 untuk keluar: 97
Masukkan nilai integer, -1 untuk keluar: 88
Masukkan nilai integer, -1 untuk keluar: 75
Masukkan nilai integer, -1 untuk keluar: -1

Rerata kelas adalah 86.67

Program Visual Basic untuk pseudocode ini ditunjukkan pada kode 3.6. Pada contoh ini, akan diuji bagaimana mengendalikan beberapa struktur yang ditumpuk satu di atas yang lain. Struktur While (baris 23-31) diikuti dengan struktur If/Then (baris 34-42). Banyak kode pada program ini identik dengan kode pada kode 3.5, sehingga yang akan dibahas hanya pada beberapa fitur baru.

Baris 11 mendeklarasikan variabel rerata sebagai Double. Ini membuat hasil dari perhitungan rerata kelas dapat disimpan sebagai angka titik-mengambang. Baris 15 menginisialisasi kounterNilai menjadi 0 karena belum ada nilai yang dimasukkan, ingat bahwa program ini menggunakan repetisi terkendali sentinel. Untuk menjaga keakuratan rekaman banyak nilai yang dimasukkan, variabel kounterNilai diinkremen hanya ketika nilai valid dimasukkan.

Perhatikan perbedaan antara repetisi terkendali sentinel dan repetisi terkendali kounter. Pada repetisi terkendali kounter, Anda membaca sebuah nilai dari pengguna selama tiap iterasi pada struktur While. Pada repetisi terkendali sentinel, Anda membaca sebuah nilai (baris 20) sebelum program mengeksekusi struktur While. Nilai ini menentukan apakah aliran kendali program harus memasuki tubuh struktur While atau tidak. Jika kondisi struktur While bernilai false (pengguna memasukkan nilai sentinel), maka tubuhnya tidak akan dieksekusi (tidak ada nilai yang dimasukkan).

Jika, di sisi lain, kondisi bernilai true, maka tubuh While akan dieksekusi, dan nilai yang dimasukkan pengguna akan diproses (ditambahkan pada total). Setelah nilai tersebut diproses, nilai berikutnya dimasukkan oleh pengguna sebelum akhir tubuh struktur While. Ketika End While dicapai pada baris 30, eksekusi berlanjut ke pengujian berikutnya pada kondisi struktur While. Nilai baru yang dimasukkan oleh pengguna mengindikasikan apakah tubuh struktur While akan dieksekusi kembali atau tidak. Perhatikan bahwa nilai berikutnya selalu dimasukkan oleh pengguna tepat sebelum kondisi struktur While dievaluasi (baris 23). Ini memampukan program dalam menentukan apakah nilai yang dimasukkan nilai sentinel atau tidak sebelum memproses nilai tersebut (menambahkannya pada total). Jika nilai yang dimasukkan adalah nilai sentinel, maka struktur While akan berhenti, dan nilai tersebut tidak ditambahkan pada total.

Pada baris 38 pada kode 3.6, metode WriteLine menggunakan format {0:F} untuk menampilkan nilai dari rerata pada command window sebagai sebuah angka titik-tetap (sebuah angka dengan jumlah dijit setelah titik desimal ditentukan). Visual Basic menyediakan format angka standar untuk mengendalikan cara bagaimana angka ditampilkan sebagai String. Hal ini akan didiskusikan pada Bab 4.


Memformulasikan Algoritma: Studi Kasus 3 (Struktur Kendali Bersarang)
Akan dibahas permasalahan lain yang lebih kompleks. Lagi, akan diformulasikan sebuah algoritma menggunakan pseudocode, dengan penspesifikasian bertingkat. Perhatikan statemen permasalahan berikut:

Sebuah universitas menawarkan suatu pelatihan untuk mempersiapkan para mahasiswa yang ingin mengambil ujian sertifikasi pemrograman Microsoft. Tahun lalu, 10 dari para mahasiswa yang menyelesaikan pelatihan ini ikut serta dalam ujian sertifikasi pemrograman. Universitas ingin mengetahui kinerja 10 mahasiswa yang mengikuti ujian sertifikasi tersebut. Anda diminta untuk menulis sebuah program yang dapat menyimpulkan hasil respon dari para mahasiswa tersebut. Pada Anda diberikan daftar 10 mahasiswa tersebut. Di samping tiap nama, dituliskan “P” jika mahasiswa terkait lulus dan dituliskan “F” jika mahasiswa terkait gagal.

Program Anda harus menganalisa hasil ujian sebagai berikut:
1.       Masukkan setiap hasil ujian (“P” atau “F”). Tampilkan pesan “Masukkan hasil” setiap kali program meminta hasil ujian yang lain.
2.       Hitung banyaknya mahasiswa yang lulus dan yang gagal.
3.       Tampilkan kesimpulan dari hasil ujian, yang mengindikasikan jumlah mahasiswa yang lulus dan jumlah mahasiswa yang gagal.
4.       Jika lebih dari 8 mahasiswa lulus dalam ujian, tampilkan pesan “Naikkan biaya pelatihan”.
Setelah membaca statemen permasalahan, Anda melakukan pengamatan sebagai berikut:
1.       Program harus memproses hasil ujian untuk 10 mahasiswa, sehingga loop terkendali kounter cocok untuk kasus ini.
2.       Setiap hasil ujian adalah sebuah String, berupa “P” atau “F”. Setiap kali program membaca sebuah hasil ujian, program harus menentukan apakah masukan adalah “P” atau “F”. Anda harus menguji “P” dalam algoritma. Jika masukan bukan “P”, maka diasumsikan ia berupa “F”.
3.       Dua kounter diperlukan untuk menyimpan hasil ujian, satu untuk menjejak banyak mahasiswa yang lulus ujian dan satu kounter untuk menjejak banyak mahasiswa yang gagal ujian.
4.       Setelah program memproses semua hasil ujian, ia harus menentukan apakah terdapat lebih dari 8 mahasiswa yang lulus ujian atau tidak.

Selanjutnya, akan dilakukan penspesifikasian bertingkat atas pseudocode. Dimulai dari representasi atas tujuan umum program:

Menganalisa hasil ujian dan menentukan apakah biaya pelatihan perlu dinaikkan atau tidak

Sekali lagi, adalah hal penting untuk menekankan bahwa tujuan umum program perlu dispesifikasi lebih detil sehingga dapat dikembangkan menjadi sebuah program Visual Basic. Penspesifikasian pertama adalah

Menginisialisasi variabel-variabel
Membaca sepuluh nilai ujian dan menjejak (menghitung banyak) keberhasilan dan kegagalan
Menampilkan kesimpulan hasil ujian dan menentukan jika biaya pelatihan perlu dinaikkan atau tidak

Statemen pseudocode berikut

Menginisialisasi variabel-variabel

dapat dispesifikasi kembali menjadi

Menginisialisasi keberhasilan dengan nol
Menginisialisasi kegagalan dengan nol
Menginisialisasi kounter mahasiswa dengan satu

Hanya kounter untuk jumlah keberhasilan, jumlah kegagalan, dan jumlah mahasiswa yang perlu diinisialisasi. Statemen pseudocode

Membaca sepuluh nilai ujian dan menjejak (menghitung banyak) keberhasilan dan kegagalan

memerlukan sebuah loop yang membaca setiap hasil ujian. Di sini, telah diketahui bahwa terdapat 10 hasil ujian, jadi repetisi terkendali kounter cocok digunakan. Di dalam loop (bersarang di dalam loop), terdapat sebuah struktur seleksi-ganda untuk menentukan apakah setiap hasil ujian adalah sebuah keberhasilan atau sebuah kegagalan, dan struktur tersebut menginkremen kounter terkait. Penspesifikasi atas pseudocode tersebut adalah

Ketika kounter mahasiswa kurang dari atau sama dengan sepuluh
    Membaca hasil ujian berikutnya

If mahasiswa lulus ujian
    Menambahkan satu pada keberhasilan
Else
    Menambahkan satu pada kegagalan

Menambahkan satu pada kounter mahasiswa

Statemen pseudocode

Menampilkan kesimpulan hasil ujian dan menentukan jika biaya pelatihan perlu dinaikkan atau tidak

dapat dispesifikasi sebagai berikut:

Menampilkan banyaknya keberhasilan
Menampilkan banyaknya kegagalan

If lebih dari delapan mahasiswa lulus ujian
    Tampilkan “Naikkan biaya pelatihan”

Statemen pseudocode utuh ditunjukkan pada Gambar 3.10.

Menginisialisasi keberhasilan dengan nol
Menginisialisasi kegagalan dengan nol
Menginisialisasi kounter mahasiswa dengan satu

Ketika kounter mahasiswa kurang dari atau sama dengan sepuluh
    Membaca hasil ujian berikutnya

If mahasiswa lulus ujian
    Menambahkan satu pada keberhasilan
Else
    Menambahkan satu pada kegagalan

Menambahkan satu pada kounter mahasiswa

Menampilkan banyaknya keberhasilan
Menampilkan banyaknya kegagalan

If lebih dari delapan mahasiswa lulus ujian
    Tampilkan “Naikkan biaya pelatihan”

Gambar 3.10 Pseudocode utuh untuk permasalahan pengujian hasil ujian

Program Visual Basic atas pseudocode pada Gambar 3.10 ditampilkan pada kode 3.7. Loop While (baris 13-25) membaca dan memproses 10 hasil ujian. Struktur If/Then/Else pada baris 18-22 merupakan sebuah struktur kendali bersarang karena ia diapit di dalam While. Kondisi pada baris 18 menguji apakah variabel String, hasil, sama dengan “P” atau tidak. Jika ya, keberhasilan diinkremen sebesar 1. Sebaliknya, kegagalan diinkremen sebesar 1.

Perhatikan bahwa baris 29 memuat sebuah pengenal, vbCrLf, yang tidak dideklarasikan secara eksplisit dalam kode program. Pengenal vbCrLf adalah satu dari beberapa konstanta yang disediakan Visual Basic. Tiap konstanta itu memuat nilai yang tidak bisa dimodifikasi oleh programer. Pada kasus vbCrLf, nilai yang direpresentasikan adalah kombinasi dari karakter carriage return dan karakter linefeed. Ketika ditampilkan, efek pada konstanta ini sama dengan pemanggilan Console.WriteLine().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
' Kode 3.7: Analisis.vb
' Menggunakan repetisi terkendali kounter untuk menampilkan hasil ujian.

Module modAnalisis

    Sub Main()
        Dim keberhasilan As Integer = 0 ' banyak keberhasilan
        Dim kegagalan As Integer = 0 ' banyak kegagalan
        Dim mahasiswa As Integer = 1 ' kounter mahasiswa
        Dim hasil As String ' satu hasil ujian

        ' memproses 10 hasil ujian; menggunakan loop terkendali kounter
        While mahasiswa <= 10
            Console.Write("Masukkan hasil (P = lulus, F = gagal): ")
            hasil = Console.ReadLine()

            ' struktur kendali bersarang
            If hasil = "P" Then
                keberhasilan += 1 ' menginkremen banyak keberhasilan
            Else
                kegagalan += 1 ' menginkremen banyak kegagalan
            End If

            mahasiswa += 1 ' menginkremen kounter mahasiswa
        End While

        ' menampilkan hasil ujian
        Console.WriteLine("Lulus: {0}{1}Gagal: {2}", keberhasilan, _
            vbCrLf, kegagalan)

        ' menaikkan biaya pelatihan jika lebih dari 8 mahasiswa lulus
        If keberhasilan > 8 Then
            Console.WriteLine("Naikkan biaya pelatihan")
        End If

    End Sub ' Main

End Module ' modAnalisis
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): F
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Lulus: 9
Gagal: 1
Naikkan biaya pelatihan

Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): F
Masukkan hasil (P = lulus, F = gagal): F
Masukkan hasil (P = lulus, F = gagal): F
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): P
Masukkan hasil (P = lulus, F = gagal): F
Lulus: 6
Gagal: 4


Memformulasikan Algoritma: Studi Kasus 4 (Struktur Repetisi Bersarang)
Sekarang akan disajikan contoh lain. Sekali lagi, akan diformulasikan algoritma menggunakan pseudocode dan penspesifikasian bertingkat, sebelum penulisan program Visual Basic dilakukan. Perhatikan statemen permasalahan berikut:

Menulis sebuah program untuk menggambar sebuah persegi yang memuat karakter-karakter * pada command window. Sisi persegi (jumlah karakter * yang akan ditampilkan) harus dimasukkan oleh pengguna dan tidak melebihi 20 karakter *.

Program Anda harus menggambarkan persegi sebagai berikut:
1.       Membaca sisi persegi dari pengguna.
2.       Memvalidasi bahwa sisi kurang dari atau sama dengan 20. (Perhatikan bahwa memungkinkan bagi pengguna untuk memasukkan nilai kurang dari 1. Lakukan apa yang diperlukan untuk mencegah hal ini).
3.       Menggunakan repetisi untuk menggambarkan persegi yang memuat karakter-karakter *.

Setelah membaca statemen permasalahan, Anda melakukan beberapa observasi berikut:
1.       Program harus menggambarkan n baris, masing-masing baris memuat n buah karakter *.
2.       Pengujian harus dilakukan untuk memastikan bahwa nilai n kurang dari atau sama dengan 20.
3.       Tiga variabel harus digunakan, satu yang merepresentasikan panjang sisi persegi, satu yang merepresentasikan baris persegi, dan satu lagi yang merepresentasikan kolom persegi.

Akan dimulai tahap penspesifikasian. Dimulai dari representasi pseudocode atas tujuan umum program:

Menggambar sebuah persegi yang memuat karakter-karakter *

Sekali lagi, sangat penting untuk menekankan bahwa statemen di atas adalah representasi atas tujuan umum program yang perlu dispesifikasi. Penspesifikasian pertamanya adalah

Menginisialisasi variabel-variabel
Membaca sisi persegi dan memastikan bahwa ia kurang dari atau sama dengan 20
Menggambar persegi

Penspesifikasian tahap kedua atas pseudocode berikut

Menginisialisasi variabel-variabel

adalah

Menginisialisasi baris dengan satu
Menginisialisasi sisi dengan masukan dari pengguna

Statemen pseudocode

Membaca sisi persegi dan memastikan bahwa ia kurang dari atau sama dengan 20

dapat dispesifikasi tahap kedua menjadi

If sisi kurang dari atau sama dengan 20

Statemen pseudocode

Menggambar persegi

dapat dispesifikasi tahap kedua menjadi

Ketika baris kurang dari atau sama dengan sisi
    Menetapkan kolom menjadi satu

    Ketika kolom kurang dari atau sama dengan sisi
        Menampilkan *
        Menginkremen kolom sebesar satu

    Menampilkan sebuah line feed atau carriage return
    Menginkremen baris sebesar satu

Pseudocode sekarang sudah cukup terspesifikasi untuk dikonversi menjadi program Visual Basic. Program Visual Basic ditampilkan pada kode 3.8.

Menginisialisasi baris dengan satu
Menginisialisasi sisi dengan masukan dari pengguna

If sisi kurang dari atau sama dengan 20

    Ketika baris kurang dari atau sama dengan sisi
        Menetapkan kolom menjadi satu

        Ketika kolom kurang dari atau sama dengan sisi
            Menampilkan *
            Menginkremen kolom sebesar satu

        Menampilkan sebuah line feed atau carriage return
        Menginkremen baris sebesar satu
Else
    Menampilkan “Sisi terlalu besar”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
' Kode 3.8: TampilPersegi.vb
' Program menggambar persegi dari *.

Module modTampilPersegi

    Sub Main()
        Dim sisi As Integer ' sisi persegi
        Dim baris As Integer = 1 ' baris sekarang
        Dim kolom As Integer ' kolom sekarang

        ' mendapatkan sisi dari pengguna
        Console.Write("Masukkan panjang sisi (harus 20 atau kurang): ")
        sisi = Console.ReadLine()

        If sisi <= 20 Then ' jika true, while akan diuji

            ' While ini bersarang di dalam If
            While baris <= sisi ' mengendalikan baris
                kolom = 1

                ' loop ini menampilkan satu baris karakter *
                ' dan bersarang di dalam While pada baris 18
                While kolom <= sisi
                    Console.Write("* ") ' menampilkan karakter *
                    kolom += 1 ' menginkremen kolom
                End While

                Console.WriteLine() ' memposisikan kursor pada baris berikutnya
                baris += 1 ' menginkremen baris
            End While

        Else ' kondisi (sisi <= 20) bernilai false
            Console.WriteLine("Sisi terlalu besar")
        End If

    End Sub ' Main

End Module ' modTampilPersegi
Masukkan panjang sisi (harus 20 atau kurang): 8
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *


Latihan
1.       Tulislah statemen Visual Basic untuk melakukan beberapa tugas berikut:
a)       Mendeklarasikan variabel jum dan angka agar bertipe Integer.
b)      Menugaskan 1 kepada variabel angka.
c)       Menugaskan 0 kepada variabel jum.
d)      Menjumlahkan jum dan angka, dan menugaskan hasilnya pada variabel jum.
e)       Menampilkan “Penjumlahannya adalah: “ diikuti dengan nilai variabel jum.
2.       Identifikasi dan koreksilah error pada tiap kasus berikut:
a)       Asumsikan bahwa nilai telah diinisialisasi dengan 50. Nilai-nilai dari 0 sampai 50 harus dijumlahkan

While nilai >= 0
    jum += nilai
End While

b)      Segmen kode ini harus membaca sembarang banyak angka dari pengguna dan menjumlahkannya. Asumsikan bahwa angka dan total dideklarasikan Integer.

total = 0

Do Until angka = -1
    Console.Write("Masukkan sebuah nilai ")
    angka = Console.ReadLine()
    total += angka
Loop

Console.WriteLine(total)

c)       Kode berikut harus menampilkan kuadrat atas 1 sampai 10 pada sebuah MessageBox:

Dim angka As Integer = 1

Do While angka < 10
    MessageBox.Show(angka ^ 2)
While End

d)      Segemen kode ini harus menampilkan nilai-nilai dari 888 sampai 1000. Asumsikan bahwa nilai telah didekarasikan sebagai Integer.

nilai = 888

While nilai <= 1000
    nilai -= 1
End While

3.       Tulislah sebuah program yang menggunakan loop untuk menampilkan tabel nilai berikut:

N      10*N   100*N 1000*N

1      10     100    1000
2      20     200    2000
3      30     300    3000
4      40     400    4000
5      50     500    5000

4.       Tulislah sebuah aplikasi yang menaksi nilai dari konstanta matematik  menggunakan formula:

 

5.       Tulislah sebuah aplikasi yang menaksi nilai dari  menggunakan formula:

 




No comments:

Post a Comment