Kamis, 28 Mei 2026

Belajar Pemrograman Scratch. Bab 6

 6
Mengambil Keputusan

Bab ini akan mengajarkan Anda alat Scratch yang Anda butuhkan untuk menulis program yang dapat membandingkan nilai, mengevaluasi ekspresi logis, dan mengambil keputusan berdasarkan hasilnya. Kita juga akan membahas beberapa contoh aplikasi yang berguna. Berikut adalah hal-hal yang akan Anda pelajari:

• Teknik pemecahan masalah dasar 
• Cara menggunakan blok if dan if/else untuk memilih di antara tindakan alternatif
• Cara membangun ekspresi logis untuk mengevaluasi kondisi yang diberikan
• Alur kontrol dalam pernyataan percabangan

Program yang telah kita tulis sejauh ini mengikuti model eksekusi yang sederhana.

Program dimulai dengan instruksi pertama, mengeksekusinya, melanjutkan ke instruksi berikutnya, dan seterusnya hingga mencapai akhir program. Blok perintah program ini dieksekusi secara berurutan, tanpa melewatkan atau melompat.

Namun, dalam banyak situasi pemrograman, Anda mungkin ingin mengubah alur eksekusi program yang berurutan ini. Jika Anda menulis aplikasi untuk membimbing anak-anak dalam aritmatika dasar, Anda ingin mengeksekusi blok tertentu untuk memberi penghargaan pada jawaban yang benar dan serangkaian blok yang sama sekali berbeda untuk jawaban yang salah (untuk mengungkapkan jawaban yang benar atau menawarkan kesempatan lain, misalnya).

Skrip Anda dapat memutuskan apa yang harus dilakukan selanjutnya dengan membandingkan input siswa dengan jawaban yang benar. Ini adalah dasar dari semua tugas pengambilan keputusan. Dalam bab ini, kita akan menjelajahi perintah pengambilan keputusan yang tersedia di Scratch dan menulis beberapa program yang menggunakan perintah ini untuk menguji input dan melakukan berbagai tindakan.

Pertama, saya akan memperkenalkan Anda pada operator perbandingan Scratch dan menunjukkan bagaimana Anda dapat menggunakannya untuk membandingkan angka, huruf, dan string. Kemudian, saya akan memperkenalkan blok if dan if/else dan menjelaskan peran kuncinya dalam pengambilan keputusan. Anda juga akan mempelajari cara menguji beberapa kondisi menggunakan blok if dan if/else bersarang dan menulis program berbasis menu untuk menjalankan blok-blok ini. Setelah itu, saya akan memperkenalkan operator logika sebagai cara alternatif untuk menguji beberapa kondisi. Di bagian terakhir, kita akan menulis beberapa program menarik berdasarkan semua konsep yang telah Anda pelajari sejauh ini.

Operator Perbandingan
Anda membuat keputusan setiap hari, dan setiap keputusan biasanya mengarah pada tindakan tertentu. Misalnya, Anda mungkin berpikir, “Jika mobil itu kurang dari $2.000, saya akan membelinya.” Kemudian Anda menanyakan harga mobil tersebut dan memutuskan apakah Anda ingin membelinya atau tidak.

Anda juga dapat membuat keputusan di Scratch. Dengan menggunakan operator perbandingan,

Anda dapat membandingkan nilai dua variabel atau ekspresi untuk menentukan apakah satu lebih besar dari, kurang dari, atau sama dengan yang lain. Operator perbandingan juga disebut operator relasional karena menguji hubungan antara dua nilai. Tiga operator relasional yang didukung di Scratch ditunjukkan pada Tabel 6-1.


Tabel 6-1: Operator Relasional di Scratch

Boolean di Dunia Nyata

Kata Boolean digunakan untuk menghormati George Boole, seorang matematikawan Inggris abad ke-19 yang menciptakan sistem logika berdasarkan hanya dua nilai: 1 dan 0 (atau Benar dan Salah). Aljabar Boolean akhirnya menjadi dasar ilmu komputer modern.

Dalam kehidupan nyata, kita menggunakan ekspresi Boolean sepanjang waktu untuk membuat keputusan. Komputer juga menggunakannya untuk menentukan cabang program mana yang harus diikuti. Lengan robot dapat diprogram untuk memeriksa bagian-bagian yang bergerak pada jalur perakitan dan memindahkan setiap bagian ke Bin 1 jika goodQuality = benar, atau Bin 2 jika goodQuality = salah. Sistem keamanan rumah biasanya diprogram untuk membunyikan alarm jika kode yang salah dimasukkan (correctCode = salah) atau menonaktifkannya ketika kita memasukkan kode yang benar (correctCode = benar). Server jarak jauh dapat memberikan atau menolak akses ketika Anda menggesek kartu kredit Anda di toko berdasarkan apakah kartu Anda valid (benar) atau tidak valid (salah). Komputer di kendaraan Anda akan secara otomatis mengaktifkan airbag ketika memutuskan bahwa telah terjadi tabrakan (tabrakan = benar). Ponsel Anda mungkin menampilkan ikon peringatan ketika baterai lemah (batteryLow = benar) dan menghilangkan ikon tersebut ketika daya baterai mencukupi (batteryLow = salah).

Ini hanyalah beberapa contoh bagaimana komputer menyebabkan tindakan yang berbeda dilakukan dengan memeriksa hasil kondisi Boolean.

Perhatikan bahwa blok-blok dalam Tabel 6-1 semuanya berbentuk heksagonal. Seperti yang mungkin Anda ingat dari Bab 5, itu berarti hasil evaluasi salah satu blok ini adalah nilai Boolean, yang bisa berupa benar atau salah. Karena alasan ini, ekspresi ini juga disebut ekspresi Boolean. Misalnya, ekspresi price < 2000 menguji apakah nilai variabel price kurang dari 2.000. Jika price kurang dari 2.000, blok tersebut mengembalikan (atau dievaluasi menjadi) benar; jika tidak, ia mengembalikan salah. Anda dapat menggunakan ekspresi ini untuk membangun kondisi keputusan Anda dalam bentuk, “Jika (harga < 2000), maka beli mobil.” Sebelum kita melihat blok if, yang memungkinkan Anda untuk menerapkan pengujian seperti itu, mari kita bahas contoh sederhana yang menggambarkan bagaimana ekspresi Boolean dievaluasi di Scratch.

Mengevaluasi Ekspresi Boolean
Katakanlah kita menetapkan dua variabel, x dan y, sebagai berikut: x = 5, dan y = 10. Tabel 6-2 menunjukkan beberapa contoh yang menggunakan blok relasional Scratch.

Contoh-contoh ini mengungkapkan beberapa poin penting tentang operator relasional. Pertama, kita dapat menggunakannya untuk membandingkan variabel individual (seperti x, y) dan ekspresi lengkap (seperti 2 * x dan x + 6). Kedua, hasil perbandingan selalu benar atau salah (yaitu, nilai Boolean). Ketiga, blok x = y tidak berarti “Tetapkan x sama dengan y.” Sebaliknya, ia bertanya, “Apakah x sama dengan y?” Jadi ketika pernyataan set z to (x = y) dieksekusi, nilai x tetap 5.


