Sunday 31 May 2015

24.1 Initializing Objek

Pada contoh sebelumnya kita tidak menginitializing objek-objeknya, sekarang kita mencoba mengunakannya. Untuk classnya seperti yang dibawah ini ( __init__ =garisbawah, garisbawah, init, garisbawah, garisbawah):



  1. import math
  2. class silinder:
  3.      def __init__(self,a,b):
  4.           self.jari=a
  5.           self.tinggi=b

  6.      def reset(self):
  7.           self.jari=1
  8.           self.tinggi=1

  9.      def luastabung(self):
  10.           self.luas=math.pi*math.pow(self.jari,2)*self.tinggi

  11.      def keliling(self):
  12.           self.keliling=2*math.pi*self.jari*self.tinggi


Pada baris ke 3, kita melakukan inisial untuk variable jari-jari dan tinggi pada sebuah silinder dengan variable a untuk jari-jari, dan variable b untuk tinggi silinder. Selebihnya masih sama seperti contoh sebelumnya. Dan untuk script eksekusinya :


  1. a=tabung(2,5)
  2. print('jari-jari lingkaran=',a.jari)
  3. print('tinggi tabung=',a.tinggi)
  4. print()
  5. a.luastabung();
  6. print('luas tabung=',a.luas)
  7. a.keliling()
  8. print('keliling tabung=',a.keliling)

24.Class dan Object-Oriented Programming

Object-Oriented Progam (OOP)gambarannya adalah, memberikan objek didalam script, memanggil metode, dan lain-lain. Agar script memenuhi standar OOP maka, objek harus berpartisipasi dalam inheritance hieratchy (objek yang memiliki dua atau lebih turunan, dengan kata lain misalnya suatu metode memiliki dua atau lebih fungsi, atau didalam metode memiliki metode-metode lain, dimana dalam metode lain itu terdapat fungsi yang memanggil metode lain.)

Dan Class adalah alat OOP python yang utama. OOP memberikan dan berefek sangat effektif pada program, yang meminimalkan sesuatu yang tidak perlu, sehingga bila kita telah mempunyai sebuah program, dan ingin menambahkan sesuatu didalamnya, kita tidak perlu mengubah program yang ada, tetapi kita bisa menambahkan program yang kita inginkan (gambarannya seperti itu)

Pada python class dibuat dengan statement baru 'class'. Dengan demikian objek class dibuat. Class dirancang untuk membuat dan mengatur objek-objek baru.


OOP Terminology

  • Class: Sebuah program yang merupakan objek, dimana objek tersebut merupakan satu set atribut objek dari class, atribut adalah data member (variabel, instance variable) dan metode.
  • Class variable: sebuah variable yang dapat digunakan pada seluruh class.
  • Data member: sebuah class variable atau instance variable yang memiliki data yang digunakan oleh class dan objek-objeknya
  • Function overloading: Melakukan lebih dari satu perilaku untuk fungsi tertentu. Operasi dilakukan bervariasi dengan objek-objek atau argumen yang terlibat.
  • Instance variable: Sebuah variable yang didefinisikan dalam metode dan hanya untuk class saja.
  • Inheritance: Memindahkan karakter-karakter dari suatu class ke class yang lain.
  • Instance: Sebuah objek individu dari class tertentu. Sebuah.
  • Instantiation: Pembuatan oleh suatu class Instance.
  • Method : Fungsi khusus dari sebuah class.

Kira-kira begini cara pengertian objek, misalkan ada roda sepeda dan roda motor, saat ini kita memiliki dua buah objek, roda sepeda dan roda motor. Lalu kita pasang roda sepeda ke sepeda dan roda motor ke motor, nah sekarang kita mempunyai empat objek. Dalam hal OOP, kita bisa memiliki empat buah objek class. 

Pada contoh diatas kita, setiap class hanya memiliki satu buah objek saja, satu objek (misalnya roda sepeda) tersebut bisa kita pecah menjadi banyak objek lainnya pada class tersebut, misalkan lingkaran luar roda, lingkar dalam roda, tebal roda, lebar roda, profil roda, bahan roda, dan lain-lain, yang berhubungan dengan objek tersebut. Sehingga class seperti blueprint dari satu objek. Kita bisa mengganti atau membuat lingkaran luar, lingkaran dalam dan lain-lain dengan class.



Membuat class baru dengan menggunakan statement class:

class namaClass:
     perintah

Kita coba buat di IDLE, contohnya:

  1. >>> class mobil:
  2. pass
  3.                                  # tekan enter lagi disini
  4. >>> mob1=mobil()
  5. >>> mob2=mobil()
  6. >>> mob1.merk='toyota'
  7. >>> mob2.merk='honda'
  8. >>> mob1.type='avanza'
  9. >>> print(mob1.merk,mob1.type)
  10. toyota avanza
  11. >>> mob2.type='jazz'
  12. >>> print (mob2.merk, mob2.type)
  13. honda jazz
  14. >>> 
Atau bila kita menuliskannya dengan file .py, kita buat file baru dengan menekan ctrl+N (File > New File), lalu window baru muncul, ketikan berikut ini pada window baru tersebut:


class mobil:
     pass
mob1=mobil()
mob2=mobil()
mob1.merk='toyota'
mob2.merk='honda'
mob1.type='avanza'
mob2.type='jazz'
print(mob1.merk,mob1.type)
print(mob2.merk,mob2.type)

Lalu kita save di folder mana saja yang mudah dijangkau, dan beri nama yang menunjukan file tersebut, kemudian tekan F5 (Run > Run Module).

Pada contoh diatas kita membuat class kosong saja, tidak ada data ataupun behaviors (Behaviors adalah sebuah tindakan yang dapat mengubah atau memproses sebuah atau lebih objek.).
Dan kemudian kita membuat dua instance:merk dan type, sehingga bila kita panggil mob1 atau mob2 dengan perintah print(), data yang kita buat, dicetak ke monitor. 
Jadi rumusannya kurang lebih seperti ini: 'objek.attribute=data' Jangan lupa dot(.)nya.

