0% menganggap dokumen ini bermanfaat (0 suara)
556 tayangan

Modul Scratch 7

Bab 7 membahas pengulangan lanjut di Scratch meliputi berbagai jenis blok pengulangan seperti ulangi, ulangi sampai, dan selamanya/jika. Bab ini juga menjelaskan penggunaan perintah berhenti, variabel counter, pengulangan bersarang, dan rekursi dalam pengprogramman Scratch.

Diunggah oleh

Ahmad Kamal
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
556 tayangan

Modul Scratch 7

Bab 7 membahas pengulangan lanjut di Scratch meliputi berbagai jenis blok pengulangan seperti ulangi, ulangi sampai, dan selamanya/jika. Bab ini juga menjelaskan penggunaan perintah berhenti, variabel counter, pengulangan bersarang, dan rekursi dalam pengprogramman Scratch.

Diunggah oleh

Ahmad Kamal
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 15

BAB 7

PENGULANGAN LANJUT

1. Tujuan
1. Membuat struktur pengulangan untuk mengeksekusi beberapa pernyataan secara
berulang
2. Memvalidasi masukan dari pengguna
3. Menerapkan pengulangan dengan kendali variabel (counter-contolled loops) dan
kejadian (event-controlled loops)
4. Membuat rekursi

2. ISI
7.1. Blok-Blok pengulangan di Scratch
7.2. Perintah Berhenti
7.3. Counter
7.4. Peninjauan kembali pengulangan bersarang
7.5. Rekursi : Prosedur yang memanggil dirinya sendiri

7.1 Blok-Blok pengulangan di Scratch


Seperti yang telah anda pelajari pada Bab 2, blok pengulangan memungkinkan
seorang pemrogram untuk mengulangi eksekusi perintah atau kumpulan perintah di dalam
suatu program. Scratch mendukung 3 blok seperti yuang ditampilkan pada gambar 7.1

Kedua blok Ulangi dan Selamanya, telah anda gunakan pada banyak keperluan. Pada
bab ini, blok pengulangan ketiga pada gambar 7.1. akan dibahas lebih detail berikut
penggunaannya pada istilah teknis yang berkaitan dengan pengulangan secara umum.
Tiap repetisi di dalam pengulangan disebut dengan iterasi, dan kata hitung sering
digunakan untuk mengidentifikasi jumlah repetisi suatu pengulangan. Blok ulangi merupakan
pengulangan dengan kendali variabel karena blok perintah tersebut mengulang-ulang
perintah sejumlah angka yang ditentukan. Umumnya pengulangan ini digunakan jika seorang
pemrogram mengetahui jumlah pengulangan yang ingin dieksekusi.
Blok ulangi sampai (repeat until)
Misal anda sedang membuat suatu program permainan yang berisi pertanyaan
matematika saderhana. Jika jawaban pemain salah, maka permainan akan memberikan
kesempatan lagi kepada pemain. Dengan kata lain, permainan tersebut meminta pengguna
menjawab pertanyaan yang sama hingga jawaban benar. Penggunaan blok ulangi tidak tepat
dalam kasus ini karena baik pemrogram maupun permainan tidak mengetahui hingga kapan
harus mengulangi pertanyaan yang sama. Sehingga blok ulangi sampai lebih cocok digunakan.
Struktur blok perintah yang dapat digunakan dalam kasus ini terlihat pada Gambar 7.2