Tabel 6-2: Contoh Penggunaan Blok Relasional

Membandingkan Huruf dan String
Mari kita pikirkan sebuah permainan di mana pemain mencoba menebak kode rahasia satu huruf antara A dan Z. Permainan membaca tebakan pemain, membandingkannya dengan kode rahasia, dan menginstruksikan pemain untuk memperbaiki tebakannya berdasarkan urutan abjad huruf. Misalnya, jika huruf rahasianya adalah G, dan pemain memasukkan B, permainan harus mengatakan sesuatu seperti "Setelah B" untuk memberi tahu pemain bahwa kode rahasia berada setelah huruf B dalam abjad. Bagaimana Anda dapat membandingkan huruf yang benar dengan masukan pemain untuk memutuskan pesan apa yang akan ditampilkan?

Untungnya, operator relasional di Scratch juga dapat membandingkan huruf. Seperti yang diilustrasikan pada Gambar 6-1, Scratch membandingkan huruf berdasarkan urutan abjadnya. Karena huruf A berada sebelum huruf B dalam abjad, ekspresi A < B mengembalikan nilai benar. Namun, penting untuk dicatat bahwa perbandingan ini tidak peka terhadap huruf besar/kecil; huruf kapital A sama dengan huruf kecil a. Dengan demikian, ekspresi A = a juga menghasilkan nilai benar.


Gambar 6-1: Menggunakan operator relasional untuk membandingkan huruf

Dengan mengetahui informasi ini, Anda dapat menguji tebakan pemain menggunakan serangkaian kondisi berikut:

JIKA (jawaban = kode rahasia), maka katakan Benar
JIKA (jawaban > kode rahasia), maka katakan Sebelum <jawaban>
JIKA (jawaban < kode rahasia), maka katakan Setelah <jawaban>

Kondisi adalah pernyataan dalam bentuk, “Jika kondisi benar, maka lakukan tindakan ini.” Di bagian selanjutnya, saya akan mengajari Anda cara menerapkan kondisi di Scratch, tetapi mari kita jelajahi operator relasional lebih lanjut dengan permainan tebak kode kita terlebih dahulu.

Bagaimana jika kode rahasia berisi lebih dari satu huruf? Misalnya, pemain mungkin perlu menebak nama hewan. Bisakah Anda tetap menggunakan operator relasional Scratch untuk melakukan perbandingan? Untungnya, jawaban singkatnya adalah ya:

Anda dapat menggunakan operator relasional Scratch untuk membandingkan string. Tetapi bagaimana Scratch memproses perbandingan seperti gajah > tikus? Contoh pada Gambar 6-2 mengilustrasikan hasil perbandingan string.


Gambar 6-2: Menggunakan operator relasional untuk membandingkan u string yang identik, v string yang hanya berbeda dalam huruf besar/kecil, w satu string dengan string lain yang berisi spasi tambahan, dan x string yang bervariasi sesuai dengan urutan kamus hurufnya

Dengan mengetahui hal ini, Anda seharusnya tidak terkejut ketika ekspresi elephant > mouse dievaluasi menjadi false, meskipun gajah sebenarnya jauh lebih besar daripada tikus. Menurut aturan perbandingan string Scratch, string "elephant" lebih kecil daripada string "mouse" karena huruf e (huruf pertama dalam elephant) berada sebelum huruf m (huruf pertama dalam mouse) dalam alfabet. Membandingkan dan mengurutkan string berdasarkan urutan alfabet karakternya digunakan dalam banyak situasi kehidupan nyata, termasuk mengurutkan daftar direktori, buku di rak buku, kata-kata dalam kamus, dan sebagainya. Kata elephant berada sebelum kata mouse dalam kamus, dan perbandingan string di Scratch memberikan jawaban berdasarkan urutan ini. Sekarang setelah Anda memahami apa itu operator relasional dan bagaimana Scratch menggunakan operator ini untuk membandingkan angka dan string, saatnya untuk mempelajari tentang blok kondisional.


Struktur Keputusan 
Palet Kontrol Scratch berisi dua blok yang memungkinkan Anda untuk membuat keputusan dan mengontrol tindakan dalam program Anda: blok if dan blok if/else. Dengan menggunakan blok-blok ini, Anda dapat mengajukan pertanyaan dan mengambil tindakan berdasarkan jawabannya. Di bagian ini, kita akan membahas kedua blok ini secara detail, berbicara tentang flag, dan belajar menguji beberapa kondisi dengan blok if bersarang. Kemudian saya akan memperkenalkan aplikasi berbasis menu dan menjelaskan bagaimana blok if bersarang dapat membantu implementasinya.

Blok if
Blok if adalah struktur keputusan yang memberi Anda kemampuan untuk menentukan apakah serangkaian perintah harus (atau tidak boleh) dieksekusi berdasarkan hasil kondisi pengujian. Struktur blok if dan diagram alirnya ditunjukkan pada Gambar 6-3.


Gambar 6-3: Struktur blok if

Pada Gambar 6-3, bentuk berlian mewakili blok keputusan yang memberikan jawaban ya/tidak (atau benar/salah) untuk sebuah pertanyaan. Jika kondisi pengujian di header blok if benar, program akan mengeksekusi perintah yang tercantum di dalam badan sebelum melanjutkan ke perintah yang mengikuti blok if (Perintah M pada gambar). Jika kondisi pengujian salah, program akan melewati perintah-perintah tersebut dan langsung menuju Perintah M.

Studi yang cermat terhadap Gambar 6-2 menunjukkan hal berikut:

• Scratch membandingkan string tanpa memperhatikan huruf besar/kecilnya. String “HELLO” dan “hello” dalam v, misalnya, dianggap sama.

• Scratch menghitung spasi dalam perbandingannya. String “HELLO”, yang dimulai dan diakhiri dengan satu spasi, tidak sama dengan string

“HELLO” w.

• Saat membandingkan string “ABC” dan “ABD”, seperti dalam x, Scratch pertama-tama

mempertimbangkan karakter pertama dalam kedua string. Karena karakter tersebut sama (huruf A dalam kasus ini), Scratch memeriksa karakter kedua dalam kedua string. Karena karakter ini juga sama dalam kedua string, Scratch melanjutkan untuk memeriksa karakter ketiga. Karena huruf C lebih kecil dari huruf D (yaitu, C berada sebelum D dalam alfabet), Scratch menganggap string pertama lebih kecil dari string kedua.

Untuk melihat blok if beraksi, buat skrip yang ditunjukkan pada Gambar 6-4 dan jalankan. Skrip tersebut menjalankan loop selamanya yang menggerakkan sprite di sekitar panggung, mengubah warnanya, dan membuatnya memantul dari tepi Panggung.


Gambar 6-4: Skrip ini menyebabkan sprite mengubah warnanya hanya ketika bergerak di bagian kanan Panggung.

Loop selamanya dalam skrip kita berisi blok if yang memeriksa posisi x sprite setelah setiap perintah gerak. Jika posisi x lebih besar dari nol, sprite harus mengubah warnanya. Saat Anda menjalankan skrip ini, Anda akan melihat bahwa sprite mengubah warnanya hanya ketika bergerak di bagian kanan Panggung. Ini karena blok efek perubahan warna sebesar 25 dieksekusi hanya ketika kondisi posisi x > 0 benar.

