MODUL II
STATEMENT CONTROL DAN LOOPING
A. Tujuan
1. Mahasiswa bisa membuat program yang memerlukan perulangan.
2. Mahasiswa bisa memilih/menentukan statement Looping yang paling sesuai
dengan permasalahan yang harus dipecahkan.
3. Mahasiswa bisa menentukan statement control yang tepat untuk program
yang dibuat.
B. Dasar Teori
B.1 Statement Control
Statement control merupakan sebuah statement yang terdiri dari
kondisi-kondisi yang di mana jika kondisi tersebut terpenuhi program akan
melakukan suatu instruksi tertentu. Statement control pada setiap bahasa
pemrograman sama pada dasarnya, yaitu melakukan intruksi sesuai
kondisi/pernyataan yang sesuai. Jadi dapat dikatakan statement control
merupakan penunjuk arah bagi urutan suatu program.
Struktur kontrol yang merupakan pengatur aliran program berbentuk
rangkaian perintah yang harus ditulis untuk memenuhi beberapa keadaan,
yaitu:
a. Melanjutkan sebuah pernyataan bila kondisi terpenuhi.
b. Memilih sebuah pilihan dari beberapa alternatif bila kondisi terpenuhi .
Statement control atau pengendalian digunakan untuk mengambil suatu
keputusan atau memilih bagian program yang akan dikerjakan sesuai dengan
kondisi atau syarat yang diberikan. Statement-statement di atas memerlukan
suatu kondisi atau syarat sebagai dasar pengambilan keputusan. Salah satu
kondisi yang umum digunakan adalah berupa keadaan benar atau salah (true
or false), ya atau tidak (yes or no), 0 atau 1 (on or off).
Ketika menyelesaikan masalah, tidak hanya satu kasus yang dapat di
temui, namun ada banyak, kadang kala menemui beberapa kasus. Ada
if (kondisi){
statement1;
statement2;
…
}
2. Statement if else
Struktur if else adalah struktur yang terdapat sebuah
statemen khusus yang berguna untuk mengatasi kejadian apabila
kondisi yang didefinisikan tersebut tidak terpenuhi atau dengan kata
lain memberikan pilihan untuk kondisi yang bernilai benar dan salah
(Sirait, D. 2021).
if (kondisi1) {
statement1;
} else if (kondisi2) {
statement2;
} else if (kondisi3){
statement3;
} …
else {
statementN;
}
b. Statement switch
Selain if, di dalam C++ ada juga struktur switch untuk
statement control. Struktur switch disini akan mengeksekusi statement
jika nilai yang dimasukkan sesuai dengan nilai konstantanya (Sirait, D.
2021).
Cara pendeklarasian struktur switch adalah seperti berikut:
switch (ekspresi){
case nilai_konstant1 : statement_statement; break;
case nilai_konstant2: statement_statement; break;
…;
case nilai_konstantN: statement_statement; break;
default
statement_statement_alternatif;
}
Tipe data dari ekspresi di atas haruslah bilangan bulat atau karakter.
Statement default di atas sama halnya dengan statement else pada if,
yaitu mengeksekusi statement alternatif jika nilai yang dimasukkan tidak
sesuai dengan nilai-nilai konstanta. Statement case adalah untuk
mendefinisikan nilai konstanta. Sedangkan statement break berfungsi
untuk statement peloncatan jika nilai konstantanya tidak terpenuhi.
Contoh potongan programnya adalah sebagai berikut :
switch (bil){
case 1 : cout<<”Hari ke-“<<bil<<” : adalah MINGGU”;
break;
case 2 : cout<<”Hari ke-“<<bil<<” : adalah SENIN”;
break;
case 3 : cout<<”Hari ke-“<<bil<<” : adalah SELASA”;
break;
case 4 : cout<<”Hari ke-“<<bil<<” : adalah RABU”;
break;
case 5 : cout<<”Hari ke-“<<bil<<” : adalah KAMIS”;
break;
case 6 : cout<<”Hari ke-“<<bil<<” : adalah JUMAT”;
break;
case 7 : cout<<”Hari ke-“<<bil<<” : adalah SABTU”;
struktur dasar antara for, while, dan do-while berbeda antara satu dengan yang
lainnya (Harumy, dkk. 2016).
Jenis-jenis statement Looping, yaitu sebagai berikut:
a. Sintaks for
Struktur for adalah pengulangan yang digunakan untuk melakukan
pengulangan yang telah diketahui banyaknya. Cara pendeklarasian struktut
for adalah seperti berikut:
for (variabel=nilai_awal;kondisi;increment/decrement){
statement_yang_akan_diulang;
}
b. Sintaks while
Struktur while adalah pengulangan yang melakukan pengecekan
kondisi di awal blok struktur. Cara pendeklarasian struktur while adalah
seperti berikut:
while (kondisi){
statement_yang _akan_diulang;
Contoh
} potongan programnya adalah sebagai berikut:
while (x<=10){
cout<<”Saya Mahasiswa Teknik”;
x++;
}
D. Hasil
D.1 Hasil Flowchart
int main(){
int i;
string pass_input, user_input;
do{
cout << "\nUsername = ";
cin >> user_input;
cout << "Password = ";
cin >> pass_input;
if (user_input == username && pass_input == password)
{
system("cls");
cout << "| Login Berhasil |" <<
endl;
getch();
i = 4;
login = "berhasil"; }
else {
cout << "\n******* Username / Password Salah!
******* (" << i <<"x)\n";
i = i + 1;
}
} while (i <= 3);
if (login != "berhasil"){
cout<<"\n Anda telah 3x salah login.\n";
cout<<" Silahkan coba 4 Periode lagi \n\n";
return 0;
}
long int saldo = 0, topup, transfer, setor, tarik, hasil,
hasil_tarik, saldo_akhir;
int konfirmasi1, konfirmasi2, konfirmasi3, konfirmasi4 ;
char pil;
string no_rek;
do{
kembali :
cout << "\
n--------------------------------------------" ;
cout << "\n| Mobile Banking LOOP 1111
switch(pil)
{
case '1' :
cout << "\n1. Program Cek Saldo" << endl;
cout << "Saldo Anda : Rp." << saldo << endl;
getch();
goto kembali;
case '2' :
cout << "\n2. Program Top Up " << endl;
cout << "Masukkan jumlah tunai : Rp. ";
cin >> topup;
saldo_akhir=saldo+topup;
cout << "Saldo akhir : Rp. " <<
saldo_akhir<<endl; getch();
goto kembali;
case '3' :
cout << "\n3. Program Transfer" << endl;
cout << "Masukkan no. rekening tujuan : ";
cin >> no_rek;
cout << "Masukkan jumlah saldo yang akan
ditransfer : Rp. ";
cin >> transfer;
hasil = saldo_akhir - transfer;
if (konfirmasi1 == 1){
goto kembali;
}
if (konfirmasi1 == 2){
goto selesai ;
}
}
if (hasil >= 0){
cout << "\
n--------------------------------------------" ;
cout <<"\n ******** Transaksi
Berhasil ************"<<endl;
cout << "\
n--------------------------------------------" ;
cout <<"\n Sisa Saldo
Anda : Rp. " << hasil <<endl;
cout << "\
n--------------------------------------------" ;
cout <<" 1. Kembali ||
2. Selesai"<<endl;
cout << "\
n--------------------------------------------" ;
cout << "\n Silahkan Masukan
Pilihan Anda: " ;
cin >> konfirmasi2 ;
if (konfirmasi2 == 1){
goto kembali;
}
if (konfirmasi2 == 2){
goto selesai;
}
}
case '4' :
cout << "\n4. Program Setor Tunai "<< endl;
cout << "Masukkan jumlah tunai : Rp. ";
cin >> setor;
saldo_akhir = saldo + setor;
cout << "Total jumlah yang disetorkan : Rp. " <<
setor << endl;
case '5' :
cout << "\n5. Program Tarik"<<endl;
cout << "Masukkan jumlah saldo yang akan ditarik
: Rp. ";
cin >> tarik;
hasil_tarik = saldo_akhir - tarik;
if (konfirmasi3 == 1){
goto kembali;
}
if (konfirmasi3 == 2){
goto selesai;
}
}
if (hasil_tarik >= 0){
cout << "\
n--------------------------------------------" ;
cout <<"\n ******** Transaksi
Berhasil ************"<<endl;
cout << "\
n--------------------------------------------" ;
cout <<"\n Sisa Saldo
Anda : Rp. " << hasil <<endl;
cout << "\
n--------------------------------------------" ;
cout <<" 1. Kembali ||
2. Selesai"<<endl;
cout << "\
n--------------------------------------------" ;
cout << "\n Silahkan Masukan
Pilihan Anda: " ;
cin >> konfirmasi4;
default :
cout<<"Pilihan tidak tersedia"; goto
selesai;
}
selesai :
cout << "\nTerimakasih telah menggunakan layanan ini" <<
endl;
cout << "Tekan tombol apa pun untuk keluar...";
getch(); // Menunggu tombol apa pun ditekan sebelum
keluar
return 0; // Menutup program
E. Analisa Data
#include <iostream>
#include <conio.h>
Dari script diatas #include <conio.h> merupakan sebuah
directive yang digunakan untuk memasukkan library conio.h ke dalam
program. Library conio.h digunakan untuk memungkinkan program untuk
mengakses sintaks getch() yang digunakan untuk menahan (pause) output
suatu program dan akan kembali mengeksekusi setelah kita melakukan
inputan baik itu tombol enter atau tombol lainnya dan inputan tersebut tidak
ditampilkan dalam window, dan sintaks clrscr membersihkan tampilan layar
konsol, menghapus semua teks yang ada dan mengembalikan ke posisi awal
dalam bahasa C/C++.
int main()
{
Dari Script diatas terdapat fungsi int main(), Kata int yang
mendahului main() dipakai untuk menyatakan bahwa fungsi ini bertipe data
integer / bilangan bulat. Baris ini menandai mulainya compiler yang
mengeksekusi program. Tanda { pada fungsi main() menyatakan awal
eksekusi program sedangkan pada akhir program main() ditandai dengan }.
login dengan variabel "block". Variabel ini digunakan untuk mengecek status
login. Jika variabel awalnya adalah "block" berarti masih belum berhasil login.
Dan terakhir script i = 1;: digunakan untuk menginisialisasi variabel i
dengan variabel 1. Variabel ini digunakan sebagai penghitung dalam perulangan.
do{
cout << "\nUsername = ";
cin >> user_input;
cout << "Password = ";
cin >> pass_input;
if (user_input == username && pass_input ==
password) {
system("cls");
cout << "| Login Berhasil |"
<< endl;
getch();
i = 4;
login = "berhasil"; }
else {
cout << "\n******* Username / Password
Salah! ******* (" << i <<"x)\n";
i = i + 1;
}
} while (i <= 3);
Pada Script diatas merupakan bagian dari looping do-while yang
digunakan untuk memproses proses login pada program Mobile Banking
Loop 1111 dan bertujuan untuk memproses login pengguna yang
memberikan batasan percobaan login sebanyak 3 kali. Jika login berhasil,
program akan melanjutkan ke bagian selanjutnya. Jika login gagal sebanyak
3 kali, program akan mengakhiri eksekusi.
Pada baris peratama terdapat script `do {`: digunakan untuk
memulai blok perulangan `do-while`. Bagian kode di dalam blok akan
dieksekusi setidaknya satu kali, dan akan terus diulang selama kondisi di
bagian `while` bervariabel `true`.
Kemudian script pada baris kedua `cout << "\nUsername = ";`:
digunakan untuk menampilkan teks "Username = " dan menginstruksikan
pengguna untuk memasukkan username dengan menggunakan sintaks cout.
Lalu pada script baris ketiga `cin >> user_input;`: digunakan untuk
mengambil input dari pengguna untuk username dengan menggunakan
if (login != "berhasil"){
cout<<"\n Anda telah 3x salah login.\n";
cout<<" Silahkan coba 4 Periode lagi \n\n";
return 0;
}
Pada Script diatas Bagian kode yang Anda berikan adalah bagian dari
blok `if` yang mengecek kondisi apakah login berhasil atau tidak setelah
percobaan login sebanyak 3 kali.
Pada script `if (login != "berhasil") {` digunakan untuk
memeriksa apakah variabel `login` tidak sama dengan "berhasil". Jika
kondisi ini terpenuhi, berarti login tidak berhasil. Kemudian script
`cout<<"\n Anda telah 3x salah login.\n";` menampilkan pesan
kepada pengguna bahwa mereka telah melakukan 3 kali percobaan login
yang gagal. Lalu script `cout<<" Silahkan coba 4 Periode lagi \n\
n";` menampilkan pesan kepada pengguna bahwa mereka dapat mencoba
lagi dalam 4 periode (20 tahun masa pemerintahan) selanjutnya. Dan pada
script terakhir return 0;` Mengakhiri program dengan mengembalikan
variabel 0, yang menunjukkan bahwa program telah selesai.
char pil;
string no_rek;
do{
kembali :
cout << "\
n--------------------------------------------" ;
cout << "\n| Mobile Banking LOOP 1111
| " << endl;
cout <<
"--------------------------------------------" <<
endl;
cout << "| Menu Transaksi
|"<< endl;
cout <<
"--------------------------------------------" <<
endl;
cout << "| 1. Cek Saldo
|" << endl;
cout << "| 2. Top Up
|" << endl;
cout << "| 3. Transfer
|" << endl;
cout << "| 4. Setor Tunai
|" << endl;
cout << "| 5. Tarik Tunai
|" << endl;
cout << "| 6. Keluar
|" << endl;
cout <<
"--------------------------------------------" <<
endl;
cout << "\n\n Silahkan Masukan Nomor Pilihan
Anda : ";
cin >> pil;
} while (pil != '6');
Dari script diatas, terdapat loop do-while yang memungkinkan
pengguna memilih menu dalam program Mobile Banking Loop 1 secara
berulang sampai pengguna memilih menu Keluar yaitu nomor 6. Setelah
menampilkan daftar menu menggunakan sintask cout, program akan
switch(pil)
{
case '1' :
cout << "\n1. Program Cek Saldo" << endl;
cout << "Saldo Anda : Rp." << saldo << endl;
getch();
goto kembali;
case '2' :
cout << "\n2. Program Top Up " << endl;
cout << "Masukkan jumlah tunai : Rp. ";
cin >> topup;
saldo_akhir=saldo+topup;
cout << "Saldo akhir : Rp. " <<
saldo_akhir<<endl; getch();
goto kembali;
case '3' :
cout << "\n3. Program Transfer" << endl;
cout << "Masukkan no. rekening tujuan : ";
cin >> no_rek;
cout << "Masukkan jumlah saldo yang akan
ditransfer : Rp. ";
cin >> transfer;
hasil = saldo_akhir - transfer;
case '4' :
cout << "\n4. Program Setor Tunai "<< endl;
cout << "Masukkan jumlah tunai : Rp. ";
cin >> setor;
saldo_akhir = saldo + setor;
cout << "Total jumlah yang disetorkan : Rp. " <<
setor << endl;
cout << "Saldo akhir : Rp. " << saldo_akhir << endl;
getch();
goto kembali;
case '5' :
cout << "\n5. Program Tarik"<<endl;
cout << "Masukkan jumlah saldo yang akan ditarik :
Rp. ";
cin >> tarik;
default :
cout<<"Pilihan tidak tersedia";
goto kembali;
}
Pada script diatas, terdapat statement control switch case yang
digunakan untuk memproses pilihan menu yang dimasukkan oleh pengguna
dalam program Mobile Banking. Pada case ‘1’, Ketika pengguna memilih
opsi '1' dari menu maka program akan mencetak teks "1. Program Cek
Saldo" ke layar konsol untuk memberi tahu pengguna bahwa mereka
memilih opsi untuk memeriksa saldo dan selanjutnya, program akan
mencetak saldo yang ada dalam variabel saldo dengan menggabungkannya
dengan string "Saldo Anda: Rp." serta mencetaknya ke layar konsol
menggunakan sintaks cout. Kemudian, sintaks ‘getch()’ akan menunggu
sampai pengguna menekan tombol apa pun pada keyboard sebelum
melanjutkan. Ini memberikan waktu bagi pengguna untuk membaca saldo
yang ditampilkan sebelum melanjutkan ke langkah berikutnya dalam
program. Terakhir, sintaks 'goto' akan mengarahkan program untuk
melompat ke label ‘kembali’ yang berada di awal loop do-while, sehingga
menu transaksi akan ditampilkan kembali.
Kemudian pada case ‘2’, ketika memilih opsi '2' dari menu maka
program akan mencetak teks "2. Program Top Up" ke layar dengan sintaks
cout. Selanjutnya, program akan mencetak teks "Masukkan jumlah tunai:
Rp." ke layar menggunakan sintaks cout. Kemudian, program akan
menggunakan sintaks 'cin' untuk mengambil input dari pengguna dan
menyimpannya dalam variabel topup. Setelah itu, program akan
menjumlahkan variabel saldo dengan topup menggunakan operator
aritmatika penambahan ( + ) dan menyimpan hasilnya dalam variabel
'saldo_akhir'. Selanjutnya, program akan mencetak teks "Saldo akhir: Rp."
if (konfirmasi2 == 1){
goto kembali;
if (konfirmasi3 == 1){
goto kembali;
}
if (konfirmasi3 == 2){
goto selesai;
}
}
if (hasil_tarik >= 0){
cout << "\
n--------------------------------------------" ;
cout <<"\n ********
Transaksi Berhasil ************"<<endl;
cout << "\
n--------------------------------------------" ;
cout <<"\n Sisa
Saldo Anda : Rp. " << hasil <<endl;
cout << "\
n--------------------------------------------" ;
cout <<" 1.
Kembali || 2. Selesai"<<endl;
if (konfirmasi4 == 1){
goto kembali;
}
if (konfirmasi4 == 2){
goto selesai;
}
}
Dari Script diatas dapat diketahui program merupakan lanjutan dari
switch case ‘5’ berupa statement control if yang digunakan untuk
pengecekan variabel hasil_tarik. Dalam script tersebut, terdapat
penanganan untuk dua skenario, yaitu ketika saldo tidak mencukupi untuk
melakukan penarikan (hasil_tarik < 0) dan ketika penarikan berhasil
dilakukan (hasil_tarik >= 0).
Pertama, jika saldo tidak mencukupi untuk melakukan penarikan,
program akan menampilkan pesan yang menginformasikan bahwa saldo
tidak mencukupi. Ini dilakukan dengan menggunakan sintaks cout untuk
mencetak pesan "Saldo Anda Tidak Cukup!". Selanjutnya, program
menampilkan pilihan untuk kembali atau selesai dengan menggunakan
sintaks cout. Pengguna diminta untuk memasukkan pilihan mereka
menggunakan sintaks cin. Program kemudian melakukan pengujian dengan
menggunakan statement control if untuk memeriksa pilihan yang
dimasukkan oleh pengguna. Jika pengguna memilih untuk kembali
(konfirmasi3 == 1), program akan melompat ke label ‘kembali’
menggunakan sintaks goto. Jika pengguna memilih untuk selesai
(konfirmasi3 == 2), program akan melompat ke label ' selesai'
menggunakan sintaks goto.
Selanjutnya, jika penarikan berhasil dilakukan, program akan
menampilkan pesan yang menginformasikan bahwa penarikan ber hasil Ini
dilakukan dengan menggunakan sintaks cout untuk mencetak pesan
selesai :
cout << "\nTerimakasih telah menggunakan layanan
ini" << endl;
cout << "Tekan tombol apa pun untuk keluar...";
getch(); // Menunggu tombol apa pun ditekan
sebelum keluar
return 0; // Menutup program
Pada script di atas, setelah label 'selesai', terdapat beberapa sintaks
cout yang digunakan untuk mencetak pesan terima kasih kepada pengguna
atas penggunaan layanan ini. Pesan-pesan tersebut dicetak menggunakan
sintaks cout dengan menggunakan endl untuk melakukan pemisahan baris.
Selanjutnya, pada script di atas terdapat sintaks cout yang digunakan untuk
mencetak pesan "Tekan tombol apa pun untuk keluar...". Kemudian, sintaks
getch() digunakan untuk menunggu hingga pengguna menekan tombol apa
pun sebelum program benar-benar keluar. Terakhir, pada script di atas
terdapat statement return 0 yang digunakan untuk mengakhiri program. Ini
mengindikasikan bahwa program telah selesai dan mengembalikan variabel
0 sebagai status keluaran dari program.
return 0;
}
G. Kesimpulan
DAFTAR PUSTAKA