Skip to main content

ATS Praktikum

Pemrograman Berbasis Komputer — MK224

Mata Kuliah: Pemrograman Berbasis Komputer Program Studi Teknik Mekatronika Genap 2025/2026

Pemetaan Tujuan Pembelajaran (TP)

Kode TPTujuan Pembelajaran
TP-1Memahami dan menggunakan pemrograman berbasis Visual (Visual C#) — OOP, Class, IDE, Console.
TP-2Mengimplementasikan pseudo code ke dalam program.
TP-3Mengimplementasikan operasi aritmatika.
TP-4Mengimplementasikan operasi perbandingan (percabangan).
TP-5Mengimplementasikan operasi perulangan (loop).
TP-6Mengimplementasikan array ke dalam program.
TP-7Membangun aplikasi yang dapat terkoneksi dengan perangkat lain melalui serial port.
TP-8Mengimplementasikan file atau basis data sebagai penyimpan data.

Petunjuk Pengerjaan

  1. Berdoalah sebelum mengerjakan soal. Tuliskan identitas Anda pada lembar yang tersedia.
  2. Untuk soal praktikum, kerjakan to-do list secara berurutan dan tuliskan kode di tempat yang disediakan (atau di lembar tambahan).
  3. Dilarang menggunakan AI, berkomunikasi dengan peserta lain. Pelanggaran berakibat nilai E.
  4. Bekerjalah dengan tenang, teliti, dan jujur. Selamat mengerjakan.
  5. Setiap Mahaiswa mendapatkan 3 Case Studi berdasarkan NIM terakhir
  6. Sertakan screenshoot hasil case study tersebut dan jelaskan bagaimana hasilnya bekerja, dan apa saja yg di tambahkan agar potongan kode tersebut berhasil di jalankan
  7. Source Code di copy bukan di screenshoot saat pengumpulan.

SOAL STUDI KASUS - PRAKTIKUM

Lengkapi potongan kode pada bagian yang ditandai // TODO atau ___ dan kerjakan to-do list secara berurutan.

Praktikum 1 [TP-1 & TP-3] (8 poin)

KASUS: Anda diminta membuat aplikasi konsol untuk menghitung luas dan keliling persegi panjang menggunakan konsep OOP. Lengkapi kode di bawah ini.

Potongan Kode (lengkapi bagian // TODO)

using System;

namespace LatihanOOP
{
class PersegiPanjang
{
// TODO 1: Deklarasikan dua atribut private bertipe int: panjang dan lebar
____________________
____________________

// TODO 2: Buat konstruktor default yang menginisialisasi panjang=0 dan lebar=0
public PersegiPanjang() {
____________________
____________________
}

// TODO 3: Buat method setUkuran(int p, int l) untuk mengisi atribut
____________________
{
____________________
____________________
}

// TODO 4: Buat method hitungLuas() yang me-return nilai luas (int)
____________________
{
____________________
}

// TODO 5: Buat method hitungKeliling() yang me-return nilai keliling (int)
public int hitungKeliling() {
return ____________________;
}
}

class Program
{
static void Main(string[] args)
{
// TODO 6: Buat objek dari class PersegiPanjang dan beri nama 'kotak'
____________________

Console.Write("Masukkan panjang: ");
int p = Convert.ToInt32(Console.ReadLine());
Console.Write("Masukkan lebar: ");
int l = Convert.ToInt32(Console.ReadLine());

// TODO 7: Panggil setUkuran dengan parameter p dan l
____________________

Console.WriteLine("Luas = " + kotak.hitungLuas());
Console.WriteLine("Keliling = " + kotak.hitungKeliling());
Console.ReadLine();
}
}
}

To-Do List

  1. Buka Visual C# / Visual Studio, buat project baru bertipe Console Application.
  2. Lengkapi atribut private panjang dan lebar pada class PersegiPanjang.
  3. Lengkapi konstruktor default agar nilai awal kedua atribut adalah 0.
  4. Lengkapi method setUkuran(int p, int l) untuk meng-assign nilai ke atribut.
  5. Lengkapi method hitungLuas() (panjang × lebar) dan hitungKeliling() (2 × (panjang+lebar)).
  6. Pada Main, instansiasi objek kotak dan panggil setUkuran dengan input dari user.
  7. Jalankan program (F5), uji dengan input p=5 dan l=3 — pastikan luas=15, keliling=16.

Praktikum 2 [TP-2 & TP-4] (8 poin)

KASUS: Buat aplikasi konsol yang menampilkan semua bilangan prima dari 2 sampai N (N diinput user). Lengkapi kode menggunakan struktur perulangan.

Potongan Kode (lengkapi bagian // TODO)

using System;

namespace BilanganPrima
{
class Program
{
// TODO 1: Buat method statis isPrima(int n) yang me-return bool
static bool isPrima(int n)
{
if (n < 2) return false;

// TODO 2: Lakukan perulangan untuk mengecek pembagi dari 2 sampai n-1
// (atau optimasi: sampai akar n). Jika ada yang habis dibagi → bukan prima.
for (____________________; ____________________; ____________________)
{
if (____________________)
{
return ____________________;
}
}
return ____________________;
}

static void Main(string[] args)
{
Console.Write("Masukkan batas N: ");
int N = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Bilangan prima dari 2 sampai " + N + ":");

// TODO 3: Lakukan perulangan dari i=2 sampai i<=N,
// lalu cetak i jika isPrima(i) bernilai true
for (____________________; ____________________; ____________________)
{
if (____________________)
{
Console.Write(____________________ + " ");
}
}
Console.ReadLine();
}
}
}

To-Do List

  1. Definisikan method isPrima(int n) yang me-return tipe bool.
  2. Tambahkan validasi awal: jika n < 2, kembalikan false (bukan prima).
  3. Buat perulangan for dari i=2 hingga i<n (atau i*i<=n untuk optimasi). Jika n%i==0 maka return false.
  4. Setelah loop selesai, return true (artinya tidak ditemukan pembagi).
  5. Pada Main, ambil input N dari user dan loop dari 2 sampai N. Cetak setiap bilangan yang isPrima-nya true.
  6. Uji dengan N=20 → output harus: 2 3 5 7 11 13 17 19.

Praktikum 3 [TP-5] (8 poin)

KASUS: Buat aplikasi WinForm untuk konversi suhu dari Celcius ke Fahrenheit atau Reamur. User memilih satuan output via RadioButton, lalu menekan tombol "Konversi". Lengkapi event handler tombol berikut.

Properti Komponen yang Sudah Tersedia

  • TextBox: txtInput (input suhu Celcius)
  • RadioButton: rbFahrenheit, rbReamur (pilihan output)
  • Label: lblHasil (untuk menampilkan hasil)
  • Button: btnKonversi

Potongan Kode (lengkapi bagian // TODO)

private void btnKonversi_Click(object sender, EventArgs e)
{
try
{
// TODO 1: Validasi jika txtInput.Text kosong, tampilkan MessageBox warning lalu return
if (____________________)
{
MessageBox.Show("Input suhu tidak boleh kosong!", "Peringatan",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

// TODO 2: Konversi nilai dari txtInput.Text menjadi tipe double
double celcius = ____________________;
double hasil = 0;
string satuan = "";

// TODO 3: Lengkapi pengecekan radioButton menggunakan property Checked
if (____________________)
{
// Rumus: F = (C * 9/5) + 32
hasil = ____________________;
satuan = "°F";
}
else if (____________________)
{
// Rumus: R = C * 4/5
hasil = ____________________;
satuan = "°R";
}
else
{
MessageBox.Show("Pilih satuan output terlebih dahulu!");
return;
}

// TODO 4: Tampilkan hasil di lblHasil dengan format 2 angka desimal
lblHasil.Text = ____________________;
}
catch (Exception ex)
{
MessageBox.Show("Terjadi kesalahan: " + ex.Message);
}
}

To-Do List

  1. Buat project Windows Forms Application baru, susun komponen: 1 TextBox (txtInput), 2 RadioButton (rbFahrenheit, rbReamur) di dalam GroupBox, 1 Label (lblHasil), dan 1 Button (btnKonversi).
  2. Klik ganda pada btnKonversi untuk membuka event handler-nya.
  3. Lengkapi validasi input kosong menggunakan kondisi string.IsNullOrEmpty atau perbandingan dengan "".
  4. Konversi input ke double menggunakan Convert.ToDouble.
  5. Lakukan pengecekan RadioButton via property .Checked dan terapkan rumus konversi yang sesuai.
  6. Format hasil dengan ToString("F2") agar tampil 2 angka desimal.
  7. Uji dengan input 100 → Fahrenheit harus 212.00 °F, dan input 100 → Reamur harus 80.00 °R.

Praktikum 4 [TP-6] (8 poin)

KASUS: Mengacu pada konsep array multidimensi, buat aplikasi WinForm yang menyimpan data mahasiswa (NIM, Nama, Jenis Kelamin, Prodi) ke dalam array, lalu menampilkannya pada ListView ketika tombol "Proses" diklik. Lengkapi kode berikut.

Properti Komponen yang Sudah Tersedia

  • TextBox: txtNim, txtNama
  • ComboBox: cbKelamin, cbProdi
  • Button: bProses
  • ListView: listView1 (sudah memiliki kolom NIM, NAMA, JENIS KELAMIN, PRODI)

Potongan Kode (lengkapi bagian // TODO)

public partial class FrmArrayMultiDimensi : Form
{
// TODO 1: Deklarasikan array 2 dimensi string untuk 10 mahasiswa, 4 atribut
string[,] dataMhs = new string[____, ____];
int jumlahData = 0;

public FrmArrayMultiDimensi()
{
InitializeComponent();
}

private void bProses_Click(object sender, EventArgs e)
{
// TODO 2: Validasi jika jumlahData sudah mencapai 10, tampilkan peringatan & return
if (____________________)
{
MessageBox.Show("Data sudah penuh (maksimal 10).");
return;
}

// TODO 3: Simpan data dari komponen input ke array dataMhs[jumlahData, ...]
dataMhs[jumlahData, 0] = ____________________; // NIM
dataMhs[jumlahData, 1] = ____________________; // NAMA
dataMhs[jumlahData, 2] = ____________________; // JENIS KELAMIN
dataMhs[jumlahData, 3] = ____________________; // PRODI

// TODO 4: Tambahkan baris baru ke ListView berdasarkan data yang baru disimpan
ListViewItem item = new ListViewItem(____________________);
item.SubItems.Add(____________________);
item.SubItems.Add(____________________);
item.SubItems.Add(____________________);
listView1.Items.Add(item);

// TODO 5: Tambahkan jumlahData dan kosongkan komponen input
____________________;
txtNim.Clear();
txtNama.Clear();
cbKelamin.SelectedIndex = -1;
cbProdi.SelectedIndex = -1;
}
}

To-Do List

  1. Buat WinForm baru, susun komponen sesuai daftar di atas. Set ListView.View = Details dan tambahkan 4 kolom.
  2. Pada constructor / Form_Load, isi cbKelamin dengan {LAKI-LAKI, PEREMPUAN} dan cbProdi dengan minimal {SISTEM INFORMASI, MEKATRONIKA}.
  3. Deklarasikan array 2 dimensi string[10, 4] dan variabel counter jumlahData=0.
  4. Pada event click bProses, validasi kapasitas array agar tidak melebihi 10.
  5. Simpan keempat input ke array (NIM, NAMA, gunakan .Text untuk TextBox dan .Text / .SelectedItem.ToString() untuk ComboBox).
  6. Buat ListViewItem dari data NIM, lalu tambahkan SubItems untuk Nama, Jenis Kelamin, dan Prodi.
  7. Increment jumlahData dan reset semua komponen input agar siap menerima data berikutnya.
  8. Uji dengan menyimpan 3 data mahasiswa berbeda dan pastikan ListView menampilkan ketiganya.

Praktikum 5 [TP-7 & TP-8] (8 poin)

KASUS: Buat aplikasi "Buku Catatan Sederhana" untuk mengelola catatan harian dengan penyimpanan ke file teks. Aplikasi memiliki 3 fungsi utama:

  • Simpan: menambahkan catatan baru ke file catatan.txt (mode append, dengan timestamp)
  • Muat: membaca seluruh isi file dan menampilkannya ke RichTextBox
  • Hapus: menghapus seluruh isi file setelah konfirmasi Lengkapi event handler berikut.

Properti Komponen yang Sudah Tersedia

  • TextBox: txtCatatan (input catatan baru, multiline)
  • Button: btnSimpan, btnMuat, btnHapus
  • RichTextBox: rtbIsi (untuk menampilkan isi file, ReadOnly)

Potongan Kode (lengkapi bagian // TODO)

using System;
using System.IO;
using System.Windows.Forms;

public partial class FrmCatatan : Form
{
// TODO 1: Deklarasikan konstanta string namaFile = "catatan.txt"
____________________

public FrmCatatan()
{
InitializeComponent();
}

private void btnSimpan_Click(object sender, EventArgs e)
{
// TODO 2: Validasi jika txtCatatan kosong/whitespace, tampilkan peringatan & return
if (____________________)
{
MessageBox.Show("Catatan tidak boleh kosong!", "Peringatan",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}

try
{
// TODO 3: Buka StreamWriter dengan mode append=true ke file namaFile
using (____________________)
{
// TODO 4: Tulis baris dengan format "[yyyy-MM-dd HH:mm:ss] isi_catatan"
sw.WriteLine(____________________);
}

MessageBox.Show("Catatan berhasil disimpan.");
txtCatatan.Clear();
}
catch (Exception ex)
{
MessageBox.Show("Gagal menyimpan: " + ex.Message);
}
}

private void btnMuat_Click(object sender, EventArgs e)
{
// TODO 5: Cek apakah file BELUM ada menggunakan File.Exists, jika belum → tampilkan info & return
if (____________________)
{
MessageBox.Show("File catatan belum ada. Simpan catatan terlebih dahulu.");
return;
}

try
{
// TODO 6: Baca seluruh isi file menggunakan StreamReader.ReadToEnd(), tampilkan ke rtbIsi
using (____________________)
{
rtbIsi.Text = ____________________;
}
}
catch (Exception ex)
{
MessageBox.Show("Gagal memuat: " + ex.Message);
}
}

private void btnHapus_Click(object sender, EventArgs e)
{
// TODO 7: Tampilkan konfirmasi Yes/No, simpan hasilnya ke variabel
DialogResult hasil = MessageBox.Show("Yakin ingin menghapus semua catatan?",
"Konfirmasi Hapus", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

// TODO 8: Jika user memilih Yes, hapus file (jika ada) lalu kosongkan rtbIsi
if (____________________)
{
if (File.Exists(namaFile))
{
____________________;
}
____________________;
MessageBox.Show("Semua catatan telah dihapus.");
}
}
}

To-Do List

  1. Buat project Windows Forms Application baru dengan judul "Buku Catatan Sederhana".
  2. Susun komponen sesuai daftar di atas. Set property txtCatatan.Multiline = true dan rtbIsi.ReadOnly = true.
  3. Deklarasikan konstanta const string namaFile = "catatan.txt"; di level class (bukan di dalam method).
  4. Pada btnSimpan_Click, validasi input dengan string.IsNullOrWhiteSpace(txtCatatan.Text) agar spasi kosong juga tertangkap.
  5. Gunakan new StreamWriter(namaFile, true) — parameter kedua true berarti append, sehingga catatan lama tidak tertimpa.
  6. Format setiap baris dengan timestamp: "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] " + txtCatatan.Text.
  7. Pada btnMuat_Click, gunakan !File.Exists(namaFile) untuk mengecek apakah file BELUM ada, lalu baca dengan sr.ReadToEnd().
  8. Pada btnHapus_Click, bandingkan hasil == DialogResult.Yes sebelum memanggil File.Delete(namaFile) dan rtbIsi.Clear().
  9. Uji skenario: (a) simpan 3 catatan berbeda → klik Muat, ketiganya muncul dengan timestamp berbeda; (b) klik Hapus → konfirmasi Yes → file hilang dan rtbIsi kosong; (c) klik Muat setelah Hapus → muncul peringatan file belum ada. Uji menggunakan Arduino atau aplikasi simulator (mis. Virtual Serial Port). Pastikan setiap baris yang masuk muncul di RichTextBox dan tertulis di log.txt.

Praktikum 6 [TP-1 & TP-4] (8 poin)

KASUS: Anda diminta membuat aplikasi konsol untuk mengelola data nilai akhir mahasiswa menggunakan konsep Encapsulation (Enkapsulasi/Properties) dalam OOP serta percabangan untuk menentukan Grade huruf (A, B, C, D, atau E). Lengkapi potongan kode di bawah ini.

Potongan Kode (lengkapi bagian // TODO)

using System;

namespace ManajemenNilai
{
    class Mahasiswa
    {
        // TODO 1: Deklarasikan atribut private bertipe string untuk nim, nama dan double untuk nilai
        private string nim;
        private string nama;
        ____________________
       
        // TODO 2: Buat Property (getter & setter) untuk mengenkapsulasi atribut nilai
        public double Nilai
        {
            get { return ____________________; }
            set { ____________________ = value; }
        }

        // TODO 3: Buat konstruktor berparameter untuk menginisialisasi nim dan nama
        public Mahasiswa(string nim, string nama)
        {
            this.nim = ____________________;
            this.nama = ____________________;
        }

        // TODO 4: Buat method GetGrade() yang me-return string berdasarkan ketentuan nilai
        public string GetGrade()
        {
            if (Nilai >= 80) return "A";
            else if (____________________) return "B"; // Rentang nilai 70 sampai < 80
            else if (____________________) return "C"; // Rentang nilai 60 sampai < 70
            else if (Nilai >= 50) return "D";          // Rentang nilai 50 sampai < 60
            else return "E";
        }

        public void TampilkanData()
        {
            Console.WriteLine($"NIM   : {nim}");
            Console.WriteLine($"Nama  : {nama}");
            Console.WriteLine($"Nilai : {Nilai}");
            Console.WriteLine($"Grade : {GetGrade()}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // TODO 5: Instansiasi objek Mahasiswa dengan nama 'mhs1', berikan argumen NIM dan Nama Anda
            Mahasiswa mhs1 = new ____________________;

            Console.Write("Masukkan Nilai Akhir: ");
            double inputNilai = Convert.ToDouble(Console.ReadLine());

            // TODO 6: Assign variabel inputNilai ke dalam objek mhs1 menggunakan Property Nilai
            mhs1.____________________ = inputNilai;

            Console.WriteLine("\n=== HASIL EVALUASI ===");
            // TODO 7: Panggil method TampilkanData() dari objek mhs1
            ____________________;
           
            Console.ReadLine();
        }
    }
}

To-Do List

  1. Buka Visual C# / Visual Studio, buat project baru bertipe Console Application.
  2. Lengkapi deklarasi atribut private double nilai pada class Mahasiswa.
  3. Lengkapi sintaks getter (return nilai;) dan setter (nilai = value;) pada Property Nilai.
  4. Lengkapi konstruktor berparameter agar this.nim dan this.nama mendapatkan nilai dari parameter konstruktor.
  5. Lengkapi logika percabangan if-else pada method GetGrade() untuk batas bawah Grade B (Nilai >= 70) dan Grade C (Nilai >= 60).
  6. Pada bagian Main, buat instance objek mhs1 dan isi parameter konstruktor dengan string NIM dan Nama. Set nilai dari input pengguna melalui Property, kemudian panggil TampilkanData().
  7. Jalankan program (F5), uji dengan input nilai 75.5 — pastikan Grade yang tampil adalah B.

Rekap Bobot Penilaian

BagianJumlah SoalBobot/SoalTotal Bobot
A. Pilihan Ganda152 poin30 poin
B. Esai56 poin30 poin
C. Praktikum (Studi Kasus)58 poin40 poin
TOTAL25100 poin

Pemetaan Soal terhadap TP

Kode TPSoal yang Mengukur
TP-1PG 1, 2, 3 | Esai 1 | Praktikum 1
TP-2PG 4, 5 | Esai 2 | Praktikum 2
TP-3PG 6, 7 | Esai 2 | Praktikum 1
TP-4PG 8, 9 | Esai 2 | Praktikum 2
TP-5PG 10, 11 | Esai 3 | Praktikum 3
TP-6PG 12, 13 | Esai 4 | Praktikum 4
TP-7PG 14 | Esai 5 | Praktikum 5
TP-8PG 15 | Esai 5 | Praktikum 5

— Selamat Mengerjakan —