Salah satu jebakan di SPMT4216 Algoritma dan Pemrograman adalah menganggap remeh tipe data. Pas masuk Modul 2, banyak yang bingung bedain hasil operasi integer sama float. Apalagi kalau udah nyampur string. Bukan cuma kamu yang ngalamin.
Bagian Algoritma Pemilihan Kondisi di Modul 3 juga sering bikin pusing. Salah indentasi dikit, output bisa ngaco. Tuple dan Dictionary di Modul 5 punya aturan main sendiri yang beda dari list. Kalau dasarnya belum kuat, soal-soal ini bisa terasa jebakan. Itulah kenapa latihan spesifik kayak kumpulan soal UT Sains Data penting buat mengasah logika kamu.
Di halaman ini, kami sediakan soal yang nguji tiap modul secara konkret. Mulai dari algoritma runtunan sampai exception handling. Setiap soal dilengkapi kunci jawaban dan pembahasan langkah demi langkah. Jadi kamu tahu kenapa jawabanmu benar atau salah. Mau cari latihan buat matkul lain? bank soal UAS UT juga ada di sini.
Soal UT SPMT4216 Algoritma dan Pemrograman
Suatu rangkaian langkah logis dan sistematis untuk menyelesaikan masalah harus memiliki kepastian, artinya setiap langkah harus…
Sifat kepastian (definiteness) berarti instruksi tidak boleh bermakna ganda; setiap langkah dijelaskan secara presisi sehingga eksekutornya paham persis apa yang harus dilakukan.
Sebelum menulis kode program, seorang pengembang menuangkan logika ke dalam deskripsi informal yang menyerupai sintaks kode tetapi tetap dapat dibaca manusia. Teknik ini dikenal sebagai…
Pseudocode menggunakan campuran bahasa alami dan elemen pemrograman untuk mendeskripsikan algoritma tanpa terikat aturan ketat bahasa pemrograman tertentu.
Simbol belah ketupat pada flowchart digunakan untuk merepresentasikan…
Belah ketupat adalah simbol keputusan (decision) yang menandai titik percabangan alur berdasarkan evaluasi suatu kondisi.
Seorang analis sistem sedang menyusun algoritma untuk menentukan potongan harga pelanggan. Ia ingin menggambarkan alur logika yang bercabang dalam tiga arah berdasarkan total belanja. Representasi grafis yang paling tepat untuk mendokumentasikan alur tersebut adalah…
Flowchart unggul dalam menggambarkan alur percabangan secara visual dengan simbol belah ketupat, sehingga hubungan antar cabang mudah dipahami sekilas, berbeda dengan pseudocode yang bersifat tekstual linear.
Sebuah masalah komputasi dinyatakan dapat diselesaikan dengan algoritma jika ada minimal satu solusi langkah demi langkah yang menghasilkan output yang diinginkan. Prinsip ini menegaskan bahwa algoritma harus memiliki…
Efektivitas bermakna bahwa setiap langkah algoritma dapat diselesaikan dalam waktu wajar dan seluruh rangkaian memang mampu menyelesaikan masalah yang dituju.
Seorang guru menyusun langkah pembelajaran: (1) membaca tujuan, (2) menyimak video, (3) mengerjakan latihan, (4) mengecek jawaban, (5) selesai. Dalam terminologi algoritma, urutan ini paling tepat digolongkan sebagai…
Urutan langkah kaku dari atas ke bawah tanpa cabang maupun pengulangan adalah algoritma runtunan (sequence), yaitu struktur paling dasar dalam pemrograman.
Keunggulan utama Python sebagai bahasa interpreted dibandingkan bahasa compiled terletak pada…
Python interpreter mengeksekusi kode baris per baris langsung dari source tanpa perlu mengompilasi menjadi file biner lebih dulu, mempercepat siklus pengembangan.
Aturan penulisan blok kode Python yang membedakannya dari banyak bahasa seperti Java atau C++ adalah…
Python mendefinisikan blok kode berdasarkan level indentasi, bukan dengan tanda kurung atau kata kunci khusus, sehingga kerapian indentasi bersifat wajib secara sintaks.
Manakah di antara pernyataan berikut yang salah mengenai variabel dalam Python…
Python menganut dynamic typing; variabel tidak memerlukan deklarasi tipe. Tipe ditentukan otomatis oleh objek yang direferensi saat runtime.
Untuk menampilkan teks 'Selamat Belajar' di konsol tanpa pindah baris setelahnya, fungsi print() perlu ditambahkan argumen…
Parameter end menentukan karakter yang dicetak setelah output; nilai default-nya adalah newline "n". Dengan mengosongkan end, kursor tidak pindah baris.
Seorang mahasiswa menulis kode: x = 10, lalu x = 'sepuluh'. Python tidak menghasilkan error. Perilaku ini menunjukkan bahwa Python menerapkan…
Dynamic typing memungkinkan variabel berganti tipe data yang direferensi sepanjang eksekusi tanpa kendala deklarasi tipe tetap.
Rina menulis x = 5 + 3 * 2 dan menduga hasilnya 16, tetapi ternyata hasilnya 11. Kesalahan Rina menunjukkan bahwa ia belum memahami…
Python mengikuti aturan prioritas operator di mana perkalian dikerjakan lebih dahulu daripada penjumlahan, sehingga 3*2=6 baru ditambah 5 menghasilkan 11.
Ekspresi 17 % 5 menghasilkan nilai…
Operator modulus (%) mengembalikan sisa pembagian bilangan bulat. 17 dibagi 5 menghasilkan sisa 2.
Suatu tipe data yang hanya dapat bernilai True atau False sangat fundamental dalam pengambilan keputusan program. Tipe data yang dimaksud adalah…
Boolean adalah tipe data biner dengan dua kemungkinan nilai, menjadi dasar evaluasi kondisi pada struktur if, while, dan ekspresi logika.
Perintah int('42') + float('3.5') akan menghasilkan…
Kedua string dikonversi menjadi numerik: int('42') menjadi 42, float('3.5') menjadi 3.5. Penjumlahan keduanya menghasilkan float 45.5.
Pada ekspresi logika berikut: (10 > 5) and (3 != 3), hasil evaluasi ekspresi tersebut adalah…
Operator and membutuhkan kedua operand bernilai True. Operand pertama (10 > 5) bernilai True, tetapi operand kedua (3 != 3) bernilai False, sehingga hasil akhirnya False.
Seorang programmer ingin mengecek apakah suatu bilangan genap dan positif sekaligus. Ekspresi yang tepat untuk x adalah…
Menguji genap dengan x % 2 == 0 dan positif dengan x > 0; keduanya digabung operator and agar kedua syarat wajib terpenuhi. Opsi lain pakai or (tidak tepat) atau operator bagi yang menghasilkan false pada bilangan genap.
Seorang mahasiswa ingin menyimpan data berupa '123' sebagai teks, bukan sebagai angka. Fungsi konversi yang tepat untuk mengubah integer 123 menjadi string adalah…
Fungsi str() adalah fungsi bawaan Python untuk mengkonversi nilai menjadi tipe data string.
Operator dalam Python berfungsi untuk…
Operator adalah operator eksponensial, misalnya 2 3 menghasilkan 8.
Di sebuah toko, program kasir menghitung total belanja setelah diskon dengan ekspresi total * (1 – diskon/100). Jika diskon adalah 25 dan total 200000, tetapi ternyata diskon tidak terkurangi karena diskon/100 menghasilkan 0. Penyebab utama kegagalan ini adalah…
Pembagian integer dengan / menghasilkan float, tetapi jika diskon integer dan total integer, perilaku pembagian bergantung pada versi Python. Jika menggunakan //, 25//100 = 0. Konversi ke float diperlukan.
Ekspresi 10 / 3 dan 10 // 3 secara berurutan menghasilkan…
Operator / melakukan pembagian float dan mengembalikan 3.3333…, sedangkan // adalah floor division yang mengembalikan 3 (pembulatan ke bawah).
Pada kode x = 5; x += 3, nilai akhir x dan operator yang setara secara fungsional adalah…
Operator += adalah assignment operator yang menambahkan nilai kanan ke variabel kiri, setara dengan x = x + 3.
Seorang programmer menulis kondisi if x = 10: dan Python langsung menampilkan error. Penyebab error ini adalah…
Operator = adalah assignment, bukan perbandingan. Python mensyaratkan == untuk membandingkan kesamaan dalam ekspresi kondisi.
Ekspresi logika (x > 5) or (y < 10 and z == 0) akan bernilai False ketika…
Agar or menghasilkan False, kedua sisi harus False. Sisi kiri x > 5 False jika x ≤ 5. Sisi kanan y < 10 and z == 0 False jika salah satu atau keduanya False.
PT Jaya Makmur menerapkan sistem bonus berdasarkan performa: jika penjualan > 100 juta, bonus 10%; jika penjualan antara 50-100 juta, bonus 5%; jika di bawah 50 juta, tidak ada bonus. Struktur kontrol yang paling ringkas untuk mengimplementasikan aturan ini adalah…
if-elif-else dirancang untuk menguji beberapa kondisi secara berurutan dan hanya mengeksekusi satu blok yang kondisi pertamanya True, sangat cocok untuk rentang yang saling eksklusif.
Perhatikan kode berikut: if suhu > 35: print('Panas'); elif suhu > 25: print('Hangat'); elif suhu > 15: print('Sejuk'); else: print('Dingin'). Jika suhu = 30, output yang dihasilkan adalah…
30 > 35 bernilai False; 30 > 25 bernilai True, sehingga blok elif pertama dieksekusi dan mencetak 'Hangat'. Blok berikutnya tidak diperiksa.
Seorang dosen ingin mengelompokkan nilai mahasiswa: nilai ≥ 80 mendapat A, nilai ≥ 70 mendapat B, nilai ≥ 60 mendapat C, selainnya D. Untuk nilai = 85, berapa kali kondisi diperiksa pada struktur if-elif-else hingga output diberikan…
Pada if-elif-else, kondisi diperiksa berurutan hingga ditemukan True. Untuk nilai 85, kondisi pertama if nilai >= 80 langsung True sehingga hanya satu pemeriksaan.
Dalam sebuah aplikasi perbankan, pengguna dapat menarik tunai jika saldo mencukupi dan status akun aktif. Jika saldo tidak mencukupi, transaksi ditolak; jika akun tidak aktif, transaksi juga ditolak dengan pesan berbeda. Pendekatan yang memberikan pesan spesifik untuk setiap kegagalan adalah…
Nested if memungkinkan pengecekan bertingkat dengan pesan spesifik di setiap cabang. Jika akun tidak aktif, else di if luar menangani; jika aktif tapi saldo tidak cukup, else di if dalam menangani.
Kode berikut: if a > b: if a > c: print('a terbesar'). Agar 'a terbesar' tercetak, syarat yang harus dipenuhi adalah…
Nested if mengharuskan kedua kondisi bernilai True agar blok print tereksekusi. Kondisi luar if a > b harus True dulu, kemudian kondisi dalam if a > c juga harus True.
Budi membuat program untuk mengecek apakah sebuah tahun adalah tahun kabisat. Tahun kabisat habis dibagi 4, namun jika habis dibagi 100 harus juga habis dibagi 400. Ekspresi yang tepat mewakili aturan ini adalah…
Aturan kabisat: habis dibagi 4, dan jika habis dibagi 100 maka harus habis dibagi 400. Ekspresi B menerjemahkan tepat: tahun kelipatan 4 dan (bukan kelipatan 100 atau kelipatan 400).
Siti ingin menampilkan bilangan 1 hingga 10 menggunakan perulangan for. Sintaks yang tepat di Python adalah…
range(1, 11) menghasilkan urutan dari 1 hingga 10 karena parameter akhir bersifat eksklusif, sehingga diperlukan 11.
Sebuah program harus terus meminta input password hingga pengguna memasukkan yang benar atau maksimal 3 percobaan. Struktur perulangan yang paling sesuai untuk masalah ini adalah…
while cocok untuk perulangan dengan kondisi ganda yang tidak diketahui pasti jumlah iterasinya. Kondisi counter < 3 dan password_salah mengontrol perulangan dengan tepat.
Dalam sebuah perulangan for yang memproses daftar nilai ujian, seorang programmer ingin melewati nilai-nilai yang kurang dari 0 (data tidak valid) dan hanya memproses data valid. Pernyataan yang harus digunakan adalah…
continue melompati sisa iterasi saat ini dan melanjutkan ke iterasi berikutnya tanpa menghentikan seluruh perulangan, cocok untuk mengabaikan data tidak valid.
Kode while True: diikuti blok kode yang di dalamnya terdapat if kondisi: break. Fungsi break pada konteks ini adalah…
break menghentikan perulangan terdekat secara paksa dan melanjutkan eksekusi ke baris setelah blok perulangan tersebut.
Sebuah program meminta pengguna memasukkan angka positif, lalu terus meminta ulang jika input bernilai negatif atau nol. Di antara pilihan berikut, struktur perulangan yang paling sesuai untuk menangani situasi ini adalah…
Situasi memerlukan perulangan yang tidak diketahui jumlah iterasinya dan bergantung pada kondisi input. While dengan kondisi input <= 0 akan terus berjalan selama masukan tidak memenuhi syarat positif, tepat untuk validasi semacam ini.
Pada kode berikut: for i in range(1, 6): if i == 3: continue; print(i, end=' '). Output yang dihasilkan adalah…
Continue menyebabkan iterasi saat i == 3 dilewati, sehingga print tidak dijalankan untuk nilai 3. Iterasi lain tetap mencetak nilai i, menghasilkan deret 1 2 4 5.
Di dalam program kalkulator, setelah pengguna memasukkan dua bilangan dan memilih operasi, program langsung menghitung dan menampilkan hasil tanpa percabangan yang tampak di kode utama. Pola algoritma yang diterapkan dalam kode tersebut adalah…
Ketika program menjalankan langkah input, proses, output secara lurus tanpa pengulangan atau percabangan eksplisit di kode utama, pola yang digunakan adalah struktur runtunan (sequence), eksekusi berurutan dari atas ke bawah.
Budi sedang menulis program yang menerima data siswa, menghitung rata-rata, dan mencetak hasilnya. Ia memutuskan untuk membagi program menjadi tiga bagian kode yang berjalan lurus tanpa lompatan atau pengulangan. Bagian kode tersebut digolongkan sebagai…
Eksekusi yang berlangsung lurus dari satu instruksi ke instruksi berikutnya tanpa lompatan atau pengulangan merupakan ciri khas struktur sekuensial (sequence).
Siti membuat program yang menghitung gaji karyawan: program membaca jam kerja dan tarif per jam, mengalikan keduanya, lalu menampilkan total gaji. Ketiga tahap ini merepresentasikan pola dasar algoritma…
Pola dasar algoritma yang menerima masukan, mengolah data, dan menampilkan hasil secara berurutan disebut Input-proses-output.
Sebelum menulis kode lengkap, seorang analis memecah masalah penghitungan diskon pelanggan menjadi langkah: (1) menerima total belanja, (2) menentukan persentase diskon, (3) menghitung potongan, (4) mengurangkan dari total, (5) menampilkan hasil. Proses memecah masalah menjadi langkah-langkah kecil ini disebut…
Teknik memecah masalah besar menjadi langkah-langkah sekuensial yang lebih kecil dan terkelola dinamakan dekomposisi.
Program stok barang PT Mega menerima kode barang, lalu mengecek keberadaannya di database, mengurangi stok jika ada, dan mencetak faktur. Setiap instruksi dieksekusi satu demi satu tanpa lompatan. Karakteristik ini menegaskan bahwa program menerapkan…
Eksekusi instruksi satu demi satu tanpa lompatan merupakan karakteristik struktur sequence atau alur sekuensial.
Ketika membandingkan algoritma sekuensial murni dengan algoritma yang menyisipkan subrutin di dalamnya, perbedaan utama yang muncul adalah…
Pada algoritma sekuensial murni, semua langkah ditulis langsung tanpa pemanggilan fungsi terpisah, berbeda dengan yang menyisipkan subrutin.
Perhatikan kode berikut: data = [10, 20, 30, 40, 50]; print(data[-2]). Nilai yang dicetak oleh kode tersebut adalah…
Indeks negatif -2 mengakses elemen kedua dari akhir list, yaitu 40 dari [10, 20, 30, 40, 50].
Diketahui list nilai = [78, 85, 90, 67, 88]. Seorang mahasiswa ingin mengambil subset yang hanya berisi tiga nilai tengah, yaitu [85, 90, 67]. Ekspresi slicing yang tepat adalah…
Slicing nilai[1:4] mengambil elemen dari indeks 1 hingga sebelum indeks 4, yaitu [85, 90, 67].
Seorang programmer ingin menambahkan elemen 99 di akhir list angka = [1, 2, 3]. Ia lalu ingin menghapus elemen pertama dari list tersebut. Urutan metode yang digunakan adalah…
append() digunakan untuk menambah elemen di akhir list, sedangkan pop(0) menghapus dan mengembalikan elemen pada indeks pertama.
Siti menyimpan daftar nama siswa dalam variabel siswa = ['Ani', 'Budi', 'Citra']. Ia mengetik siswa[1] = 'Beni' dan berhasil mengubah isi list. Jika ia melakukan hal yang sama pada string teks = 'Halo' dengan teks[1] = 'e', Python akan…
String bersifat immutable di Python sehingga operasi pengubahan karakter via indeks akan menghasilkan TypeError.
List A = [1, 2] dan list B = [1, 2] memiliki isi yang identik. Seorang programmer ingin menambahkan seluruh elemen list B ke dalam list A sehingga A menjadi [1, 2, 1, 2]. Metode yang menghasilkan efek tersebut adalah…
Metode extend() menambahkan setiap elemen dari iterable (list B) satu per satu ke akhir list A, bukan menambahkan sebagai satu elemen utuh.
Dalam program pengolahan data ujian, variabel hasil = [80, 75, 90, 75, 85]. Untuk mengetahui berapa kali nilai 75 muncul dalam list tersebut, metode yang tepat digunakan adalah…
Metode count() pada list digunakan untuk menghitung frekuensi kemunculan elemen tertentu, dalam hal ini nilai 75.
Salah satu perbedaan paling mendasar antara tuple dan list di Python terletak pada…
Tuple bersifat immutable sehingga isinya tidak dapat diubah setelah pembuatan, sedangkan list bersifat mutable.
Diketahui kode: koordinat = (7, 14); x, y = koordinat. Setelah eksekusi, nilai x dan y masing-masing adalah…
Unpacking tuple (x, y = koordinat) akan mengekstrak elemen pertama ke x dan elemen kedua ke y, sehingga x=7 dan y=14.
PT Nusantara menggunakan tuple untuk menyimpan data sensitif konfigurasi sistem, bukan list. Alasan keamanan yang paling tepat untuk pilihan ini adalah…
Karena tuple bersifat immutable, penggunaannya untuk data sensitif mencegah modifikasi tidak disengaja yang dapat mengubah konfigurasi sistem.
Struktur data seperti tuple pada Python tidak dapat diubah isinya setelah dibuat. Sifat ini secara teknis disebut…
Tuple memiliki sifat immutable, artinya elemen-elemennya tidak dapat ditambah, dihapus, atau diubah setelah pembuatan objek.
Seorang pengembang menyimpan koordinat lintang dan bujur dalam variabel koordinat = (-6.2088, 106.8456). Ia ingin mengekstrak nilai lintang dan bujur tersebut ke dalam variabel lat dan lon dalam satu baris perintah. Teknik yang paling tepat digunakan adalah…
Tuple unpacking memungkinkan ekstrak langsung elemen tuple ke variabel individual, seperti lat, lon = koordinat.
Mengapa tuple lebih aman digunakan sebagai kunci dictionary dibandingkan list…
Kunci dictionary harus hashable dan immutable. Tuple memenuhi syarat ini, sedangkan list yang mutable dapat mengalami perubahan isi sehingga hash-nya tidak konsisten.
Struktur data yang menyimpan pasangan key-value dan bersifat mutable di Python dikenal sebagai…
Dictionary adalah struktur data mutable yang menyimpan data dalam bentuk pasangan key-value dengan akses cepat berdasarkan key.
Dalam sebuah program inventaris toko, pemilik toko menyimpan stok barang dengan nama barang sebagai pengenal dan stok sebagai nilai. Jika ia ingin mengambil stok suatu barang dengan cepat tanpa melakukan iterasi satu per satu, struktur data yang paling tepat adalah…
Dictionary menyediakan akses langsung ke value berdasarkan key unik, sangat efisien untuk pencarian tanpa iterasi.
Perhatikan kode: barang = {'pensil': 50, 'buku': 30}; print(barang['pena']). Jika key 'pena' tidak ada dalam dictionary, Python akan…
Mengakses key yang tidak ada pada dictionary langsung dengan kurung siku akan memicu KeyError, bukan mengembalikan nilai default.
Seorang mahasiswa akan menggunakan fungsi akar kuadrat dan konstanta π dari modul standar Python. Ia menulis import math. Untuk memanggil fungsi akar kuadrat dari bilangan 25, sintaks yang benar adalah…
Dengan import math, seluruh modul dimuat dan fungsi-fungsi di dalamnya diakses dengan awalan math., seperti math.sqrt().
Perbedaan antara perintah import math dan from math import pi adalah…
import math memperkenalkan modul sebagai objek dengan namespace sendiri, sementara from math import pi memasukkan nama pi langsung ke namespace pemanggil.
Di perusahaan logistik, sistem melacak status pengiriman menggunakan kode numerik: 0 untuk dikemas, 1 untuk dikirim, 2 untuk tiba. Pengembang menggunakan dictionary untuk menerjemahkan kode menjadi teks status. Struktur ini mengandalkan karakteristik dictionary berupa…
Dictionary memungkinkan akses langsung ke value melalui key dalam kompleksitas konstan, cocok untuk penerjemahan berbasis kode.
Blok kode yang didefinisikan dengan keyword def dan dapat dipanggil berulang dalam program Python disebut…
Fungsi didefinisikan menggunakan keyword def dan merupakan blok kode yang dapat dipanggil kembali untuk menjalankan tugas tertentu.
Seorang programmer menulis: def salam(nama): print('Halo', nama). Ia memanggilnya dengan salam(nama='Budi'). Teknik pengiriman argumen ini disebut…
Pengiriman argumen dengan menyebut nama parameter secara eksplisit, seperti nama='Budi', disebut keyword argument.
Perhatikan kode: def hitung(a, b=2): return a * b. Fungsi ini dipanggil dengan hitung(5) dan hitung(5, 3). Nilai pengembalian masing-masing adalah…
Pada hitung(5), b menggunakan nilai default 2 sehingga hasil 5*2=10. Pada hitung(5,3), b diberi nilai 3 sehingga hasil 5*3=15.
Apa yang terjadi jika sebuah fungsi tidak memiliki keyword return secara eksplisit…
Di Python, fungsi yang tidak memiliki return eksplisit akan otomatis mengembalikan None saat pemanggilan selesai.
Dosen meminta mahasiswa membuat fungsi untuk menentukan apakah sebuah bilangan adalah bilangan prima. Fungsi menerima satu parameter bilangan bulat dan mengembalikan True jika prima. Dalam definisi fungsi tersebut, bilangan yang diuji dikenal sebagai…
Variabel yang ditulis dalam definisi fungsi sebagai penerima nilai adalah parameter formal. Argument aktual adalah nilai yang diberikan saat pemanggilan.
Variabel yang didefinisikan di dalam sebuah fungsi dan hanya dapat diakses di dalam fungsi tersebut memiliki cakupan…
Variabel yang didefinisikan di dalam fungsi memiliki local scope, artinya hanya dikenal dan dapat diakses di dalam blok fungsi tersebut.
Seorang mahasiswa menulis kode: total = 100; def diskon(): total = total – 20. Saat fungsi dipanggil, Python memunculkan UnboundLocalError. Penyebab error ini adalah…
Python menganggap total di dalam fungsi sebagai variabel lokal karena dilakukan assignment. Saat mencoba mengurangi, variabel lokal tersebut belum memiliki nilai, sehingga terjadi UnboundLocalError.
Dalam sebuah modul, variabel PI = 3.14 dideklarasikan di luar semua fungsi. Untuk memodifikasi nilai PI dari dalam fungsi agar perubahan terlihat di luar fungsi, diperlukan…
Keyword global memberitahu Python bahwa variabel yang dimaksud adalah variabel global, sehingga modifikasi di dalam fungsi memengaruhi variabel global tersebut.
Ani mendefinisikan variabel counter = 0 di luar semua fungsi. Di dalam fungsi increment(), ia ingin mengubah nilai counter agar perubahan tersebut terlihat di luar fungsi. Kata kunci yang harus digunakan Ani di dalam fungsi adalah…
Keyword global memberi tahu Python bahwa variabel di dalam fungsi merujuk ke variabel yang didefinisikan di lingkup global, sehingga perubahan di dalam fungsi memengaruhi variabel tersebut di luar fungsi.
Dua fungsi berbeda dalam satu modul, yaitu fungsi_A dan fungsi_B, masing-masing mendeklarasikan variabel lokal dengan nama yang sama, yaitu data = 50. Ketika kedua fungsi dipanggil secara bergantian, nilai variabel data pada fungsi_A…
Variabel lokal hanya hidup dalam lingkup fungsi tempat ia didefinisikan. Nama yang sama pada fungsi berbeda tidak saling memengaruhi karena masing-masing memiliki alokasi memori sendiri.
Sebuah program divisi mencoba membagi dua bilangan dari input pengguna. Ketika pengguna memasukkan pembagi bernilai nol, Python secara otomatis menghentikan eksekusi dan menampilkan pesan kesalahan. Peristiwa ini dikategorikan sebagai…
Pembagian dengan nol adalah contoh exception yang hanya terdeteksi saat program dijalankan, bukan saat penulisan atau kompilasi. Python menghentikan eksekusi dan melemparkan ZeroDivisionError.
Budi membuat program kalkulator yang rentan terhadap input non-numerik dari pengguna. Ia ingin memastikan bahwa jika terjadi kesalahan konversi tipe data, program tidak langsung berhenti melainkan menampilkan pesan ramah. Struktur Python yang wajib ia gunakan adalah…
try-except adalah mekanisme penanganan exception bawaan Python. Kode yang berpotensi error diletakkan di blok try, dan jika terjadi exception, eksekusi berpindah ke blok except tanpa menghentikan program.
Seorang pengembang menulis blok try-except-finally untuk membuka dan memproses file. Jika exception terjadi di blok try dan berhasil ditangkap oleh except, bagian finally akan…
Blok finally selalu dijalankan setelah try-except selesai, tanpa peduli apakah exception terjadi atau tidak. Ini berguna untuk membersihkan sumber daya seperti menutup file atau koneksi database.
Dalam modul validasi data, seorang programmer sengaja memicu exception ketika data yang diterima tidak memenuhi kriteria bisnis tertentu, meskipun secara sintaks tidak ada yang salah. Keyword untuk memicu exception secara manual tersebut adalah…
Keyword raise digunakan untuk melemparkan exception secara eksplisit. Programmer dapat menentukan tipe exception dan pesan kustom untuk memberi tahu pemanggil bahwa kondisi tertentu tidak terpenuhi.
Rina memiliki file konfigurasi yang harus selalu ada agar program berjalan. Ia menulis kode untuk membaca file tersebut di blok try, dan meletakkan pesan 'File tidak ditemukan' di except. Agar exception hanya tertangkap jika file benar-benar hilang dan bukan karena kesalahan lain, Rina sebaiknya…
Menyebut tipe exception spesifik seperti FileNotFoundError memastikan bahwa hanya kesalahan itu yang ditangani. Exception lain tetap akan merambat ke atas dan tidak tertelan secara diam-diam.
Sebuah aplikasi membaca data dari API eksternal dan menyimpannya ke database. Tiga jenis kesalahan mungkin terjadi: koneksi gagal, data tidak valid, dan kegagalan penyimpanan. Untuk memberikan penanganan berbeda pada setiap kesalahan, struktur yang paling tepat terdiri dari…
Python mendukung multiple except blocks dalam satu try. Setiap except dapat menangani tipe exception berbeda, sehingga programmer dapat memberikan respons yang spesifik sesuai jenis kesalahan yang terjadi.
Pak Budi menulis beberapa blok except setelah try, dimulai dari yang paling spesifik hingga yang paling umum. Suatu exception bertipe ValueError terjadi, tetapi ia juga memiliki except Exception sebagai blok terakhir. Exception akan ditangani oleh…
Python memeriksa blok except dari atas ke bawah. Begitu menemukan kecocokan tipe exception, blok itu dieksekusi dan blok berikutnya diabaikan. Urutan spesifik ke umum mencegah except general menangkap semua lebih dulu.
Seorang programmer ingin menangkap exception bertipe ValueError dan TypeError dengan penanganan yang sama. Daripada menulis dua except terpisah, ia dapat menulis…
Python mengizinkan satu blok except menangani beberapa tipe exception dengan menuliskannya dalam tuple, misalnya except (ValueError, TypeError). Ini menyatukan penanganan untuk beberapa exception dalam satu blok.
Sistem perbankan menangkap exception menggunakan except Exception. Ketika ditinjau ulang, ditemukan bahwa KeyboardInterrupt (Ctrl+C) juga ikut tertangkap dan tidak bisa menghentikan program. Manakah pernyataan yang paling tepat mengenai situasi ini…
Hirarki exception Python menempatkan KeyboardInterrupt dan SystemExit sebagai turunan langsung BaseException, bukan Exception. Oleh karena itu, except Exception tidak semestinya menangkap keduanya, menjaga agar program tetap bisa dihentikan paksa.
Siti memproses data sensor yang menghasilkan ribuan angka per detik. Ia menggunakan except Exception di bagian akhir setelah beberapa except spesifik. Praktik ini masih aman karena…
Menempatkan except Exception setelah except spesifik memastikan exception yang sudah dikenal ditangani lebih dulu. Except Exception berfungsi sebagai jaring pengaman terakhir untuk kesalahan tak terduga.
Guru matematika ingin menghitung rata-rata nilai ujian 40 siswa. Ia menerima input nilai satu per satu dalam perulangan, menjumlahkannya, lalu membagi total dengan 40. Sebelum membagi, ia harus memastikan bahwa…
Pada algoritma rata-rata, urutan sekuensial menuntut penjumlahan seluruh data selesai sebelum pembagian. Jika pembagian dilakukan sebelum total siap, hasil akan keliru. Ini adalah inti pola input-proses-output.
Seorang dosen membuat program untuk mengonversi nilai angka (0–100) menjadi huruf: ≥85 mendapat A, ≥70 mendapat B, ≥55 mendapat C, dan sisanya D. Ketika program menerima input 110, seharusnya program menolak karena di luar rentang. Untuk menangani kasus ini, sebelum masuk ke rantai if-elif-else, langkah yang paling tepat adalah…
Validasi input adalah langkah awal sebelum pemrosesan logika utama. Memeriksa rentang nilai 0–100 di awal mencegah data tidak sah masuk ke rantai konversi dan memberi pesan kesalahan yang spesifik.
Program konversi nilai mahasiswa menggunakan struktur if-elif-else. Seorang mahasiswa mendapat nilai 70, yang memenuhi kondisi nilai ≥70. Namun, program mengeluarkan C karena kondisi nilai ≥80 diperiksa lebih dulu. Penyebab perilaku ini adalah…
Pada rantai if-elif-else, kondisi dievaluasi dari atas ke bawah. Jika kondisi tertinggi tidak ditempatkan pertama, nilai yang memenuhi beberapa kondisi akan tertangkap oleh kondisi yang lebih rendah, menghasilkan output yang salah.
Seorang kepala sekolah meminta laporan rata-rata nilai ujian akhir dari tiga kelas paralel. Program menghitung rata-rata per kelas, lalu menghitung rata-rata dari ketiga rata-rata kelas tersebut. Pernyataan yang tepat mengenai hasil perhitungan ini adalah…
Rata-rata dari rata-rata kelas tidak selalu sama dengan rata-rata seluruh siswa. Keduanya sama hanya jika setiap kelas memiliki jumlah siswa yang identik. Jika ukuran kelas berbeda, bobot tiap kelas terhadap rata-rata total tidak seragam.
Bu Rina mengajar di sebuah SMK dan telah selesai mengoreksi ujian akhir 30 siswa. Ia ingin programnya langsung menolak input nilai yang kurang dari 0 atau lebih dari 100 sebelum diproses ke perhitungan rata-rata. Mekanisme yang paling tepat untuk menangani nilai di luar rentang tersebut adalah…
Validasi input dengan if di setiap iterasi memungkinkan pemeriksaan rentang secara langsung dan meminta input ulang saat data tidak valid.
Sebuah sekolah menetapkan kriteria kelulusan: siswa lulus jika nilai akhir ≥ 60 dan kehadiran ≥ 75%. Bima memperoleh nilai akhir 58 dengan kehadiran 90%, sedangkan Dina memperoleh nilai 72 dengan kehadiran 70%. Berdasarkan program penentu kelulusan yang menerapkan operator logika AND, status Bima dan Dina adalah…
Kedua syarat harus dipenuhi bersamaan (AND). Bima gagal karena nilai kurang dari 60, Dina gagal karena kehadiran di bawah 75%.
Mahasiswa semester akhir diminta membuat fungsi untuk menghitung IPK dari daftar mata kuliah yang disimpan dalam list dua dimensi berpasangan [sks, bobot]. Di dalam fungsi tersebut, total_sks = 0 dan total_bobot = 0 diinisialisasi sebelum perulangan. Setelah perulangan selesai, IPK dihitung sebagai total_bobot / total_sks. Jika terdapat mata kuliah dengan bobot nol karena mahasiswa tidak lulus, apa dampaknya terhadap perhitungan IPK…
Mata kuliah berbobot nol menambah total_sks tetapi tidak menambah total_bobot, sehingga IPK menjadi lebih kecil dari yang seharusnya karena hanya pembagi yang bertambah.
Kepala program studi meminta laporan statistik nilai ujian tengah semester. Seorang asisten membuat fungsi hitung_statistik(data) yang mengembalikan nilai rata-rata, nilai tertinggi, dan nilai terendah. Fungsi tersebut dipanggil dengan data = [78, 85, 72, 90, 66]. Untuk menampilkan ketiga nilai hasil fungsi dalam tiga variabel terpisah dalam satu pemanggilan, teknik yang digunakan pada sisi pemanggil adalah…
Fungsi dapat mengembalikan beberapa nilai dalam bentuk tuple. Tuple unpacking memungkinkan mengekstraknya langsung ke variabel terpisah, seperti rata, maks, min = hitung_statistik(data).
Seorang guru BK memiliki data nilai psikotes 200 siswa. Ia ingin menghitung standar deviasi untuk mengukur sebaran nilai. Fungsi buatannya menerima list nilai dan mengembalikan satu angka desimal. Agar fungsi tersebut dapat digunakan kembali untuk kelas lain tanpa menulis ulang kode, langkah yang paling tepat dalam perancangan fungsi adalah…
Parameter fungsi memungkinkan data yang berbeda dimasukkan setiap pemanggilan, menjadikan fungsi bersifat generik dan dapat digunakan kembali untuk berbagai dataset.
Dinas Pendidikan kota meminta program untuk mengklasifikasikan sekolah berdasarkan rerata ujian nasional: kategori Unggul jika ≥ 85, Baik jika 70–84, Cukup jika 55–69, dan Kurang jika < 55. Program menerima input berupa list nilai siswa dan menghitung rata-ratanya. Supaya program memberikan kategori yang tepat untuk setiap sekolah dengan efisien, struktur pengendali yang paling sesuai adalah…
Rantai if-elif-else memungkinkan pemeriksaan berurutan. Dimulai dari batas tertinggi (≥85) ke bawah memastikan pengelompokan tepat tanpa tumpang tindih antar kategori.
Sebuah koperasi sekolah menjual alat tulis dan ingin membuat kalkulator harga otomatis. Program menampilkan menu: 1. Pensil (Rp3.000), 2. Buku (Rp7.000), 3. Pulpen (Rp5.000). Pengguna memilih menu dan jumlah, lalu program menampilkan total harga. Struktur kontrol utama yang mengarahkan alur program ke perhitungan yang sesuai dengan pilihan pengguna adalah…
Program menu-driven menggunakan percabangan if-elif-else untuk memilih operasi berdasarkan input pengguna, yaitu mencocokkan nomor menu dengan blok perhitungan yang sesuai.
PT Mega Retail memiliki gudang dengan ribuan jenis barang. Kepala gudang meminta program yang dapat menambah stok barang baru, mencari stok berdasarkan kode barang, dan menghapus barang yang sudah tidak dijual. Dari ketiga operasi tersebut, yang paling membedakan efisiensi penggunaan dictionary dibanding list adalah…
Dictionary menyimpan pasangan key-value sehingga pencarian berdasarkan key (kode barang) dapat dilakukan secara langsung tanpa iterasi, tidak seperti list yang memerlukan pencarian linear.
Dalam aplikasi pengelolaan inventaris toko, seorang pengembang menggunakan dictionary dengan kode_barang sebagai key dan data_barang (berupa tuple: nama, stok, harga) sebagai value. Suatu hari, stok barang dengan kode 'B101' perlu ditambah 20 unit. Mengingat tuple bersifat immutable, langkah yang harus dilakukan adalah…
Tuple tidak dapat diubah elemennya. Solusinya adalah membuat tuple baru dengan nilai stok yang diperbarui, lalu menetapkannya kembali sebagai value untuk key 'B101' di dictionary.
Pak Anton membuat program pencarian kata untuk menganalisis teks pidato. Ia ingin mengetahui posisi indeks setiap kemunculan kata 'pendidikan' dalam list kata yang diperoleh dari pemisahan teks. Metode list yang mengembalikan indeks kemunculan pertama suatu elemen adalah index(), tetapi metode ini hanya menemukan kemunculan pertama. Agar semua posisi ditemukan, pendekatan yang paling akurat adalah…
enumerate() mengembalikan pasangan indeks dan elemen saat iterasi. Dengan memeriksa kecocokan elemen, semua posisi kemunculan kata dapat dicatat tanpa memodifikasi list asli.
Sebuah program kalkulator menampilkan menu operasi: +, -, ×, ÷. Setelah pengguna memilih operasi, program meminta dua bilangan. Jika pengguna memasukkan huruf alih-alih angka pada input bilangan, program tetap berjalan dan meminta input ulang alih-alih berhenti dengan error. Struktur yang tepat untuk menangani skenario ini adalah…
try-except menangkap ValueError saat konversi gagal. Dengan menempatkannya dalam perulangan, program dapat meminta input ulang hingga pengguna memberikan angka yang valid.
Lina membuat aplikasi catatan keuangan harian. Setiap transaksi disimpan sebagai dictionary dengan key 'jenis' (pemasukan/pengeluaran) dan 'jumlah'. Di akhir bulan, program harus menghitung total pemasukan dan total pengeluaran untuk menampilkan saldo. Pendekatan yang tepat untuk mengakumulasi kedua total tersebut dari list transaksi adalah…
Satu perulangan for dapat memeriksa nilai key 'jenis' di setiap dictionary transaksi. Gunakan if untuk mengarahkan penambahan ke akumulator pemasukan atau pengeluaran.
Seorang mahasiswa membuat program penjadwalan kuliah mingguan. Ia menyimpan jadwal dalam list of tuples dengan format (hari, jam, mata_kuliah). Untuk menampilkan seluruh jadwal pada hari 'Senin' saja tanpa mengiterasi seluruh elemen satu per satu secara manual setiap kali ditampilkan, strategi yang paling efisien dalam kode adalah…
List comprehension dengan filter if memungkinkan penyaringan elemen berdasarkan kondisi secara ringkas dan efisien dalam satu baris kode, langsung menghasilkan list jadwal hari Senin.
PT Logistik Nusantara memiliki program yang meminta pengguna memasukkan jumlah barang yang akan dikirim. Program lalu membagi jumlah tersebut dengan kapasitas truk untuk menghitung banyaknya perjalanan. Ketika pengguna memasukkan 'sepuluh' pada input jumlah barang, program langsung menampilkan 'Input tidak valid, masukkan angka' tanpa berhenti. Struktur Python yang bertanggung jawab atas perilaku ini adalah…
Konversi string 'sepuluh' ke integer memicu ValueError. Blok try-except menangkapnya dan menampilkan pesan ramah, mencegah program berhenti mendadak.
Aplikasi pencatat transaksi harian Pak Budi menyimpan data dalam list bernama transaksi. Suatu hari ia ingin menghapus transaksi dengan jumlah negatif yang menandakan kesalahan input. Ia menulis perulangan for i in range(len(transaksi)) dan menghapus elemen dengan del transaksi[i] ketika transaksi[i] < 0. Namun, beberapa transaksi negatif tetap lolos. Penyebab kegagalan logika ini adalah…
Menghapus elemen saat iterasi maju menyebabkan pergeseran indeks. Elemen setelah yang dihapus bergeser ke indeks yang sudah dilewati iterasi, sehingga terlewat dari pemeriksaan.
Program kasir sebuah minimarket menerima input jumlah uang yang dibayarkan pembeli dan total belanja. Program menghitung uang kembalian. Ketika pembeli memasukkan jumlah bayar yang lebih kecil dari total belanja, program menampilkan 'Uang tidak cukup' dan kembali ke menu utama alih-alih menghitung kembalian negatif. Untuk mencegah input non-numerik seperti 'lima puluh ribu' menyebabkan crash, blok try-except ditempatkan mengelilingi…
Pengecualian akibat input non-numerik hanya terjadi saat konversi string ke integer atau float. Menempatkan try-except spesifik di sekitar konversi sudah cukup menangani error tanpa membungkus logika yang tidak relevan.
Latihan sintaks Python tadi keliatan gampang ya. Tapi coba deh cek ulang bagian exception di Modul 7. Banyak yang ketuker antara try-except biasa sama multiple exception. Satu soal aja bisa bikin logika berantakan.
Nah, di SPMT4216 Algoritma dan Pemrograman, soal UO sering muncul dari Modul 8 dan 9. Studi kasus pendidikan atau non-pendidikan yang minta kamu bikin fungsi utuh. UTM-nya sih biasanya ngetes pemahaman tipe data dan perulangan. Kalau butuh latihan nalar lain, ada soal UT PEMA4423 Pengantar Analisis Real yang ngasah logika pembuktian. Udah pede belum sama kode yang kamu tulis tadi?





