Anda di sini

Pemrograman

Python 3 RLE BAB 3: Halo, Turtle Kecil!

Aditya Suranata - 13 Desember 2015 09:58:07 0

Terdapat banyak modul di Python yang menyediakan fitur keren dan sangat membantu yang bisa kita gunakan pada program kita. Beberapa diantaranya bisa mengirim email, atau membaca dan mengambil isi dari halaman web. Satu yang akan coba kita gunakan dalam bab ini akan memungkinkan kita untuk membuat turtle dan juga menggambar bentuk dan pola.

Turtle (penyu) itu lucu, tapi tujuan inti dari bab ini bukanlah untuk memelihara seekor penyu sungguhan, tujuannya tentunya untuk mengajarkan kita lebih banyak tentang Python, dan untuk membangun pandangan kita mengenai pemikiran komputasional, atau berpikir seperti seorang ilmuan komputer. Kebanyakan dari Python yang dicakup di bab ini akan kita eksplorasi jauh lebih dalam lagi nanti.

3.1. Program Turtle Pertama Kita

Mari buat beberapa baris kode program Python untuk membuat seekor objek turtle dan mulai menggambar sebuah persegi. (Kita akan memberi nama variabel pertama kita sebagai alex, yang mengacu ke turtle, tapi kita juga bisa memillih nama lain jika kita mengikuti aturan dari bab sebelumnya).

import turtle                # Agar kita bisa menggunakan turtle 
wn = turtle.Screen()         # Buat taman bermain untuk turtle
alex = turtle.Turtle()       # Buat seekor turtle, dan berikan ke alex

alex.forward(50)             # Suruh alex maju sebanyak 50 poin
alex.left(90)                # Suruh alex balik kiri 90 derajat
alex.forward(30)             # Selesaikan sisi yang satunya dari segiempatnya

wn.mainloop()                # Tunggu pengguna menutup jendelanya

Ketika kita menjalankan programnya, jendela baru seperti berikut akan muncul:

Berikut adalah beberapa hal yang perlu kita pahami mengenai program ini.

Baris pertama meminta Python untuk memuat sebuah modul bernama turtle. Modul ini menyediakan kita dua tipe baru yang bisa kita gunakan: tipe Turtle, dan tipe Screen. Notasi titik pada turtle.Turtle berarti "Tipe Turtle yang didefinisikan di dalam modul turtle". (Ingat bahwa Python sifatnya case sensitive, jadi nama modul, dengan t kecil, adalah berbeda dengan type Turtle yang menggunakan T besar.)

Kita kemudian membuat apa yang dinamakan screen (tapi lebih nyaman kalau kita menamainya sebagai jendela/window), yang mana kita berikan (assign) ke variabel wn. Setiap window berisi sebuah canvas, yang merupakan area di dalam window yang bisa kita gambar.

Pada baris ke 3 kita membuat sebuah turtle. Variabel dengan nama alex dibuat agar mengacu ke turtle ini.

Jadi ketiga baris pertama itu fungsinya untuk mengeset nilai awal, selanjutnya turtle kita siap untuk mulai menggambar pada canvas.

Pada baris ke 5-7, kita memerintahkan objek alex untuk bergerak, dan untuk berbelok. Kita melakukannya dengan cara memanggil (meng-invoke), atau mengaktifkan, metode yang dimiliki alex -- metode merupakan instruksi-intruksi bagaimana cara merespon yang diketahui oleh semua turtle.

Baris terakhir juga memainkan peran, variabel wn merujuk pada jendela yang terlihat diatas. Ketika kita memanggil metode mainloop nya, ia akan memasuki kondisi dimana ia akan menunggu even (seperti penekanan tombol, atau pergerakan mouse dan klik). Programnya akan berhenti ketika pengguna menutup windownya.

Sebuah objek bisa punya berbagai metode -- atau simpelnya hal yang bisa mereka lakukan -- dan juga bisa punya atribut (attribute)-- (kadang dinamakan juga dengan properti atau sifat). Contohnya, setiap turtle punya atribut color. Pemanggilan metode seperti alex.color("red") akan membuat alex berwarna merah, dan gambarnya juga menjadi merah. (Ingat kata color ditulis dalam gaya bahasa Inggris Amerika!)

