Bab 2. Belajar Memprogram [Pemrograman Python Untuk Anak] – bagian 9 { Perulangan }

2.6. Perulangan

Tidak ada yang lebih buruk daripada harus melakukan hal yang sama berulang-ulang. Ada alasan mengapa beberapa orang menghitung domba ketika mereka sedang mengalami kesulitan tidur, dan itu tidak ada hubungannya dengan kekuatan luar biasa dalam menginduksi tidur  dari mamalia berbulu tersebut. Ini karena tak henti-hentinya mengulangi sesuatu jadi membosankan, dan pikiran Anda bisa menurun hingga kemudian tidur menjadi lebih mudah jika Anda tidak fokus pada sesuatu yang menarik.

Programmer tidak begitu suka mengulang sesuatu juga, kecuali mereka berusaha untuk tertidur. Untungnya, kebanyakan bahasa pemrograman memiliki apa yang disebut untuk loop/perulangan, yang mengulangi hal-hal seperti pernyataan pemrograman dan blok kode lainnya secara otomatis.

Fig 2.6.1. Domba hipnotisePada bab ini, kita akan melihat pada perulangan, serta jenis lain dari perulangan yang python tawarkan: perulangan while.

Menggunakan Perulangan

Untuk mencetak kata hello lima  kali di python, kamu bisa melakukkannya dengan cara berikut ini:

>>> print("hello")
hello
>>> print("hello")
hello
>>> print("hello")
hello
>>> print("hello")
hello
>>> print("hello")
hello

Tapi ini agak membosankan. Sebaliknya, Anda dapat menggunakan untuk perulangan untuk mengurangi jumlah yang harus diketik dan diulang, seperti ini:

>>> for x in range(0, 5):
         print('hello')

  hello
  hello
  hello
  hello
  hello

Fungsi range di dapat digunakan untuk membuat sebuah list nomor mulai dari angka yang disebut diawal hingga angka sebelum angka yang disebut terakhir. Itu mungkin terdengar sedikit membingungkan. Mari kita menggabungkan fungsi range dengan fungsi list untuk melihat persis bagaimana ini bekerja. Fungsi range tidak benar-benar membuat daftar/list nomor, melainkan mengembalikan sebuah iterator, yang merupakan jenis objek Python yang dirancang khusus untuk bekerja dengan loop. Namun, jika kita menggabungkan range dengan list, kita mendapatkan daftar nomor.

>>> print(list(range(10, 20)))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

Dalam kasus perulangan for , kode di sebenarnya memberitahu Python untuk melakukan hal berikut:

  • mulai menghitung dari 0 dan berhenti sebelum mencapai 5.
  • untuk setiap angka yang kita hitung simpan nilai di variabel x.

Kemudian Python mengeksekusi blok kode print(‘hello’) . Catat bahwa terdapat 4 spasi tambahan di awal baris (jika kamu membandingkan dengan baris di atasnya). IDLE akan secara otomatis mengidentasikan ini untukmu. Ketika kita menekan [enter] setelah baris kedua, Python akan mencetak “hello” lima kali. Kita juga bisa menggunakan x dalam pernyataan print untuk menghitung kata hello:

>>> for x in range(0, 5):
        print('hello %s' % x)
hello 0
hello 1
hello 2
hello 3
hello 4

Jika kita tidak menggunakan perulangan lagi, kode kita mungkin terlihat seperti ini:

>>> x = 0
>>> print('hello %s' % x)
hello 0
>>> x = 1
>>> print('hello %s' % x)
hello 1
>>> x = 2
>>> print('hello %s' % x)
hello 2
>>> x = 3
>>> print('hello %s' % x)
hello 3
>>> x = 4
>>> print('hello %s' % x)
hello 4

Jadi dengan menggunakan loop telah benar-benar menyelamatkan kita dari menulis delapan baris tambahan kode. Programmer yang baik benci melakukan hal-hal lebih dari sekali, sehingga perulangan adalah salah satu pernyataan yang lebih populer dalam bahasa pemrograman.

Anda tidak perlu untuk tetap menggunakan fungsi range dan list ketika membuat perulangan. Anda juga bisa menggunakan list yang telah Anda buat, seperti daftar belanja dari Bab 2.3, sebagai berikut:

>>> wizard_list = ['spider legs', 'toe of frog', 'snail tongue',
               'bat wing', 'slug butter', 'bear burp']
>>> for i in wizard_list:
        print(i)
spider legs
toe of frog
snail tongue
bat wing
slug butter
bear burp