Menggunakan Variabel sebagai Bendera
Misalnya, Anda sedang mengembangkan game petualangan luar angkasa di mana tujuannya adalah untuk menghancurkan armada kapal perang penyerang. Pemain, yang berperan sebagai kapten, mengendalikan pesawat ruang angkasa dengan tombol panah pada keyboard dan menembakkan rudal dengan menekan spasi. Jika pesawat ruang angkasa pemain terkena tembakan musuh beberapa kali, kapal tersebut kehilangan kemampuan untuk menyerang. Pada titik ini, menekan spasi seharusnya tidak lagi menembakkan rudal, dan kapten harus mengadopsi strategi pertahanan untuk menghindari terkena tembakan lagi. Jelas, ketika spasi ditekan, program Anda perlu memeriksa status sistem serangan pesawat ruang angkasa untuk memutuskan apakah pemain dapat menembak atau tidak. 

Pemeriksaan semacam ini biasanya dilakukan menggunakan flag, yaitu variabel yang Anda gunakan untuk menunjukkan apakah suatu peristiwa yang diminati telah terjadi atau tidak. Anda dapat menggunakan dua nilai apa pun untuk menggambarkan status peristiwa tersebut, tetapi praktik umum adalah menggunakan 0 (atau false) untuk menunjukkan bahwa peristiwa tersebut belum terjadi dan 1 (atau true) untuk menunjukkan bahwa peristiwa tersebut telah terjadi. 

Dalam game penembak ruang angkasa Anda, Anda dapat menggunakan flag bernama canFire untuk menunjukkan status pesawat ruang angkasa. Nilai 1 berarti bahwa pesawat ruang angkasa dapat menembakkan rudal, dan nilai 0 berarti bahwa pesawat tersebut tidak dapat menembakkan rudal. Berdasarkan hal ini, penanganan kejadian spasi Anda mungkin dikodekan seperti yang ditunjukkan pada Gambar 6-5. 

Pada awal permainan, Anda akan menginisialisasi nilai flag canFire menjadi 1 untuk menunjukkan bahwa Pesawat luar angkasa mampu menembakkan rudal. Ketika pesawat luar angkasa terkena tembakan musuh dalam jumlah tertentu, Anda akan mengatur flag canFire menjadi 0 untuk menunjukkan bahwa sistem serangan telah menjadi tidak berfungsi; pada saat itu, menekan spasi tidak akan menembakkan rudal lagi.

Meskipun Anda dapat memberi nama flag Anda sesuka hati, saya sarankan untuk menggunakan nama yang mencerminkan sifat benar/salahnya. Tabel 6-3 menunjukkan beberapa contoh flag yang mungkin Anda gunakan dalam game penembak luar angkasa.


Tabel 6-3: Beberapa Contoh Penggunaan Flag

Sekarang Anda tahu cara menggunakan blok if dan flag, mari kita bahas tentang blok kondisional lain, yang memungkinkan Anda mengeksekusi satu blok kode ketika kondisi tertentu benar dan blok lain jika kondisi tersebut salah.

Blok if/else
Bayangkan Anda sedang membuat game untuk mengajarkan matematika dasar kepada siswa sekolah dasar. Game tersebut menyajikan soal penjumlahan dan kemudian meminta siswa untuk memasukkan jawaban. Siswa harus menerima satu poin untuk jawaban yang benar dan kehilangan satu poin untuk jawaban yang salah. Anda dapat melakukan tugas ini menggunakan dua pernyataan if:

Jika jawabannya benar, tambahkan satu poin ke skor
Jika jawabannya salah, kurangi satu poin dari skor

Anda juga dapat menyederhanakan logika ini—dan membuat kode lebih efisien—dengan menggabungkan kedua pernyataan if menjadi satu pernyataan if/else sebagai berikut:

Jika jawabannya benar
tambahkan satu poin ke skor
Jika tidak
kurangi satu poin dari skor



Kondisi yang ditentukan diuji. Jika kondisinya benar, perintah-perintah di bagian if dari blok tersebut akan dieksekusi. Namun, jika kondisinya salah, perintah-perintah di bawah else akan dieksekusi sebagai gantinya. Program hanya akan mengeksekusi salah satu dari dua kelompok perintah dalam blok if/else. Jalur alternatif melalui program tersebut juga disebut cabang. Struktur blok if/else dan diagram alirnya ditunjukkan pada Gambar 6-6.

Gambar 6-6: Struktur blok if/else

Anda mungkin menggunakan struktur if/else ketika Anda ingin memutuskan di mana akan makan siang. Jika Anda memiliki cukup uang, Anda akan pergi ke restoran mewah; jika tidak, Anda akan memilih makanan yang lebih santai. Sebut saja uang di dompet Anda availableCash. Saat Anda membuka dompet, Anda memeriksa kondisi availableCash > $20. Jika hasilnya benar (Anda memiliki lebih dari $20), Anda akan pergi ke tempat dengan taplak meja putih, dan jika tidak, Anda akan pergi ke tempat makan burger terdekat. 

Salah satu skrip sederhana yang mengilustrasikan penggunaan blok if/else ditunjukkan pada Gambar 6-7. Contoh ini menggunakan operator modulus (mod), yang mengembalikan sisa dari operasi pembagian, untuk menentukan apakah angka yang dimasukkan pengguna adalah genap atau ganjil. (Ingat bahwa angka genap memiliki sisa nol ketika dibagi dua.)


Gambar 6-7: Skrip ini mencari tahu apakah angka yang dimasukkan pengguna adalah genap atau ganjil.

Gambar 6-7 menunjukkan dua contoh output ketika pengguna memasukkan 6 dan 9, masing-masing, sebagai respons terhadap perintah tanya. Dapatkah Anda menjelaskan bagaimana skrip ini bekerja?

Blok if dan if/else bersarang
Jika Anda ingin menguji lebih dari satu kondisi sebelum mengambil tindakan, Anda dapat menyusun beberapa blok if (atau if/else) di dalam satu sama lain untuk melakukan pengujian yang diperlukan. Pertimbangkan misalnya skrip yang ditunjukkan pada Gambar 6-8, yang menentukan apakah seorang siswa harus menerima beasiswa. Untuk memenuhi syarat, siswa harus memiliki: (1) rata-rata nilai (IPK) lebih tinggi dari 3,8 dan (2) nilai di atas 92 persen dalam matematika.


Gambar 6-8: Anda dapat menggunakan blok if/else bersarang untuk menguji beberapa kondisi.

Pertama, ekspresi gpa > 3,8 diuji. Jika ekspresi ini salah, kita tidak perlu memeriksa kondisi lain karena siswa tidak memenuhi kriteria beasiswa. Namun, jika ekspresi gpa > 3,8 benar, kita perlu menguji kondisi kedua. Hal ini dilakukan dengan blok if/else bersarang, yang menguji kondisi mathScore > 92. Jika kondisi kedua ini juga benar, siswa mendapatkan beasiswa. Jika tidak, siswa tidak memenuhi syarat, dan pesan yang sesuai yang menjelaskan alasannya akan ditampilkan.