Blok ini berisi pernyataan Boolean yang nilainya diuji pada awal pengulangan Jika
pernyataan tersebut salah, maka perintah di dalam pengulangan akan dieksekusi. Ketika
perintah terakhir di dalam pengulangan dieksekusi, pengulangan tersebut akan dijalankan
kembali dan pernyataan tersebut akan diuji kembali. Siklus ini akan berlangsung hingga
pernyataan pengujian bernilai benar.
Perhatikan bahwa kondisi pengujian jika telah bernilai benar sebelum pengulangan
berjalan, perintah di dalam blok pengulangan tidak akan dieksekusi. Selain itu, blok perintah
ulangi sampai tidak akan berhenti jika sebuah perintah di dalam pengulangan tidak
memberikan perintah berhenti.
Gambar 7.3 memperlihatkan contoh praktis penggunaan blok perintah ulangi sampai.
Pada contoh ini, terdapat 2 sprite yakni Player dan Guard. Jika player berjarak 100 blo dari
guard, maka guard akan mendekati ke arah horizontal dan memantul jika terkena dinding.
Jika jarak kedua sprite kurang dari 100, maka blok pengulangan ini akan berhenti.
Blok Selamanya jika
Blok Selamanya adalah pengulangan tak terhingga yang tak terkondisi karena tidak
memiliki kondisi pengujian yang mengendalikan eksekusi perintah di dalamnya. Anda dapat
secara mudah mengganti keadaan tersebut dengan memberikan blok perintah jika(if)
didalam blok selamanya agar pengulangan tersebut terkondisi seperti yang terlihat pada
gambar 7.4. Kondisi pengujian blok jika mengecek diawal iterasi dan perintah-perintahnya
hanya dieksekusi jika kondisi pengujian bernilai benar.

Blok selamanya/jika yang telah dikombinasikan untuk mengontrol gerakan dengan keyboard
terlihat pada Gambar 7.5
Ketika icon bendera hijau ditekan, keempat tanda panah keyboard diawasi dalam 4
pengulangan tak hingga yang terpisah. Ketika salah satu dari tanda ditekan, pengulangan yang
terkait akan melakukan perubahan koordinat x atau y dari sprite.

7.2. Perintah Berhenti


Bagaimana cara Scratch mengakhiri perintah pengulangan maupun skrip ? pemrogram
dapat menggunakan perintah berhenti (dari palet kontrol) untuk mengkhiri skrip yang sedang
aktif. Pilihan menu drop-down menyediakan 3 opsi seperti Gambar 7.6

Opsi pertama akan menghentikan skripyang memanggilnya. Opsi kedua di sisi lain akan
menghentikan seluruh skrip dari aplikasi. Opsi ketiga memungkinkan sebuah sprite atau stage
mengakhiri semua skrip kecuali skrip yang memanggil perintah berhenti. Perintah ini
dibentuk seperti tumpukan blok sehingga seorang dapat menambahkan blok berintah
dibawah blok tersebut untuk dieksekusi setelah menunda eksekusi skrip dari sprite lain.
Pada gambar 7.7 kedua gambar bola bergerak di panggung dan mengejar sang penyihir. Lalu
si pemain dapat menggerakkan sprite sang penyihir dengan keyboard dan mencoba
menghindari dua bola tersebut. Jika bola merah menyentuh pemain, maka permainan
berhenti. Jika bola hujai menyentuh pemain, maka bola tersebut berhenti mengejar, namun
bola merah akan mulai bergerak lebih cepat.
Skrip untuk menggerakkan penyihir hampir mirip dengan skrip yang ditampilkan pada gambar
7.5 sedangkan pada 7.8 terlihat 2 skrip untuk kedua bola.
Mengakhiri sebuah pengulangan komputasional
Contoh lain yang dapat diselesaikan dengan skrip Scratch adalah pencarian bilangan
pangkat 2 pertama yang lebih besar dari 1000. Saat ditemukan angka yang dibutuhkan, kita
ingin program tersebut mengatakan jawabannya dan menghentikan prosedur. Gambar 7.9
memperlihatkan 2 cara penyelesaian.
Prosedur sisi kiri dari gambar 7.9 menginisialisasikan variabel result degan nilai 2. Skrip
tersebut akan mengecek nilai result pada tiap iterasi. Jika result bernilai lebih besar dari 1000,
maka prosedur akan memanggil blok perintah hentikan skrip ini untuk mengakhiri eksekusi
skrip dan kembali ke pemanggil.
Prosedur sisi kanan dari gambar 7.9 memperlihatkan cara penggunaan blok perintah
ulangi sampai yang berulang terus-menerus hingga result bernilai lebih besar dari 1000.
Seperti pada prosedur sisi kiri jika result telah bernilai lebih dari 1000 maka maka
pengulangan akan dihentikan secara otomatis dan prosedur akan dikembalikan ke pemanggil.

