Algoritma adalah urutan langkah terbatas yang mengubah masukan tertentu menjadi keluaran tertentu. Menyusunnya dimulai bukan dari kode, melainkan dari memecah satu tugas besar menjadi langkah-langkah kecil. Sebuah langkah disebut bisa diuji kalau kamu dapat menyebutkan satu contoh masukan dan satu hasil yang benar untuk contoh itu, tanpa menjalankan langkah yang lain.
Di pekerjaan nyata permintaan datang dalam satu kalimat: hitung insentif bulan ini dari daftar transaksi. Kalimat itu dipecah menjadi tiga langkah. Ambil transaksi yang berstatus lunas. Jumlahkan nilainya. Kalikan dengan persen insentif. Langkah pertama diberi dua transaksi dan harus mengembalikan satu; langkah kedua diberi dua angka dan harus mengembalikan jumlahnya. Ketika hasil akhirnya meleset, kamu tahu persis langkah mana yang diperiksa lebih dulu, dan setiap langkah bisa diperbaiki tanpa menyentuh yang lain.
# Satu tugas, dua langkah yang masing-masing punya contoh pemeriksaan.
def baris_lengkap(baris):
return [b for b in baris if b["email"]]
def alamat(baris):
return [b["email"] for b in baris]
# baris_lengkap([{"email": ""}, {"email": "a@b.id"}]) -> [{"email": "a@b.id"}]
# alamat([{"email": "a@b.id"}]) -> ["a@b.id"]Contoh lain di luar angka: mencetak kartu nama peserta dipecah menjadi membaca daftar peserta, menyusun satu baris teks untuk satu peserta, lalu menggabungkan semua baris. Langkah kedua sudah dapat diuji dengan satu peserta saja, jauh sebelum berkas pesertanya tersedia.