Program Berbasis Menu
Selanjutnya, kita akan mengeksplorasi penggunaan umum blok if bersarang. Secara khusus, Anda akan mempelajari cara menulis program yang menyajikan pilihan kepada pengguna dan bertindak berdasarkan pilihan pengguna. Saat Anda memulai beberapa program, program tersebut menampilkan daftar (atau menu) opsi yang tersedia dan menunggu Anda untuk membuat pilihan. Terkadang, Anda akan berinteraksi dengan program-program ini dengan memasukkan angka yang sesuai dengan pilihan yang Anda inginkan. Program-program tersebut dapat menggunakan serangkaian blok if/else bersarang untuk menentukan pilihan pengguna dan bertindak sesuai dengan pilihan tersebut. Untuk melihat cara kerja blok if/else bersarang, kita akan membahas sebuah aplikasi, yang ditunjukkan pada Gambar 6-9, yang menghitung luas berbagai bentuk geometris.


Gambar 6-9: Antarmuka pengguna untuk program kalkulator luas 

Antarmuka pengguna untuk aplikasi ini berisi gambar latar belakang Stage, yang menunjukkan opsi yang tersedia (angka 1, 2, atau 3), dan sprite Tutor, yang meminta pengguna untuk memilih, melakukan perhitungan, dan menampilkan hasilnya. Skrip utama, yang ditunjukkan pada Gambar 6-10, dimulai ketika ikon bendera hijau diklik.


Gambar 6-10: Skrip utama sprite Tutor

Setelah meminta pengguna untuk memasukkan pilihan, sprite Tutor menunggu masukan pengguna dan menggunakan tiga blok if/else untuk memprosesnya. Jika pengguna memasukkan pilihan yang valid (yaitu, 1, 2, atau 3), skrip memanggil prosedur yang sesuai untuk menghitung luas bentuk yang ditunjukkan. Jika tidak, skrip memanggil perintah say untuk memberi tahu pengguna bahwa pilihan yang dimasukkan tidak valid. Prosedur untuk menghitung luas ketiga bentuk tersebut ditunjukkan pada Gambar 6-11.


Gambar 6-11: Prosedur untuk program kalkulator luas

Setiap prosedur meminta pengguna untuk memasukkan dimensi untuk bentuk yang sesuai, menghitung luas, dan menampilkan hasilnya. Misalnya, prosedur Persegi Panjang meminta pengguna untuk memasukkan panjang dan lebar persegi panjang dan menyimpan jawabannya dalam variabel panjang dan lebar. Kemudian menghitung luas dengan mengalikan panjang dengan lebar dan menampilkan jawabannya. Dua prosedur lainnya bekerja dengan cara yang serupa.

Operator Logika
Pada bagian sebelumnya, Anda telah mempelajari cara menggunakan blok if dan if/else bersarang untuk menguji beberapa kondisi, tetapi Anda juga dapat melakukannya dengan operator logika. Dengan menggunakan operator logika, Anda dapat menggabungkan dua atau lebih ekspresi relasional untuk menghasilkan satu hasil benar/salah. Misalnya, ekspresi logika (x > 5) dan (x < 10) terdiri dari dua ekspresi logika (x > 5 dan x < 10) yang digabungkan menggunakan operator logika and. Kita dapat menganggap x > 5 dan x < 10 sebagai dua operan dari operator and; Hasil dari operator ini hanya bernilai benar jika kedua operand bernilai benar. Tabel 6-4 mencantumkan tiga operator logika yang tersedia di Scratch beserta penjelasan singkat tentang artinya.


Tabel 6-4: Operator Logika

Setelah Anda melihat gambaran singkat tentang setiap operator, mari kita jelajahi cara kerjanya secara lebih detail, satu per satu.


Operator AND
Operator AND mengambil dua ekspresi sebagai parameter. Jika kedua ekspresi tersebut benar, operator AND mengembalikan nilai true; jika tidak, ia mengembalikan nilai false. Tabel kebenaran untuk operator AND, yang mencantumkan output operator untuk semua kemungkinan kombinasi input, ditunjukkan pada Tabel 6-5.


Tabel 6-5: Tabel Kebenaran untuk Operator AND Sebagai contoh penggunaan operator AND, misalkan kita membuat permainan di mana pemain mendapatkan 200 poin bonus ketika skor mencapai 100 di level pertama. Level permainan dilacak oleh variabel bernama level, dan skor dilacak menggunakan variabel bernama score. Gambar 6-12 menunjukkan bagaimana kondisi ini dapat diuji menggunakan blok if bersarang u atau dengan operator AND v.


Gambar 6-12: Memeriksa beberapa kondisi menggunakan blok if bersarang dan operator AND

Dalam kedua kasus, poin bonus hanya ditambahkan ketika kedua kondisi tersebut benar. Seperti yang Anda lihat, operator AND memberikan cara yang lebih ringkas untuk melakukan pengujian yang sama. Perintah di dalam blok if pada Gambar 6-12 v hanya akan dieksekusi jika level sama dengan 1 dan score sama dengan 100. Jika salah satu kondisi salah, seluruh pengujian dievaluasi menjadi salah, dan blok perubahan score sebesar 200 tidak akan dieksekusi.

Operator or
Operator or juga mengambil dua ekspresi sebagai parameter. Jika salah satu ekspresi benar, operator or mengembalikan true. Operator ini hanya mengembalikan false ketika kedua ekspresi tersebut salah. Tabel kebenaran untuk operator or diberikan pada Tabel 6-6.


Tabel 6-6: Tabel Kebenaran untuk Operator atau

Untuk mendemonstrasikan penggunaan operator atau, mari kita asumsikan bahwa pemain dalam permainan tertentu memiliki waktu terbatas untuk mencapai level berikutnya. Mereka juga memulai dengan sejumlah energi yang akan berkurang seiring mereka melewati level saat ini. Permainan berakhir jika pemain gagal mencapai level berikutnya dalam waktu yang diizinkan atau jika pemain menghabiskan semua energi yang dialokasikan sebelum mencapai level berikutnya. Waktu yang tersisa dilacak oleh variabel bernama timeLeft, dan tingkat energi pemain saat ini dilacak oleh variabel bernama energyLevel. Gambar 6-13 menunjukkan bagaimana kondisi akhir permainan dapat diuji menggunakan blok if/else bersarang u dan operator atau v.


Gambar 6-13: Memeriksa beberapa kondisi menggunakan blok if bersarang dan dengan operator atau.

Perhatikan lagi bahwa operator atau memberikan cara yang lebih ringkas untuk menguji beberapa kondisi. Perintah di dalam blok if pada Gambar 6-13 v akan dieksekusi jika timeLeft atau energyLevel adalah 0. Jika kedua kondisi ini salah, seluruh pengujian dievaluasi menjadi salah, dan flag gameOver tidak akan diatur ke 1.

Operator not
Operator not hanya menerima satu ekspresi sebagai input. Hasil dari operator ini adalah benar jika ekspresi tersebut salah dan salah jika ekspresi tersebut benar. Tabel kebenaran untuk operator ini diberikan pada Tabel 6-7.