Warna turtle, lebar pensilnya, posisinya terhadap jendela, kearah mana ia mengarah, dan yang lainnya merupakan bagian dari kondisinya sekarang (current state). Begitu pula dengan objek window/jendela yang memiliki warna latar, dan beberapa teks pada bar judul, ukuran dan posisinya pada layar. Itu semua adalah bagian dari kondisi objek window.

Ada sangat banyak metode yang memungkinkan kita untuk memodifikasi objek turtle dan window. Kita hanya akan memperlihatkan beberapa saja. Pada program ini kita hanya mengomentari baris selain baris yang sudah kita jelaskan pada contoh sebelumnya (dan kali ini kita menggunakan nama variabel yang berbeda untuk turtlenya):

import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")          # Atur warna latar window
wn.title("Halo, Tess !")          # Atur judul window

tess = turtle.Turtle()
tess.color("blue")                # Suruh tess untuk merubah warnanya
tess.pensize(3)                   # Suruh tess untuk mengatur lebar pensilnya

tess.forward(50)
tess.left(120)
tess.forward(50)

wn.mainloop()

Ketika kita menjalankan programnya, window baru akan muncul, dan akan tetap demikian hingga kita mengeluarkannya.

Kembangkan Program Ini

  1. Modifikasi program ini jadi ketika ia membuat windownya, ia akan meminta pengguna untuk memasukan warna latar yang diinginkan. Data yang dimasukan pengguna harusnya disimpan menggunakan variabel, dan akan mengubah warna latarnya sesuai dengan yang diinginkan oleh pengguna. (Petunjuk: Kamu bisa mencari daftar nama warna yang diperbolehkan disini . Disana juga tersedia nama warna yang tidak umum seperti "peach puff" dan "HotPink".)
  2. Lakukan perubahan yang sama juga pada warnanya, ketika dijalankan akan mengatur warna tess.
  3. Lakukan perubahan yang sama juga pada lebar pensilnya. Petunjuk: hasil dari dialog dengan pengguna akan mengembalikan data bertipe string, sementara metode tess.pensize memerlukan data bertipe int. Jadi kamu akan perlu melakukan konversi untuk bisa mengirim data tersebut ke pensize.

3.2. Instan - Kawanan Penyu (turtle)

Sama halnya dengan kita bisa punya banyak integer dalam program, kita juga bisa punya banyak turtle. Masing-masing dari mereka dinamakan sebagai instan (instance). Setiap instan memiliki atribut dan metode mereka sendiri -- jadi alex mungkin menggambar dengan pensil hitam tipis pada posisi tertentu, sementara tess menggambar dengan arahnya sendiri dengan pensil tebal berwarna pink.

import turtle
wn = turtle.Screen()               # Atur window dan atributnya
wn.bgcolor("lightgreen")
wn.title("Tess & Alex")

tess = turtle.Turtle()             # Buat objek tess dan atur beberapa atribut
tess.color("hotpink")
tess.pensize(5)

alex = turtle.Turtle()             # Buat objek alex

tess.forward(80)                   # Suruh tess menggambar segitiga sama sisi
tess.left(120)
tess.forward(80)
tess.left(120)
tess.forward(80)
tess.left(120)                     # Selesaikan segitiganya

tess.right(180)                    # Suruh tess berbalik
tess.forward(80)                   # Pindahkan dia menjauh dari posisi semula

alex.forward(50)                   # Suruh alex menggambar kotak
alex.left(90)
alex.forward(50)
alex.left(90)
alex.forward(50)
alex.left(90)
alex.forward(50)
alex.left(90)

wn.mainloop()

Inilah yang akan terjadi ketika alex menyelesaikan kotaknya, dan tess menyelesaikan segitiganya.

