Saturday, September 27, 2014

Membuat Program Katakan Angka atau Terbilang di Bahasa Pemrograman Python (Part 2)

Membuat Program Katakan Angka atau Terbilang di Bahasa Pemrograman Python (Part 2) | pemrograman | komputer | bahasa python


Pada part ini sobat akan berhadapan dengan banyak sekali script yang harus dipahami. Sobat harus benar-benar mengerti semua dasar-dasar bahasapemrograman python terlebih dahulu sebelum sampai kesini. Jika sobat benar-benar ingin belajar bahasa pemrograman python, sobat bisa explore postingan-postingan saya sebelumnya supaya tidak ada kendala pada materi-materi selanjutnya.

Part yang ingin kita bahas hari ini adalah gambar yang saya kasih tanda kotak merah di bawah ini :


bahasa pemrograman python

  1. def katakan(x):    
  2.     y = str(x)          
  3.     n = len(y)         
  4.     if n <= 3 :         
  5.         if n == 1 :    
  6.             if y == '0' :    
  7.                 return ''    
  8.             else :          
  9.                 return angka[int(y)]    
  10.         elif n == 2 :
  11.             if y[0] == '1' :                 
  12.                 if y[1] == '1' :
  13.                     return 'sebelas'
  14.                 elif y[0] == '0':
  15.                     x = y[1]
  16.                     return katakan(x)
  17.                 elif y[1] == '0' :
  18.                     return 'sepuluh'
  19.                 else :
  20.                     return angka[int(y[1])] + ' belas'
  21.             elif y[0] == '0' :
  22.                 x = y[1]
  23.                 return katakan(x)
  24.             else :
  25.                 x = y[1]
  26.                 return angka[int(y[0])] + b + katakan(x)
  27.         else :
  28.             if y[0] == '1' :
  29.                 x = y[1:]
  30.                 return 'seratus ' + katakan(x)
  31.             elif y[0] == '0' :  
  32.                 x = y[1:]
  33.                 return katakan(x)
  34.             else :
  35.                 x = y[1:]
  36.                 return angka[int(y[0])] + c + katakan(x)