Kode ini adalah cara untuk mengatakan, “Untuk setiap item dalam wizard_list, simpan nilai dalam variabel i, dan kemudian cetak isi variabel itu.” Sekali lagi, jika kita tidak menggunakan perulangan, kita perlu melakukannya seperti ini:

Fig 2.6.2. Bekicot pemalas

>>> wizard_list = ['spider legs', 'toe of frog', 'snail tongue',
               'bat wing', 'slug butter', 'bear burp']
>>> print(wizard_list[0])
spider legs
>>> print(wizard_list[1])
toe of frog
>>> print(wizard_list[2])
snail tongue
>>> print(wizard_list[3])
bat wing
>>> print(wizard_list[4])
slug butter
>>> print(wizard_list[5])
bear burp

Jadi sekali lagi, loop telah menyelamatkan kita dari mengetik terlalu banyak.

Mari kita membuat loop lain. Ketik kode berikut ke shell. Ini seharusnya kode anda secara otomatis terindentasi untuk Anda.

>>> hugehairypants = ['huge', 'hairy', 'pants']
 >>> for i in hugehairypants:
         print(i)
         print(i)

 huge
  huge
  hairy
  hairy
  pants
  pants

Pada baris pertama, kami membuat list yang berisi ‘huge’, ‘hairy’, dan ‘pants’. Pada baris berikutnya, kita melakukan perulangan melalui item dalam daftar itu, dan setiap item kemudian disimpan ke variabel i. Kami mencetak isi dari variabel dua kali dalam dua baris berikutnya. Menekan enter pada baris kosong berikutnya memberitahu Python untuk mengakhiri blok, dan kemudian menjalankan kode dan mencetak setiap elemen dari list dua kali.

Fig 2.6.3. Celana besar berbulu

Ingat bahwa jika Anda salah memasukkan jumlah spasi, Anda akan berakhir dengan pesan kesalahan. Jika Anda memasukkan kode dengan spasi tambahan pada baris keempat, Python akan menampilkan kesalahan identasi:

>>> hugehairypants = ['huge', 'hairy', 'pants']
>>> for i in hugehairypants:
        print(i)
         print(i)

SyntaxError: unexpected indent

Seperti yang Anda pelajari dalam Bab 2.5, Python mengharapkan jumlah spasi di blok secara konsisten. Tidak peduli berapa banyak spasi yang Anda masukkan, selama Anda menggunakan jumlah yang sama untuk setiap baris baru (selain itu membuat kode lebih mudah bagi manusia untuk dibaca).

Berikut adalah contoh yang lebih rumit pada perulangan dengan dua blok kode:

>>> hugehairypants = ['huge', 'hairy', 'pants']
>>> for i in hugehairypants:
        print(i)
        for j in hugehairypants:
                print(j)

Dimana blok dalam kode ini? Blok pertama adalah perulangan for yang pertama:

hugehairypants = ['huge', 'hairy', 'pants']
for i in hugehairypants:
    print(i)                   #
    for j in hugehairypants:   # These lines are the FIRST block.
        print(j)               #

Blok kedua adalah baris print kedua pada perulangan for :

hugehairypants = ['huge', 'hairy', 'pants']
  for i in hugehairypants:
      print(i)
     for j in hugehairypants:
         print(j)              # This line is also the SECOND block.

Dapatkah Anda mencari tahu apa yang akan dilakukan kode ini?

Setelah list yang disebut hugehairypants dibuat, kita bisa mengatakan dari dua baris berikutnya yang akan diulang melalui item dalam list dan mencetaknya masing-masing. Namun, ia akan mengulang atas list itu lagi, kali ini menetapkan nilai ke variabel j, dan kemudian mencetak setiap item lagi. Kode pada baris ke 4 dan 5 masih merupakan bagian dari perualangan for, yang berarti mereka akan dieksekusi untuk setiap item saat perulangan berjalan melalui list.

Jadi, ketika kode ini berjalan, kita harus melihat huge diikuti oleh huge, hairy, pants dan kemudian hairy diikuti oleh hugehairy, pants dan sebagainya.

Masukkan kode ini ke shell Python dan lihat sendiri:

>>> hugehairypants = ['huge', 'hairy', 'pants']
  >>> for i in hugehairypants:
         print(i)
          for j in hugehairypants:
                 print(j)

  huge
    huge
    hairy
    pants
  hairy
    huge
    hairy
    pants
  pants
    huge
    hairy
    pants

Python memasuki perulangan pertama dan mencetak item dari list. Selanjutnya, memasuki perulangan kedua dan mencetak semua item dalam list. Kemudian berlanjut dengan perintah print(i), mencetak item berikutnya dalam daftar, dan kemudian mencetak daftar lengkap lagi dengan print(j).