Tabel 6-7: Tabel Kebenaran untuk Operator not



Kembali ke permainan hipotetis kita sebelumnya, katakanlah pemain tidak dapat melanjutkan ke level berikutnya jika skornya tidak lebih dari 100 poin. Ini adalah tempat yang tepat untuk menggunakan operator not, seperti yang ditunjukkan pada Gambar 6-14. Anda dapat membaca blok kode ini sebagai, “Jika skor tidak lebih besar dari 100, lakukan perintah di dalam blok if.”


Gambar 6-14: Contoh penggunaan operator not

Pada intinya, jika nilai variabel skor adalah 100 atau lebih rendah, ekspresi uji akan bernilai benar, dan perintah say akan dieksekusi. Perhatikan

bahwa ekspresi not (skor > 100) setara dengan (skor ≤ 100). Menggunakan Operator Logika untuk Memeriksa Rentang Numerik Ketika Anda perlu memvalidasi data yang dimasukkan oleh pengguna atau menyaring input yang buruk, Anda dapat menggunakan operator logika untuk menentukan apakah suatu angka berada di dalam (atau di luar) rentang numerik. Tabel 6-8 menunjukkan beberapa contoh rentang numerik.


Tabel 6-8: Menyatakan Rentang Numerik

Meskipun Scratch tidak memiliki dukungan bawaan untuk operator ≥ (lebih besar dari atau sama dengan) dan ≤ (kurang dari atau sama dengan), Anda dapat menggunakan operator logika untuk mengimplementasikan pengujian ini. Misalnya, katakanlah Anda perlu menguji kondisi x ≥ 10 dalam program Anda. Himpunan penyelesaian untuk ketidaksetaraan ini ditunjukkan pada Gambar 6-15 u. Lingkaran yang terisi pada gambar berarti bahwa angka 10 termasuk dalam himpunan penyelesaian.

Salah satu cara untuk menguji kondisi ini ditunjukkan pada Gambar 6-15 v. Gambar tersebut menunjukkan himpunan penyelesaian untuk x < 10, di mana lingkaran yang tidak terisi berarti bahwa titik yang sesuai tidak ada dalam himpunan penyelesaian. Seperti yang dapat Anda lihat dari gambar, solusi komplementer (yaitu, "x tidak kurang dari 10") setara dengan x ≥ 10. Cara lain untuk melakukan pengujian ketidaksetaraan ditunjukkan pada Gambar 6-15 w. Jelas, jika x ≥ 10, maka x lebih besar dari 10 atau x sama dengan 10.




Gambar 6-15: Dua cara untuk mengimplementasikan ketidaksetaraan x ≥ 10

Contoh yang diberikan dalam Tabel 6-9 menunjukkan cara menggunakan operator relasional dan logis Scratch untuk mengekspresikan ketidaksetaraan yang mengandung operator ≥ dan ≤.


Tabel 6-9: Contoh Pengujian Ketidaksetaraan

Kita telah menjelajahi beberapa konsep Scratch dalam bab ini sejauh ini, termasuk perbandingan, pernyataan bersyarat, dan operator logis. Sekarang, mari kita gunakan pengetahuan itu untuk membuat beberapa aplikasi yang menyenangkan dan bermanfaat.



Membandingkan Bilangan Desimal
Perhatian khusus harus diberikan saat menggunakan operator sama dengan untuk membandingkan bilangan desimal. Karena cara bilangan ini disimpan di dalam komputer, perbandingan terkadang bisa tidak tepat. Perhatikan blok perintah yang ditunjukkan di sini:

Hasil pembagian 1 dengan 3 adalah 0,3333… dengan urutan angka 3 yang berulang selamanya. Karena komputer menggunakan sejumlah ruang tetap untuk menyimpan hasilnya, pecahan 1/3 tidak dapat disimpan secara tepat oleh komputer. Meskipun Scratch memberi tahu Anda bahwa hasil pembagian adalah 0,33 pada u, hasil sebenarnya disimpan secara internal dengan presisi yang jauh lebih tinggi. Oleh karena itu, hasil dari dua perbandingan pertama pada gambar (v dan w) bernilai salah.

Tergantung pada situasi pemrograman Anda, Anda mungkin dapat mencegah jenis kesalahan ini dengan menggunakan salah satu pendekatan berikut:

• Gunakan operator kurang dari (<) dan lebih besar dari (>) sebagai pengganti operator sama dengan (=) jika memungkinkan.

• Gunakan blok pembulatan untuk membulatkan kedua angka yang perlu Anda bandingkan, lalu bandingkan angka yang telah dibulatkan untuk melihat kesamaannya.

• Uji perbedaan absolut antara kedua nilai yang Anda bandingkan. Misalnya, alih-alih menguji apakah x sama dengan y, kita dapat memeriksa apakah perbedaan absolut antara x dan y berada dalam toleransi yang dapat diterima dengan menggunakan blok yang mirip dengan ini:

Tergantung pada keakuratan angka dan metode perhitungan angka tersebut, metode ini mungkin cukup untuk tujuan Anda.

Proyek Scratch

Perintah-perintah baru yang telah Anda pelajari dalam bab ini seharusnya memungkinkan Anda untuk membuat berbagai aplikasi Scratch yang bermanfaat, dan semoga proyek-proyek yang saya sajikan di bagian ini akan memberi Anda beberapa ide untuk proyek Anda sendiri. Saya mendorong Anda untuk mencoba aplikasi-aplikasi ini, memahami cara kerjanya, dan kemudian memikirkan cara untuk meningkatkannya.


Tebak Koordinat Saya
Di bagian ini, kita akan mengembangkan permainan interaktif yang dapat digunakan untuk menguji pengetahuan siapa pun tentang sistem koordinat Kartesius. Permainan ini berisi satu sprite (disebut Bintang) yang mewakili titik acak di Panggung (lihat Gambar 6-16).


Gambar 6-16: Antarmuka Tebak Koordinat Saya

Setiap kali Anda menjalankan permainan, sprite bergerak ke lokasi yang berbeda di Panggung dan meminta pengguna untuk menebak koordinat x dan y-nya. Permainan memeriksa jawaban pengguna dan memberikan pesan umpan balik yang sesuai. Skrip utama untuk sprite Bintang ditunjukkan pada Gambar 6-17. Skrip ini menggunakan dua variabel, X dan Y, untuk menyimpan koordinat acak sprite. Saya akan menjelaskan cara kerja setiap bagian bernomor dari Gambar 6-17 di bawah ini.

1. Variabel X diberi nilai acak dari himpunan {–220, –200, –180, ... , 220}. Ini dicapai dengan terlebih dahulu memilih bilangan bulat acak antara –11 dan 11 dan mengalikan hasilnya dengan 20. Demikian pula, variabel Y diberi nilai acak dari himpunan {–160, –140, –120, ... , 160}. Nilai X dan Y yang dipilih memastikan bahwa titik yang dihasilkan terletak pada salah satu titik persimpangan grid pada Gambar 6-16. Sprite kemudian dipindahkan ke lokasi yang ditentukan oleh X dan Y.


