Panduan Lengkap: Contoh Soal Pemrograman Terstruktur untuk Mahasiswa dan Siswa SMK Disertai Solusi

Pemrograman terstruktur adalah fondasi utama bagi siapa saja yang ingin terjun ke dunia pengembangan perangkat lunak. Metode ini menekankan pada penggunaan prosedur, fungsi, dan struktur kontrol yang logis untuk menciptakan kode yang bersih, efisien, dan mudah dipelihara. Baik Anda seorang mahasiswa teknik informatika maupun siswa SMK jurusan RPL (Rekayasa Perangkat Lunak), menguasai konsep ini adalah harga mati.

baca juga:Contoh Soal Cerita tentang SPLTV Lengkap dengan

Artikel ini akan menyajikan deretan contoh soal dari tingkat dasar hingga menengah, lengkap dengan logika penyelesaian dan kode sumbernya.


Mengapa Pemrograman Terstruktur Sangat Penting?

Sebelum masuk ke contoh soal, kita perlu memahami mengapa metode ini tetap relevan di tengah populernya Object-Oriented Programming (OOP). Pemrograman terstruktur mengajarkan kita untuk memecah masalah besar menjadi sub-masalah yang lebih kecil (top-down design). Hal ini membantu dalam:

  • Keterbacaan Kode: Kode lebih terorganisir karena dipisahkan berdasarkan fungsi spesifik.
  • Kemudahan Debugging: Mencari kesalahan menjadi lebih cepat karena kita tahu fungsi mana yang bermasalah.
  • Efisiensi Memori: Penggunaan variabel global yang minim mengurangi beban sistem.

Bagian 1: Contoh Soal untuk Siswa SMK (Level Dasar)

Untuk siswa SMK, fokus utama biasanya terletak pada logika dasar, penggunaan operator aritmatika, dan struktur kendali percabangan serta perulangan.

🔖 Baca juga:
Latihan Soal Dinamo: Cara Menyelesaikannya dengan Mudah untuk Pemula

Soal 1: Program Kasir Sederhana

Buatlah program yang menghitung total belanja setelah dipotong diskon. Jika total belanja lebih dari Rp100.000, maka pelanggan mendapatkan diskon 10%. Jika tidak, tidak ada diskon.

Logika Penyelesaian:

  1. Input: Total harga barang.
  2. Proses: Cek kondisi menggunakan if-else.
  3. Rumus diskon: $Total \times 0.10$.
  4. Output: Harga akhir yang harus dibayar.

Solusi (Bahasa C++):

C++

#include <iostream>
using namespace std;

int main() {
    long totalBelanja, diskon = 0, hargaAkhir;

    cout << "Masukkan total belanja: ";
    cin >> totalBelanja;

    if (totalBelanja > 100000) {
        diskon = totalBelanja * 0.1;
        cout << "Selamat! Anda mendapat diskon 10%." << endl;
    } else {
        cout << "Maaf, Anda tidak mendapat diskon." << endl;
    }

    hargaAkhir = totalBelanja - diskon;
    cout << "Total yang harus dibayar: Rp " << hargaAkhir << endl;

    return 0;
}

Soal 2: Menampilkan Bilangan Genap 1-20

Buatlah program menggunakan perulangan (looping) untuk menampilkan semua bilangan genap antara 1 hingga 20.

Logika Penyelesaian:

Gunakan perulangan for dari 1 sampai 20, lalu gunakan operator modulo % untuk mengecek apakah angka tersebut habis dibagi 2.

Solusi (Bahasa Python):

Python

print("Daftar Bilangan Genap 1-20:")
for i in range(1, 21):
    if i % 2 == 0:
        print(i, end=" ")

Bagian 2: Contoh Soal untuk Mahasiswa (Level Menengah)

Pada level mahasiswa, soal biasanya melibatkan struktur data sederhana seperti array, penggunaan fungsi (function), dan pengurutan data (sorting).

Soal 3: Implementasi Fungsi untuk Menghitung Luas Bangun Datar

Buatlah program yang memiliki menu untuk menghitung luas lingkaran dan luas persegi panjang menggunakan fungsi terpisah.

