Saturday, 9 May 2015

11.Operasi Logika

Salah satu yang menjadi dasar setiap program adalah logika. Python menyediakan empat set operasi logika.

  1. operator identitas
  2. operator pembanding
  3. operator member
  4. operator logika

1. Operator Identitas

Semua variable dalam Python adalah refernsi objek, dan kadang kita ingin mengetahui apakah dua atau lebih refersi objek itu merupakan objek yang sama. Operator 'is' merupakan operato binary yang menghasilkan 'True' bila objek yang sebelah kiri merupakan objek referen dengan objek yang sebelah kanan.

  1. >>> a=[1,2,3,'hallo']
  2. >>> b=[1,2,3,'hallo']
  3. >>> a is b
  4. False
  5. >>> b=a
  6. >>> a is b
  7. True
  8. >>> b is a
  9. True
  10. >>> 

Pada contoh diatas data variable a (baris 1) dan variable b (baris 2) adalah sama, tetapi data yang ada pada variable b bukanlan refernsi objek dari data variable a. Sehingga a is b (baris 3) menjadi 'False'. Apa yang terjadi disini? varible a dan variable b memiliki lokasi alamat memori yang berbeda, karena kita membuat data tersebut satu-satu, sehinggal Python menyimpan data tersebut dengan dua alamat memory (walaupun isi data adalah sama). Sedangkan pada baris 5, b=a, kita membuat objek referensi pada alamat a. Bila kita ingin membandingkan data, jangan menggunakan perintah 'is'.

Keuntungan menggunakan refernsi objek adalah sangat cepat, Python tidak perlu menganalisa data satu per satu, Operator 'is' hanya membandingkan alamat memory pada objek, alamat yang sama adalah objek yang sama.

Penggunaan operator 'is' biasanya untuk membandingkan data yang nilainya 'None'. 

  1. >>> a='satu hal'
  2. >>> b=None
  3. >>> a is None
  4. False
  5. >>> a is not None
  6. True
  7. >>> b is None
  8. True
  9. >>> b is not None
  10. False
  11. >>> 
Untuk membalikan identitas kita menpergunakan 'is not'.

2. Operator Pembanding

Python juga menyediakan opertor pembanding binary, yaitu 

  • ' < ' (kurang dari), 
  • ' <= ' (kurang dari  atau sama-dengan), 
  • ' > ' (lebih dari), 
  • ' >= '(lebih dari atau sama-dengan), 
  • ' == ' (double sama dengan equal sama-dengan), dan 
  • ' =! ' (sama dengan tanda seru, equal tidak sama-dengan) 
Operator ini yang membandingkan nilai objek.
  1. >>> a=[1,2,3]
  2. >>> b=[2,3,4]
  3. >>> a > b
  4. False
  5. >>> a<b
  6. True
  7. >>> a<=b
  8. True
  9. >>> a != b
  10. True
  11. >>> c=[2,3,4]
  12. >>> d=b
  13. >>> b is c
  14. False
  15. >>> b is d
  16. True
  17. >>> b == c
  18. True
  19. >>> 
Pada baris 17, walaupun b dan c adalah objek yang berbeda tetapi memiliki nilai yang sama, sehingga Python mengeluakan hasil 'True'. Hati-hati bila kita menggunakan pembandingan ini bila nilai dari variable adalah unicode, sehingga penggunaanya lebih komplek.

Perhatikan contoh dibawah ini:

  1. >>> a,b,c=2,2,b
  2. >>> a
  3. 2
  4. >>> b
  5. 2
  6. >>> c
  7. 2
  8. >>> a==b
  9. True
  10. >>> a is b
  11. True
  12. >>> b is c
  13. True
  14. >>> 
Pada variable a, kita membuat variable sendiri, dan variable c adalah refernsi dari variable b, dan pada baris ke 8 (a == b) menghasilkan 'True', ini disebabkan Python menggunakan objek yang sama secara otomatis, ini bisa terjadi pada angka dan string, walaupun kita membuat secara terpisah variable a dan b, juga karena pertimbangan harga sama dan tidak dapat dimodifikasi.


3.Operator Member

Untuk data yang merupakan baris atau kumpulan data seperti list, strings, dan tuples, kita bisa mengujinya dengan operator 'in' dan untuk nilai yang bukan member dari data menggunakan 'not in'.
  1. >>> a=(1,2,3,'hello', 'hi')
  2. >>> 1 in a
  3. True
  4. >>> 6 in a
  5. False
  6. >>> 'hello' in a
  7. True
  8. >>> hi in a
  9. Traceback (most recent call last):
  10.   File "<pyshell#41>", line 1, in <module>
  11.     hi in a
  12. NameError: name 'hi' is not defined
  13. >>> 'hi' in a
  14. True
  15. >>> 6 not in a
  16. True
  17. >>> 
Operator 'in' dan 'not in' ini biasa digunakan untuk dictionaries dan set. Operator ini akan berjalan lambat bila digunakan oleh lists dan tuple yang datanya mencapai ribuan (mungkin ribuan masih 'ok' yang pasti puluhan ribu akan terasa pelannya).
  1. >>> a='Begitu banyak hal menakjubkan yang terjadi dalam masa kecil para anggota Laskar Pelangi. Sebelas orang anak Melayu Belitong yang luar biasa ini tak menyerah walau keadaan tak bersimpati pada mereka. Tengoklah Lintang, seorang kuli kopra cilik yang genius dan dengan senang hati bersepeda 80 kilometer pulang pergi untuk memuaskan dahaganya akan ilmu'
  2. >>> 'orang' in a
  3. True
  4. >>> 'a' in a
  5. True
  6. >>> 'anyak' in a
  7. True
  8. >>> 

4.Operator Logika

Python memberikan tiga opeartor logika yaitu, 'and', 'or ', dan 'not'. Operator 'and' dan 'or' memberikan hasil bukan boolean, kecuali merupakan operasi boolean.

  1. >>> a=1
  2. >>> b=2
  3. >>> a and b
  4. 2
  5. >>> a or b
  6. 1
  7. >>> b and a
  8. 1
  9. >>> b or a
  10. 2
  11. >>> 

Pada dasarnya opeator 'and' dalam bentuk boolean adalah untuk memberikan hasil sebagai berikut:
a
b
Hasil
0
0
0
0
1
0
1
0
0
1
1
1

Operator 'or' :
a
b
Hasil
0
0
0
0
1
1
1
0
1
1
1
1

Dan operator 'not' adalah kebalikanya:
a
Hasil
0
1
1
0






No comments:

Post a Comment