MATERI AJAR PEMROGRAMAN PERANGKAT BERGERAK
Struktur Kontrol Dart dalam Pengembangan Aplikasi Flutter
Proyek Praktikum: KantinKu – Aplikasi Kasir Kantin Sekolah
Mata Pelajaran: Pemrograman Perangkat Bergerak
Kelas: XI PPLG
Materi: Struktur Kontrol pada Dart
Media Pengembangan: Flutter dan Dart
Model Pembelajaran: Praktik mandiri berbantuan AI (AI-assisted coding)
A. Pendahuluan
Dalam pengembangan aplikasi, seorang programmer tidak hanya bertugas membuat tampilan yang menarik. Aplikasi juga harus mampu mengambil keputusan, mengolah data, mengulang proses, dan menangani berbagai kondisi yang mungkin terjadi.
Contohnya, aplikasi kasir kantin harus mampu menghitung jumlah belanja, menentukan apakah pelanggan mendapatkan diskon, memilih metode pembayaran, serta menolak transaksi ketika belum ada barang yang dipilih.
Kemampuan tersebut dapat dibangun menggunakan struktur kontrol dalam bahasa pemrograman Dart. Pada pembelajaran ini, kita akan menerapkan struktur kontrol ke dalam proyek sederhana bernama KantinKu, yaitu aplikasi kasir kantin sekolah berbasis Flutter.
Kalian juga diperbolehkan memanfaatkan AI sebagai asisten belajar dan pemrograman. Namun, kode yang dihasilkan AI tetap harus dibaca, diuji, dipahami, dan diperbaiki apabila belum sesuai kebutuhan.
B. Tujuan Pembelajaran
Setelah mempelajari materi dan menyelesaikan praktikum ini, peserta didik diharapkan mampu:
Menjelaskan fungsi struktur kontrol dalam pemrograman Dart.
Menerapkan percabangan
if,else if, danelse.Menggunakan
switchuntuk memilih tindakan berdasarkan suatu kondisi.Menggunakan perulangan
for,for-in, dan/atauwhilesesuai kebutuhan.Menjelaskan fungsi
break,continue, dan perulangan bersarang (nested loop).Mengintegrasikan logika Dart ke dalam aplikasi Flutter.
Memanfaatkan AI untuk membantu proses pengembangan aplikasi secara kritis dan bertanggung jawab.
Menguji aplikasi, menemukan kesalahan, serta memperbaiki kode.
Mendokumentasikan proses dan hasil praktikum dalam blog pribadi.
C. Mengenal Struktur Kontrol Dart
Struktur kontrol adalah bagian dari program yang menentukan bagaimana instruksi dijalankan. Secara umum, struktur kontrol yang akan dipelajari meliputi percabangan, pemilihan, dan perulangan.
1. Percabangan if, else if, dan else
Percabangan digunakan ketika program harus mengambil keputusan berdasarkan kondisi tertentu.
Contoh kasus: pelanggan mendapatkan diskon 10% jika subtotal belanja minimal Rp20.000.
void main() {
double subtotal = 28000;
double diskon = 0;
if (subtotal >= 20000) {
diskon = subtotal * 0.10;
} else {
diskon = 0;
}
double totalBayar = subtotal - diskon;
print('Subtotal: Rp$subtotal');
print('Diskon: Rp$diskon');
print('Total bayar: Rp$totalBayar');
}Penjelasan:
ifmemeriksa apakah subtotal minimal Rp20.000.Jika kondisi benar, diskon dihitung sebesar 10%.
elsedijalankan jika kondisi tidak terpenuhi.Total pembayaran diperoleh dari subtotal dikurangi diskon.
Pada contoh tersebut, subtotal Rp28.000 menghasilkan diskon Rp2.800 dan total pembayaran Rp25.200.
Contoh penggunaan else if:
if (subtotal >= 50000) {
print('Diskon kategori A');
} else if (subtotal >= 20000) {
print('Diskon kategori B');
} else {
print('Belum mendapat diskon');
}Urutan kondisi perlu diperhatikan. Kondisi yang lebih tinggi sebaiknya diperiksa lebih dahulu agar keputusan program sesuai aturan yang diinginkan.
2. Percabangan switch
switch digunakan untuk memilih tindakan berdasarkan nilai suatu variabel. Pada aplikasi KantinKu, struktur ini dapat digunakan untuk menentukan petunjuk pembayaran.
String metodePembayaran = 'QRIS';
switch (metodePembayaran) {
case 'Tunai':
print('Silakan lakukan pembayaran tunai.');
break;
case 'QRIS':
print('Silakan pindai kode QRIS.');
break;
case 'Transfer':
print('Silakan lakukan transfer.');
break;
default:
print('Metode pembayaran tidak dikenali.');
}Penjelasan:
switchmemeriksa nilaimetodePembayaran.casemenentukan pilihan yang akan dijalankan.breakmengakhiri bagian pilihan tersebut.defaultmenjadi pilihan jika tidak ada nilai yang cocok.
3. Perulangan for
Perulangan digunakan untuk menjalankan instruksi berulang kali. Contohnya, menampilkan daftar menu kantin.
void main() {
List<String> menu = [
'Nasi Goreng',
'Roti Bakar',
'Es Teh',
'Air Mineral'
];
for (int i = 0; i < menu.length; i++) {
print('${i + 1}. ${menu[i]}');
}
}Variabel i berfungsi sebagai indeks. Perulangan berlangsung selama nilai i masih lebih kecil daripada jumlah menu.
4. Perulangan for-in
for-in memudahkan kita memproses setiap elemen dalam sebuah kumpulan data.
void main() {
List<int> hargaMenu = [12000, 8000, 4000, 3000];
int total = 0;
for (int harga in hargaMenu) {
total += harga;
}
print('Total seluruh harga menu: Rp$total');
}Dalam aplikasi kasir, perulangan dapat digunakan untuk menghitung subtotal berdasarkan harga dan jumlah setiap barang yang dipilih.
Contoh konsep perhitungan:
subtotal += harga * jumlah;Baris tersebut berarti subtotal ditambah dengan hasil perkalian harga barang dan jumlah barang yang dibeli.
5. Perulangan while
while menjalankan instruksi selama kondisi masih bernilai benar.
int nomor = 1;
while (nomor <= 3) {
print('Percobaan ke-$nomor');
nomor++;
}Perhatikan penggunaan nomor++. Jika nilai variabel tidak berubah, perulangan bisa berjalan tanpa berhenti.
6. Fungsi break dan continue
Kedua instruksi ini memiliki fungsi yang berbeda.
breakmenghentikan perulangan atau mengakhiri bagianswitchyang sedang dijalankan.continuemelewati sisa instruksi pada iterasi saat ini dan melanjutkan ke iterasi berikutnya.
Contoh break:
for (int angka = 1; angka <= 10; angka++) {
if (angka == 5) {
break;
}
print(angka);
}Program hanya menampilkan angka 1 sampai 4 karena perulangan berhenti ketika angka mencapai 5.
Contoh continue:
for (int angka = 1; angka <= 5; angka++) {
if (angka == 3) {
continue;
}
print(angka);
}Program menampilkan angka 1, 2, 4, dan 5. Angka 3 dilewati.
7. Perulangan Bersarang (Nested Loop)
Nested loop adalah perulangan yang berada di dalam perulangan lain. Contohnya, menampilkan daftar menu berdasarkan kategori.
void main() {
List<List<String>> kategoriMenu = [
['Nasi Goreng', 'Roti Bakar'],
['Es Teh', 'Air Mineral']
];
for (int i = 0; i < kategoriMenu.length; i++) {
print('Kategori ${i + 1}:');
for (String menu in kategoriMenu[i]) {
print('- $menu');
}
}
}Pada contoh tersebut, perulangan luar memproses kategori, sedangkan perulangan dalam menampilkan menu di setiap kategori.
Tidak semua struktur kontrol harus digunakan dalam satu bagian program. Pilih struktur yang tepat berdasarkan kebutuhan aplikasi.
D. Mengenal Hubungan Dart dan Flutter
Dart merupakan bahasa pemrograman yang digunakan untuk menulis logika aplikasi. Flutter merupakan framework yang digunakan untuk membangun antarmuka dan aplikasi.
Dalam proyek KantinKu:
Dart digunakan untuk menghitung subtotal, menentukan diskon, memvalidasi transaksi, dan memilih metode pembayaran.
Flutter digunakan untuk menampilkan daftar menu, tombol penambah dan pengurang jumlah, informasi harga, serta total pembayaran.
Contoh tombol untuk menambah jumlah barang:
onPressed: () {
setState(() {
jumlah++;
});
}onPressed merupakan fungsi yang dijalankan ketika tombol ditekan. setState() memberi tahu Flutter bahwa keadaan (state) berubah sehingga tampilan perlu diperbarui.
Contoh tersebut merupakan potongan kode, bukan aplikasi lengkap. Penempatannya harus disesuaikan dengan struktur widget dan variabel pada proyek kalian.
E. Proyek Praktikum: KantinKu
1. Deskripsi Proyek
Buatlah aplikasi sederhana bernama KantinKu – Aplikasi Kasir Kantin Sekolah.
Aplikasi ini digunakan untuk memilih menu makanan atau minuman, menentukan jumlah pembelian, menghitung subtotal, memberikan diskon sesuai aturan, dan menampilkan informasi pembayaran.
Kalian boleh mengembangkan tampilan dan fitur tambahan selama fitur wajib tetap berfungsi dengan benar.
2. Ketentuan Menu
Gunakan minimal empat menu berikut sebagai data awal:
| No. | Nama Menu | Harga |
|---|---|---|
| 1 | Nasi Goreng | Rp12.000 |
| 2 | Roti Bakar | Rp8.000 |
| 3 | Es Teh | Rp4.000 |
| 4 | Air Mineral | Rp3.000 |
Aturan transaksi:
Pelanggan dapat menambah atau mengurangi jumlah setiap menu.
Subtotal dihitung dari harga dikalikan jumlah barang.
Jika subtotal minimal Rp20.000, pelanggan mendapat diskon 10%.
Jika subtotal kurang dari Rp20.000, diskon adalah Rp0.
Total bayar dihitung dari subtotal dikurangi diskon.
Metode pembayaran terdiri atas Tunai, QRIS, dan Transfer.
Aplikasi harus menolak atau memberi peringatan apabila pelanggan mencoba memproses transaksi tanpa memilih barang.
3. Fitur Wajib
Aplikasi KantinKu minimal harus memiliki fitur berikut.
Daftar menu: menampilkan nama dan harga setiap makanan atau minuman.
Pengaturan jumlah: menyediakan tombol tambah dan kurang untuk mengubah jumlah pembelian.
Perhitungan subtotal: menghitung nilai setiap barang dan menjumlahkannya.
Perhitungan diskon: menggunakan
if-elsesesuai aturan diskon.Pemilihan pembayaran: menggunakan
switchuntuk menentukan petunjuk pembayaran.Perulangan: menggunakan
for,for-in, atau struktur perulangan yang sesuai untuk memproses daftar menu atau menghitung total.Validasi transaksi: mencegah transaksi kosong.
Ringkasan pembayaran: menampilkan subtotal, diskon, metode pembayaran, dan total akhir.
Tampilan yang mudah digunakan: teks terbaca, tombol berfungsi, dan informasi pembayaran jelas.
4. Alur Logika Aplikasi
Secara umum, alur aplikasi dapat disusun sebagai berikut:
Aplikasi menampilkan daftar menu.
Pelanggan memilih menu dan mengatur jumlah pembelian.
Program memeriksa apakah ada barang yang dipilih.
Jika tidak ada barang, program menampilkan peringatan.
Jika ada barang, program menghitung subtotal dengan perulangan.
Program memeriksa syarat diskon menggunakan
if-else.Pelanggan memilih metode pembayaran.
Program menentukan petunjuk pembayaran menggunakan
switch.Program menampilkan ringkasan transaksi.
Sebelum menulis kode, gambarkan alur tersebut dalam bentuk flowchart sederhana. Flowchart boleh dibuat menggunakan kertas, diagrams.net, atau aplikasi lain.
F. Tahapan Praktikum
Praktikum 1 – Analisis Kebutuhan
Tuliskan:
Tujuan aplikasi.
Pengguna aplikasi.
Daftar menu dan harga.
Aturan diskon.
Metode pembayaran.
Kondisi yang harus ditolak atau diberi peringatan.
Praktikum 2 – Rancang Algoritma
Buat flowchart atau pseudocode yang menjelaskan proses pemilihan menu sampai ringkasan pembayaran ditampilkan.
Pastikan rancangan kalian menunjukkan penggunaan percabangan, perulangan, dan validasi.
Praktikum 3 – Membuat Logika Dart
Buat logika dasar untuk:
Menyimpan data menu.
Menghitung subtotal.
Menentukan diskon.
Menghitung total bayar.
Memilih metode pembayaran.
Uji logika tersebut terlebih dahulu. Kalian dapat menggunakan DartPad atau menjalankannya melalui proyek Flutter.
Praktikum 4 – Membangun Antarmuka Flutter
Buat tampilan yang memuat:
Judul aplikasi KantinKu.
Daftar menu dan harga.
Tombol tambah dan kurang.
Informasi jumlah barang.
Subtotal dan diskon.
Pilihan metode pembayaran.
Tombol proses transaksi.
Ringkasan pembayaran atau pesan validasi.
Praktikum 5 – Pengujian dan Perbaikan
Jalankan aplikasi pada emulator atau perangkat yang tersedia. Periksa apakah setiap tombol dan perhitungan berjalan sesuai aturan.
Jika terjadi kesalahan, baca pesan error, telusuri penyebabnya, kemudian lakukan perbaikan. Jangan hanya mengganti kode tanpa memahami masalahnya.
Praktikum 6 – Pengembangan Mandiri
Setelah fitur wajib berfungsi, tambahkan minimal satu fitur pengembangan berikut:
Tombol reset transaksi.
Kembalian untuk pembayaran tunai.
Pengelompokan menu makanan dan minuman.
Tampilan struk sederhana.
Fitur pencarian menu.
Fitur lain yang relevan dengan aplikasi kasir.
Jelaskan fitur tambahan yang kalian buat dan struktur kontrol yang digunakan.
G. Penggunaan AI Secara Bertanggung Jawab
Kalian diperbolehkan menggunakan AI untuk membantu memahami materi, merancang algoritma, menulis kode awal, atau memperbaiki error. Namun, AI bukan pengganti proses berpikir dan pengujian.
Gunakan prinsip 3B: Berpikir, Bangun, Buktikan.
Berpikir: pahami masalah, aturan transaksi, dan rancangan aplikasi sebelum meminta AI menulis kode.
Bangun: gunakan AI sebagai asisten, lalu baca dan sesuaikan kode dengan kebutuhan proyek.
Buktikan: jalankan aplikasi, lakukan pengujian, dokumentasikan hasil, dan jelaskan cara kerja kode.
Contoh prompt untuk membantu merancang algoritma:
“Bertindaklah sebagai tutor pemrograman Dart untuk siswa kelas XI PPLG. Bantu saya merancang algoritma aplikasi kasir kantin dengan menu, jumlah barang, subtotal, diskon 10% jika subtotal minimal Rp20.000, dan tiga metode pembayaran: Tunai, QRIS, serta Transfer. Jelaskan penggunaan if-else, switch, dan perulangan. Berikan langkah berpikir dan pseudocode terlebih dahulu, jangan langsung memberikan seluruh kode Flutter.”
Contoh prompt untuk memahami kode:
“Jelaskan potongan kode Dart berikut baris demi baris dengan bahasa yang mudah dipahami siswa SMK. Sebutkan fungsi variabel, kondisi, perulangan, dan kemungkinan kesalahannya. Jangan langsung mengganti seluruh kode; bantu saya memahami penyebab dan cara memperbaikinya.”
Setiap siswa wajib mencatat penggunaan AI dalam dokumentasi praktikum, termasuk prompt penting, bagian yang dibantu AI, perubahan yang dilakukan sendiri, dan hasil pengujian.
Penting: Jangan mengumpulkan kode hasil AI yang tidak kalian pahami. Kalian harus mampu menjelaskan bagian kode yang menjadi tanggung jawab kalian.
H. Skenario Pengujian Aplikasi
Gunakan tabel berikut sebagai acuan pengujian.
| No. | Skenario | Hasil yang Diharapkan |
|---|---|---|
| 1 | Membeli 1 Nasi Goreng dan 1 Es Teh | Subtotal Rp16.000, diskon Rp0, total Rp16.000 |
| 2 | Membeli 2 Nasi Goreng | Subtotal Rp24.000, diskon Rp2.400, total Rp21.600 |
| 3 | Belum memilih barang lalu menekan tombol proses | Transaksi ditolak atau muncul peringatan |
| 4 | Memilih metode QRIS | Petunjuk pembayaran QRIS ditampilkan |
| 5 | Mengurangi jumlah barang hingga nol | Jumlah tidak boleh negatif dan total dihitung ulang dengan benar |
Tambahkan hasil pengujian kalian sendiri. Catat apakah hasil aktual sesuai dengan hasil yang diharapkan. Jika tidak sesuai, jelaskan penyebab dan perbaikannya.
I. Tugas Individu
Judul Tugas
Membangun Aplikasi KantinKu Menggunakan Flutter dengan Penerapan Struktur Kontrol Dart
Setiap siswa wajib membuat aplikasi KantinKu secara mandiri. Kalian boleh berdiskusi mengenai konsep dan menggunakan AI sebagai asisten, tetapi hasil akhir, pengujian, dan dokumentasi harus menunjukkan pemahaman masing-masing.
Ketentuan Pengumpulan
Kumpulkan hasil belajar dalam bentuk:
Aplikasi: kode sumber atau proyek Flutter yang dapat dijalankan.
Bukti aplikasi: screenshot tampilan dan bukti perhitungan transaksi.
Flowchart atau pseudocode: rancangan alur aplikasi.
Tabel pengujian: minimal tiga skenario, lengkap dengan hasil yang diharapkan dan hasil aktual.
Penjelasan kode: jelaskan minimal satu bagian
if-else, satuswitch, dan satu perulangan yang digunakan.Fitur tambahan: jelaskan minimal satu fitur yang kalian kembangkan.
Refleksi AI: tuliskan bagaimana AI digunakan, bagian yang kalian ubah atau perbaiki, serta apa yang kalian pelajari.
Dokumentasi blog: seluruh proses praktikum harus dipublikasikan dalam postingan di blog masing-masing.
J. Dokumentasi Praktikum di Blog Pribadi
Seluruh proses praktikum wajib didokumentasikan dalam blog masing-masing. Blog menjadi portofolio belajar yang menunjukkan proses berpikir, pembuatan aplikasi, pengujian, dan hasil akhir.
Gunakan susunan artikel berikut.
Judul artikel: Praktikum Flutter – Aplikasi KantinKu dengan Struktur Kontrol Dart.
Identitas: nama, kelas, nomor absen, dan mata pelajaran.
Tujuan praktikum: tuliskan kemampuan yang ingin dicapai.
Analisis kebutuhan: jelaskan masalah yang ingin diselesaikan dan aturan transaksi.
Rancangan aplikasi: sertakan flowchart atau pseudocode.
Proses pembuatan: dokumentasikan langkah kerja dan bagian kode penting.
Penerapan struktur kontrol: jelaskan penggunaan
if-else,switch, dan perulangan.Bukti tampilan: sertakan screenshot aplikasi yang benar-benar kalian jalankan.
Pengujian: sertakan tabel skenario dan hasil pengujian.
Fitur tambahan: jelaskan fitur yang berhasil dibuat.
Penggunaan AI: sertakan prompt yang digunakan, bantuan AI, perubahan mandiri, dan hasil verifikasi.
Kesimpulan dan refleksi: tuliskan hal yang dipahami, kendala, cara mengatasi kendala, dan hal yang ingin dikembangkan.
Kode atau repositori: sertakan kode penting atau tautan repositori jika tersedia dan dapat diakses.
Ketentuan dokumentasi:
Gunakan gambar dan bukti hasil praktikum sendiri.
Screenshot harus berasal dari aplikasi yang benar-benar dijalankan.
Jangan hanya menyalin materi atau kode tanpa penjelasan.
Hindari membagikan kata sandi, API key, atau informasi pribadi.
Pastikan tautan blog dapat dibuka oleh guru.
Gunakan bahasa yang jelas, sopan, dan dapat dipertanggungjawabkan.
K. Cara Mengumpulkan Tugas
Setelah artikel selesai dipublikasikan:
Pastikan postingan blog dapat dibuka melalui tautan publik.
Salin URL postingan blog kalian.
Buka postingan materi pembelajaran ini.
Tempelkan URL artikel praktikum pada kolom komentar.
Sertakan identitas singkat dengan format berikut:
Nama:
Kelas:
Judul Praktikum: Praktikum Flutter – Aplikasi KantinKu
Link Blog: tempelkan URL postingan kalian.
Periksa kembali tautan sebelum mengirim komentar. Jangan hanya mengirim tulisan “sudah mengerjakan” tanpa menyertakan link dokumentasi.
L. Kriteria Penilaian
| Aspek Penilaian | Bobot |
|---|---|
| Ketepatan logika dan perhitungan transaksi | 25% |
| Implementasi antarmuka dan fungsi Flutter | 20% |
| Pengujian, debugging, dan validasi | 20% |
| Pemahaman dan penjelasan kode | 25% |
| Refleksi penggunaan AI dan dokumentasi proses | 10% |
| Total | 100% |
Penilaian tidak hanya berdasarkan tampilan aplikasi. Pemahaman terhadap logika, kemampuan menguji, dan kejujuran dalam mendokumentasikan proses belajar juga menjadi bagian penting.
M. Refleksi Pembelajaran
Setelah menyelesaikan praktikum, jawablah pertanyaan berikut dalam postingan blog:
Apa perbedaan fungsi
if-else,switch, dan perulangan?Bagian mana yang paling menantang ketika membuat aplikasi KantinKu?
Bagaimana cara kalian memastikan diskon dan total pembayaran dihitung dengan benar?
Kesalahan apa yang ditemukan saat pengujian dan bagaimana cara memperbaikinya?
Bagaimana AI membantu proses belajar kalian? Bagian apa yang tetap harus kalian verifikasi sendiri?
Jika aplikasi dikembangkan lebih lanjut, fitur apa yang ingin kalian tambahkan?
N. Penutup
Menjadi programmer bukan sekadar mampu menulis kode, tetapi juga mampu memahami masalah, menyusun solusi, menguji hasil, dan menjelaskan keputusan yang dibuat dalam program.
Melalui proyek KantinKu, kalian belajar bahwa konsep dasar seperti percabangan dan perulangan dapat diterapkan untuk membangun aplikasi yang dekat dengan kehidupan sehari-hari.
Gunakan AI sebagai asisten untuk mempercepat proses belajar, bukan sebagai pengganti pemahaman. Bangun aplikasi kalian sendiri, uji setiap fitur, dan dokumentasikan prosesnya dengan jujur.
Ingat prinsip kita: Berpikir, Bangun, Buktikan.
Selamat belajar dan berkarya. Tunjukkan bahwa siswa PPLG mampu menghasilkan aplikasi yang berfungsi, memahami kode yang ditulis, serta memiliki portofolio digital yang dapat dibanggakan.
Guru Mata Pelajaran
Pemrograman Perangkat Bergerak
SMK Negeri 1 Banjar







Tidak ada komentar:
Posting Komentar