C / C++ / JAVA / C# / Python ? C / C++, Python, dan Java merupakan bahasa pemrograman yang umum digunakan sebagai penunjang mata kuliah pemrograman. Lalu apa yang membedakan bahasa pemrograman satu dengan bahasa pemrograman yang lain ? Perbedaaan yang sangat terlihat adalah syntax dari kode program yang dituliskan atau kita sebut dengan schemantic. Ada beberapa pembagian atau klasikasi dari bahasa pemrograman yaitu: • High vs Low High level language adalah bahasa pemrograman yang lebih mirip ke perintah dalam bahasa manusia dan bisa dianalogi dengan sebua buku resep, sedangkan low level language adalah bahasa pemrograman yang lebih cenderung ke arah mesin atau biasa disebut dengan bahasa assembly (bahasa dasar dari mesin/komputer). Contoh high level language adalah C, C++, Java, dan Python. • General vs Targetted General language adalah bahasa pemrograman yang bisa digunakan untuk semua keperluan komputasi sedangkan targetted language adalah bahasa pemrograman yang digunakan pada bidang tertentu saja. Contoh targetted language adalah matlab, maple, dan autocad. • Intrepeted vs Compiled Intrepeted language adalah bahasa pemrograman yang prosesnya dilakukan dengan menerjemahkan dan menjalankan kode program per baris sedangkan compiled language adalah bahasa pemrograman yang prosesnya dilakukan dengan menerjemahkan kode program secara keseluruhan baru melakukan eksekusi dari hasil terjemahan yang telah dilakukan. Contoh intrepeted language adalah python, perl, ruby, dsb sedangan contoh compiled language adalah C, C++, Java, dan C#. Ada beberapa permasalahan yang harus dijelaskan sebelum anda melakukan perancangan program dengan bahasa pemrograman, yaitu: • Syntax. Syntax adalah suatu pernyataan dalam suatu bahasa pemrograman yang valid. Sebagai ilustrasi dalam bahasa Indonesia adalah kucing rusa bertsuang. Ketiga kata tersebut, kata pertama dan kedua terdapat dalam kamus bahasa Indonesia dan kata yang ketiga tidak terdaftar di kamus bahasa Indonesia. Begitupula dengan syntax yang ada pada bahasa pemrograman, apakah kata / huruf / angka yang kita ketik pada saat membuat suatu kode program sudah benar dan terdaftar sebagai keyword pada bahasa pemrograman tersebut. • Statik Simantik. Statik simantik adalah suatu pernyatan dalam bahasa pemrograman yang memiliki arti dan hubungan simantik yang benar. Sebagai contoh dalam bahasa Indonesia adalah Meja saya adalah Susan. Pada pernyataan tersebut, syntax yang digunakan sudah benar (memenuhi aturan SPOK), tetapi arti dari pernyataan tersebut yang tidak jelas / tidak umum. Pada kasus statik simantik, Anda mungkin akan mendapatkan sedikit bantuan / help dari literatur dan internet. • Simantik Penuh. Simantik penuh adalah bagaimana dan apakah yang dilakukan oleh sebuah program. Pada kasus ini, Anda tidak akan mendapatkan bantuan sehingga Anda harus merancang sendiri program yang Anda buat ini untuk apa dan akan menghasilkan keluaran seperti apa. 1 2 INSTRUKSI PRIMITIF DAN TIPE DATA Kuliah yang Anda ikuti ini, yaitu algoritma, pemrograman, dan lab; merupakan mata kuliah yang mengajarkan sedikit syntax, sedikit statik semantik, dan banyak sekali semantik full. Untuk itu, diharapkan pada akhirnya Anda akan dapat memetakan permasalahan ke dalam domain komputasi, membuat program untuk penyelesaiannya, dan membaca program sehingga dapat memakai pustaka yang dibuat oleh orang lain. Dari ketiga permasalahan tersebut, permasalahan simantik penuh adalah permasalahan yang paling berat untuk pemula karena sedikitnya bantuan yang bisa didapatkan. Oleh kerena itu, kita harus memikirkan gaya kita untuk menuliskan program. Gaya yang bagus akan mempermudah kita untuk melakukan debugging pada program yang kita buat. Permasalahan gaya ini akan dibahas lebih detail pada section selanjutnya. 1 Apa itu komputasi ? Sebagaian dari Anda mungkin akan bertanya: mengapa kita perlu belajar pemrograman. Tapi yakinlah bahwa seluruh bidang studi yang ada di Teknik Elektro ini membutuhkan skill untuk memrogram, minimal Anda mengerti tentang bagaimana cara membuat suatu algoritma komputasi. Lalu pertanyaan berikutnya adalah apa itu komputasi. Untuk dapat mengerti apa itu komputasi, kita akan membahas sedikit tentang pengetahuan. Pengetahuan dapat dibagi menjadi dua bagian yaitu deklaratif dan imperatif. Pengetahuan deklratif merupakan pengetahuan tentang sesuatu berupa hipo-tesis, teori, dan deklarasi tentang sesuatu. Sebagai contoh, Anda dapat melihat pernyataan berikut: √ x = y, s.t. y 2 = x, y ≥ 0 Pernyataan diatas merupakan pernyataan pengetahuan deklaratif yang membuat aturan-aturan untuk teori tertentu. Pada kasus dapatkan nilai y √ x = y, penyataan diatas tidak menjabarkan bagaimana men- tetapi menyatakan aturan dan hubungannya. Pengetahuan yang kedua adalah pengetahuan imperatif, yaitu pengetahuan berupa tahapan-tahapan yang dilakukan untuk mendapatkan sesuatu. Contoh mudah dari pengetahuan imperatif adalah resep masakan. Pada resep masakan, kita diminta untuk mempersiapkan bahan serta alat yang akan digunakan dan mengikuti seluruh tahapan yang diberikan secara detil. Pengetahuan imperatif pada bidang komputer bisa disejajarkan dengan komputasi secara umum. Contoh pada bidang komputer pada kasus yang sama dengan yang diberikan pada pengetahuan deklaratif, yaitu menghitung akar. 00 start; menebak G 01 jika G^2 = X stop return G 02 else G = (G + (X/G))/2 03 ulangi 00 Pada potongan tahapan diatas dapat dilihat bahwa pengetahuan imperatif mendeskripsikan langkahlangkah yang harus diambil jika ingin mendapatkan sesuatu. Pengetahuan inilah yang akan Anda dapatkan selama perkuliahan pada mata kuliah ini, yaitu bagaimana tahapan atau langkah-langkah untuk menyelesaikan suatu permasalahan. 2 Instruksi primitif dan tipe data Seperti yang telah dideskripsikan sebelumnya, bahwa suatu pengetahuan imperatif, selanjutnya kita sebut dengan algoritma, merupakan suatu langkah-langkah untuk menyelesaikan sesuatu. Langkah-langkah tersebut dinamakan sebagai instruksi primitif, dimana suatu primitif bisa dibangun dari suatu kumpulan intruksi primitif sehingga instruksi primitif bersifat subjektif. Sebagai 2 2.1 Variabel 2 INSTRUKSI PRIMITIF DAN TIPE DATA contoh, pada resep masakan terdapat beberapa primitif seperti menumis, merajang, memixer, memanggang, dsb; tetapi fungsi primitif bisa berupa beberapa kumpulan primitif seperti bumbu yang dihaluskan yang berarti bumbu tersebut dicampur dan diuleg sampai halus (2 primitif ). Dalam bahasa pemrograman, primitif bisa bermacam-macam sesuai dengan library dan bahasa pemrograman yang digunakan. Sebagai contoh, dalam bahasa python mungkin pencarian akar merupakan instruksi primitif yang bisa digunakan, tetapi pada bahasa assembly tidak fungsi pencarian akar yang bisa digunakan sehingga Anda harus membuat sendiri fungsi tersebut. Pada perkuliahan kali ini, bahasa pemrograman yang digunakan adalah python. Bahasa pemrograman python mempunyai primtif yang sangat banyak, sebagai contoh: operasi arimatik (+ , -, *, **, /, %, >>, <<), mencetak di layar (print), dan menerima input (input / raw_input). Selain intruksi primitif, harus ada data yang diolah. Sebagai contoh dalam resep masakan, bahan apa saja yang digunakan atau alat apa saja yang digunakan dan sebagainya. Kesemuanya itu adalah data/bahan/alat yang akan diolah menjadi sesuatu. Dalam bahasa python (mulai sekarang kita akan selalu membahas tentang bahasa python), ada beberapa tipe data yang bisa digunakan dalam menyelesaikan suatu permasalahan. Lalu bagaimana mendeklarasikan atau mengisi suatu nilai dalam bahasa pemrograman python? Sebelum mulai memanipulasi data, kita berkenalan dulu dengan kode program dari bahasa python. 01| 02| print " Helo World !" 03| Anda dapat menjalankan potongan teks diatas pada interaktif python shell atau Anda dapat membuat suatu le berekstensi .py dan mengeksekusinya. Perlu diingat bahwa python adalah sebuah intrepreter yang menterjemahkan instruksi yang diberikan secara real-time dan dilakukan per baris dari instruksi. Konsekuensi yang didapatkan adalah jika terdapat kesalahan simantik yang terjadi pada tengah-tengah program, maka intrepreter akan menghentikan eksekusi yang berlangsung dan menampilkan pesan kesalahan sesuai dengan kesalahan yang terjadi. 2.1 Variabel Variabel merupakan salah satu komponen yang sangat penting dalam komputasi. Variabel merupakan suatu alamat memori yang dapat digunakan untuk menyimpan suatu tipe data tertentu yang didukung oleh bahasa pemrograman yang digunakan. Variabel dideklarasikan dengan menggunakan suatu nama tertentu dengan aturan: (1) semua karakter yang digunakan adalah a-z, A-Z, 0-9, dan _; (2) selalu diawali dengan karakter huruf; (3) mempunyai tipe data tertentu sesuai dengan deklarasi yang dilakukan. Pada python, terdapat tiga tipe data yaitu tipe data numerik, tipe data non-numerik, dan tipe data khusus. Ketiga tipe data tersebut dapat digunakan bersama variabel untuk melakukan komputasi. Perlu diingat, pada python semua variabel bersifat dinamik yaitu tipe data yang ada dalam variabel tersebut dapat berubah langsung sesuai dengan data yang diberikan. Tipe Data Numerik Tipe data numerik terdiri dari integer, long integer, dan oat. yang merepresentasi suatu bilangan bulat bertanda dari −231 + 1 Integer merupakan tipe data sampai dengan 231 − 1 dan jika mendeklarasikan bilangan bulat yang lebih besar dari range tersebut, maka python akan langsung mengubah bilangan tersebut menjadi bilangan dengan tipe long integer. Tipe data long integer tidak mempunyai batas maksimal sehingga Anda bisa mendeklarasikan bilangan dengan angka yang sangat besar sekalipun. 3 2.1 Variabel 2 INSTRUKSI PRIMITIF DAN TIPE DATA Tipe data oat merupakan tipe data yang dapat merepresentasikan bilangan yang tidak bulat (terdapat koma) dengan presisi tertentu. Tipe data oat merupakan tipe data yang banyak digunakan untuk perhitungan-perhitungan ilmiah dan mempunyai standar cara merepresentasikannya dalam memori, operasi yang dapat dilakukan, dan asumsi-asumsi yang diambil. Ketiga tipe data tersebut dapat dimanipulasi dengan menggunakan seluruh operator logika dan aritmatik. Operator logika akan dijelaskan lebih lanjut, sedangkan operator aritmatik adalah penjumlahan, pengurangan, perkalian, pembagian, pangkat, modulus, dan shift bit. Khusus untuk operasi shift, Anda mungkin belum pernah mendengar dan tidak mengetahui fungsinya. Operator shift bit (<< dan >>) adalah operator yang memipulasi bit (bilangan basis dua yang digunakan oleh komputer dalam melakukan operasi) dengan menggeser bit tersebut ke kanan atau ke kiri sesuai dengan arah dari tanda operator tersebut. Contoh penggunaan dari ketiga tipe data numerilk dapat dilihat pada command berikut. >>> # Deklarasi integer >>> a = 10 >>> a 10 >>> type (a) < type ' int '> >>> # Deklarasi float >>> a = 10.5 >>> a 10.5 >>> type (a) < type ' float ' > >>> # Deklarasi long integer >>> a = 2*1024 >>> a 17976931348623159077293051907890247336179769789423065727343008115773267580550096313 27084773224075360211201138798713933576587897688144166224928474306394741243777678934 24865485276302219601246094119453082952085005768838150682342462881473913110540827237 163350510684586298239947245938479716304835356329624224137216 L >>> type (a) < type ' long '> >>> # Manipulasi data >>> a = (10 + 5) / 3 >>> a 5 >>> a = 10 >> 1 >>> a 5 Tipe Data Non-Numerik String dan boolean merupakan tipe data yang bersifat non-numerik. Meskipun bersifat non- numerik, tetapi kedua tipe data tersebut dalam beberapa hal dapat menggunakan fungsi numerik dalam melakukan manipulasi datanya. String merupakan tipe data yang merepresentasikan suatu array dari huruf yang membentuk suatu kalimat tertentu. Tipe data string biasa digunakan untuk mengambil data input, menulis data output, dan proses debugging. Proses debugging adalah proses dimana Anda mencari kesalahan, terutama kesalahan simantik, pada program dengan mengeksekusi program secara per baris. Tipe data string dapat dideklarasikan dengan menggunakan tanda petik satu atau petik dua sesuai dengan selera. Tipe data yang lain yaitu boolean adalah tipe data yang merepresentasikan suatu nilai logika dan kemungkinan nilainya hanya dua yaitu True dan False. Boolean dapat digunakan sebagai tanda pada suatu eksekusi yang membutuhkan banyak state dalam komputasinya. 4 2.1 Variabel 2 INSTRUKSI PRIMITIF DAN TIPE DATA Operator yang dapat digunakan untuk memanipulasi kedua tipe data tersebut adalah seluruh operator aritmatik untuk tipe data boolean dan operator +, * untuk tipe data string. Pada tipe data boolean, jika dimanipulasi dengan menggunakan operator aritmatik maka python akan menganggap bahwa True sama dengan 1 dan False itu sama dengan 0. Contoh penggunaan dari kedua tipe data tersebut adalah sebagai beikut. >>> # Deklarasi string >>> a = " Ini string " >>> a ' Ini string ' >>> # Deklarasi string yang panjang >>> a = """ Test ini string yang dapat berpindah baris sendiri " "" >>> a ' Test ini string \ nyang dapat berpindah baris sendiri ' >>> type (a) < type ' str '> >>> # Deklarasi boolean >>> a = True >>> a True >>> type (a) < type ' bool '> >>> # Manipulasi variabel >>> a = " Ulang " * 3 >>> a ' UlangUlangUlang ' >>> a = " Ulang " + " Terus " >>> a ' UlangTerus ' >>> a = True * 3 >>> a 3 >>> Tipe Data Khusus Tipe data khusus dan merupakan keunggulan dari bahasa pemrograman python adalah list dan tuple. List merupakan kumpulan data (tipenya dapat berupa apa saja dan dapat dicampur sesuai dengan kebutuhan) yang berurutan dan direpresentasikan dengan angka index. Dalam beberapa bahasa pemrograman yang lain, list biasanya disebut dengan array. List khusus yang menyimpan kumpulan karakter merupakan tipe data string yang telah dijelaskan pada pembahasan sebelumnya. Semua data yang tersimpan dalam list dapat diubah sesuai dengan kebutuhan. Untuk mengakses data yang terdapat dalam list, digunakan sintak nama variabel list yang digunakan dan index nama_list[index] dengan nama_list adalah merupakan angka index yang merupakan representasi dari data pada list. Tuple merupakan tipe data yang sama dengan list tetapi data yang ada pada tipe data tuple tidak dapat diubah. Meskipun data yang ada dalam tuple tidak dapat diubah tetapi dapat dilakukan operasi tertentu pada dua buah tuple. 5 A MENGAMBIL INPUT DARI KEYBOARD >>> # Deklarasi list >>> a = [10 , 20 , 30 , 40] >>> a [10 , 20 , 30 , 40] >>> a [0] 10 >>> # List dengan elemen string >>> a = [" kuda " , " zebra " , " kijang "] >>> a [ ' kuda ', ' zebra ', ' kijang '] >>> a [2] ' kijang ' >>> # List dengan elemen campuran >>> a = [" hello " , 2.0 , 5, [10 , 20]] >>> a [ ' hello ', 2.0 , 5, [10 , 20]] >>> a [3] [10 , 20] >>> # Tuple >>> a = (10 , 20 , 30 , 40 , 50) >>> a [4] 50 >>> b , c = a [0:1] >>> b 10 >>> c 20 >>> A Mengambil Input Dari Keyboard Pada lampiran ini, akan diberikan contoh bagaimana mengambil inputan dari keyboard. dua perintah yang dapat digunakan adalah input(...) but akan menghasilkan data yang berbeda, untuk Ada raw_input(...). Kedua perintah terseperintah input(...) hanya digunakan untuk dan mengambil inputan numerik saja sedangkan untuk mengambil inputan string dan numerik maka dapat digunakan perintah perintah raw_input(...) raw_input(...). Pada dokumentasi python disarankan untuk memakai daripada menggunakan perintah input(...) dan untuk meminimalisasi erraw_input(...). Berikut contoh dari ror yang terjadi, diharapkan Anda juga menggunakan perintah penggunaan perintah >>> # >>> a Input >>> a 123 >>> a Input raw_input(...) dan input(...). Perintah input = input (" Input = ") = 123 = input (" Input = ") = Test Traceback ( most recent call last ): File " < pyshell #18 > " , line 1 , in < module > a = input (" str = ") File " < string >" , line 1, in < module > NameError : name ' Test ' is not defined >>> >>> # Perintah raw_input >>> a = raw_input (" Input = ") Input = Test 123 dan 456 >>> a ' Test 123 dan 456 ' >>> 6