Gambar 6-17: Skrip untuk permainan Tebak Koordinat Saya

2. Skrip meminta pengguna untuk memasukkan koordinat x dari sprite dan menunggu jawabannya.

3. Jika jawabannya benar, skrip melanjutkan ke langkah 4. Jika tidak, skrip akan memanggil prosedur ShowAnswer untuk menampilkan koordinat titik yang benar.

4. Ketika pengguna memasukkan nilai yang benar untuk koordinat x, skrip meminta pengguna untuk memasukkan koordinat y dari sprite dan menunggu jawabannya.

5. Jika pengguna menjawab dengan benar, skrip menampilkan pesan “Kerja Bagus.” Jika tidak, skrip memanggil ShowAnswer untuk menampilkan koordinat yang benar.

Prosedur ShowAnswer ditunjukkan pada Gambar 6-18. Variabel titik pertama kali dibuat agar memiliki string dalam bentuk (X,Y) menggunakan operator join. Prosedur kemudian menggunakan perintah say untuk menampilkan jawaban yang benar kepada pengguna.


Gambar 6-18: Prosedur ShowAnswer


Cobalah 6-1
Tingkatkan permainan tebak-tebakan ini dengan beberapa modifikasi yang menyenangkan. Misalnya, Anda dapat membuat permainan memutar musik saat seseorang menang, memicu bunyi dengung untuk jawaban yang salah, berjalan secara otomatis (tanpa harus menekan bendera hijau setiap kali), atau melacak jumlah jawaban yang benar untuk menampilkan skor pemain.


Permainan Klasifikasi Segitiga
Seperti yang diilustrasikan pada Gambar 6-19, sebuah segitiga dapat diklasifikasikan sebagai segitiga sembarang, segitiga sama kaki, atau segitiga sama sisi berdasarkan panjang sisinya. Di bagian ini, Anda akan menjelajahi permainan yang menguji pemain tentang konsep-konsep ini.


Gambar 6-19: Mengklasifikasikan segitiga berdasarkan sisinya

Permainan ini menggambar segitiga di Panggung dan meminta pemain untuk mengklasifikasikan segitiga tersebut sebagai salah satu dari tiga jenis. Antarmuka pengguna untuk permainan ini diilustrasikan pada Gambar 6-20.


Gambar 6-20: Antarmuka pengguna untuk permainan klasifikasi segitiga

Gambar 6-20 menunjukkan bahwa permainan ini berisi lima sprite. Tiga sprite (bernama Scalene, Isosceles, dan Equilateral) mewakili tombol yang diklik pengguna untuk memilih jawaban, dan sprite Painter yang tak terlihat menggambar segitiga di Stage.

Catatan:
Saya membuat sprite Painter tak terlihat dengan menghapus centang pada kotak centang Tampilkan di area info sprite. Jika Anda lebih suka mengontrol visibilitas sprite dari skrip, Anda dapat menambahkan blok sembunyikan untuk menyembunyikan sprite secara eksplisit saat permainan dimulai.

Sprite Tutor adalah penggerak utama permainan; ia menentukan jenis segitiga yang akan digambar untuk setiap putaran dan memeriksa jawaban pengguna. Skrip untuk sprite Tutor ditunjukkan pada Gambar 6-21.


Gambar 6-21: Skrip untuk sprite Tutor. Skrip penggerak utama (kiri atas) memanggil

NewQuestion (kanan) dan CheckAnswer (kiri bawah). Saat ikon bendera hijau diklik untuk memulai permainan, skrip utama memasuki loop tak terbatas. Pada setiap putaran loop, skrip mengatur pilihan menjadi 0 (untuk menunjukkan bahwa pemain belum menjawab), menggambar segitiga yang berbeda, dan menunggu jawaban. Variabel pilihan harus berubah ketika pengguna

mengklik salah satu dari tiga tombol jawaban. Ketika pengguna mengklik tombol untuk mengklasifikasikan segitiga, skrip memeriksa jawabannya dan memberikan umpan balik yang sesuai. Mari kita lihat setiap langkah secara lebih detail. Prosedur NewQuestion dimulai dengan mengatur tipe secara acak—yang menentukan jenis segitiga yang akan digambar di Stage—menjadi 1, 2, atau

3. Skrip kemudian menggunakan dua blok if/else untuk mengatur nilai variabel nama berdasarkan nilai tipe. Variabel nama memiliki dua tujuan:

(1) menentukan pesan siaran mana yang akan dikirim sehingga sprite Painter tahu apa yang harus digambar (perhatikan bagaimana blok siaran dan tunggu menggunakan nama), dan

(2) digunakan dalam prosedur CheckAnswer untuk membuat pesan umpan balik pengguna. Ketika sprite Pelukis selesai menggambar,

prosedur NewQuestion meminta pengguna untuk memberikan jawaban dengan perintah say. Ketika sprite Pelukis menerima pesan siaran, ia menggambar segitiga yang sesuai di Panggung. Untuk membuat permainan lebih menarik, sprite Pelukis menggunakan nilai acak untuk ukuran, orientasi, dan warna segitiga, seperti yang ditunjukkan pada Gambar 6-22.


Gambar 6-22: Skrip untuk sprite Pelukis

Setelah meminta pengguna untuk mengklasifikasikan segitiga yang digambar, skrip utama menggunakan blok wait until (dari Palet Kontrol) untuk menjeda hingga choice > 0 menjadi benar. Ketiga sprite tombol akan mengubah choice ketika diklik. Tombol Scalene mengatur choice menjadi 1, tombol Isosceles mengatur choice menjadi 2, dan tombol Equilateral mengatur choice menjadi 3 (lihat Gambar 6-23).


Gambar 6-23: Skrip untuk ketiga sprite tombol

Saat tombol ditekan, sprite-nya bergerak sedikit ke bawah dan ke kanan untuk memberikan efek visual penekanan tombol. Saat mouse dilepaskan, sprite kembali ke posisi semula dan mengatur nilai variabel choice untuk menunjukkan bahwa pengguna telah mengklik tombol tersebut. Perhatikan bahwa setiap sprite mengatur choice ke angka yang berbeda. Blok untuk memindahkan tombol dalam skrip ini tidak sepenuhnya diperlukan dan dapat dihapus jika diinginkan.

Setelah pengguna memilih jenis segitiga, choice menjadi lebih besar dari nol, dan skrip utama memanggil prosedur CheckAnswer. Prosedur ini membandingkan variabel type (yang menentukan jenis segitiga yang digambar) dengan nilai variabel choice. Jika kedua variabel memiliki nilai yang sama, maka jawaban pengguna benar. Jika tidak, jawaban pengguna salah, dan skrip akan menyebutkan klasifikasi yang benar.

Cobalah 6-2
Buka game ini dan mainkan beberapa kali. Setelah Anda memahami cara kerjanya, cobalah menambahkan beberapa fungsi tambahan. Berikut beberapa ide:

• Buat game mencatat skor. • Sistem dapat menambahkan satu poin untuk setiap jawaban yang benar dan mengurangi satu poin untuk setiap jawaban yang salah.