Logika Penyelesaian:

  1. Buat fungsi hitungLingkaran(radius).
  2. Buat fungsi hitungPersegiPanjang(panjang, lebar).
  3. Gunakan switch-case di fungsi main untuk navigasi menu.

Solusi (Bahasa C++):

C++

#include <iostream>
using namespace std;

float hitungLingkaran(float r) {
    return 3.14 * r * r;
}

float hitungPersegiPanjang(float p, float l) {
    return p * l;
}

int main() {
    int pilihan;
    float a, b;

    cout << "1. Luas Lingkaran\n2. Luas Persegi Panjang\nPilih: ";
    cin >> pilihan;

    switch(pilihan) {
        case 1:
            cout << "Masukkan jari-jari: "; cin >> a;
            cout << "Hasil: " << hitungLingkaran(a);
            break;
        case 2:
            cout << "Masukkan p & l: "; cin >> a >> b;
            cout << "Hasil: " << hitungPersegiPanjang(a, b);
            break;
        default:
            cout << "Pilihan tidak valid!";
    }
    return 0;
}

Soal 4: Pencarian Data dalam Array (Linear Search)

Buatlah program untuk mencari apakah sebuah angka yang diinputkan pengguna ada di dalam sebuah array yang sudah didefinisikan.

Logika Penyelesaian:

Gunakan teknik Linear Search dengan menelusuri array satu per satu dari indeks awal hingga akhir.

Solusi (Bahasa Java):

Java

import java.util.Scanner;

public class SearchArray {
    public static void main(String[] args) {
        int[] data = {12, 45, 7, 23, 56, 89, 10};
        Scanner input = new Scanner(System.in);
        
        System.out.print("Masukkan angka yang dicari: ");
        int cari = input.nextInt();
        boolean ditemukan = false;

        for (int i = 0; i < data.length; i++) {
            if (data[i] == cari) {
                ditemukan = true;
                System.out.println("Angka ditemukan pada indeks ke-" + i);
                break;
            }
        }

        if (!ditemukan) {
            System.out.println("Angka tidak ditemukan dalam sistem.");
        }
    }
}

Tips Sukses Belajar Pemrograman Terstruktur

Belajar coding bukan tentang menghafal kode, melainkan memahami alur logika. Berikut beberapa tips yang bisa Anda terapkan:

  1. Gunakan Flowchart: Sebelum mengetik kode, gambarlah alur program di kertas. Ini membantu memvisualisasikan kondisi if dan perulangan.
  2. Pahami Tipe Data: Pastikan Anda tahu kapan harus menggunakan integer, float, atau string. Kesalahan tipe data seringkali menyebabkan bug yang sulit ditemukan.
  3. Latihan Konsisten: Cobalah untuk memodifikasi soal-soal di atas. Misalnya, pada soal kasir, tambahkan fitur diskon bertingkat.
  4. Komentari Kode Anda: Biasakan menulis komentar (// atau #) untuk menjelaskan apa yang dilakukan oleh blok kode tertentu. Ini sangat membantu saat Anda meninjau kembali kode tersebut sebulan kemudian.

Kesalahan Umum yang Sering Terjadi

Dalam mengerjakan soal pemrograman terstruktur, pemula sering terjebak pada hal-hal berikut:

  • Infinite Loop: Lupa menambahkan increment (seperti i++) pada perulangan while, sehingga program berjalan selamanya.
  • Off-by-one Error: Kesalahan saat menentukan batas akhir array (ingat, indeks array dimulai dari 0).
  • Variable Scope: Mencoba mengakses variabel yang dideklarasikan di dalam fungsi dari luar fungsi tersebut.

baca juga:Ratusan Siswa SMA/SMK se-Lampung Ikuti Academic Expo, Seminar, dan Tryout Universitas Teknokrat Indonesia

Kesimpulan

Pemrograman terstruktur adalah batu loncatan penting bagi siswa SMK dan mahasiswa untuk menjadi pengembang profesional. Dengan memahami struktur kontrol, fungsi, dan array melalui contoh soal di atas, Anda telah membangun fondasi yang kuat untuk mempelajari konsep yang lebih kompleks seperti Pemrograman Berorientasi Objek (PPO).

penulis: ridho

Post Comment