Berikut ini beberapa pengamatan dengan Bagaimana cara berpikir layaknya seorang ilmuan komputer:

  • Dalam satu lingkaran penuh terdapat 360 derajat. Jika kita menambahkan semua putaran yang dibuat turtle, tak peduli langkah apa yang terjadi antara putaran satu dengan lainnya, kita bisa dengan mudah mengetahui jika mereka bertambah hingga sekian kali lipat dari 360 derajat. Ini membuktikan bahwa alex menghadap ke posisi persis dimana ia pertama kali dibuat. (Konvensi geometri adalah 0 derajat menghadap ke Timur, dan itu juga terjadi pada kasus ini.)
  • Kita bisa saja melewatkan putaran terakhir untuk alex, tapi itu tidak akan memuaskan. Jika kita diminta untuk menggambar suatu bentuk tertutup seperti kotak, atau sebuah lingkaran, maka alangkah baiknya agar kita menyelesaikan semua putaran dan mengembalikan si turtle ke posisinya semula, menghadap ke arah yang sama ketika ia pertama kali dimulai. Dengan begitu, penalaran mengenai programnya dan penyusunan potongan kodenya menjadi program yang lebih besar akan sangat jauh lebih mudah bagi kita manusia.
  • Kita melakukan hal yang sama terhadap tess: ia menggambar segitiganya, dan berputar hingga 360 derajat penuh. Kemudian kita memutar balik dan memindahkannya ke samping. Bahkan baris 18 yang kosong merupakan petunjuk tentang bagaimana mental seorang programmer bekerja dalam penyusunan potongan-potongan kode: dalam gambaran besarnya, pergerakan tess dipotong sebagai "gambar segitiganya" (baris 12-17) dan kemudian "pergi menjauh dari titik awal" (baris 19 dan 20).
  • Inti dari penggunaan komentar adalah untuk mencatat mental pemotongan kita, dan gambaran besarnya. Mereka tidak selalu eksplisit (gamblang) dalam kode.
  • Dan, eh heh... dua ekor turtle tentu belum memadai untuk disebut sebagai sebuah kawanan. Tapi ide pentingnya adalah bahwa modul turtle memberikan kita sejenis pabrik yang memungkinkan kita untuk membuat turtle sebanyak apapun yang kita perlu.

3.3. Menggunakan Perulangan For (for loop)

Ketika kita menggambar kotaknya, itu terasa cukup membosankan. Kita mesti dengan gamblang mengulang langkah-langkah yang sama untuk menggerakan dan membelokan sebanyak empat kali. Jika kita menggambar heksagonal (segi enam), atau sebuah oktogonal (segi delapan), atau bahkan sebuah poligonal dengan sisi sebaganyak 42, tentu akan jadi sangat buruk.

Jadi sebuah blok bangunan dasar dari bahasa pemrograman apapun adalah untuk bisa melakukan perulangan beberapa kode, lagi dan lagi.

Perulangan for pada Python menyelesaikan masalah ini untuk kita. Katakanlah kita punya beberapa teman, dan kita ingin mengirimi mereka sebuah email undangan untuk datang ke pesta kita. Untuk sekarang kita belum tahu bagaimana cara mengirim email , jadi saat ini kita hanya akan mencetak pesannya untuk setiap teman:

for f in ["Rendi", "Fika", "Laras", "Chiko", "Radit", "Dinda", "Mayke"]:
     undangan = "Hai " + f + ". Aku ngadain pesta hari Sabtu nanti, tolong datang ya!"
     print(undangan)
#kode lain bisa mengikuti dari sini ...

Ketika kita menjalankannya, outputnya akan seperti ini:

Hai Rendi. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Fika. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Laras. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Chiko. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Radit. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Dinda. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
Hai Mayke. Aku ngadain pesta hari Sabtu nanti, tolong datang ya!
  • Variabel f pada pernyataan for pada baris 1 dinamakan variabel loop. Kita juga bisa menamainya dengan nama lain selain f.
  • Baris 2 dan 3 adalah loop body. Loop body selalu bertakuk (berindentasi / menjorok ke dalam). Indentasinya menentukan dengan tepat apa pernyataan yang ada "di dalam body dari loop".
  • Pada setiap iterasi atau pass dari loop, pertama sebuah pengecekan akan dilakukan untuk memastikan jika masih ada item lain yang mesti diproses. Jika tidak ada (ini dinamakan dengan terminating condition dari loop), loop pun akan diakhiri. Eksekusi program berlanjut ke pernyataan berikutnya setelah loop body, (misal, pada kasus ini pernyataan di bawah komentar pada baris ke 4).
  • Jika terdapat item yang masih harus diproses, variabel loop akan diperbaharui untuk merujuk ke item selanjutnya dalan list. Ini berarti, pada kasus ini, body dari loop dieksekusi sebanyak 7 kali, dan setiap kali variabel f akan merujuk pada teman yang berbeda.
  • Pada akhir dari setiap eksekusi body dari loop, Python kembali ke pernyataan for, untuk melihat jika ada item lain yang mesti ditangani, dan untuk memberikan nilai berikutnya pada variabel f.

