Contoh Soal Pascal Kelas X Semester 2: Panduan Lengkap
Pendahuluan
Pascal, bahasa pemrograman terstruktur klasik, tetap relevan dalam pendidikan informatika. Artikel ini menyajikan 40 contoh soal Pascal untuk siswa kelas X semester 2, dirancang untuk menguji pemahaman konsep dasar dan kemampuan pemecahan masalah. Soal-soal ini mencakup berbagai topik, mulai dari input/output, percabangan, perulangan, hingga array sederhana. Setiap soal disertai penjelasan singkat untuk membantu proses belajar.
A. Input dan Output Sederhana
program Sapaan; uses crt; var nama: string; begin clrscr; write('Masukkan nama Anda: '); readln(nama); writeln('Halo, ', nama, '!'); readln; end.
- 
Soal: Buat program yang meminta pengguna memasukkan dua angka dan menampilkan hasil penjumlahan, pengurangan, perkalian, dan pembagiannya.
Contoh Kode:
program OperasiAritmatika; uses crt; var angka1, angka2, jumlah, selisih, hasilKali, hasilBagi: real; begin clrscr; write('Masukkan angka pertama: '); readln(angka1); write('Masukkan angka kedua: '); readln(angka2); jumlah := angka1 + angka2; selisih := angka1 - angka2; hasilKali := angka1 * angka2; hasilBagi := angka1 / angka2; writeln('Jumlah: ', jumlah:0:2); writeln('Selisih: ', selisih:0:2); writeln('Hasil Kali: ', hasilKali:0:2); writeln('Hasil Bagi: ', hasilBagi:0:2); readln; end. - 
Soal: Buat program untuk menghitung luas persegi panjang. Program meminta panjang dan lebar dari pengguna.
Contoh Kode:
program LuasPersegiPanjang; uses crt; var panjang, lebar, luas: real; begin clrscr; write('Masukkan panjang: '); readln(panjang); write('Masukkan lebar: '); readln(lebar); luas := panjang * lebar; writeln('Luas persegi panjang: ', luas:0:2); readln; end. - 
Soal: Buat program yang meminta pengguna memasukkan jari-jari lingkaran dan menghitung luas dan kelilingnya.
Contoh Kode:
program Lingkaran; uses crt; const pi = 3.14; var jariJari, luas, keliling: real; begin clrscr; write('Masukkan jari-jari lingkaran: '); readln(jariJari); luas := pi * jariJari * jariJari; keliling := 2 * pi * jariJari; writeln('Luas lingkaran: ', luas:0:2); writeln('Keliling lingkaran: ', keliling:0:2); readln; end. - 
Soal: Program untuk konversi suhu dari Celsius ke Fahrenheit.
Contoh Kode:
program CelsiusKeFahrenheit; uses crt; var celsius, fahrenheit: real; begin clrscr; write('Masukkan suhu dalam Celsius: '); readln(celsius); fahrenheit := (celsius * 9 / 5) + 32; writeln('Suhu dalam Fahrenheit: ', fahrenheit:0:2); readln; end. 
B. Percabangan (IF-THEN-ELSE)
- 
Soal: Buat program yang menentukan apakah suatu bilangan yang dimasukkan pengguna adalah bilangan genap atau ganjil.
Contoh Kode:
program GenapGanjil; uses crt; var bilangan: integer; begin clrscr; write('Masukkan sebuah bilangan bulat: '); readln(bilangan); if (bilangan mod 2 = 0) then writeln(bilangan, ' adalah bilangan genap') else writeln(bilangan, ' adalah bilangan ganjil'); readln; end. - 
Soal: Buat program untuk menentukan nilai terbesar dari dua bilangan yang dimasukkan pengguna.
Contoh Kode:
program TerbesarDuaBilangan; uses crt; var bil1, bil2: integer; begin clrscr; write('Masukkan bilangan pertama: '); readln(bil1); write('Masukkan bilangan kedua: '); readln(bil2); if (bil1 > bil2) then writeln('Bilangan terbesar adalah: ', bil1) else writeln('Bilangan terbesar adalah: ', bil2); readln; end. - 
Soal: Buat program yang menentukan apakah suatu tahun yang dimasukkan pengguna adalah tahun kabisat atau bukan.
Contoh Kode:
program TahunKabisat; uses crt; var tahun: integer; begin clrscr; write('Masukkan tahun: '); readln(tahun); if (tahun mod 4 = 0) then begin if (tahun mod 100 = 0) then begin if (tahun mod 400 = 0) then writeln(tahun, ' adalah tahun kabisat') else writeln(tahun, ' bukan tahun kabisat'); end else writeln(tahun, ' adalah tahun kabisat'); end else writeln(tahun, ' bukan tahun kabisat'); readln; end. - 
Soal: Buat program yang memberikan diskon berdasarkan jumlah pembelian. Jika pembelian lebih dari 100000, berikan diskon 10%.
Contoh Kode:
program Diskon; uses crt; var pembelian, diskon, total: real; begin clrscr; write('Masukkan jumlah pembelian: '); readln(pembelian); if (pembelian > 100000) then diskon := 0.1 * pembelian else diskon := 0; total := pembelian - diskon; writeln('Diskon: ', diskon:0:2); writeln('Total yang harus dibayar: ', total:0:2); readln; end. - 
Soal: Program menentukan grade nilai (A, B, C, D, E) berdasarkan nilai yang dimasukkan. (A: 80-100, B: 70-79, C: 60-69, D: 50-59, E: <50).
Contoh Kode:
program GradeNilai; uses crt; var nilai: integer; begin clrscr; write('Masukkan nilai: '); readln(nilai); if (nilai >= 80) then writeln('Grade: A') else if (nilai >= 70) then writeln('Grade: B') else if (nilai >= 60) then writeln('Grade: C') else if (nilai >= 50) then writeln('Grade: D') else writeln('Grade: E'); readln; end. 
C. Perulangan (FOR, WHILE, REPEAT)
- 
Soal: Buat program yang menampilkan angka 1 hingga 10 menggunakan perulangan FOR.
Contoh Kode:
program PerulanganFor; uses crt; var i: integer; begin clrscr; for i := 1 to 10 do writeln(i); readln; end. - 
Soal: Buat program yang menampilkan angka 1 hingga 10 menggunakan perulangan WHILE.
Contoh Kode:
program PerulanganWhile; uses crt; var i: integer; begin clrscr; i := 1; while (i <= 10) do begin writeln(i); i := i + 1; end; readln; end. - 
Soal: Buat program yang menampilkan angka 1 hingga 10 menggunakan perulangan REPEAT-UNTIL.
Contoh Kode:
program PerulanganRepeat; uses crt; var i: integer; begin clrscr; i := 1; repeat writeln(i); i := i + 1; until (i > 10); readln; end. - 
Soal: Buat program yang menghitung jumlah bilangan dari 1 hingga n, di mana n dimasukkan oleh pengguna.
Contoh Kode:
program JumlahBilangan; uses crt; var n, i, jumlah: integer; begin clrscr; write('Masukkan nilai n: '); readln(n); jumlah := 0; for i := 1 to n do jumlah := jumlah + i; writeln('Jumlah bilangan dari 1 hingga ', n, ' adalah: ', jumlah); readln; end. - 
Soal: Buat program yang menampilkan tabel perkalian dari 1 hingga 10 untuk suatu bilangan yang dimasukkan pengguna.
Contoh Kode:
program TabelPerkalian; uses crt; var bilangan, i: integer; begin clrscr; write('Masukkan bilangan: '); readln(bilangan); for i := 1 to 10 do writeln(bilangan, ' x ', i, ' = ', bilangan * i); readln; end. 
D. Array Sederhana
- 
Soal: Buat program yang meminta pengguna memasukkan 5 angka ke dalam array dan kemudian menampilkan angka-angka tersebut.
Contoh Kode:
program ArraySederhana; uses crt; var angka: array of integer; i: integer; begin clrscr; for i := 1 to 5 do begin write('Masukkan angka ke-', i, ': '); readln(angka); end; writeln('Angka-angka yang Anda masukkan:'); for i := 1 to 5 do writeln(angka); readln; end. - 
Soal: Buat program yang menghitung jumlah elemen dalam sebuah array integer dengan 10 elemen. Isi array dengan nilai sembarang.
Contoh Kode:
program JumlahArray; uses crt; var angka: array of integer; i, jumlah: integer; begin clrscr; angka := 10; angka := 20; angka := 30; angka := 40; angka := 50; angka := 60; angka := 70; angka := 80; angka := 90; angka := 100; jumlah := 0; for i := 1 to 10 do jumlah := jumlah + angka; writeln('Jumlah elemen array: ', jumlah); readln; end. - 
Soal: Buat program untuk mencari nilai terbesar dalam sebuah array integer dengan 7 elemen.
Contoh Kode:
program NilaiTerbesarArray; uses crt; var angka: array of integer; i, terbesar: integer; begin clrscr; angka := 5; angka := 12; angka := 3; angka := 25; angka := 8; angka := 19; angka := 1; terbesar := angka; for i := 2 to 7 do begin if (angka > terbesar) then terbesar := angka; end; writeln('Nilai terbesar dalam array: ', terbesar); readln; end. - 
Soal: Buat program untuk membalikkan urutan elemen dalam sebuah array dengan 5 elemen.
Contoh Kode:
program BalikArray; uses crt; var angka: array of integer; i, temp: integer; begin clrscr; angka := 1; angka := 2; angka := 3; angka := 4; angka := 5; for i := 1 to 2 do // Hanya perlu sampai setengah array begin temp := angka; angka := angka; // Indeks dari belakang angka := temp; end; writeln('Array setelah dibalik:'); for i := 1 to 5 do writeln(angka); readln; end. - 
Soal: Buat program yang menghitung rata-rata dari elemen-elemen dalam array bertipe real dengan 6 elemen.
Contoh Kode:
program RataRataArray; uses crt; var angka: array of real; i: integer; jumlah, rataRata: real; begin clrscr; angka := 2.5; angka := 5.0; angka := 7.5; angka := 10.0; angka := 12.5; angka := 15.0; jumlah := 0; for i := 1 to 6 do jumlah := jumlah + angka; rataRata := jumlah / 6; writeln('Rata-rata elemen array: ', rataRata:0:2); readln; end. 
E. Soal Tambahan (Variasi)
Soal 21-40 adalah variasi dari soal-soal di atas, menggabungkan beberapa konsep (input/output, percabangan, perulangan, array) untuk meningkatkan kompleksitas dan melatih kemampuan problem-solving siswa. Contohnya:
- Program yang menghitung faktorial suatu bilangan menggunakan perulangan.
 - Program yang menentukan apakah suatu bilangan adalah bilangan prima.
 - Program yang menampilkan deret Fibonacci hingga n suku.
 - Program yang mengurutkan elemen-elemen dalam array (misalnya, menggunakan bubble sort).
 - Program yang mencari elemen dalam array (linear search).
 - Program yang mengimplementasikan kalkulator sederhana dengan operasi penjumlahan, pengurangan, perkalian, dan pembagian.
 - Program yang menampilkan pola bintang (misalnya, segitiga atau piramida) menggunakan perulangan bersarang.
 - Program yang menghitung jumlah bilangan genap dan ganjil dalam sebuah array.
 - Program yang mengubah huruf kecil menjadi huruf besar dan sebaliknya.
 - Program yang menghitung frekuensi kemunculan setiap angka dalam array.
 - Program yang menentukan apakah suatu string adalah palindrome.
 - Program yang mengkonversi bilangan desimal ke biner.
 - Program yang menghitung nilai rata-rata dan standar deviasi dari sekumpulan data.
 - Program yang menampilkan bilangan prima antara 1 dan 100.
 - Program yang membuat game tebak angka sederhana.
 - Program yang menentukan apakah suatu matriks adalah matriks identitas.
 - Program yang menghitung determinan matriks 2×2.
 - Program yang menjumlahkan dua matriks.
 - Program yang mengalikan dua matriks.
 - Program yang melakukan transpose matriks.
 
Kesimpulan
Contoh soal di atas memberikan gambaran tentang berbagai topik yang mungkin diujikan dalam bab Pascal kelas X semester 2. Dengan berlatih soal-soal ini, siswa dapat memperkuat pemahaman mereka tentang konsep dasar pemrograman dan meningkatkan kemampuan mereka dalam menyelesaikan masalah menggunakan Pascal. Jangan ragu untuk memodifikasi dan mengembangkan soal-soal ini untuk tantangan yang lebih besar.