Memvalidasi Masukan dari Pengguna


Ketika menulis suatu aplikasi yang membaca masukan dari pengguna, seorang
pemrogram perlu mengecek masukan dari pengguna valid. Pengecekan masukan ini
dilakukan sebelum program dimulai. Untuk menyelesaikan pekerjaan ini, struktur
pengulangan dapat digunakan. Jika masukan dari pengguna tidak valid, maka sebuah
pengulangan untuk menampilkan pesan kesalahan dan meminta pengguna memasukkan
kembali input yang akan dieksekusi.
Perhatikan sebuah permainan yang memiliki 2 tingkat kesulitan, dan anda
memperbolehkan sang pemain untuk memilih tingkat kesulitan mana yang dipilih. Masukan
yang valid adalah angka 1 dan 2. Jika pemain memasukkan angka selain 1 dan 2 maka program
akan menawarkan kembali kepada pemain untuk memasukkan pilihannya dengan benar.
Perhatikan gambat 7.10

Prosedur GetLevel meminta pemain untuk memasukkan pilihan dan mengecek jawaban
didalam sebuah pengulangan tak hingga. Jika pemain memasukkan pilihan yang tidak valid
maka pengulangan akan tetap terjadi hingga pemain memasukkan angka yang valid. Jika input
yang diterima telah valid maka prosedur akan memanggil blok berhenti skrip ini untuk
mengakhiri pengulangan dan mengakhiri prosedur. Setelah itu skrip utama akan menerima
kembalian dari Prosedur getLevel dan melanjutkan eksekusi blok perintah katakan. Gambar
7.11 memperlihatkan bagaimana menyelesaikan pekerjaan yang sama menggunakan blok
perintah ulangi sampai.

Prosedur pada Gambar 7.11 memint pemain untuk memasukkan pilihan dan menunggu
jawabannya. Seperti halnya blok perintah berhenti, jika pemain memasukkan inputan selain
1 dan 2 maka pengulangan akan tetap terjadi hingga pemain menginputkan nilai 1 atau 2.

7.3. Counter
Pada kasus tertentu, anda harus menyimak jumlah iterasi dari pengulangan yang
sedang berlangsung. Anda dapat menangani masalah ini dengan menggunakan sebuah
variabel (biasanya disebut dengan counter) yang menghitung jumlah iterasi yang telah
berlangsung.
Mengecek Sebuah Kata Sandi (Password)
Program pada gambar 7.12 meminta pengguna untuk memasukkan sebua kata sandi
untuk membuka suatu laptop. Sprite laptop mempunyai 2 kostum, yakni gambar laptop on
dan gambar laptop off. Pengguna tidak dapat mengakses laptop jika telah salah memasukkan
kata sandi sebanyak 3 kali.
Ketika bendera hijau diklik, sprite laptop akan berganti menjadi kostum off, dan memanggil
prosedur GetPassword untuk melakukan autentikasi pengguna. Prosedur ini diharapkan
mengembalikan hasil pengecekan kata sandi ke skrip utama menggunakan variabel flag
gotPass. Jika gotPass bernilai 1, maka pengguna telah tepat memasukkan kata sandi dan
pesan “Akses Diberikan” akan ditampilkan. Sebaliknya, skrip akan menampilkan pesan “Akses
Ditolak”.
Menghitung Sejumlah Bilangan
Dalam pemrograman, nilai counter dapat bernilai 1. Skirp pada Gambar 7.13 bagian
(1), sebagai contoh, mempunyai perhitungan sprite dari 5 sampai 55 dengan nilai counter 5.
Kemudian skrip bagian (2) menyebabkan sprite menghitung mundur dari 99 menuju 0 dengan
nilai counter-11 (99,88,77,...,11,0)