Keterangan :

  1. Membuat function bernama "katakandan var x diinput oleh user.
  2. Mengkonversi nilai var x menjadi string dengan diwakili var y.
  3. var n bernilai jumlah karakter dari var y.
  4. Jika var n bernilai kurang dari sama dengan 3, maka :

    "Semua instruksi di bawah if  n <= 3 akan berjalan ketika jumlah dari var n maksimal 3 digit angka. Ini berarti bahwa angka yang dimasukkan oleh user kurang dari 1000 karena 1000 sendiri sudah terdiri dari 4 digit angka".
  5. Jika var n == 1, maka :

    "Semua instruksi di bawah if n == 1 (maksud dari semua instruksi di bawahnya adalah dengan indentasi yang tepat, misalnya di bawah instruksi if n ==1 terdapat instruksi if y == '0' dan instruksi else. Merekalah yang dimaksud instruksi di bawah if n == 1). Saya anggap sobat paham dengan indentasi (script yang menjorok ke dalam).
    Kembali ke pembahasan tentang arti instruksi if n == 1 , maksudnya ketika user memasukkan hanya 1 digit angka, maka instruksi di bawah if n ==1 akan berjalan"
  6. Jika nilai dari var y adalah string '0', maka :
  7. Mengembalikan string kosong.
  8. Jika nilai dari var y adalah selain string '0', berarti nilainya angka selain 0, maka :
  9. Mencetak dictionay angka yang telah dibuat pada postingan sebelumnya dengan indeks int(y).

    "Kenapa dengan indeks int(y) ? karena var y bernilai string bukan integer, sedangkan dalam pengideksan harus menggunakan angka sehingga kita harus mengkonversi nilai var y menjadi inteteger."
    "Ada satu hal lagi yang perlu sobat ketahui bahwa nilai var y adalah hasil pengkonversian integer ke string dari var x yang dimasukkan oleh user. Tapi pada saat kita ingin mengindeks, kita mengkonversi balik yaitu dari string ke integer."
  10. Jika var n == 2, maka :

    "Instruksi-instruksi di bawah elif n == 2 akan berjalan ketika user menginput angka puluhan, berarti di bawah 100 karena 100 sendiri terdiri dari 3 digit angka."
  11. Jika nilai dari var y dengan indeks 0 (angka pertama) adalah string '1' , maka :
  12. JIka nilai dari var y dengan indeks 1 (angka kedua) adalah string '1', maka :
  13. Mengembalikan string "sebelas"
  14. Jika nilai var y dengan indeks 0 (angka pertama) adalah string '0', maka :

    "Contohnya angka 03, 06, 08 dan lain-lain. Instruksi ini akan berguna ketika user menginput angka banyak digit, misalnya ribuan, puluhan ribu, ratusan ribu, dan seterusnya. Maka sistem slicing (pemotongan) dan rekursif akan digunakan."
  15. Membuat var x baru dengan fungsi slicing (pemotongan). Jadi nilai dari var x yang baru adalah nilai var y dengan indeks 1.

    "Maksudnya adalah pada instruksi sebelumnya saya memberikan contoh 03, 06, dan 08. Kita memotong nilai var y dengan indeks 1, berarti kita mengambil angka kedua yaitu 3,6, dan 8."
  16. Mengembalikan nilai katakan(x).

    "Inilah yang dimaksud dengan fungsi rekursif, pada instruksi ini akan mengembalikan ke function katakan dengan nilai var x baru yang telah di slice (dipotong). Setelah sampai ke setiap fungsi rekursif, maka jalannya program akan kembali mengeksekusi dari awal lagi dan begitu seterusnya."
  17. Jika var y dengan indeks 1 (angka kedua) sama dengan string '0', maka :
  18. Mengembalikan string "sepuluh".
  19. Jika var y dengan indeks 1 (angka kedua) benilai selain string '0' dan '1', maka :
  20. Mengembalikan dictionary angka dengan indeks int(y[1]) ditambah string "belas".

    "int(y[1]) berarti mengkonversi string ke integer dimana var y sendiri diindeks oleh angka 1.  Contohnya var y dengan nilai string '05' , ketika kita ingin mengindeks dictionary angka berarti penulisan indeksnya adalah angka[int(y[1])]. Pengerjaannya mulai dari tanda kurung yang paling dalam. Jadi pertama kita akan mendapat nilai indeks seperti ini angka[int('5')] , kedua hasil indeksan tersebut akan dikonversi dari string menjadi integer sehingga menghasilkan angka[5]. Sedangkan nilai dictionary dari angka[5] adalah string "lima".
  21. Jika var y dengan indeks 0 (angka pertama) sama dengan string "0", maka :

    "Instruksi ini akan berguna jika var y bernilai string dua nol ('00') ".
  22. Nilai dari var x yang baru adalah slicing var y dengan indeks 1 (angka kedua).
  23. Mengembalikan function katakan(x) dengan nilai var x baru (rekursif).
  24. Ketika var y dengan indeks 0 (angka pertama) bernilai selain string '0' dan '1', maka :

    "Instruksi ini akan berjalan jika nilai dari var y adaah string angka 20 sampai 99."
  25. Slicing var y dengan indeks 1 yang menghasilkan var x baru dengan nilai string angka kedua.
  26. Mengembalikan dictionary angka dengan indeks angka[int(y[0])] seperti yang sudah saya jelaskan di atas. Ditambah dengan var b yang bernilai string "puluh", dan ditambah lagi dengan hasil rekursif yaitu function katakan(x) dengan nilai var x baru.
  27. Jika var n bernilai selain 1 dan 2 digit angka.

    "Berarti nilainya 3 digit,  hanya 3 digit? apakah 4, 5, 6 digit dan seterusnya bukan termasuk pada instruksi ini? Jawabannya bukan, alasannya adalah pada instruksi pertama (instruksi paling atas setelah function katakan dan 2 variabel yang ditulis). Instruksi tersebut menunjukkan bahwa instruksi di bawah if n <=  3 akan berjalan ketika nilai var n adalah maksimal 3 digit."
  28. Jika var y dengan indeks 0 (angka pertama) sama dengan string '1', maka :
  29. Slicing var y dengan indeks 1 sampai digit terakhir yang menghasilkan var x baru dengan nilai string angka kedua sampai digit terahir.
  30. Mengembalikan string "seratus" ditambah hasil rekursif dari var x baru.
  31. Jika var y dengan indeks 0 (angka pertama) sama dengan string '0', maka :
  32. Slicing var y dengan indeks 1 sampai digit terakhir yang menghasilkan var x baru dengan nilai string angka kedua sampai digit terakhir.
  33. Mengembalikan fungsi rekursif dengan var x baru.
  34. Jika var y dengan indeks 0 (angka pertama) bernilai selain string '0' dan '1', maka :
  35. Slicing var y dengan indeks 1 sampai digit terakhir yang menghasilkan var x baru dengan nilai string angka kedua sampai digit terakhir.
  36. Mengembalikan dictionary angka dengan indeks int(y[0])], ditambah stiring "ratus" dan ditambah lagi hasil rekursif dari var x yang baru.
Sekian penjelasan saya pada part 2 ini. Saya harap sobat bersemangat dan sabar dalam memahami program ini karena dalam pemahaman terkadang membutuhkan waktu yang lama. Tapi dengan usaha yang keras, saya yakin sobat bisa meraihnya. Terimakasih atas kunjungannya dan silahkan menjutkan membaca ke part selanjutnya.






4 comments:

  1. wah bagus nh blog kebetulan ane ana it ijin belajar ya gan hehe

    ReplyDelete
  2. Pusing memahaminya... karena baru pertama kali ya... @@,

    ReplyDelete
  3. @ Ray, Iya gan mari belajar bareng, kalo ada yang gak tahu ditanyakan aja..Makasih

    ReplyDelete
  4. Ingin mengatahui lebih lanjut? Klik: https://mengenalpythonyuk.blogspot.com

    ReplyDelete