3.4. Alur Eksekusi dari Perulangan For

Ketika program dieksekusi, interpreter selalu menyimpan trek / jalur dari setiap pernyataan yang akan dieksekusi. Kita menamai ini sebagai control flow (kontrol aliran), dari flow of execution (aliran dari eksekusi) program. Ketika manusia berhitung atau menjalankan program, mereka sering menggunakan jari mereka untuk merujuk ke pernyataan selanjutnya. Jadi kita juga bisa mengimajinasikan control flow sebagai "gerakan dari jarinya Python".

Control flow hingga kini masih ketat bergerak dari atas ke bawah, satu pernyataan untuk satu hentakan. Tapi perulangan for merubah ketentuan ini.

Flowchart dari perulangan for

Control flow umumnya mudah untuk divisualisasikan dan dimengerti jika kiga menggunakan flowchart. Gambar di bawah memperlihatkan langkah tepat dan logika dari bagaimana pernyataan for dieksekusi.

3.5. Perulangan (loop) Menyederhanakan Program Turtle Kita

Untuk menggambar sebuah kotak kita harus melakukan hal yang sama sebanyak empat kali -- pindahkan turtlenya, dan belokan. Kita sebelumnya menggunakan 8 baris untuk membuat alex menggambar keempat sisi dari sebuah persegi, kode berikut juga melakukan hal yang sama persis dengan contoh sebelumnya itu, tapi bedanya kodenya menjadi lebih singkat hanya menggunakan tiga baris kode:

for i in [0,1,2,3]:
      alex.forward(50)
      alex.left(90)

Beberapa observasi:

  • Sementara "mengurangi beberapa baris kode" bisa memudahkan, itu bukan hal yang kita utamakan disini. Apa yang lebih penting adalah bahwa kita telah menemukan "pola berulang" dari pernyataan-pernyataan, dan mengorganisir ulang program kita untuk mengulang pola tersebut. Menemukan bilahannya dan dengan suatu cara menjadikan program kita tersusun dari bilahan-bilahan tersebut merupakan skil yang sangat penting dalam pola pikir komputasional.
  • Nilai [0,1,2,3] digunakan agar loop body-nya dieksekusi sebanyak 4 kali. Kita bisa menggunakan nilai apapun yang jumlahnya empat, tapi nilai itu merupakan yang paling sering digunakan. Faktanya, nilai seperti itu sangat populer sehingga Python memberikan kita objek spesial built-in untuk tujuan itu yang dinamakan range :
for i in range(4):
     # Eksekusi body dengan i = 0, lalu 1, lalu 2, kemudian 3
for x in range(10):
     # Set nilai x ke ... [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • Ilmuan komputer suka memulai dari 0!
  • range bisa menyediakan untaian nilai yang berurutan ke variabel loop pada perulangan for. Nilai yang disediakan range akan dimulai dari 0, sehingga dalam kasus ini tidak sampai ke 4 atau 10.
  • Trik kecil kita sebelumnya untuk memastikan kalau alex melakukan putaran final untuk menyelesaikan putaran 360 derajat telah terlunasi: jika kita tidak melakukannya, maka kita tentu tidak bisa menggunakan perulangan / loop untuk keempat sisi dari kotak itu. Ini tentu menjadi "kasus spesial", yang berbeda dari sisi-sisi lainnya. Ketika dimungkinkan, kita tentu lebih memilih untuk membuat kode kita masuk / klop dengan pola umum, ketimbang harus membuat kasus tertentu yang sifatnya khusus.

Jadi untuk melakukan perulangan sebanyak empat kali, seorang programer Python yang baik akan melakukan ini:

for i in range(4):
     alex.forward(50)
     alex.left(90)