• Berikan pengguna opsi untuk keluar dari permainan.

• Tetapkan kriteria untuk mengakhiri permainan. Misalnya, Anda dapat mengatur loop pengulangan utama untuk berjalan 20 kali, bukan selamanya. Anda juga dapat menghentikan permainan setelah lima jawaban yang salah.

• Buat sesuatu yang menarik terjadi saat permainan sedang berjalan. Misalnya, Anda dapat membuat variabel bernama specialNumber dan menetapkan nilai acak di awal permainan. Ketika jumlah jawaban yang benar sesuai dengan specialNumber, permainan dapat memberikan poin bonus kepada pengguna, memutar musik, atau bahkan menceritakan lelucon.

• Hidupkan tombol dengan efek grafis. Misalnya, jika Anda menambahkan skrip yang ditunjukkan di bawah ini ke setiap tombol, tombol akan berubah warna saat kursor mouse diarahkan ke atasnya.

Pengikut Garis

Bisakah kita membuat sprite mengikuti (atau menelusuri) jalur di Panggung, seperti yang ditunjukkan pada Gambar 6-24, dengan sendirinya? Jawabannya adalah ya, dan di bagian ini, kita akan menulis program untuk melakukannya. Jika Anda melihat lebih dekat pada sprite di gambar, Anda akan melihat bahwa kita mewarnai hidung dan kedua telinga kucing dengan warna yang berbeda. Gambar tersebut juga menunjukkan tampilan kepala kucing yang diperbesar.

Gambar 6-24: Contoh jalur yang diikuti oleh sprite

Rencananya adalah menggunakan hidung dan telinga kucing sebagai sensor warna untuk mendeteksi garis hitam di bawahnya. Algoritma kita untuk menelusuri garis hitam menggunakan heuristik berikut (aturan yang terutama didasarkan pada penalaran logis dan eksperimen coba-coba):

• Jika hidung kucing (warna merah muda) menyentuh garis, bergerak maju.

• Jika telinga kiri kucing (warna kuning) menyentuh garis, berputar berlawanan arah jarum jam dan bergerak maju dengan kecepatan yang lebih rendah.

• Jika telinga kanan kucing (warna hijau) menyentuh garis, putar searah jarum jam dan bergerak maju dengan kecepatan yang lebih rendah.

Tentu saja, kecepatan yang tepat (langkah pergerakan) dan sudut putar dapat berbeda untuk rute yang berbeda dan harus ditentukan melalui percobaan. Skrip yang mengimplementasikan algoritma di atas dan menyebabkan sprite mengikuti garis ditunjukkan pada Gambar 6-25.

Skrip pada Gambar 6-25 menggunakan blok baru: warna menyentuh? (dari palet Sensing). Blok ini memeriksa apakah warna pada sprite (ditentukan di kotak warna pertama) menyentuh warna lain (ditentukan di kotak warna kedua). Jika warna yang ditentukan pada sprite menyentuh warna lain, blok mengembalikan nilai true; jika tidak, blok mengembalikan nilai false. Warna di kotak warna dapat dipilih dengan mengklik kotak warna dan kemudian mengklik di mana saja di proyek Scratch untuk memilih warna yang diinginkan.


Gambar 6-25: Algoritma mengikuti garis

Cobalah 6-3
Buka aplikasi dan jalankan untuk melihat cara kerjanya. Bereksperimenlah dengan nilai yang diberikan untuk membuat sprite menyelesaikan lintasan dalam waktu tercepat. Seorang pengulas menyelesaikan lintasan dalam 11 detik. Bisakah Anda mengalahkan rekor tersebut? Buat lintasan lain dan lihat apakah algoritma sederhana ini masih berfungsi.

Persamaan Garis
Persamaan garis yang menghubungkan dua titik P = (x1, y1) dan Q = (x2, y2) adalah

y = mx + b, di mana m = (y2 – y1) / (x2 – x1) adalah kemiringan garis dan b adalah perpotongan sumbu y. Garis vertikal memiliki persamaan berbentuk x = k, dan garis horizontal memiliki persamaan berbentuk y = k, di mana k adalah konstanta. Pada bagian ini, kita akan mengembangkan aplikasi yang menemukan persamaan garis yang menghubungkan dua titik pada bidang Kartesius. Antarmuka pengguna untuk aplikasi tersebut ditunjukkan pada Gambar 6-26.


Gambar 6-26: Antarmuka pengguna untuk aplikasi pencari persamaan

Pengguna menyeret dua sprite yang mewakili titik ujung garis  ke Stage, dan aplikasi secara otomatis menampilkan persamaan garis yang dihasilkan. Aplikasi ini berisi empat sprite: Point1 dan Point2 digunakan untuk menandai dua titik ujung garis; Drawer adalah sprite tersembunyi yang menggambar garis lurus antara kedua titik; dan Tutor bertanggung jawab untuk menghitung dan menampilkan persamaan garis. Skrip untuk Point1 dan Point2 sangat mirip. Mereka berisi beberapa logika (tidak ditampilkan di sini) yang membatasi lokasi sprite ke titik persimpangan grid. Pada dasarnya, ketika pengguna menyeret sprite Point1, ia memperbarui variabel yang menyimpan koordinatnya (bernama X1 dan Y1) dan menyiarkan Redraw. Demikian pula, ketika pengguna menyeret sprite Point2, ia memperbarui variabel yang menyimpan koordinatnya (bernama X2 dan Y2) dan menyiarkan pesan yang sama. Keempat variabel (X1, X2, Y1, dan Y2) hanya dapat mengambil nilai bilangan bulat dalam rentang –9 hingga 9. Anda dapat menemukan detail skrip ini di file EquationOfALine.sb2. Sekarang mari kita lihat skrip untuk sprite Laci, yang ditunjukkan pada Gambar 6-27.


Gambar 6-27: Skrip untuk sprite Laci


Saat permainan dimulai, sprite ini mengatur ukuran dan warna pena serta bersiap untuk menggambar. Saat menerima pesan Redraw, ia berpindah ke sprite Point1, membersihkan Stage, dan kemudian berpindah ke sprite Point2. Hasilnya adalah garis lurus yang menghubungkan Point1 dan Point2. Sprite Tutor juga menjalankan skrip saat menerima pesan Redraw, seperti yang ditunjukkan pada Gambar 6-28.


Gambar 6-28: Penanganan pesan Redraw untuk sprite Tutor

Skrip melakukan pemeriksaan berikut:

• Jika koordinat Point1 dan Point2 sama, tidak ada garis yang perlu diproses. Skrip hanya mengatakan "Titik yang sama."
• Jika kedua titik berbeda tetapi koordinat x-nya sama, maka kita memiliki garis vertikal. Skrip menampilkan persamaan dalam bentuk x = konstanta.
• Jika kedua titik berbeda tetapi koordinat y-nya sama, maka kita memiliki garis horizontal. Skrip menampilkan persamaan dalam bentuk y = konstanta.
• Jika tidak, kedua titik tersebut membentuk garis lurus yang persamaannya berbentuk y = mx + b. Skrip pertama-tama memanggil prosedur Compute untuk menemukan kemiringan dan perpotongan sumbu y dari garis tersebut. Kemudian memanggil ShowEquation untuk menempatkan persamaan dalam format yang tepat dan menampilkannya kepada pengguna.