Untuk melihat teknik perhitungan ini, mari perhatikan sebuah kubus dimana kita ingin
mencari hasil dari penjumlahan seluruh bilangan genap dari 2 sampai 20. Sehingga kita
menginginkan deret 2+4+6+8+...+20. Skrip di Gambar 7.14 memberikan penyelesaian atas
permasalahan ini.

Skrip ini dimulai dengan menginisialisasi variabel sum = 0, serta count = 2, lalu masuk ke
pengulangan berkondisi yang diulangi hingga count bernilai lebih dari 20. Pada tiap iterasi
nilai count ditambahkan ke sum terkini dan count ditambah 2 untuk mendapatkan bilangan
genap selanjutnya yang digunakan pada iterasi berikutnya.
7.4. Peninjauan Kembali Pengulangan Bersarang

Kembali pada “Kotak Bersarang” pada subbab 2.3, kita menggunakan pengulangan
bersarang untuk menggambar kotak yang diputar. Satu pengulangan bertanggung jawab pada
penggambaran kotak sedangkan satu pengulangan lain mengendalikan jumlah rotasinya.
Dalam sesi ini, kita akan mempelajari tentang cara penggunaan konsep counter dalam
pengulangan bersarang untuk membuat iterasi dua dimensi. Teknik ini merupakan bagian
penting dari program dan anda dapat menggunakannya untuk menyelesaikan berbagai
permasalahan pemrograman.
Dalam pengaturan stage, kita mulai dengan asumsi ada restoran lokal yang
menawarkan 4 jenis pizza (P1, P2, P3, dan P4) dan tiga jenis salad (S1, S2, dan S3). Jika anda
makan disana maka terdapat 12 kemungkinan kombinasi untuk memilihnya. Pemilik restoran
ingin mencetak menu yang berisi daftar kombinasi pizza dan salad dengan gabungan harga
dan kalorinya. Skrip pada gambar 7.15 merupakan penerapan pengulangan bersarang yang
digunakan untuk menghasilkan daftar semua kombinasi yang mungkin (Anda dapat
menambahkan perhitungan harga dan kalori di dalamnya sebagai latihan anda)
7.5. Rekursif Prosedur yang Memanggil Dirinya Sendiri

Struktur pengulangan telah dikenalkan sebelumnya dengan memungkinkan kita untuk


mengulang sebuah atau beberapa perintah melalui iterasi. Salah satu teknik pengulangan
yang lain adalah rekursi rekursi memungkinkan sebuah prosedur untuk memanggil dirinya
secara langsung. Hal ini menanggulangi teknik pemanggilan yang tidak langsung (melalui
prosedur lain). Misalnya terdapat tiga prosedur (A,B, dan C) lalu A memanggil B, B memanggil
C, dan C memanggil A. Rekursi juga dapat menyederhanakan solusi dari berbagai
permasalahan dalam ilmu komputer. Contoh sederhana rekursi ditampilkan dalam Gambar
7.17

