What we know so far . . .
Tipe data dasar:
int untuk variabel berisi angka bulat.
string untuk variabel berisi teks.
nilai variabel dapat diperbarui kapan saja selama program berjalan.
Mencetak output:
untuk menggabungkan teks dan angka, gunakan operator << dengan urutan yang benar.
Aturan penamaan variabel:
hanya boleh mengandung huruf A–Z, a–z, angka 0–9, dan underscore (_).
tidak boleh diawali dengan angka.
tidak boleh mengandung spasi.
case-sensitive (huruf besar dan kecil dianggap berbeda).
A. Variasi operasi assignment
Pada bagian berikut, operasi perubahan variabel bisa disingkat.
Misalnya :
x = x + 3 menjadi x += 3
x = x / 5 menjadi x -= 5
x = x * 7 menjadi x *= 7
x = x / x menjadi x /= x
Apakah keluaran dari potongan program berikut?
#include <iostream>
using namespace std;
int main() {
int x = 3, y = 4;
x -= 1;
y += x * 5;
cout << y << endl;
}
perintah | nilai x | nilai y
----------------+---------------+-------------
int x = 3 | 3 | -
int y = 4 | 3 | 4
x = x - 1 | 2 | 4
y = y + x * 5 | 4 | 14
Jawabannya 14
B. Membeli Kandang
Selanjutnya, kita diminta menjawab soal cerita pertama.
Pak Dengklek memiliki sebuah kandang bebek seluas 12 meter persegi.
Setiap bulannya, Pak Dengklek ingin membeli sebuah kandang baru. Karena bebek-bebeknya terus berkembang biak, Pak Dengklek ingin agar setiap kandang baru yang dibeli berukuran 7 meter persegi lebih luas daripada kandang sebelumnya.
Ukuran luas kandang-kandang (dalam meter persegi) sesuai urutan pembelian untuk tiga bulan ke depan.
#include <iostream>
using namespace std;
int main() {
int luas_kandang = 12;
// bulan pertama
luas_kandang += 7;
cout << luas_kandang << endl;
// bulan kedua
luas_kandang += 7;
cout << luas_kandang << endl;
// bulan ketiga
luas_kandang += 7;
cout << luas_kandang << endl;
}
Hasil yang akan tercetak :
19
26
33
C. Perkenalan while
while digunakan untuk mengulang sebuah blok kode selama kondisi bernilai true (benar).
Begitu kondisi menjadi false, perulangan berhenti.
Struktur:
Menggunakan soal cerita sebelumnya,
Cara kerja singkat:
Cek kondisi.
Jika true, jalankan isi { } .
Setelah selesai, kembali cek kondisi lagi.
Ulangi terus sampai kondisi false.
#include <iostream>
using namespace std;
int main() {
int luas_kandang = 12;
int total_baris = 0; // karena dimulai dari bulan ke 0
while (total_baris < 3) {
luas_kandang += 7;
cout << luas_kandang << endl;
// total baris yang tercetak bertambah 1
total_baris += 1;
}
}
Hasilnya akan tetap sama, yaitu: 19, 26, 33
karena kondisi awal, luas kandang = 12
baris | kondisi | nilai | perintah yang dijalankan
--------+---------------+-------+-----------------------------
0 | 0 < 3 | true | luas kandang += 7;
| | | cout << luas_kandang << endl;
| | | total_baris += 1;
| | |
1 | 1 < 3 | true | luas kandang += 7;
| | | cout << luas_kandang << endl;
| | | total_baris += 1;
| | |
2 | 2 < 3 | true | luas kandang += 7;
| | | cout << luas_kandang << endl;
| | | total_baris += 1;
| | |
3 | 3 < 3 | false | program dihentikan
Perhitungan dalam pemograman biasa dimulai dari 0 bukan 1. Tetapi bukan tidak mungkin dari 1.
D. Pendalaman while
Sekarang kita akan diuji pemahaman mengenai while
Berapa kali C++ akan tercetak
int counter = 0;
while (counter < 4) {
cout << "C++" << endl;
counter += 1;
}
counter | kondisi | nilai | keluaran
--------+---------------+-------+--------------
0 | 0 < 4 | true | C++ , counter + 1
1 | 1 < 4 | true | C++ , counter + 1
2 | 2 < 4 | true | C++ , counter + 1
3 | 3 < 4 | true | C++ , counter + 1
4 | 4 < 4 | false | program berhenti
Berapa kali C++ akan tercetak
int counter = 1;
while (counter < 4) {
cout << "C++" << endl;
counter += 1;
}
counter | kondisi | nilai | keluaran
--------+---------------+-------+--------------
1 | 1 < 4 | true | C++ , counter + 1
2 | 2 < 4 | true | C++ , counter + 1
3 | 3 < 4 | true | C++ , counter + 1
4 | 4 < 4 | false | program berhenti
Berapa kali C++ akan tercetak
int counter = 1;
while (counter <= 4) {
cout << "C++" << endl;
counter += 1;
}
counter | kondisi | nilai | keluaran
--------+---------------+-------+--------------
1 | 1 ≤ 4 | true | C++ , counter + 1
2 | 2 ≤ 4 | true | C++ , counter + 1
3 | 3 ≤ 4 | true | C++ , counter + 1
4 | 4 ≤ 4 | true | C++ , counter + 1
5 | 5 ≤ 4 | false | program berhenti
Berapa kali C++ akan tercetak
int counter = 1;
while (counter <= 6) {
cout << "C++" << endl;
counter += 2;
}
counter | kondisi | nilai | keluaran
--------+---------------+-------+--------------------
1 | 1 ≤ 6 | true | C++ , counter + 2
3 | 3 ≤ 6 | true | C++ , counter + 2
5 | 5 ≤ 6 | true | C++ , counter + 2
7 | 7 ≤ 6 | false | program berhenti
E. Menampilkan hasil yang lebih kompleks
Menggunakan soal cerita sebelumnya, agar mengikuti format tertentu
(bulan) : (luas kandang)
#include <iostream>
using namespace std;
int main() {
int luas_kandang = 12;
int total_baris = 1; // agar hasil dimulai dari bulan 1
while (total_baris <= 3) {
luas_kandang += 7;
cout << total_baris << ": " << luas_kandang << endl;
// total baris yang tercetak bertambah 1
total_baris += 1;
}
}
1 : 19
2 : 26
3 : 33
F. Memperbarui nilai variabel dengan while
Pak Dengklek memiliki sebuah kandang bebek seluas 12 meter persegi.
Setiap bulannya, Pak Dengklek ingin membeli sebuah kandang baru. Karena bebek-bebeknya terus berkembang biak, Pak Dengklek ingin agar setiap kandang baru yang dibeli berukuran 7 meter persegi lebih luas daripada kandang sebelumnya.
Setelah 10 bulan berlalu, berapakah total luas kandang yang dimiliki Pak Dengklek?
#include <iostream>
using namespace std;
int main() {
int luas_kandang = 12;
// menyatakan sudah berapa bulan (berapa kali) Pak Dengklek membeli kandang baru.
int total_bulan = 0;
// menyatakan total luas kandang yang dimiliki Pak Dengklek.
// pada mulanya, totalnya adalah luas kandang lama Pak Dengklek.
int total_luas_kandang = luas_kandang;
while (total_bulan < 10) {
luas_kandang += 7;
total_luas_kandang += luas_kandang;
total_bulan += 1;
}
cout << total_luas_kandang << endl;
}
517
G. Membeli Kandang IV
Soal cerita yang lebih kompleks:
Pak Dengklek memiliki sebuah kandang bebek seluas 12 meter persegi.
Setiap bulannya, Pak Dengklek ingin membeli sebuah kandang baru. Karena bebek-bebeknya terus berkembang biak, Pak Dengklek ingin agar setiap kandang baru yang dibeli berukuran 7 meter persegi lebih luas daripada kandang sebelumnya.
Karena ukuran peternakan Pak Dengklek terbatas, Pak Dengklek akan berhenti membeli kandang baru apabila total luas seluruh kandang yang dimilikinya sudah lebih besar dari 800 meter persegi.
Berapakah total banyaknya kandang Pak Dengklek pada akhirnya?
#include <iostream>
using namespace std;
int main() {
// menyatakan total banyaknya kandang yang dimiliki Pak Dengklek.
// pada mulanya, Pak Dengklek memiliki 1 kandang seluas 12 meter persegi.
int total_kandang = 1;
int luas_kandang = 12;
int total_luas_kandang = luas_kandang;
while (total_luas_kandang < 800) {
luas_kandang += 7;
total_luas_kandang += luas_kandang;
total_kandang += 1;
}
cout << total_kandang << endl;
}
14
H. Jual-Beli Bebek II
Soal cerita yang lebih kompleks:
Setelah memiliki kandang-kandang bebek yang sangat luas, Pak Dengklek memiliki resolusi tahun baru yakni membeli bebek.
Setiap hari, dimulai pada tanggal 1 Januari 2024 sampai seterusnya, Pak Dengklek akan melakukan hal berikut:
Membeli seekor bebek jantan.
Membeli t ekor bebek betina, dengan t adalah tanggal hari ini.
Pak Dengklek akan terus membeli bebek setiap harinya, sampai banyaknya bebek betina lebih dari 10 kali lipat banyaknya bebek jantan.
Pada tanggal berapakah pertama kalinya Pak Dengklek tidak perlu membeli bebek lagi?
#include <iostream>
using namespace std;
int main() {
int jantan = 0, betina = 0;
int tanggal = 1;
while (betina <= (10 * jantan)) {
jantan += 1;
betina += tanggal;
tanggal += 1;
}
cout << tanggal << endl;
}
21
I. Perulangan
Sekarang kita akan diuji pemahaman mengenai while atau perulangan
Berapa kali * akan tercetak pada potongan program berikut?
int total = 0;
while (total < 2) {
cout << "*" << endl;
}
total | kondisi | nilai | keluaran
--------+---------------+-------+--------------
0 | 0 < 2 | true | *
nilai total tidak bertambah sehingga program tidak berhenti.
Perintah cout di dalam { } milik while akan mencetak hasil setiap kondisi yang bernilai benar.
Jika ditulis di luar while maka akan tercetak hasil akhir saja.