![Implementasi Materi Matematika dalam Pemrograman](https://images.ctfassets.net/7wjlcr9d5ii8/10zyWs5SB0m2BUPK11BrG0/c3be44638ca5e22a3739c453333a18ec/1712212687189.jpg?w=1000&h=902&fl=progressive&q=100&fm=jpg&fit=thumb&f=faces)
Penting ga sih matematika dalam pemrograman? Jawaban singkatnya adalah PENTING. No debat!π Waktu kecil kita sering bertanya, "Matematika yang kita pelajari di sekolah itu berguna ga sih di masa depan?". Sekarang pertanyaan itu udah terjawab ketika gw bekerja sebagai Software Engineer. Kebanyakan orang menganggap Matematika itu berupa angka dan perhitungan rumit, padahal Matematika itu sendiri cakupannya sangat luas, ga sebatas perhitungan kali bagi tambah kurang. Matematika ga bisa lepas dari pemrograman, dan pemrograman juga selalu berhubungan dengan matematika. Apa yang diterapkan pada pemrograman adalah penerapan dari ilmu matematika. Agak miris sih, ada yang mau jadi Software Engineer tapi alergi sama matematika dan malah mencari pembenaran bahwa matematika itu tidak penting. Sama aja kayak mau jadi pemain sepak bola tapi ga mau belajar passing bola, padahal itu dasar sepak bola. Tapi gw positive thinking aja, siapa tahu di depan mereka bilangnya ga penting, tapi di belakang justru jungkir balik mempelajarinya. Soalnya di sekolahan banyak yang kayak gitu, bilangnya ga penting tapi pas ujian tiba-tiba dapat 90π. Atau mungkin sebagian orang lupa atau memang ga nyadar bahwa yang mereka lakukan pada pemrograman itu adalah operasi matematika yang pernah dipelajari sewaktu sekolah.
Berikut gw review beberapa materi matematika di sekolah yang dipakai dalam pemrograman.
Bilangan Bulat adalah bilangan yang tidak memiliki koma. Bilangan Desimal adalah bilangan berkoma. Dari SD kita semua sudah diajarkan kedua bilangan tersebut. Termasuk dalam pemrograman, tentu saja kita masih sering berhubungan dengan kedua tipe data tersebut.
Dari SD materi perbandingan pasti sudah diajarkan, menggunakan operator '<', '>', '<=', '>=', '!=', dan '=='. Operator-operator tersebut juga masih digunakan dalam pemrograman untuk membandingkan value.
Seingat gw ini juga diajari dari SD hingga SMA, ketika pelajaran matematika mulai disisipi huruf X dan Y diantara angka. Ini adalah langkah awal seorang murid mengenal sesuatu yang akan sering ia gunakan ketika menjadi seorang programmer.
Konstanta adalah bilangan yang nilainya tetap dan sudah jelas ga akan berubah. Seperti pada 3x + 5, 5 adalah bilangan konstanta. Sama seperti Variabel, Konstanta juga diajarkan berbarengan dengan Variabel dalam materi persamaan linear sebagai bilangan yang memiliki nilai tetap. Dalam pemrograman Constant biasanya digunakan untuk menampung nilai yang tidak bisa di-assign ulang.
Jika x = 3, dan y = 5, berapakah hasil dari 2x + 3y? Itu adalah contoh Fungsi yang sering digunakan saat SMP/SMA. Dari jaman sekolah sebenarnya kita udah diajari Functional Programming untuk membuat Pure Function yang menghasilkan nilai berdasarkan parameter yang ditentukan. Dalam pemrograman ini udah jadi kerjaan rutin bagi programmer. Hanya beda syntax saja.
Array seingat gw diajarkan dari kelas VII SMP. Biasanya di sekolah dulu sering digunakan ketika disuruh mencari jumlah nilai, Mean, Median, dan Modus. Selain itu ketika SMA juga udah diajarkan tentang Array 2D yang disebut juga dengan Matriks. Dalam pemrograman Array tentu sudah tidak asing lagiπ.
Ini juga merupakan pelajaran SMP. Dalam pemrograman, Himpunan disebut dengan Set, yaitu sekumpulan nilai yang berbeda-beda dalam satu kesatuan. Bedanya dengan Array adalah Set nilainya sudah pasti unik. Contohnya {1,2,3}. Selain Himpunan, juga ada namanya Himpunan Bagian. Himpunan Bagian disebut Subset dalam pemrograman. Subset atau Himpunan Bagian adalah nilai yang terbentuk dari sebuah Himpunan lainnya. Ini sering dilakukan ketika ingin mengambil nilai dari sebuah Set dalam range atau kondisi tertentu. Contohnya {1,2,3}, kita ingin membuat Subset dari Set tersebut dengan ketentuan bilangan ganjil, maka subsetnya adalah {1,3}. Hal seperti subset ini juga umum dijumpai dalam melakukan filter pada pemrograman.
Barisan adalah urutan bilangan yang memiliki pola yang tetap. Contohnya {1,2,3,4,5}, atau {2,4,6,8}. Ini juga diajari di SMP dan SMA. Pada database hal ini diimplementasi ketika menerapkan Sequence pada ID. ID tersebut biasanya diatur secara auto-increment per-satu angka, atau per-dua angka, atau pola tertentu yang kita inginkan.
Relasi adalah hubungan antara suatu anggota Himpunan dengan anggota Himpunan lainnya. Ini gw inget diajari saat kelas VIII SMP. Dari namanya saja sudah bisa ditebak bahwa ini dipakai saat mendesain database seperti one-to-one relationship, one-to-many relationship, atau many-to-many relationship pada SQL table.
Irisan adalah himpunan yang anggotanya merupakan anggota A sekaligus anggota B. Contohnya A = {1,2,3}, B = {2,3,4}, maka Irisan A dan B = {2,3}. Irisan dipelajari waktu SMP dan SMA. Itu sebenarnya adalah contoh Inner Join pada SQL yang sering kita lakukan.
Gabungan adalah himpunan yang terdiri dari gabungan semua anggota A dan anggota B. Contohnya A = {1,2,3}, B = {2,3,4}, maka Gabungan A dan B = {1,2,3,4}. Sama seperti Irisan, Gabungan juga dipelajari saat SMP dan SMA. Penerapannya pada SQL yaitu saat melakukan Union dengan jumlah kolom yang sama atau saat menggunakan Full Outer Join untuk menggabungkan semua data tabel termasuk yang tidak berelasi dari beberapa tabel.
Premis 1 = Semua anak kelas B tampan dan pemberani. Premis 2 = Doyok adalah anak kelas B. Kesimpulan = Doyok tampan dan pemberani. Kalau ga salah materi penarikan kesimpulan merupakan pelajaran kelas XI SMA. Penarikan kesimpulan seperti itu adalah teknik dasar algoritma dalam pemrograman.
Gerbang Logika adalah entitas yang bertugas sebagai pengolahan input yang hanya menghasilkan dua kesimpulan, yaitu antara benar atau salah yang digunakan untuk proses selanjutnya. Terdapat beberapa gerbang logika seperti 'and', 'or', 'not', 'nand', 'nor', 'xor', dan 'xnor'. Sudah jelas, ini diterapkan ketika pemrosesan boolean seperti pada if atau else-if pada pemrograman. Ini kalau ga salah juga pelajaran SMA kelas XI.
Modulo adalah operasi matematika untuk mencari sisa hasil pembagian. Modulo merupakan One Way Function dimana tidak ada reverse operator untuk fungsi tersebut. Dalam pemrograman, operator modulo ini cukup sering dimanfaatkan dalam beberapa kasus. Seperti mencari nilai ganjil genap, mencari bilangan prima, rotasi array, mengambil masing-masing digit angka, dan banyak hal lainnya.
Peluang adalah mencari kemungkinan terbaik, terburuk, terbanyak, tersedikit, atau rata-rata dari sebuah kasus. Contohnya mencari tahu kemungkinan sebuah dadu yang muncul ketika dilempar. Ini diajari pada SMP kelas IX dan SMA kelas XII. Pada pemrogaman, teori peluang ini lebih sering digunakan untuk menentukan best practice atau benchmarking pada suatu algoritma menggunakan Big O Notation. Misalkan menentukan decision untuk mengurutkan data lebih baik menggunakan Merge Sort daripada Bubble Sort, karena peluang sorting menggunaan Bubble Sort adalah O(n2), sedangkan Merge Sort O(n * log(n)). Atau saat decision making lainnya.
Kalau ditanya "penting atau tidak?", jawabannya "penting". Tapi kalau ditanya "harus jago atau tidak?", jawabannya "ga harus jago", minimal paham logika dasar matematis, ga harus level expert juga. Matematika dalam pemrograman itu masih level medium lah menurut gw, masih relatif bisa dipelajari secara umum. Beberapa orang udah mental down duluan menganggap Matematika sebagai mimpi buruk, padahal Matematika itu ga semuanya berisi tentang itung-itungan rumit. Yang gw review di atas baru sekedar materi dasar yang diajarkan saat SMA atau SMP. Selain itu juga masih banyak hal lain seperti kalkulasi diskon, pajak, & tagihan lainnya saat order, konversi produk per-unit di pergudangan, menghitung radius tukang ojek di sekitar seperti pada aplikasi ojol, hingga beberapa penerapan logika yang kompleks pada AI ataupun Big Data, dan masih banyak lagi. Kalau alergi sama Matematika bakal kewalahan ketika dapat task terkait hal tersebut di dunia kerja. Makanya bullshit kalau ada yang bilang matematika itu ga penting pada pemrograman. Kemungkinan besar mereka ngodingnya masih berbekal copy-paste syntax dari stackoverflow, ketika ditest bikin program logika sederhana seperti mencari bilangan Prima, Armstrong, Fibonacci, Fizz-Buzz, Anagram, atau Palindrome mungkin bakal mabokπ .