Prosedur TikTok mengeksekusi dua perintah katakan(say) ( pertama katakan “Tik” dan kedua
katakan “Tok” ) kemudian memanggil dirinya kembali. Pemanggilan kedua akan melakukan
hal yang sama dan sprite akan kembali berkata “TikTok” selamanya jika tidak ada aksi lain
untuk menghentikannya. Tentu saja, satu-satunya cara untuk menghentikannya adalah
melakukan klik pada ikon stop yang berwarna merah. Kemampuan untuk memanggil
prosedur itu sendiri memungkinkan kita untuk mengulang dua perintah katakan selamanya
tanpa menggunakan blok pengulangan. Bentuk dari rekursi yang digunakan dalam contoh ini
disebut rekursi ekor karena pemanggilan dirinya sendiri (rekursi) berada di bagian akhir dari
prosedur.
Oleh karena rekursi bukan merupakan ide yang bagus secara umum, anda harus
mengendalikan ekseskusi dari prosedur rekursi dengan sebuah kondisi. Sebagai contoh
prosedur dapat berisi sebuah blok Jika yang menentukan pemanggilan rekursif dilakukan.
Gambar 7.18 menampilkan prosedur rekursi berhitung mundur yang dimulai dari suatu angka
(ditentukan oleh parameter jumlah) ke 0.
Kita akan mempelajari cara kerja prosedur HitungMundur ketika dipanggil dengan
argumen tiga. Ketika prosedur dimulai, perintah katakan menampilkan angka 3, kemudian
memerikasa apakah variabel jumlah lebih besar dari 0. Oleh karena variabel jumlah (3) lebih
dari 0, prosedur mengurangi variabel jumlah dengan angka 1 sehingga memanggil prosedur
HitangMundur kembali dengan argument dua.

Dalam panggilan kedua, prosedur menampilkan angka 2. Oleh karena 2 lebih besar dari 0,
prosedur memanggi dirinya sendiri satu kali lagi dengan argumen 1. Hal ini berlanjut sampai
pemanggilan HitungMundur (0) dilakukan. Setelah sprite berkata angka 0, prosedur kembali
memeriksa apakah variabel jumlah lebih dari 0. Oleh karena ekspresi di blok Jika
menghasilkan nilai salah/false, tidak ada lagi pemanggilan rekursi yang dilakukan. Penjelasan
lebih lanjut dapat anda lihat pada Gambar 7.18.
Sekarang kita telah mempelajari dasar rekursi ekor. Kita dapat menerapkan rekursi
tersebut dalam sebuah aplikasi menarik. Kita dapat melihat contoh penerapan prosedur
Blade dalam sebuah aplikasi (seperti yang terihat pada Gambar 7.19).
Kita menganggap sprite yang mengeksekusi prosedur ini berada di suatu tempat dalam stage
dengan menghadap ke arah 90 derajat. Setelah penggambaran sebuah segitiga sama sama
sisi, sprite bergerak 12 langkah ke depan kemudian berputar 10 derajat berlawanan arah
jarum jam. Posedur ini kemudian memeriksa arah baru dari sprite. Jika sprite tidak
menghadap ke arah 90 derajat maka prosedur memanggil dirinya kembali untuk menggambar
segitiga sama sisi yang selanjutnya secara berurutan. Jika tidak, pemanggilan rekursi tidak
akan dilakukan dan prosedur akan berhenti setelah penggambaran mata gergaji yang
ditampilkan pada gambar 7.19.
RANGKUMAN
Dalam bab ini, kita telah mempelajari berbagai cara untuk mengulang perintah dalam
Scratch. Pertama, kita mempelajari beberapa blok pengulangan dan menjelaskan kondisi
teknis yang terkait dengannya. Kemudian kita mempelajari pengulangan terbatas dan tak
terbatas serta perbedaan antara pengulangan berdasarkan counter atau kondisi. Kita juga
mempelajari tentang blok perintah ulangi sampai dan struktur selamanya jika dan
menggunakannya dalam beberapa contoh. Selain itu, kita juga belajar tentang perintah stop
dalam scratch dan cara menggunakannya untuk menghentikan pengulangan dan prosedur-
prosedur yang tak terbatas. Dari sana, kita melanjutkan pembahasan tentang penggunaan
pengulangan untuk melakukan validasi data dari masukan pengguna dan mempelajari cara
penggunaan counter untuk melacak jumlah iterasi yang telah dilakukan dari sebuah
pengulangan bersarang dalam membuat iterasi dua dimensi atau lebih. Terakhir kita
mempelajari rekursi-prosedur yang memanggil dirinya sendiri sebaga jalan lain dalam
melakukan pengulangan.

Anda mungkin juga menyukai