Sekarang tentunya kamu sudah tahu bagaimana cara merubah program kita yang sebelumnya, jadi si tess juga bisa menggunakan perulangan for untuk menggambar segitiga sama sisinya.

Tapi sekarang, apa yang akan terjadi jika kita membuat perubahan seperti ini?

for c in ["yellow", "red", "purple", "blue"]:
     alex.color(c)
     alex.forward(50)
     alex.left(90)

Sebuah variabel juga bisa diberikan nilai yang berbentuk list. Jadi list-list juga bisa digunakan dalam situasi yang lebih umum, tidak hanya pada perulangan for. Kode diatas bisa ditulis ulang menjadi seperti ini:

# Berikan variabel sebuah nilai berbentuk list
clrs = ["yellow", "red", "purple", "blue"]
for c in clrs:
     alex.color(c)
     alex.forward(50)
     alex.left(90)

3.6. Beberapa Metode dan Trik Lain Dari Turtle

Metode yang dimiliki turtle bisa menggunakan sudut atau jarak negatif. Jadi tess.forward(-100) akan menyebabkan tess mundur, dan tess.left(-30) akan memutarnya ke kanan. Sebagai tambahan, karena sudut lingkaran besarnya 360 derajat, maka memutar 30 ke kiri akan menjadikan tess menghadap ke arah yang sama jika kita memutarnya 330 derajat ke kanan! (Pada layar animasi akan terlihat berbeda, tapi meskipun demikian - Kamu tetap akan dapat mengetahui apakah tess berputar searah jarum jam atau berlawanan arah jarum jam!

Hal ini menunjukan kalau kita tidak terlalu memerlukan metode putar kiri dan putar kanan -- kita bisa jadi minimalis, dan hanya menggunakan satu metode saja. Ada juga metode backward untuk mundur. (Jika kamu punya style kutu buku, kamu mungkin lebih menikmati menggunakan alex.backward(-100) untuk membuat alex bergerak maju!)

Inti sari berpikir layaknya seorang ilmuan komputer adalah untuk memahami lebih dalam mengenai struktur dan hubungan yang kaya dalam bidang yang kita geluti. Jadi merevisi beberapa fakta dasar tentang geometri dan nomor baris, dan memahami hubungan antara nilai jarak dan sudut dari kiri, kanan, mundur, maju, negatif, dan positif adalah awal yang baik jika kita ingin bermain dengan turtle.

Pensil yang dimiliki turtle bisa digunakan dan diletakan. Ini memungkinkan kita untuk memindahkan turtle ke tempat lain tanpa harus menggambar sebuah garis. Metodenya adalah:

alex.penup()
alex.forward(100)         # Ini akan memindahkan alex, tapi tak ada garis yang digambar
alex.pendown()

Setiap turtle bisa memiliki bentuknya sendiri. Beberapa yang memang sudah tersedia "dari sananya" adalah arrow, blank, circle, classic, square, triangle, turtle.

alex.shape("turtle")

Kita bisa mempercepat atau memperlambar kecepatan animasi turtle. (Animasi mengendalikan seberapa cepat turtle untuk berbelok dan bergerak maju). Pengaturan kecepatan bisa diatur antara 1 (paling lambat) hingga 10 (tercepat). Tapi jika kita mengeset kecepatannya ke 9, itu memiliki arti yang spesial -- matikan animasi dan begerak secepat mungkin.

alex.speed(10)

Seekor turtle bisa "mengecap" jejak kakinya ke kanvas, dan ini akan tetap terlihat setelah si turtle bergerak ke tempat lain. Pengecapan masih terjadi, bahkan ketika pensilnya diangkat/diletakan.

Mari coba beberapa contoh yang memperlihatkan fitur-fitur baru tersebut:

import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")
tess = turtle.Turtle()
tess.shape("turtle")
tess.color("blue")

tess.penup()              # Ini baru
size = 20
for i in range(30):
     tess.stamp()         # Tinggalkan sebuah kesan di kanvas
     size = size + 3      # Tingkatkan ukurannya setiap iterasi
     tess.forward(size)   # Gerakan si tess maju
     tess.right(24)       # ... dan belokan

wn.mainloop()

Hehey mari pikir sejenak! Berapa kalikah body dari loop dieksekusi? Berapa banyak gambar turtle yang kita lihat di layar? Semua kecuali satu bentuk yang kita lihat di gambar adalah jejak kaki yang dibuat oleh stamp. Tapi programnya masih hanya punya satu instan turtle -- bisakah kamu menemukan yang mana tess yang asli? (Petunjuk: jika kamu tidak yakin, tulis sebaris kode baru setelah perulangan for untuk mengganti warna tess, atau gunakan pensilnya untuk menggambar garis, atau ganti bentuknya, dll.)

3.7. Glosarium

attribute (atribut)

Beberapa kondisi atau nilai yang dimiliki oleh objek tertentu. Contohnya, tess memiliki warna.

canvas

Permukaan di dalam window/jendela dimana proses penggambaran terjadi.

control flow

Lihat flow of execution pada bab berikutnya.

for loop (perulangan for)

Sebuah pernyataan di Python untuk memudahkan dalam melakukan pengulangan pernyataan yang diletakan di dalam body dari perulangan.

loop body

Sejumlah pernyataan yang bersarang di dalam sebuah loop/perulangan. Dikatakan bersarang karena pernyataannya menjorok / bertakuk kedalam di bawah pernyataan loop.

loop variable

Sebuah variabel yang digunakan sebagai bagian dari for loop. Ia diberikan nilai yang berbeda pada setiap iterasi dari perulangan.

instance (instan)

Objek dengan tipe tertentu, atau kelas (class). tess dan alex merupakan instan yang berbeda dari kelas Turtle.

method (metode)

Fungsi yang dilampirkan ke sebuah objek. Memanggil atau mengaktifkan metode menyebabkan objek merespon dengan cara tertentu, misal, forward adalah metode ketika kita mengatakan tess.forward(100).

invoke (panggil)

Sebuah objek punya metode-metode. Kita menggunakan kata kerja invoke dengan maksud mengaktifkan metodenya. Memanggil metode dilakukan dengan menempatkan titik setelah nama metode, dengan beberapa argumen yang dimungkinkan. Jadi tess.forward() berarti meng-invoke / memanggil / mengaktifkan metode forward.

module

File yang berisi definisi dan pernyataan Python yang ditujukan untuk digunakan dalam program Python. Isi dari module dibuat tersedia untuk program lain dengan menggunakan pernyataan import.

object (objek)

"Sesuatu" yang bisa diacu oleh variabel. Contohnya bisa saja sebuah screen window, atau salah satu turtle yang sudah kita buat.

range

Fungsi built-in di Python untuk membuat serangkaian integer. Umumnya sangat berguna ketika kita perlu membuat for loop yang dieksekusi dalam jumlah tertentu.

terminating condition

Kondisi yang ketika terjadi akan menyebabkan perulangan berhenti mengulang isi body. Pada for loop yang kita lihat di bab ini, terminating condition terjadi ketika tidak ada lagi elemen untuk diberikan nilainya ke loop variabel.

3.8. Latihan

  1. Tulis sebuah program yang mencetak Kita suka Python turtle! sebanyak 1000 kali.
  2. Berikan contoh tiga atribut yang dimiliki obek ponsel mu. Berikan juga contoh tiga metode dari objek ponsel mu.
  3. Tulis program yang menggunakan for loop untuk mencetak
    Bulan pertama dari tahun adalah Januari
    Bulan kedua dari tahun adalah Februari
    dst ....
  4. Anggap turtle kita si tess mengarah ke 0 -- menghadap ke timur. Kita mengeksekusi pernyataan tess.left(3645). Apa yang dilakukan tess, dan kemana akhirnya ia mengarah?
  5. Asumsikan kamu telah memberikan nilai xs = [12, 10, 32, 3, 66, 17, 42, 99, 20]
    1. Tulis sebuah perulangan yang mencetak setiap bilangan pada baris baru.
    2. Tulis perulangan yang mencetak setiap bilangan dan kuadratnya pada baris baru.
    3. Tulis perulangan yang menjumlahkan semua bilangan dari list itu ke variabel bernama total. Kamu harus mengatur nilai total agar diawal nilainya 0, dan mencetak nilai dari total setelah loop selesai.
    4. Cetak produk dari bilangan pada daftar. (Produk artinya semua dikalikan bersama-sama).
  6. Gunakan for loop agar turtle menggambar poligon sama sisi (sama sisi artinya semua sisi punya panjang yang sama, semua sudutnya sama):
    • Sebuah segitiga sama sisi
    • Sebuah kotak
    • Sebuah heksagonal (enam sisi)
    • Sebuah oktagonal (delapan sisi)
  7. Bajak laut mabuk membuat belokan acak dan mengambil 100 langkah maju, membuat belokan acak lagi, maju lagi 100 langkah, dan belok lagi banyak kali, dll. Seorang siswal IPS mencatat sudut dari setiap belokan sebelum ia maju lagi 100 langkah. Data dari eksperimennya adalah [160, -43, 270, -97, -43, 200, -940, 17, -86]. (Sudut positif berarti berlawanan arah jarum jam.) Gunakan turtle untuk menggambarkan alur yang diambil oleh teman kita si bajak laut mabuk.
  8. Kembangkan program diatas agar juga bisa memberi tahu kita kemanakah ia menghadap setelah terhuyung kesana kemari.(Asumsikan ia memulai dengan menghadap ke 0).
  9. Jika kamu akan menggambar sebuah polygon sama sisi yang sisinya berjumlah 18, sudut berapakah yang kamu perlukan untuk membelokan si turtle pada setiap sudut?
  10. Pada interactive prompt, tebak apa yang dilakukan setiap baris berikut, lalu catat apa yang terjadi. Nilai dirimu sendiri, berikan dirimu satu poin untuk setiap tebakan mu yang benar:
    >>> import turtle
    >>> wn = turtle.Screen()
    >>> tess = turtle.Turtle()
    >>> tess.right(90)
    >>> tess.left(3600)
    >>> tess.right(-90)
    >>> tess.speed(10)
    >>> tess.left(3600)
    >>> tess.speed(0)
    >>> tess.left(3645)
    >>> tess.forward(-100)
  11. Buat program untuk menggambar bentuk seperti ini:

    Petunjuk:
    - Coba ini pada selembar kertas, gerakan dan belokan ponsel mu seperti layaknya turtle. Amati berapa banyak putaran penuh yang dilakukan ponsel mu sebelum kamu menyelesaikan bintangnya. Karena setiap putaran penuh adalah 360 derajat, kamu bisa mengetahui jumlah derajat total ponsel mu berputar. Jika kamu membaginya dengan 5, karena pada bintang terdapat lima titik, kamu akan tahu berapa derajat yang harus diambil untuk membelokan si turtle pada setiap titik.
    - Kamu bisa menyembunyikan turtle dibalik jubah tak terlihatnya jika kamu tidak ingin ia terlihat. Ia akan tetap menggambar garisnya jika pensilnya digunakan. Metodenya dipanggil dengan tess.hideturtle() . Untuk membuat turtle terlihat lagi, gunakan tess.showturtle() .
  12. Tulis sebuah program untuk menggambar wajah jam yang terlihat seperti ini:
  13. Buat seekor turtle, dan berikan ke sebuah variabel. Ketika kamu menanyakan apa tipenya menggunakan fungsi type, apa yang kamu dapat?
  14. Apa kata benda kolektif untuk turtle? (Petunjuk: mereka tidak datang dalam kawanan.)
  15. Apa kata benda kolektif untuk python? Apakah python itu ular berbisa? Apakah python beracun?

5.392
Daftar Artikel Terkait
Image

Aditya Suranata

Aditya suka menulis, bukan hanya sekedar hobi, menulis menjadi medianya untuk mencurahkan pikiran dan perasaan. Di TutorKeren.com kebanyakan menyumbang tulisan sesuai dengan minat dan keahliannya yaitu pada kategori pemrograman dan elektronika. Selain itu juga gemar menulis mengenai hal-hal umum, seperti ilmu alam, sosial dan beberapa pengalamannya yang mungkin bisa berguna untuk orang lain.

Artikel Menarik Lainnya
Mari Gabung

Halo Emo 51 , Ada yang ingin disampaikan? Jangan sungkan untuk gabung diskusi ini. Silahkan Login dulu atau Daftar baru.