Prosedur Compute ditunjukkan pada Gambar 6-29. Prosedur ini menghitung kemiringan (m) dan perpotongan sumbu y (b) dan kemudian membulatkan nilai-nilai ini ke ratusan terdekat.


Gambar 6-29: Prosedur Compute

Prosedur ShowEquation ditunjukkan pada Gambar 6-30. Prosedur ini menggunakan dua variabel (term1 dan term2) dan dua subprosedur untuk memformat persamaan dengan benar agar dapat ditampilkan.


Gambar 6-30: Prosedur ShowEquation

Prosedur ShowEquation mempertimbangkan kasus-kasus khusus berikut saat memformat persamaan garis:
• Jika kemiringannya 1, term1 akan diatur ke x (bukan 1x)
• Jika kemiringannya –1, term1 akan diatur ke –x (bukan –1x).
• term2 dibentuk menggunakan tanda yang tepat (plus atau minus) dari titik potong y.
• Jika titik potong y adalah 0, persamaan akan memiliki bentuk y = mx.



Cobalah 6-4
Buka aplikasi dan jalankan. Seret kedua titik ke lokasi berbeda di Panggung dan periksa persamaan yang ditampilkan. Untuk meningkatkan aplikasi ini, coba tambahkan skrip untuk memindahkan sprite Tutor jika tumpang tindih dengan koordinat yang ditampilkan oleh sprite Point1 dan Point2.


Aplikasi Lainnya
Sekarang mari kita bahas beberapa permainan yang akan Anda temukan di sumber daya tambahan untuk buku ini (unduh sumber daya tambahan dari http://nostarch.com/learnscratch/). Materi tambahan berisi dua permainan klasik yang dapat Anda jelajahi sendiri. Yang pertama adalah permainan "tebak angka saya". Aplikasi secara diam-diam memilih bilangan bulat secara acak antara 1 dan 100 dan meminta pemain untuk

menebak angka tersebut. Aplikasi kemudian memberi tahu pemain apakah tebakan tersebut lebih tinggi atau lebih rendah dari angka rahasia dengan menampilkan "terlalu tinggi" atau "terlalu rendah", masing-masing. Pemain memiliki enam kesempatan untuk menebak angka rahasia. Tebakan yang benar memenangkan permainan; jika tidak, itu adalah kekalahan.

Permainan kedua memungkinkan pengguna untuk bermain Batu, Kertas, Gunting melawan komputer. Pemain membuat pilihan dengan mengklik salah satu dari tiga tombol yang mewakili batu, kertas, atau gunting. Komputer membuat pilihan secara acak. Pemenang dipilih sesuai dengan aturan berikut: Kertas mengalahkan (membungkus) batu, batu mengalahkan (memecah) gunting, dan gunting mengalahkan (memotong) kertas.


Ringkasan
Dalam bab ini, Anda telah mempelajari tentang operator perbandingan di Scratch dan menggunakannya untuk membandingkan angka, karakter, dan string. Setelah itu, Anda mempelajari tentang blok if dan if/else dan menggunakannya untuk membuat keputusan dan mengontrol tindakan dalam beberapa program. Anda juga mempelajari cara menggunakan blok if dan if/else bersarang untuk menguji beberapa kondisi dan menerapkan teknik ini untuk mengembangkan aplikasi berbasis menu. Anda juga mempelajari tentang operator logika sebagai cara alternatif, dan lebih ringkas, untuk menguji beberapa kondisi. Terakhir, Anda telah menjelajahi beberapa aplikasi lengkap yang menunjukkan struktur pengambilan keputusan dalam praktik.

Bab selanjutnya akan membawa Anda lebih dalam ke palet Kontrol, menunjukkan berbagai struktur pengulangan yang tersedia di Scratch dan mengajarkan Anda cara menggunakannya untuk menulis program yang lebih ampuh.



Soal

1. Berapakah nilai W setelah mengeksekusi setiap perintah dalam skrip ini?

(a)

(b)

(c)

(d)

(e)

2. Nyatakan setiap pernyataan berikut menggunakan blok if:

a. Jika x dibagi y adalah 5, maka atur x menjadi 100.
b. Jika x dikalikan y adalah 5, maka atur x menjadi 1.
c. Jika x kurang dari y, maka gandakan nilai x.
d. Jika x lebih besar dari y, maka tambahkan nilai x sebanyak 1.

3. Tulis program yang meminta pengguna untuk memasukkan lima nilai ujian antara 1 dan 10. Program kemudian akan menghitung jumlah nilai yang lebih besar dari 7.


4. Nyatakan setiap pernyataan berikut menggunakan blok if/else:

a. Jika x dikalikan y adalah 8, maka atur x menjadi 1; jika tidak, atur x menjadi 2.
b. Jika x kurang dari y, maka gandakan nilai x; Jika tidak, tambahkan x dengan 1.
c. Jika x lebih besar dari y, maka tambahkan keduanya dengan 1; jika tidak, kurangi keduanya dengan 1.


5. Telusuri skrip di sebelah kanan untuk

masing-masing kasus berikut untuk menemukan outputnya:

a. x = –1, y = –1, z = –1

b. x = 1, y = 1, z = 0

c. x = 1, y = –1, z = 1

d. x = 1, y = –1, z = –1


6. Tulis program yang meminta pengguna untuk memasukkan tiga angka. Program kemudian akan menentukan dan mencetak angka terbesar dari ketiga angka tersebut.


7. Sebuah perusahaan menjual lima produk berbeda yang harga ecerannya ditunjukkan pada tabel berikut. Tulis program yang meminta pengguna untuk memasukkan nomor produk dan jumlah yang terjual. Program kemudian akan menghitung dan menampilkan total nilai eceran.

Nomor Produk Harga Eceran

1 $2,95
2 $4,99
3 $5,49
4 $7,80
5 $8,85

8. Buat ekspresi logika untuk mewakili setiap kondisi berikut:

a. skor lebih besar dari 90 dan kurang dari 95.
b. jawabannya adalah y atau ya.
c. jawabannya adalah angka genap antara 1 dan 10.
d. jawabannya adalah angka ganjil antara 1 dan 10.
e. jawabannya antara 1 dan 5 tetapi tidak sama dengan 4.
f. Jawabannya berada di antara 1 dan 100 dan habis dibagi 3.

9. Teorema ketidaksamaan segitiga menyatakan bahwa jumlah panjang dua sisi segitiga mana pun lebih besar dari panjang sisi ketiga. Tulis program yang menerima tiga angka dari pengguna dan menentukan apakah angka-angka tersebut dapat mewakili sisi-sisi segitiga.

10. Teorema Pythagoras menyatakan bahwa jika a dan b adalah panjang sisi-sisi tegak segitiga siku-siku dan c adalah panjang hipotenusa (sisi terpanjang), maka a² + b² = c². Tulis program yang menerima tiga angka dari pengguna dan menentukan apakah angka-angka tersebut dapat mewakili sisi-sisi segitiga siku-siku.