Bagaimana tentang sesuatu yang lebih praktis daripada mencetak kata-kata konyol? Ingat perhitungan yang kita bahas dalam Bab 2 untuk menentukan berapa banyak koin emas yang akan Anda miliki pada akhir tahun jika Anda menggunakan penemuan gila kakekmu untuk menduplikasi koin? Itu tampak seperti ini:

>>> 20 + 10 * 365 − 3 * 52

Ini merupakan penemuan 20koin ditambah 10 koin magic dikalikan 365 hari dalam setahun, minus 3 koin seminggu dicuri oleh gagak.

Fig 2.6.4. gagak mencuri koin emas

Hal ini mungkin berguna untuk melihat bagaimana tumpukan koin emas Anda akan meningkat setiap minggu. Kita dapat melakukan ini dengan perulangan for yang lain, tapi pertama-tama, kita perlu mengubah nilai variabel magic_coins kami sehingga mewakili jumlah koin sihir per minggu. Itu 10 koin ajaib per hari kali 7 hari dalam seminggu, sehingga magic_coins seharusnya 70:

>>> found_coins = 20
>>> magic_coins = 70
>>> stolen_coins = 3

Kita bisa melihat harta kita meningkat setiap minggu dengan menciptakan variabel lain, yang disebut koin, dan menggunakan loop:

>>> found_coins = 20
  >>> magic_coins = 70
  >>> stolen_coins = 3
 >>> coins = found_coins
 >>> for week in range(1, 53):
         coins = coins + magic_coins - stolen_coins
         print('Week %s = %s' % (week, coins))

Jadi, jika Anda menjalankan program ini, Anda akan melihat sesuatu seperti ini:

Fig 2.6.5. magic coin dengan perulangan

Kita Berbicara Tentang Perulangan While

Perulangan for  bukan satu-satunya jenis perulangan yang bisa Anda dapat buat dalam Python. Ada juga bisa menggunakan perulangan while. Perulangan for adalah perulangan dari panjang tertentu, sedangkan perulangan while  adalah perulangan yang digunakan ketika Anda tidak tahu sebelumnya waktu yang dibutuhkan untuk menghentikan perulangan.

Bayangkan tangga dengan 20 langkah. Tangga di dalam ruangan, dan Anda tahu bahwa Anda dapat dengan mudah naik 20 langkah. Perulangan for akan menjadi seperti itu.

>>> for step in range(0, 20):
        print(step)

Sekarang bayangkan sebuah tangga naik gunung. Gunung ini benar-benar tinggi, dan Anda mungkin kehabisan energi sebelum Anda mencapai puncak, atau cuaca mungkin berubah menjadi buruk, memaksa Anda untuk berhenti. Inilah yang perulangan while akan tampak seperti.

step = 0
while step < 10000:
print(step)
if tired == True:
break
elif badweather == True:
break
else:
step = step + 1

Jika Anda mencoba untuk masuk dan menjalankan kode ini, Anda akan mendapatkan error. Mengapa? Kesalahan terjadi karena kita belum membuat variabel tired dan badweather. Meskipun tidak ada kode cukup di sini untuk benar-benar membuat program kerja, hal ini menunjukkan contoh dasar loop sementara.

Fig 2.6.6. Awan Mendung

Kita mulai dengan menciptakan sebuah variabel yang disebut step dengan step = 0. Selanjutnya, kita membuat perulangan while yang memeriksa apakah nilai dari variabel step kurang dari 10.000 (step <10000), yang merupakan jumlah langkah dari bawah gunung ke atas. Selama langkah kurang dari 10.000, Python akan mengeksekusi sisa kode.

Dengan print(step), kita mencetak nilai variabel dan kemudian memeriksa apakah nilai variabel tired bernilai Benar dengan if tired ==  True:. (True disebut nilai Boolean, yang akan kita pelajari di Bab 2.8.) Jika ya, kita menggunakan kata kunci break untuk keluar dari loop. kata kunci brean adalah cara melompat keluar dari loop (dengan kata lain, berhenti) segera, dan bekerja dengan baik untuk kedua perulangan while dan for. Di sini ia memiliki efek melompat keluar dari blok dan ke baris step = step + 1.

Baris elif badweather == True: memeriksa untuk melihat apakah variabel badweather  diatur ke True. Jika demikian, kata kunci break membuatnya keluar dari perulangan. Jika tidak lelah/tired atau badweather tidak True (yang lain), kita tambahkan 1 ke variabel step dengan step = step + 1, dan terus melakukan perulangan.

