Modul 4 — Pemrograman Terstruktur

4.1 Struktur Data dan Tipe Data

Aturan penamaan variabel, tipe data primitif Python (int, float, str, bool), operator & type casting, serta pemilihan struktur data koleksi (List, Tuple, Dictionary, Set) untuk penyelesaian komputasi.

Progres disimpan di browser ini saja.

A. Variabel & Tipe Data Dasar Python

Variabel adalah pengenal (*identifier*) memori untuk menampung nilai data. Python bersifat *dynamically typed* (tipe ditentukan otomatis dari nilai penugasan) dan *case-sensitive* (huruf besar dan kecil dibedakan: `Skor` berbeda dari `skor`).

Tipe DataKlasifikasi NilaiContoh NilaiSkenario Penggunaan
intBilangan bulat positif/negatif tanpa koma18, 0, -5Penghitungan umur, jumlah stok, skor nilai ujian
floatBilangan desimal bertitik koma3.14, 85.5, 0.0Kalkulasi rata-rata, tinggi badan, persentase diskon
strUntaian teks / karakter diapit kutip'Budi', 'A102'Nama siswa, alamat, NIK/nomor HP (yang tidak dihitung)
boolNilai logika kebenaranTrue, FalseStatus kelulusan (lulus/tidak), saklar kondisi
NoneTypeKetiadaan nilai (kosong / null)NoneNilai awal variabel sebelum diisi data

B. Operator dan Konversi Tipe (Type Casting)

OperatorOperasi MatematikaContoh KodeHasil dan Tipe
/Pembagian nyata (Float Division)10 / 25.0 (SELALU menghasilkan float)
//Pembagian bulat (Floor Division)7 // 23 (menghilangkan sisa desimal)
%Modulo (Sisa Hasil Bagi)7 % 21 (dipakai cek ganjil/genap)
**Eksponensial (Pangkat)2 ** 38
+Penggabungan String (Bila teks)'5' + '3''53' (Bukan 8!)
nilai = 85
print(type(nilai))        # <class 'int'>
print(float(nilai))       # 85.0

umur_str = input('Umur: ') # input() SELALU menghasilkan str!
umur_int = int(umur_str)  # type casting eksplisit ke int agar bisa dihitung

C. Struktur Data Sederhana (Koleksi)

Struktur DataCiri Khas & SifatSintaks LiteralKapan Tepat Dipakai
ListBerurutan, berindeks numerik (0-based), dinamis (*mutable* / bisa diubah), boleh duplikat.[80, 85, 90]Kumpulan nilai yang bertambah, berkurang, atau diurutkan.
TupleBerurutan, berindeks numerik, konstan (*immutable* / tidak dapat diubah setelah dibuat).(10, 20)Data koordinat spasial (x, y) atau konstanta dimensi.
DictionaryPasangan key-value, akses nilai lewat nama kunci (key), key harus unik.{'nama': 'Ani', 'skor': 90}Menyimpan entitas data berlabel lengkap (seperti satu baris record murid).
SetTidak berurutan, tidak berindeks, hanya menampung nilai unik (otomatis buang duplikat).{1, 2, 3}Operasi himpunan matematika atau menyaring elemen duplikat.
# 1. List manipulasi
nilai = [80, 85, 90, 75]
print(nilai[0])    # 80 (elemen pertama)
print(nilai[-1])   # 75 (elemen terakhir)
nilai.append(95)   # menambahkan elemen baru di akhir
print(sum(nilai) / len(nilai)) # 85.0 (menghitung rata-rata)

# 2. Dictionary untuk data terstruktur
siswa = {'nama': 'Ani', 'kelas': 'XII PPLG', 'skor': 92}
print(siswa['nama'])       # Ani
siswa['skor'] = 98         # memodifikasi nilai via key

# 3. Set untuk eliminasi duplikasi
angka = [1, 2, 2, 3, 3, 3]
print(set(angka))          # {1, 2, 3} (duplikat hilang)

D. Analisis Memilih Tipe Data (Contoh Matriks Soal)

nilai_tugas = 80
nilai_ujian = 90
nilai_akhir = (nilai_tugas + nilai_ujian) / 2

if nilai_akhir >= 75:
    status_lulus = True      # atau teks 'Lulus'
else:
    status_lulus = False     # atau teks 'Tidak Lulus'

Evaluasi Pernyataan:

  • Benar: `nilai_akhir` sebaiknya bertipe `float` karena dihasilkan dari operator pembagian `/`.
  • Benar: `status_lulus` dapat bertipe `bool` (`True`/`False`) jika hanya digunakan untuk percabangan internal program.
  • Benar: `status_lulus` dapat bertipe `str` jika ingin menampilkan pesan langsung kepada pengguna di layar antarmuka.
  • Salah: '`nilai_tugas` dan `nilai_ujian` harus bertipe `str`' (salah besar, string tidak bisa dilakukan perhitungan aritmatika langsung).
  • Salah: '`nilai_akhir` lebih tepat bertipe boolean' (salah, nilai akhir adalah skor numerik, bukan kondisi benar/salah).

Latihan Soal

Pilih jawaban, tekan Check, lalu baca pembahasannya.

Benar 0 / 3

Soal 1mudah

Diberikan potongan kode Python berikut: x = 7 / 2 print(type(x)) Output yang dihasilkan dari eksekusi baris kode tersebut adalah ...

Soal 2sedang

Seorang murid ingin menyimpan biodata satu siswa yang terdiri dari label data 'nama', 'nisn', 'jurusan', dan 'nilai_rata_rata' sehingga setiap atribut dapat dipanggil dengan mudah menggunakan nama labelnya. Struktur data yang paling tepat digunakan adalah ...

Soal 3sedang

Perhatikan potongan kode berikut: angka = [1, 2, 2, 3, 3, 3] hasil = len(set(angka)) print(hasil) Nilai keluaran yang tercetak ke layar terminal adalah ...