Sekarang kita buat class untuk berbuat sesuatu:
     1.Pada IDLE buat file baru bernama lingkaran.py
     2.Tuliskan:

                           class lingkaran:
                                     def reset(self):
                                              self.jari=0
                               ling=lingkaran()
                                 ling.reset()
                                   print(ling.jari)
               
          Lalu kita run script tersebut

          Hasilnya adalah 0.
          Self adalah suatu variable yang membuat objek tersebut, bila kita membuat ling=lingkaran(), maka self adalah ling, dan bila ling2=lingkaran(), maka self adalah ling2.
          Sekarang kita coba yang lebih komplek lagi.
          Kita tambahkan pada block class:

          1. import math
          2. class lingkaran:    
          3.      def reset(self):
          4.           self.jari=0

          5.      def defa(self):
          6.           self.jari=1

          7.      def setjari(self,jari):
          8.           self.jari=jari

          9.      def luasling(self):
          10.           self.luas=math.pi*math.pow(self.jari,2)

          11.      def kelilingling(self):
          12.           self.keliling=2*math.pi*self.jari


          1. pada baris 1 kita mengimport math, sehingga kita bisa mempergunakan fungsi-fungsi yang ada pada math, seperti math.pi, dan math.pow(x,y).
          2. pada baris 2 kita membuat class yang bernama lingkaran.
          3. pada baris 3 dan 4 kita membuat fungsi yang bernama reset, sehingga bila fungsi ini kita jalankan, maka variable self.jari akan diset menjadi nol dengan fungsi reset.
          4. pada baris ke 6 dan 7 kita menset self.jari ,menjadi 1 dengan menggunakan fungsi defa.
          5. pada baris ke 9 dan 10 kita menset self.jari dengan angka yang kita inginkan dengan fungsi setjari.
          6. baris 12 dan 13, dengan fungsi luasling kita menhitung luas lingkaran
          7. baris 15 dan 16, kita menghitung keliling lingkaran
          dan tambahkan pada script yang akan dieksekusi:

          1. ling=lingkaran()
          2. ling.reset()
          3. print(ling.jari)
          4. ling2=lingkaran()

          5. print('jari-jari menggunakan default')
          6. ling.defa()
          7. print(ling.jari)
          8. print('input jari-jari 1')
          9. ling.setjari(3)
          10. print('jari-jari 1=',ling.jari)
          11. print('cari luas ling1' )
          12. ling.luasling()
          13. print('luas lingkaran1=',ling.luas)
          14. print('cari keliling1')
          15. ling.kelilingling()
          16. print('keliling lingkaran1 =',ling.keliling)
          17. print('---')
          18. print ('input jari-jari 2')
          19. ling2.setjari(4)
          20. print('jari-jari2=',ling2.jari)

          21. print('cari luas ling2')
          22. ling2.luasling()
          23. print('luas lingkaran2=',ling2.luas)
          24. print('cari keliling2')
          25. ling2.kelilingling()

          26. print('kelilinglingkaran2=',ling2.keliling)

          Pada script diatas yang perlu diperhatikan adalah pada baris 10 (ling.setjari(3)dan baris 20 (ling2.setjari(4)), pada baris-baris tersebut berhubungan dengan class baris 9 (def setjari(self,jari):). Pada script baris 10 dan 20, kita menset variable jari dengan angkanya (3 untuk ling, dan 4 untuk ling2), sehingga pada class baris 9 (def setjari(self,jari):) nilai-nilai (ling.jari=3 dan ling2.jari4), masuk dalam jari di class baris 9, variable jari (variable jari pada class baris 9 tersebut boleh menggunakan nama variable lain).



          Dan bila kita jalankan dengan run (F5):


          Sunday 24 May 2015

          23. Lebih dekat dengan Module dan Fungsi

          Pada dasarnya modul dan program itu sama, tetapi ada sedikit perbedaan. Untuk melihat perbedaanya kita langsung saja ke contoh, membuat modul untuk menghilangkan spasi yang berlebihan dan karakter lain yang tidak diinginkan pada satu string berupa kalimat: 
          1. Kita buat dahulu sebuah folder baru (boleh dimana saja, asal ingat tempatnya.) untuk menyimpan file-file modul dan programnya, lalu beri nama folder tersebut dengan nama 'modul1'. 
          2. Lalu kita buka IDLE Pyhon shell.
          3. Pada python shell, File > New File atau dengan menekan tombol Ctrl+N, dan window baru muncul dengan nama 'Untitled'. Pada window 'Untitled' tersebut tekan Ctrl+S, atau File > Save, Pada kolom 'Save in' arahkan ke folder yang kita buat tadi yang bernama 'modul1' atau bila ingin mempermudah pencarian folder kita bisa buat di folder yang telah terbuka (c:/python34/modul1), tetapi kita harus buat sebuah folder baru, dan beri nama 'modul1' atau terserah.
          4. Beri nama pada file dengan nama 'mod1'
          5. Lalu kita buat sebuah file kosong pada folder yang sama dengan 'mod1.py' dengan nama '_init_.py'.
          6. Kembali ke file mod1.py tulis: 

          1. import string
          2. def simplify(text, whitespace=string.whitespace, delete=''):
          3.          r''' komen dengan 3 buah tanda kutip yang biasanya keterangan programer dan copyright '''
          4.         result=[]
          5.         word=''
          6.         a=1 (maaf, saya membuat kesalahan disini, tidak perlu ditulis)
          7.         for char in text: 
          8.                 if char in delete: 
          9.                         continue 
          10.                 elif char in whitespace :   
          11.                         if word:   
          12.                                 result.append(word) 
          13.                                 word='' 
          14.                 else:
          15.                         word+=char 
          16.                 a+=1 (juga kesalahan disini, tidak perlu ditulis)
          17.         return " ".join(result)

          sebaiknya kita tidak copy paste text diatas, karena python sangat sentitif terhadap spasi dan tabulasi yang tidak perlu. contohnya pada baris

          'def simplify(text, whitespace=string.whitespace, delete=''):'

          bila kita tekan enter, maka dibaris berikutnya akan diberikan spasi yang cukup terlihat, sebaiknya tidak diubah jarak tersebut. 
          Bila kita ingin menutup satu blok, dan kursor ada masih pada blok tersebut, kita bisa tekan backspace, agar kursor kembali ke blok sebelumnya.

          Sekarang di folder kita ada 2 files, yaitu 

          1. mod1.py, dan
          2. _init_.py
          Kita masih memerlukan sebuah program untuk dieksekusi yang akan mengakses file modul mod1.py.
          1. Pada IDLE python shell kita buka file baru (Ctrl+N) dan simpan (Ctrl+S) difolder yang sama dengan nama eksekusiFile.py.
          2. Sekarang pada folder tersebut ada tiga buah file yaitu, '_init_.py', 'mod1.py', dan 'eksekusiFile.py'. 
          3. Pada 'eksekusi.py' python window kita tulis:
          4. import mod1
            a=mod1.simplify('helllo   selamat  , :    pagi ', delete=',:')
            print(a)
          5. Sekarang kita mempunyai semua yang diperlukan, 
          6. Lalu pada python window 'eksekusi.py' kita tekan F5 (Run > Run Module)
          Berikut adalah semua file dan hasil eksekusi nya:

          Kita bahas eksekusi.py dahulu

          Pada baris pertama (import mod1), karena file mod1.py ada pada satu folder yang sama dengan eksekusi.py, dan mod1.py bukanlah nama yang digunakan standard python untuk modul, kita bisa langsung tuliskan begitu, bila tidak dalam satu folder yang sama kita harus memberikan alamatnya.

          Pada baris berikutnya (yang pada kenyataannya kosong) boleh diabaikan, baris kosong ini kita buat untuk mempermudah pembacaan script-nya saja. 

          Pada baris ketiga ( a=mod1.simplify('helllo   selamat  , :    pagi ',delete=',:' ),  kita membuat sebuah variable string yang bernama a, dan variable tersebut harus diproses terlebih dahulu oleh modul (mod1, yang bernama simplify) yang isinya 

          'helllo   selamat  , :    pagi '  

          kemudian ada variable delete yang isinya ',:' 
          dengan maksud bila ada karakter tersebut harap dihapus juga. semua ini diproses oleh modul mod1.py. 

          lalu baris terakhir mencetak variable a pada monitor.

          Sekarang kita masuk ke modul mod1.py

          Pada baris pertama kita mengimpor modul string yang ada pada modul standard python. Karena ada fungsi 'whitespace' yang kita perlukan. 
          Fungsi whitespace ini adalah untuk mendeteksi karakter ASCII yang berupa spaci, tabulasi, return, linefeed, formfeed dan vertikal tab.
          Dan dengan perintah 'import string' kita memasukan semua fungsi yang ada pada modul string python pada memory, sangat tidak efisien sebetulnya.

          Kemudian baris kedua 
          def simplify(text, whitespace=string.whitespace, delete=''):
          def adalah untuk memberitahukan pyhon ini adalah fungsi, dan diikuti dengan nama fungsinya (simplify).

          Didalam fungsi ini, ada variable yang bernama text, whitespace, dan delete, (pada file eksekusi.py kita tuliskan:  mod1.simplify('helllo   selamat  , :    pagi ',delete=',:' )

          Dengan kata lain, pada fungsi simplify, variable text akan diisi dengan 'helllo   selamat  , :    pagi ' , 
          untuk variable whitespace kita tidak mengisinya pada file eksekusi.py, karena kita akan gunakan variable whitespace dengan default (variable whitespace default yang kita buat adalah 'string.whitespace', sehingga pada eksekusi.py kita tidak perlu lagi menulikan variable untuk whitespace, kecuali bila kita ingin mengganti variable default whitespace dengan yang lain kita bisa menuliskannya dengan:
          a=mod1.simplify('helllo   selamat  , :    pagi ', whitespace ='xyz', delete=',:' 
          Contoh diatas, kita mengganti variable whitespace default dengan karakter 'x','y', dan 'z'. 

          Default variable delete adalah ''(dua buah single quote) yang merupakan sebuah variable string kosong, sehingga pada defaut untuk variable delete adalah tidak ada.
          Dan pada eksekusi.py kita membuatnya menjadi delete=',:', dengan maksud kita juga ingin menghapus karakter koma (,) dan titik dua (:) dihapuskan.

          Baris ketiga (r''' komen dengan 3 buah tanda kutip yang biasanya keterangan programer dan copy right ''')
          Ini hanya komentar, tidak dibaca oleh python

          Baris keempat (result=[])
          Kita membuat variable list dengan nama result. ini tempat mengumpulkan kata.

          Baris kelima (word='')
          Kita membuat variable string kosong.

          Baris keenam (a=1)
          Baris ini sebetulnya tidak perlu, ini karena saya lupa menghapus baris ini dan baris yang ke 16 (a+=1) yang dimaksudkan untuk menguji program sebelum program ini bekerja dengan baik, maaf.

          Baris ketujuh (for char in text: )(awal loop blok disini)
          Merupakan blok loop, yang akan menanalisa semua karakter.
          Baris ini kita mengambil string variable text menjadi karakter satu per satu, yang akan diuji. Bila dalam variable text merupakan karakter ASCII maka harus diuji diblok ini. Bila bukan sebuah karakter ASCII maka kemungkinan program kita akan menghasilkan hasil yang tidak kita harapkan (saya belum mengujinya), karena kita tidak membuat blok loop yang mengatur karakter selain ASCII.

          Baris kedelapan (if char in delete: )
          Disini kita mencari karakter yang ada pada variable 'delete' (yang pada default adalah ''(string kosong), dan kita mengisinya pada file eksekusi dengan koma (,) dan titik dua (:), disini bila karakter merupakan koma atau titik dua maka masuk ke blok ini.

          Baris kesembilan (continue
          Bila karakter yang diuji merupakan karakter dari variable delete maka, Loop akan kembali ke awal loop, yaitu ke baris ketujuh.

          Baris kesepuluh (elif char in whitespace : )
          Bila karakter yang diuji bukan merupakan karakter yang ada pada variable delete, maka uji karakter akan masuk kesini. Dan disini karakter diuji bila merupakan karakter string.whitespace (berupa spaci, tabulasi, return, linefeed, formfeed dan vertikal tab).

          Baris kesebelas (if word:)
          Bila variable word=True maka masuk ke blok ini.

          Baris ketigabelas (result.append(word) )
          Variable result mendapat tambahan anggota baru dengan string yang ada pada variable word.

          Baris keempatbelas (word=''
          Variable word menjadi string kosong.

          Baris kelimabelas (else:)
          Bila karakter tidak masuk ke blok yang if (baris 8) atau elif (baris 10), maka akan masuk ke blok ini.

          Baris keenambelas (word+=char)
          Variable word mendapat sebuah karakter dari char

          Baris ketujuhbelas (a+=1)
          Baris ini tidak perlu digubris.

          Baris kedelapanbelas (return " ".join(result))
          Hasil dikembalikan ke program yang memangil dengan format semua variable list result digabung dan diberi pemisah karakter spasi ' '.

          Thursday 21 May 2015

          22.Packages

          Packages adalah suatu direktori yang menyimpan satu set module dan sebuah file yang bernama _init_.py. Jadi bila kita membuat suatu program, semua modulnya kita simpan dalam suatu direktori yang sama, tetapi bila kita membuat sebuah program yang besar, modul-modulnya dapat tersebar, tidak masalah. Yang akan menjadi masalah adalah bila kita akan meng-edit modul tertentu, maka kita harus mencari terlebih dahulu dimana modul tersebut disimpan. 

          Tentang file yang bernama _init_.py, kita tinggal membuat file kosong dengan nama tersebut.

          Bila kita menyimpan modul didalam satu direktori (misal nama foldernya 'folModul') dan 'folModul' ada didalam satu folder dengan program kita atau masih dalam path Python, kita bisa meng-import apa saja yang ada didalam 'folModul'.

          Yang harus diperhatikan adalah, nama modul jangan sampai sama dengan nama yang ada di standard library (top-level), untuk mencegah konflik (bila pada Unix akan lebih mudah, karena standart library manggunakan hurup kecil pada awal katanya, sehingga kita tinggal menggunakan hurup besar diawal kata).

          Misalnya kita buat program a.py dalam folder 'iniProgram'

          • iniProgram (Folder)     |-a.py (program yang kita buat)
                 |
                 |-modulA
                 |-modulB
                 |-modulC
                 |
                 |-folderModulD
                 |       |-modulDA
                 |       |-modulDB
                 |       |-modulDC
                 |       |
                 |       |-_init_.py
                 |-_init_.py
          Kurang lebih seperti diatas.
          a.py adalah program yang akan kita jalankan, dan didalam a.py, untuk memangil modul dikita tinggal tulis:
          • import iniProgram.folderModulD.modulDA
          • import iniProgram.modulB as ModB





          Wednesday 20 May 2015

          21.Modules

          Module adalah sebuah program yang berisi satu atau lebih fungsi dan dapat digunakan oleh program lainnya. Bila kumpulan fungsi diberi nama module, maka kumpulan module diberi nama packages. Biasanya kumpulan modul ini dimasukan kedalam satu group, karena modul-modul tersebut berhubungan atau saling tergantung satu sama lain.

          Module juga bisa di save dengan extension *.py. Module berisi apa saja yang bisa digunakan oleh kode python. Dengan kata lain, module juga sebuah program juga. Yang membedakannya adalah, program didesign untuk menjalankan sesuatu, sedangkan module didesign agar diimport oleh pengguna menggunakan program.

          Tidak semua module dibuat menggunakan extension *.py, ada juga extension *.sys yang dibuat untuk python menggunakan bahasa program yang lain (biasanya sih C).

          Agar program mendapakan akses dari module kita harus import dahulu file modulenya. Syntax biasanya digunakan adalah:
          import namaModule
          import namaModule1, namaModule2, namaModule3,...
          import namaModule as namaModuleYangDiinginkan

          Biasanya kita mengimport module diawal program, dan import module standartd library terlebih dahulu, kemudian baru import module yang kita buat atau pihak ke 3.

          Dan bila kita ingin import beberapa fungsi, objek, variable, data type yang ada didalam sebuah module, kita gunakan syntax:
          from namaModule import objek as namaYangDikehedaki
          from namaModule import objek1,objek2,objek3,...
          from namaModule import (objek1, objek2, objek3,...)
          from namaModule import *
          Dengan cara ini, ada kelemahan yang dapat menyebabkan konfik dengan nama objeknya.

          Misalnya kita ingin mengimpor satu objek yang bernama 'aaa', di modul 'bbb', kita tinggal tulis from bbb import aaa. Kemudian setelah kita membuat suatu program yang panjang, kita membuat sebuah variable yang bernama aaa juga, sehingga objek 'aaa' yang kita import akan tergantikan oleh aaa yang baru.

          Dengan syntax yang terakhir (from namaModule import *) berarti kita mengimport semua yang tidak diprivate (yang ditandai dengan 'garis bawah'( _ )).

          Sunday 17 May 2015

          20.Exception Handling

          Python memiliki indikator kondisi error dan pengecualian dengan menggunakan exception, tetapi ada beberapa pihak ketiga dari library python yang menggunakan cara lama dengan mengembalikan nilai 'error' saja.

          Exception digunakan dengan menggunakan block 'try... except', yang bisanya menggunakan syntax:

          1. try :
          2.      perintah1
          3. except exception1 as variable1 :
          4.      perintah2
          5. except exception2 as variable2 :
          6.      perintah3
          7. else:
          8.      perintah4
          9. finally:
          10.      perintah5

          Harus ada setidaknya satu (1) except block, perintah 'else' dan 'finally' adalah pilihan.
          Blok 'else' bila pada blok try terjadi normal (tidak ada error).
          Blok 'finally' akan selalu dieksekusi.

          Bila exception terjadi di blok 'try', semua blok except akan dicoba, bila exception cocok pada salah satu blok except, maka blok tersebut akan dieksekusi. Agar dapat cocok dengan exception, exception harus menggunakan type yang sama dari list exception dari group atau subclass.


          Untuk Program yang tidak mengalami masalah, gambaranya adalah:

          Untuk Program yang terjebak Handled Exception:

          Dan Program yang terjebak error tanpa Handled Exception:
          Error standar yang saya maksud disini adalah dari program terhenti sementara sampai program crash, tapi blok finally akan dieksekusi.

          Bila ingin lebih jelas soal exception bisa dibaca disini atau https://docs.python.org/3.4/library/exceptions.html

          Turunan dari exception yang lebih detail:

          BaseException
           1-- SystemExit
           2-- KeyboardInterrupt      (Ketika user menekan keyboard (biasanya Ctlr+C))
           3-- GeneratorExit              (Ketika metode close() dipanggil)
           4-- Exception                    (Semua error yang bukan system)
                1-- StopIteration          (Ketika next() dan iterator_next_() tidak menemukan yang berikutnya)
                2-- ArithmeticError     (Kesalahan pada aritmatik)
                     1-- FloatingPointError  (Ketika operasi pada float gagal)
                     2-- OverflowError  (Ketika operasi aritmatik terlalu besar)
                     3-- ZeroDivisionError
                3-- AssertionError       (Ketika assert gagal)
                4-- AttributeError        (Ketika atribut reference gagal)
                5-- BufferError            (Buffer tidak dapat dijalankan)
                6-- EOFError               (Ketika fungsi input sampai diakhir tidak ada data, end-of-file (EOF))
                7-- ImportError            (Ketika statement import gagal)
                8-- LookupError          (Ketika kunci atau index tidak valid)
                     1-- IndexError         (Ketika index diluar jangkauan)
                     2-- KeyError           (Ketika mapping key tidak ditemukan)
                9-- MemoryError         (Ketika nama local atau global tidak ditemukan)
                10- NameError
                     1-- UnboundLocalError
                11- OSError                 (Ketika system tidak bekerja, misalnya 'file not found')
                     1-- BlockingIOError
                     2-- ChildProcessError
                     3-- ConnectionError
                          1-- BrokenPipeError
                          2-- ConnectionAbortedError
                          3-- ConnectionRefusedError
                          4-- ConnectionResetError
                     4-- FileExistsError
                     5-- FileNotFoundError
                     6-- InterruptedError
                     7-- IsADirectoryError
                     8-- NotADirectoryError
                     9-- PermissionError
                     10- ProcessLookupError
                     11- TimeoutError
                12- ReferenceError    (Ketika reference proxy lemah)
                13- RuntimeError       (error terdeteksi tapi tidak menggangu yang lainnya)
                     1-- NotImplementedError     (Ketika runtime Error, memerlukan methode override)
                14- SyntaxError                   (Kesalahan syntax)
                     1-- IndentationError
                          1-- TabError
                15- SystemError
                16- TypeError
                17- ValueError
                     1-- UnicodeError
                          1-- UnicodeDecodeError
                          2-- UnicodeEncodeError
                          3-- UnicodeTranslateError
                18- Warning
                     1-- DeprecationWarning
                     2-- PendingDeprecationWarning
                     3-- RuntimeWarning
                     4-- SyntaxWarning
                     5-- UserWarning
                     6-- FutureWarning
                     7-- ImportWarning
                     8-- UnicodeWarning
                     9-- BytesWarning
                     10- ResourceWarning


          Exception menyediakan cara untuk mengubah flow control dari program, kita dapat mengambil keuntungan dari itu, dengan menggunakan build-in exception atau kita dapat menbuat yang baru, dengan 'raise'.

          Ada tiga syntax yang dapat kita gunakan:

          1. raise exception(args)
          2. raise exception(args) from exception_asli
          3. raise
          Yang pertama digunakan dengan salah satu dari build-in exception, bila kita memberikan sebuah kalimat sebagai argument, maka text tersebut menjadi output bila exception terjadi.
          Yang kedua adalah variasi dari yang pertama, yaitu exception berantai yang termasuk exception yang aslinya
          Dan yang ketiga adalah exception yang tidak specifik, 'raise' akan memunculkan exception saat aktif, dan ketika tidak ada maka akan muncul typeError.



          19.Membuat dan Memanggil Fungsi

          Dengan fungsi kita bisa membuat suatu program dijalankan berulang-ulang. Dan fungsi adalah suatu program yang berada didalam program atau diluar program itu sendiri, tetapi tetap berada dibawah python. 

          Contoh fungsi adalah random ada pada module math() yang tidak ada bila kita menjalankan IDLE atau dengan memangil python pada command prompt. Sehingga kita harus memanggil fungsi tersebut dengan perintah 'import()'.  

          Module merupakan suatu program python biasa dengan extension .py yang didalamnya terdapat fungsi dan class juga kadang-kadang variable-variable.

          Fungsi secara umum ditulis dengan :

                      def namaFungsi(arguments):
                                 perintah

          Soal argument adalah pilihan, bila tidak perlu tidak perlu dibuat. Argument bisa dibuat lebih dari satu, dan dipisahkan dengan koma. Setiap fungsi pada python mengeluarkan hasil, dan default nya adalah 'None' kecuali kita mensetnya, dengan hasil dari fungsi atau yang lain dengan menggunakan perintah 'return nilai'. Sehingga hasil akan dikembalikan ke progam.

          1. def menghitungluas(r):
          2.      luaslingkaran=pii*r*r
          3.      return luaslingkaran

          4. import math
          5. pii=math.pi

          6. while True:
          7.      print('menghitung luas dan keliling lingkaran')
          8.      jari=input('masukan angka integer untuk jari-jari lingkaran :')
          9.      if jari:
          10.           
          11.           try:
          12.                testInteger=int(jari)
          13.           except ValueError:
          14.                print('input bukan integer')
          15.                continue

          16.           luas=menghitungluas(testInteger)
          17.           print('luas lingkaran = ',luas)
          18.      else:
          19.           break
          20. print ('selesai')

          Pada baris 1 sampai 3 adalah fungsi yang bernama 'menghitungluas()', yang dipanggil pada baris ke 19. Jadi ketika awal program berjalan, fungsi dimasukan kedalam memory (fungsi tidak harus berada diawal file, diakhir dan ditengah pun program fungsi dapat bekerja. Penempatan fungsi biasanya dipaling atas atau di paling bawah program, untuk memudahkan pencaharian fungsi-fungsi tersebut). Sehingga python menjalankan baris 5 dahulu lalu baris berikutnya sampai fungsi dipanggil pada baris 19, python menjalankan fungsi tersebut.

          Pada baris 19 (luas=menghitungluas(testInteger)) variable luas akan menerima hasil dari fungsi menghitungluas pada perintah return. Dimana return pada baris ke 3 (return luaslingkaran) diisi dengan variable 'luaslingkaran' yang merupakan hasil perhitungan diatasnya. 
          Dan variable yang diberikan pada baris 19 adalah 'testInteger', dan oleh fungsi, variable 'luaslingkaran' tersebut diganti menjadi variable 'r'.

          Import math pada baris ke 5 adalah memanggil module, dan pada baris ke 6 (pii=math.pi) adalah memanggil fungsi dari module math tersebut, yang merupakan sebuah variable pi=3.14... atau 22/7.

          18.Menbuat Log File dari Output Program Python

          Untuk program tertentu yang memerlukan log.txt dari output program, kita bisa membuatnya dengan python dengan sangat mudah.

          Kita buka command prompt, dan masuk ke dalam folder yang ada program yang akan dijalankan. Dan jalankan program tersebut dengan penambahan perintah '>namafile.txt' di belakangnya.


          disini semua output akan dituliskan di hasil.txt, bukan pada layar monitor lagi, dan kita tinggal memasukan angka-angka tersebut, tanpa ada keterangan apapun. Log pada software atau server, berkerja seperti ini. Dan bila kita buka c:\Users\cha7\hasil.txt (ini karena saya memanggil file di c:\User\cha7):






          17.Input dan Output

          Untuk membuat suatu program, input merupakan hal yang penting, sehingga menjadikan program lebih komplek, dan memdapatkan output yang kita inginkan. 
          print() merupakan suatu fungsi output pada python, dan kita sudah menggunakannya.

          Fungsi input() pada python dapat menerima input dari user dan diakhiri dengan menekan tombol 'enter'. Bila kita ingin memasukan input kosong, kita tidak perlu memasukan apa-apa pada input dan menekan tombol 'enter' saja, sehingga fungsi akan menghasilkan string kosong. Kita buat program seperti di bawah ini dengan nama file 'inputoutput1.py' dengan menggunakan IDLE, 
          File > New File (atau Ctrl+N)
          Pada window baru kita save terlebih dahulu dengan nama 'inputoutput1.py'
          Lalu kita tulis programnya seperti dibawah ini:

          1. print('mulai program')
          2. a=0
          3. b=0

          4. while True:
          5.      aInput=input('masukan integer: ')
          6.      if aInput:
          7.           try:
          8.                testInteger=int(aInput)
          9.           except ValueError as salah:
          10.                print('kesalahan : ',salah)
          11.                continue
          12.           a+=testInteger
          13.           b+=1
          14.      else:
          15.           break
          16.      if b:
          17.           print('input = ',b,' kali,',' angka input : ',a)


          Lalu kita jalankan programnya dengan menekan tombol F5, atau Run > Run Module


          1. Pada baris 1 (print('mulai program')), kita memcetak string 'mulai program'.
          2. Pada baris 2 dan 3 (a=0, b=0), kita membuat varible 'a' dan 'b' dan masing-masing diberi nilai 0 (nol).
          3. Pada baris 5 (while True:), kita membuat loop ketika kondisi 'True', pada program ini kondisi selalu 'True'.
          4. Baris 6 (aInput=input('masukan integer: ')), membuat input dari user dengan variable 'aInput'.
          5. Baris 7 (if aInput:), Bila variable 'aInput' adalah 'True' (dengan kata lain ada input dari keyboad selain tombol enter) maka dilanjukan.
          6. Baris 8 (try:), perintah mencoba 
          7. Baris 9 (testInteger=int(aInput)), menguji 'aInput' adalah integer dan dibuatkan variable 'testInteger'. Bila input bukan integer, maka program akan dilanjutkan ke blok 'except', yang kebetulan berada di bawahnya.
          8. Baris 10 (except ValueError as salah:), Bila terjadi kesalahan pada block 'try' yang berupa 'ValueError', output dari kesalahan tersebut dimasukan kedalam variable 'salah'.
          9. Baris 11 (print('kesalahan : ',salah)), mencetak variable 'salah'.
          10. Baris 12 (continue),  perintah tidak dilanjukan ke perintah bawahnya, tetapi kembali ke awal loop, baris 5.
          11. Baris 13 (a+=testInteger), variable 'a' akan menjumlahkan nilai yang diinput user dengan nilai variable 'a'.
          12. Baris 14 (b+=1), variable 'b' menjumlahkan variable 'b' itu sendiri dengan 1 (satu).
          13. Baris 15 dan 16 (else: break), bila variable 'aInput' tidak mendapatkan input apapun, looping berakhir disini.
          14. Baris 17 (if b:), bila variable 'b' True.
          15. Baris 18 (print('input = ',b,' kali,',' angka input : ',a)), mencetak hasil.

          ----

          Saturday 16 May 2015

          16.Operasi Aritmatika

          Untuk operasi  aritmatika, python menyediakan satu set operator, termasuk operator binary, yang merupakan empat buah operator dasar matematika yaitu penjumlahan (+), pengurangan (-), Perkalian (*) dan pembagian (/). Dan ada penambahan operator yang sering di gunakan seperti '+=', '*='.
          1. >>> 2+8
          2. 10
          3. >>> 5-1
          4. 4
          5. >>> 3*9
          6. 27
          7. >>> 27/3
          8. 9.0
          9. >>> 1-5
          10. -4
          11. >>> 12/3
          12. 4.0
          13. >>> 
          Pada python terjadi perubahan ketika kita menggunakan operasi pembagian (/) seperti pada baris ke 7 dan 11, Pembagian akan menghasilkan nilai float, dan bukan integer. Bila kita menginginkan hasilnya menjadi integer kita bisa mengkonversikannya dengan int(), atau menggunakan double tanda pembagian (//).

          1. >>> 12 // 3
          2. 4
          3. >>> 
          Sekarang,:
          1. >>> a = 1
          2. >>> a += 2
          3. >>> a
          4. 3
          5. >>> a += 5
          6. >>> a
          7. 8
          8. >>> a -= 2
          9. >>> a
          10. 6
          11. >>> a*=2
          12. >>> a
          13. 12
          14. >>> 
          Operasi yang menggunakan '+=' atau '-=' atau '*=' adalah sama dengan contoh dibawah ini:
          1. >>> a=1
          2. >>> a+=1
          3. >>> a
          4. 2
          5. >>> b=1
          6. >>> b=b+1
          7. >>> b
          8. 2
          9. >>>
          Operasi pada variable a adalah versi pendek dari operasi variable b yang dibawahnya. Jadi a += 1 itu sama dengan a = a + 1.

          Operasi aritmatik ini tidak hanya bisa digunakan oleh angka saja, tetapi string juga bisa berjalan dengan baik.
          1. >>> a='selamat'
          2. >>> b=' '             #isinya cuma spasi
          3. >>> c='pagi'
          4. >>> a+b+c
          5. 'selamat pagi'
          6. >>>
          7. >>> a+=' '+'pagi'
          8. >>> a
          9. 'selamat pagi'
          10. >>> 
          Juga bisa digunakan pada list hanya untuk operator '+='.

          1. >>> suatuList=['hello','selamat', 'pagi', 'siang' ,'malam']
          2. >>> suatuList
          3. ['hello', 'selamat', 'pagi', 'siang', 'malam']
          4. >>> suatuList+=['aloha']
          5. >>> suatuList
          6. ['hello', 'selamat', 'pagi', 'siang', 'malam', 'aloha']
          7. >>> 
          8. >>> suatuList+=[1,2,3,'bonjour']
          9. >>> suatuList
          10. ['hello', 'selamat', 'pagi', 'siang', 'malam', 'aloha', 1, 2, 3, 'bonjour']
          11. >>> suatuList+='tidur'
          12. >>> suatuList
          13. ['hello', 'selamat', 'pagi', 'siang', 'malam', 'aloha', 1, 2, 3, 'bonjour', 't', 'i', 'd', 'u', 'r']
          14. >>> 
          Penggunaan selain '+=' adalah operasi terbatas, seperti '-=',  '*='.





          15. Dasar Exception Handling

          Fungsi - fungsi dan methoda pada Python memiliki output untuk pesan 'error' dan keterangan penting lainnya. Exception adalah objek seperti objek-objek lainnya, dan ketika objek tersebut dikonversikan kedalam 'string', sehingga objek tersebut menjadi pesan text.

          Dengan kata lain, bila fungsi dan methoda digunakan secara tidak benar atau tidak bisa berjalan seperti yang diperintahkan, maka fungsi dan methoda tersebut mengeluarkan pesan error.

          Format sederhananya adalah:
          1. try:
          2.      perintah 1
          3. except eksepsi1 as variabel1:
          4.      perintah 2
          5. ...
          6. except eksepsi2 as varibel2:
          7.      perintah 3


          Untuk 'as variabel' adalah optional, bila kita mencari sesuatu yang specifik.

          Untuk 'except' bisa menangani banyak exception, dan juga bisa menggunakan 'else' yang merupakan optional.

          Cara kerjanya adalah seperti ini:
          Bila statement yang ada pada block 'try' tidak ada masalah, maka block 'except' akan dilompati. 
          Bila ada sesuatu yang tidak semestinya pada block 'try', maka selanjutnya akan dicocokan pada block 'except' yang pertama, bila tidak cocok maka akan dicocokan dengan block 'except' yang berikutnya, dan terus mencocokan dengan block except yang berikutnya sampai terakhir. Bila pada akhir tidak ada yang cocok, maka Python akan memberikan pesan standar yang ada pada fungsi atau methode tersebut.
          Bila block except cocok, maka perintah yang ada pada block tersebut akan dilakukan.

          Pada IDLE, File > New File
          Lalu File > Save, arahkan ke folder python yang kita inginkan, dan beri nama testexception.py
          tulis :

          aInput=input('masukan sebuah angka integer :')
          try:
               i=int(aInput)
               print('angka integer yang dimasukan adalah:',i)
          except ValueError as err:

               print('ada kesalahan :',err)

          Kemudian File > Save
          Lalu  Run > Run Module, atau langsung tekan F5.


          1. >>> =============== RESTART ========================
          2. >>> 
          3. masukan sebuah angka integer :5
          4. angka integer yang dimasukan adalah: 5
          5. >>> =============== RESTART ========================
          6. >>> 
          7. masukan sebuah angka integer :1.1
          8. ada kesalahan : invalid literal for int() with base 10: '1.1'
          9. >>> 


          Percobaan 1: 
          masukan angka '5' ketika diminta input.

          Disini semua berjalan dengan baik. karena 5 merupakan sebuah integer.

          Percobaan 2:
          masukan angka '1.1' ketika diminta input.

          Pada Percobaan ini pada block try terjadi sesuatu yang salah (input yang kita masukan bukanlah integer), sehingga perintah dilemparkan ke block except.

          Friday 15 May 2015

          14.Statement 'for... in'

          Statment 'for' menggunakan keyword 'in' memiliki syntax sebagai berikut:

          for variable in member :
               Perintah

          Seperti loop 'while', for juga mensupport perintah 'break' dan 'continue' dan juga 'else'. Variable menunjukan ke objek yang setiap satunya ada pada member. Member adalah type data yang dapat memuat banyak data termasuk string, list, tuples, dan lain-lain.
          1. >>> a=['satu', 'dua', 'tiga' , 'empat']
          2. >>> for x in a:
          3.      print(x)

          4. satu
          5. dua
          6. tiga
          7. empat
          8. >>> 

          Pada baris ke 3 kita tekan enter dua kali.

          Contoh yang lain penggunaan 'for... in'  dan 'if ':
          1. >>> a=[1,2,3,4,5,6,7,8,9,10]
          2. >>> for angka in a:
          3. if angka in [1,3,5,7]:
          4. print(angka,' merupakan angka primer')
          5. else:
          6. print(angka,' bukan angka primer')

          7. 1  merupakan angka primer
          8. 2  bukan angka primer
          9. 3  merupakan angka primer
          10. 4  bukan angka primer
          11. 5  merupakan angka primer
          12. 6  bukan angka primer
          13. 7  merupakan angka primer
          14. 8  bukan angka primer
          15. 9  bukan angka primer
          16. 10  bukan angka primer
          17. >>> 

          Pada baris ke 3 setelah kita menekan tombol 'enter' pada akhir perintah, kita tekan tombol 'back space' untuk membawa kursor tertarik kebelakang, juga menandakan bahwa perintah di bawah if... telah selesai. Dan pada akhir baris perintah kita tekan tombol enter dua kali



          Sunday 10 May 2015

          13. Statement 'while'

          Statement 'while' digunakan untuk looping, sampai kodisi tidak lagi 'True' dengan kata lain kondisi 'False'. Bisa dilakukan 1 kali atau terus-menerus, ataupun tidak dilakukan sama sekali.

          Umumnya syntax untuk statement 'while' adalah:

          while ekpersi_boolean:
               perintah

          Sekarang ini statement 'while' lebih moderen sejak memsupport statement 'break' dan 'continue' dan juga memiliki optional statement 'else'. 

          Statment 'break' mengatur looping untuk berhenti looping dan melanjukan perintah setelah statement 'while'.

          Statement 'continue' mengatur looping untuk berhenti melanjutkan perintah dibawahnya, kemudian kembali keawal looping.

          1. Pada Pyhon shell IDLE kita buka file baru dengan File > New File, atau dengan menekan tombol 'Ctrl+N'.
          2. Pada window baru, kita save (File > Save atau dengan Ctrl+S) di Folder PythonFiles, lalu beri nama file dengan nama testwhile.py
          3. tuliskan:a=0while a<10:     a=a+1     if a==5:    #bila a==5 kembali ke ulang looping          continue     print('a = ' ,str(a))     if a==9:          break   #looping berakhir disiniprint('selesai')

          4. Lalu save, dan Run>Run Module

          Dan Kita mendapatkan hasil seperti ini:
          1. >>> 
          2. a =  1
          3. a =  2
          4. a =  3
          5. a =  4
          6. a =  6
          7. a =  7
          8. a =  8
          9. a =  9
          10. selesai
          11. >>> 

          Pada program diatas, angka 5 tidak keluar, ini dikarenakan pada saat a == 5 , program diperintahkan untuk kembali ke awal loop dengan statement 'continue'. Dan pada saat a == 9,  program memerintahkan untuk mengakhiri loop dengan statment 'break'.






          Saturday 9 May 2015

          12. Statement 'if'

          Umumnya syntax untuk statement 'if' adalah:
          1. if ekpresi boolean1:
          2.      perintah
          3. if ekpresi boolean2:
          4.      perintah
          5. ...
          6. elif ekpresi boolean3:
          7.      perintah
          8. else:
          9.      perintah

          Untuk elif bisa digunakan ataupun tidak, dan untuk else masih pilihan optional bila kondisi ekpresi boolean1 dan ekpresi boolean2 tidak terpenuhi.

          Syntax ini berbeda dengan syntax pada C, Java ataupun yang lainnya, sehingga programer yang terbiasa dengan program-program tersebut, kadang membuat kesal programer.

          Sekarang kita buat sebuah file program untuk mencoba perintah if ini.


          1. Buat folder di drive c dengan nama 'PythonFiles' (Lokasi folder tidak harus sama, dimanapun folder atau file disimpan, bisa kita buka koq). 
            Buka program Notepad atau Notepad++, bila Notepad/Notepad++ tidak dalam keadaan kosong,
            buka file baru (File > New).
            Lalu File > Save as, arahkan folder ke c:/PythonFiles. Lalu beri nama 'testifstatement.py'.
            Extention python adalah 'py' agar bisa langsung dieksekusi oleh windows.
          2. Lalu tulis :
            print('mulai')
            a=True
            b='satu'
            print('statement mulai')
            if a:
                 print('nilai b=' +b)
            else:
                 print('a==false')
            print('selesai')


          3. Lalu kita save (File > Save)
          4. Pada Python Shell IDLE, buka file yang baru kita buat (File> Open..) atau kita bisa menggunakan Ctrl+O. Ganti lokasi file ke c:/PythonFiles. Kita bisa lihat file testifstatement.py ada disitu. klik file tersebut. 
          5. Lalu munculah window Python Editor (sebetulnya kita bisa buat dengan window ini, tidak perlu notepad). Lalu Run > Run Module.
          6. Python shell men-restart dirinya, kemudian menjalankan program testifstatement.py
          Kita juga bisa menjalankan program tersebut dengan command prompt. Pada command prompt tuliskan c:/PythonFiles/testifstatement.py