Jadi langkah-langkah dari perulangan while adalah sebagai berikut:

  1. Check the condition.
  2. Execute the code in the block.
  3. Repeat.

Lebih umum, perulangan while mungkin dibuat dengan beberapa kondisi, bukan hanya satu, seperti ini:

>>> x = 45
>>> y = 80
>>> while x < 50 and y < 100:
x = x + 1
y = y + 1
print(x, y)

Di sini, kita membuat variabel x dengan nilai 45 , dan variabel y dengan nilai 80. Perulangan mengecek untuk dua kondisi di: apakah x kurang dari 50 dan apakah y kurang dari 100. Sementara kedua kondisi adalah benar, baris yang mengikutinya dijalankan, menambahkan 1 untuk kedua variabel dan kemudian mencetaknya. Berikut output dari kode ini:

46 81
47 82
48 83
49 84
50 85

Dapatkah Anda mencari tahu bagaimana ini bekerja?

Kami mulai menghitung pada 45 untuk variabel x dan pada 80 untuk variabel y, dan kemudian tembahkan 1 (tambahkan 1 untuk setiap variabel) setiap kali kode dalam perulangan dijalankan. Perulangan akan berjalan selama x kurang dari 50 dan y kurang dari 100. Setelah perulangan lima kali (1 ditambahkan ke masing-masing variabel setiap kali), nilai dalam x mencapai 50. Sekarang kondisi pertama (x <50) tidak lagi benar, sehingga Python tahu untuk menghentikan perulangan.

Penggunaan umum lainnya dari perulangan while adalah untuk menciptakan loop semi-abadi. Ini adalah jenis loop yang bisa berlangsung selamanya, tetapi sebenarnya terus sampai sesuatu terjadi dalam kode untuk keluar dari itu. Berikut ini adalah contohnya:

while True:
lots of code here
lots of code here
lots of code here
if some_value == True:
break

Kondisi perulangan while hanya True, yang selalu benar, sehingga kode di blok akan selalu berjalan (dengan demikian, loop abadi). Hanya jika variabel some_value  benar Python akan keluar dari loop.

Apa Yang Telah Kamu Pelajari

Dalam bab ini, kami menggunakan perulangan untuk melakukan tugas yang berulang tanpa melakukan semua pengulangan. Kita diberitahu Python apa yang kita inginkan berulang dengan menulis tugas-tugas tersebut di dalam blok kode, yang kita masukkan ke dalam perulangan. Kami menggunakan dua jenis perulangan: perulangan for dan perulangan while, yang serupa tetapi dapat digunakan dalam cara yang berbeda. Kami juga menggunakan kata kunci break untuk menghentikan perulangan – yaitu, untuk keluar dari lingkaran.

Teka-teki Pemrograman

1. Perulangan Hello

Menurutmu apa yang akan dilakukan kode program ini? Pertama, coba tebak, lalu kemudian coba jalankan di python untuk melihat apakah tebakanmu benar.

for x in range(0, 20):
   print('hello %s', % x)
   if x < 9:
      break

2. Bilangan Genap

Buat sebuah perulangan yang mencetak angka genap sampai mencapai umur kamu sekarang, jika umur kamu berupa bilangan ganjil, cetak bilangan ganjil hingga mencapai bilangan umur kamu. Sebagai contoh, ia mungkin akan mencetak bilangan seperti dibawah ini:

2
4
6
8
10
12
14

3. Rasa Favorit Saya

Buatlah sebuah list yang berisi rasa sandwich yang berbeda-beda, seperti dibawah ini:

ingredients = ['ayam bakar', 'sapi barbeque', 'kambing guling', 'bebek goreng peking', 'sate kerbau']

Sekarang buat perulangan yang mencetak list  (termasuk angka):

1 ayam bakar
2 sapi barbeque
3 kambing guling
4 bebek goreng peking
5 sate kerbau

4. Berat badan kamu di bulan

Jika kamu berdiri di bulan sekarang, berat kamu akan berkurang 16,5% dari berat kamu di bumi. Kamu bisa menghitungnya dengan mengalikan berat badan kamu di bumi dengan 0,165.

Jika kamu bertambah 1 kilo setiap tahun selama 15 tahun kedepan, berapa berat badan kamu ketika mengunjungi bulan setiap tahunnya dan pada tahun ke 15? Tulislah sebuah program menggunakan perulangan yang mencetak berat badan kamu di bulan setiap tahunnya.

Iklan
Categories: Buku Komputer, Pemrograman Komputer, Python | Tag: | Tinggalkan komentar

Navigasi pos

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Buat situs web atau blog gratis di WordPress.com.

%d blogger menyukai ini: