Kamis, 09 Juli 2026

Buku Lembar Projek Scratch Fase B

Modul Lembar Kerja Siswa (LKS) ini disusun khusus untuk kelas 3 dan 4 SD. Pada tingkatan ini, anak-anak sudah siap menerima logika yang lebih terstruktur. Tetap menggunakan pendekatan 15 persen teori dan 85 persen praktik, modul ini akan memperkenalkan konsep menengah seperti Koordinat (X dan Y), Variabel (Skor/Waktu), Kondisi bersyarat (If-Then), dan Pesan (Broadcast) melalui pembuatan game dan simulasi interaktif.

Buku Lembar Kerja:
Logika & Kreativitas Digital dengan Scratch

Proyek 1:
Bergerak dengan Tombol Panah

Konsep Dasar:
Mengontrol gerakan karakter secara presisi menggunakan sumbu X (kiri-kanan) dan Y (atas-bawah).

Blok Utama:

Gambar 1.1: When (right arrow) key pressed, Change x by (10), Change y by (10).

Langkah Praktik:

1. Masukkan blok When (right arrow) key pressed, lalu pasangkan Change x by (10).
2. Masukkan blok When (left arrow) key pressed, pasangkan Change x by (-10).
3. Masukkan blok When (up arrow) key pressed, pasangkan Change y by (10).
4. Masukkan blok When (down arrow) key pressed, pasangkan Change y by (-10).

Gambar 1.2: Rangkaian kode gerak untuk sprite kucing


Tantangan Kreatif:
Tambahkan blok Point in direction agar karakter menghadap ke arah yang dituju saat berjalan.

Coba buat sprite baru pilih karakter lalu beri rangkaian coding seperti sprite kucing, hanya saja blok When (A) key presed untuk ke kiri, D untuk ke kanan, W untuk ke atas, dan terakhir S untuk ke bawah. Maka kamu punya dua karakter yg bisa dikendalikan dalam projek tersebut.

Link Projek: Projek Scratch B1



Proyek 2:
Pesan Rahasia (Broadcast)

Konsep Dasar:
Menggunakan Broadcast untuk membuat satu karakter memicu reaksi pada karakter lain.

Blok Utama:

Gambar 2.1: Broadcast (pesan1), When I receive (pesan1).

Langkah Praktik:


1. Tambahkan karakter Dinosaurus dan Monkey.

2. Pada Dinosaauru: Pasangkan blok bendera hijau dengan Say (Hello Momo!) for 2 secs, lalu tambahkan Broadcast (pesan1).

3. Pada Monkey: Tarik blok When I receive (pesan1) dan pasangkan Say (Halo juga Dino) for 2 secs.

Tantangan Kreatif:
Buat Anjing membalas pesan dan mengirimkan Broadcast (pesan2) agar Kucing melompat kaget.

Link Projek: Projek Scratch B2



Proyek 3:
Kuis Matematika Sederhana


Gambar 3.1: Tampilan projek

Konsep Dasar:
Menyimpan input pengguna dan menggunakan kondisi If-Then-Else.

Blok Utama:

Gambar 3.2: Ask (Berapa 5+5?) and wait, If (answer) = 10 then... else....

Langkah Praktik:

Gambar 3.3: Karakter spite guru

1. Pilih karakter Guru


Gambar 3.4: Buat sprite apel dan buat menjadi 3 buah gambar apel

2. Tambahkan sprite apel lalu duplicate menjadi 3 buah apel
3. Tarik bendera hijau, tambahkan blok biru muda Ask (Berapa buah apel?) and wait.
4. Pasangkan blok oranye If ... then ... else.
5. Di dalam celah If, masukkan blok hijau (answer) = (3).

Gambar 3.5: Rangkaian kode pada sprite karakter guru

6. Di bagian Then, pasangkan Say (Benar!). Di bagian Else, pasangkan Say (Salah, coba lagi!).

Gambar 3.6: Pilih gambar Chalkboard pada bagian stage

7. Tambahkan gambar latar Chalkboard.

Tantangan Kreatif:
Tambahkan suara tepuk tangan jika jawaban benar, dan suara "boing" jika salah.

Pengembangan projek:

Gambar 3.7: Sprite karater guru dan rangkaina kodenya.
Pengembangan projek Scratch ke-1 untuk kelas 4 SD

Gambar 3.8: Sprite Apel yag bisa muncul dan menghilang sesuai dengan jenis soalnya.
Pengembangan ke-3 ini bisa untuk siswa/i kelas 5 dan 6 SD.

Link Projek: Projek Scratch lengkap B3



Proyek 4:
Kalkulator Poin (Pengenalan Variabel)

Konsep Dasar:
Membuat Variabel untuk menyimpan data angka yang bisa berubah-ubah.

Blok Utama:


Make a Variable (Skor), Change (Skor) by (1).

Langkah Praktik:

Gambar 4.2: Membuat variable dengan nama Coin

1. Klik kategori Variables, pilih Make a Variable, dan beri nama "Skor".

Gambar 4.2: Buat sprite Coin dengan menggambar di costumenya

2. Pilih karakter Koin.
3. Tarik bendera hijau, pasangkan Set (Skor) to (0).
4. Tarik blok When this sprite clicked.
5. Pasangkan blok oranye Change (Skor) by (1) dan Start sound (Coin).


Gambar 4.3: Sprite Coin dengan rangkaian kode tingkat dasar

Gambar 4.4: Sprite Coin dengan rangkaian yang sudah dikembangkan bisa digunakan untuk kelas 4, 5 dan 6 SD

Tantangan Kreatif:
Buat koin berpindah tempat dengan Go to random position setiap kali diklik.

Link Projek: Projek Scratch B4



Proyek 5:
Game Labirin (Maze) Part 1

Konsep Dasar:
Mendeteksi tabrakan dengan warna (Sensor Warna).

Blok Utama:


If (sprite) then, Move (-10) steps.

Langkah Praktik:

1. Gambar jalur labirin sederhana dengan garis hitam di latar belakang.
2. Gunakan kode pergerakan panah (dari Proyek 1) pada karakter Kumbang.
3. Di bawah blok bendera hijau, tambahkan Forever.
4. Masukkan If (touching color [hitam]) then di dalam Forever.
5. Masukkan blok mundur Move (-10) steps ke dalam If agar kumbang terpantul saat menabrak dinding hitam.


Gambar 5.2: Rangkaian kode sprite Tikus

Gambar 5.3: Rangkain kode sprite Labirin

Tantangan Kreatif:
Tambahkan blok Go to x: y: di awal permainan agar kumbang selalu mulai dari titik Start.

Link Projek: Projek Scratch B5

Link pembahasan game labirin lainnya:
- Labirin 2
- Labirin 3



Proyek 6:
Observatorium Angkasa

Konsep Dasar:
Simulasi pergerakan objek luar angkasa dengan ukuran dan posisi berbeda.

Blok Utama:
Set size to (pick random), Glide.

Langkah Praktik:

Gambar 6.2: Sprite Earth

Gambar 6.3: Sprite planet

1. Ganti latar belakang dengan Galaxy.
2. Tambahkan karakter Planet atau Bintang. 
3. Tambahkan blok bendera hijau, lalu Forever.
4. Masukkan Go to random position.
5. Tambahkan Set size to (pick random 20 to 100) %.
6. Tambahkan Glide (2) secs to random position.


Gambar 6.4: Rangkain kode pada sprite Earth

Gambar 6.5: Rangkain kode pada sprite Moon


Gambar 6.6: Rangkain kode pada sprite Planet

Tantangan Kreatif:
Tambahkan beberapa jenis planet dan buat mereka bergerak dengan kecepatan orbit yang berbeda-beda.

Link Projek: Projek Scratch B6



Proyek 7:
Waktu Mundur (Timer)

Konsep Dasar:
Membuat sistem hitung mundur untuk membatasi waktu permainan.

Blok Utama:
Variabel Waktu, Wait (1) secs, Change (Waktu) by (-1).

Langkah Praktik:

1. Buat variabel baru bernama "Waktu".
2. Tarik bendera hijau, pasangkan Set (Waktu) to (30).
3. Tambahkan Repeat (30).
4. Di dalam Repeat, masukkan Wait (1) seconds, lalu Change (Waktu) by (-1).
5. Di bawah blok Repeat, tambahkan Stop all untuk mengakhiri game.

Tantangan Kreatif:
Putar suara alarm atau bel panjang ketika waktu menyentuh angka 0.

Link Projek: Projek Scratch B7


Proyek 8:
Kelelawar Menghindar

Konsep Dasar:
Mengontrol satu sumbu (Y) menggunakan pergerakan mouse.

Blok Utama:
Set y to (mouse y).

Langkah Praktik:

  1. Pilih karakter Kelelawar (Bat).
  2. Tarik bendera hijau, lalu Forever.
  3. Masukkan blok biru Set y to (mouse y).
  4. Gerakkan mouse ke atas dan ke bawah; kelelawar hanya akan bergerak vertikal mengikuti mouse.

Tantangan Kreatif:
Tambahkan objek rintangan yang bergerak dari kanan ke kiri yang harus dihindari oleh kelelawar.

Link Projek: 


Proyek 9:
Studio Grafis Hitam Putih

Konsep Dasar:
Mengatur intensitas brightness untuk membuat karya seni bergaya siluet atau cetak balok (hitam putih).

Blok Utama:
Set brightness effect to (-100), Stamp.

Langkah Praktik:

  1. Aktifkan ekstensi Pen.
  2. Tambahkan beberapa karakter seperti Pohon, Bangunan, atau Hewan.
  3. Pada setiap karakter, tambahkan bendera hijau dan pasangkan Set brightness effect to (-100) agar berubah menjadi siluet hitam pekat.
  4. Tambahkan blok When this sprite clicked, lalu pasangkan Stamp.

Tantangan Kreatif:
Susun berbagai karakter siluet di layar dan klik mereka satu per satu untuk merancang sebuah poster pemandangan hitam putih.

Link Projek: 


Proyek 10:
Piano Virtual

Konsep Dasar:
Memetakan input keyboard komputer menjadi nada musik.

Blok Utama:
Ekstensi Music, Play note (60) for (0.25) beats.

Langkah Praktik:

  1. Aktifkan ekstensi Music.
  2. Gambar kotak persegi panjang sebagai tuts piano.
  3. Tarik blok kuning When (a) key pressed.
  4. Pasangkan blok hijau Play note (60) for (0.25) beats.
  5. Gandakan kode tersebut untuk tombol (s), (d), (f) dan ubah nadanya menjadi 62, 64, 65.

Tantangan Kreatif:
Tambahkan efek perubahan warna pada tuts saat tombol keyboard ditekan.

Link Projek: 


Proyek 11:
Kloning (Hujan Apel)

Konsep Dasar:
Memperbanyak karakter di layar tanpa harus menduplikasi sprite secara manual.

Blok Utama:
Create clone of (myself), When I start as a clone.

Langkah Praktik:

  1. Pilih karakter Apel.
  2. Tambahkan bendera hijau, Forever, Wait (1) seconds, dan Create clone of (myself).
  3. Tarik blok baru: When I start as a clone.
  4. Di bawahnya pasangkan Go to random position, lalu Set y to (150).
  5. Tambahkan Forever dan Change y by (-5) agar apel turun seperti hujan.

Tantangan Kreatif:
Tambahkan Delete this clone jika apel menyentuh ujung bawah layar agar permainan tidak menjadi berat.

Link Projek: 


Proyek 12:
Lompat Rintangan (Game Dino)

Konsep Dasar:
Menggunakan Glide untuk melompat melewati rintangan yang bergerak.

Blok Utama:
Glide (0.3) secs to x: y:.

Langkah Praktik:

  1. Pilih karakter Dinosaurus. Letakkan di sisi kiri layar.
  2. Tarik When (space) key pressed.
  3. Tambahkan Glide (0.3) secs to x: (-150) y: (50) (Lompat ke atas).
  4. Tambahkan Glide (0.3) secs to x: (-150) y: (-100) (Turun kembali).

Tantangan Kreatif:
Buat karakter kaktus atau batu yang terus-menerus bergerak dari kanan ke kiri sebagai rintangan.

Link Projek: 


Proyek 13:
Ganti Kostum Saat Menabrak

Konsep Dasar:
Merespons interaksi antar sprite dengan perubahan visual.

Blok Utama:
If (touching [Kucing]?) then, Switch costume to.

Langkah Praktik:

  1. Tambahkan karakter Kucing dan Mangkuk Makanan (yang memiliki 2 kostum: penuh dan kosong).
  2. Pada Mangkuk, tambahkan bendera hijau, Switch costume to (penuh), lalu Forever.
  3. Di dalam Forever, masukkan If (touching [Kucing]?) then.
  4. Di dalam If, masukkan Switch costume to (kosong) dan Play sound (Chomp).

Tantangan Kreatif:
Kendalikan Kucing dengan mouse untuk memakan makanan yang ada di mangkuk.

Link Projek: 


Proyek 14:
Percakapan Dua Karakter (Timing)

Konsep Dasar:
Mengatur durasi waktu agar dua karakter bisa berbicara secara bergantian tanpa bertabrakan.

Blok Utama:
Say () for (2) secs, Wait (2) secs.

Langkah Praktik:

  1. Pada Karakter A: Tambahkan bendera hijau, pasangkan Say (Halo, apa kabar?) for (2) secs.
  2. Tambahkan Wait (2) secs.
  3. Pasangkan Say (Ayo kita main!) for (2) secs.
  4. Pada Karakter B: Tambahkan bendera hijau, pasangkan Wait (2) secs (untuk mendengarkan A dulu).
  5. Pasangkan Say (Halo! Kabarku baik.) for (2) secs.

Tantangan Kreatif:
Tambahkan latar belakang sekolah dan buat percakapan tentang pelajaran favorit mereka.

Link Projek: 


Proyek 15:
Simulasi Hujan Meteor

Konsep Dasar:
Menggabungkan kloning, acak (random), dan rotasi (turn).

Blok Utama:
Create clone, Turn (15) degrees.

Langkah Praktik:

  1. Pilih karakter Batu (Rocks).
  2. Buat skrip kloning setiap 0.5 detik (seperti pada Proyek 11).
  3. Di bawah blok When I start as a clone, tambahkan blok Forever.
  4. Di dalam Forever, masukkan Change y by (-10) dan Turn right (15) degrees.
  5. Meteor kini akan berjatuhan sambil berputar-putar.

Tantangan Kreatif:
Buat ukuran setiap kloning meteor berbeda-beda secara acak saat muncul di atas layar.

Link Projek: 


Proyek 16:
Peliharaan Virtual (Tamagotchi)

Konsep Dasar:
Menggunakan variabel untuk memantau status seperti rasa lapar atau energi.

Blok Utama:
Variabel Lapar, If (Lapar) < 0.

Langkah Praktik:

  1. Buat Variabel "Lapar".
  2. Pada karakter Hewan, atur Set (Lapar) to (10) saat bendera hijau diklik.
  3. Tambahkan Forever, Wait (2) seconds, dan Change (Lapar) by (-1) agar ia semakin lapar seiring waktu.
  4. Tambahkan tombol Makanan. Saat Makanan diklik: Broadcast (makan).
  5. Kembali ke Hewan: When I receive (makan), pasangkan Change (Lapar) by (2) dan suara mengunyah.

Tantangan Kreatif:
Jika variabel "Lapar" menyentuh angka 0, ubah kostum hewan menjadi sedih atau pingsan.

Link Projek: 


Proyek 17:
Mobil Balap (Kecepatan)

Konsep Dasar:
Meningkatkan pergerakan secara eksponensial berdasarkan intensitas klik.

Blok Utama:
Variabel Kecepatan, Change x by (Kecepatan).

Langkah Praktik:

  1. Buat Variabel "Kecepatan". Letakkan Mobil Balap di kiri layar.
  2. Tarik bendera hijau, Set (Kecepatan) to (0), lalu Forever.
  3. Di dalam Forever, pasangkan Change x by (Kecepatan).
  4. Tarik blok terpisah: When (right arrow) key pressed, pasangkan Change (Kecepatan) by (1).

Tantangan Kreatif:
Tambahkan blok di dalam Forever: If (Kecepatan) > 0 then Change (Kecepatan) by (-0.1) agar mobil otomatis melambat jika tombol tidak ditekan (efek gesekan/rem alami).

Link Projek: 


Proyek 18:
Sensor Sentuh Batas Layar

Konsep Dasar:
Mendeteksi garis tepi layar spesifik (bukan sekadar pantulan biasa).

Blok Utama:
If (x position) > 230.

Langkah Praktik:

  1. Pilih karakter Bola. Buat bola bergerak maju menggunakan Move (10) steps di dalam Forever.
  2. Di dalam Forever, tambahkan If (x position) > 230 then. (Ini adalah batas kanan layar).
  3. Masukkan Set x to (-230) ke dalam If.
  4. Bola sekarang akan menembus batas kanan dan muncul kembali dari batas kiri layar (efek teleport)
Tantangan Kreatif:
Terapkan logika yang sama untuk sumbu Y, agar bola tembus dari atas ke bawah layar.

Link Projek: 

Proyek 19:
Senter di Ruang Gelap

Konsep Dasar:
Menggunakan ilusi visual dengan menggabungkan ukuran layar dan kursor mouse.

Blok Utama:
Go to (mouse-pointer).

Langkah Praktik:

  1. Ganti latar belakang menjadi gambar pemandangan.
  2. Buat Sprite baru: gambar kotak hitam besar yang menutupi seluruh layar, lalu hapus/buat lubang lingkaran transparan tepat di tengahnya.
  3. Tarik bendera hijau pada Sprite kotak hitam ini, lalu pasangkan Forever.
  4. Masukkan Go to (mouse-pointer) di dalam Forever.
  5. Klik bendera hijau. Lingkaran transparan akan berfungsi seperti senter yang menerangi latar belakang gelap.

Tantangan Kreatif:
Sembunyikan karakter Hantu kecil di latar belakang yang harus dicari menggunakan "senter" ini.

Link Projek: 


Proyek 20:
Game Tangkap Benda (Proyek Akhir)

Konsep Dasar:
Menggabungkan Pergerakan, Kloning, Variabel Skor, dan Timer menjadi satu game utuh.

Langkah Praktik:

  1. Pemain (Mangkok): Kendalikan dengan tombol panah kiri dan kanan (Sumbu X saja).
  2. Benda Jatuh (Apel): Buat skrip kloning yang menjatuhkan apel dari atas layar ke bawah.
  3. Skor: Jika Mangkok menyentuh Apel, tambahkan Change (Skor) by (1), lalu hapus klon tersebut (Delete this clone).
  4. Timer: Set hitung mundur 30 detik. Hentikan semua (Stop all) jika waktu habis.

Tantangan Kreatif:
Tambahkan rintangan berupa "Batu" yang jatuh. Jika mangkuk menangkap batu, Change (Skor) by (-1).

Link Projek: 


Buku Lembar Projek Scratch Fase A

Apa Itu Scratch?

Untuk materi pengenalan Scratch secara lengkap bisa dilihat rinciannya di link berikut ini pada Bab. 1


Kamis, 28 Mei 2026

Belajar Pemrograman Scratch. Bab 9

9
List

Program yang telah kita tulis sejauh ini telah menggunakan variabel biasa untuk menyimpan satu bagian data. Namun, variabel seperti itu tidak begitu berguna ketika Anda ingin menyimpan sejumlah nilai, seperti nomor telepon teman Anda, nama buku, atau pembacaan suhu selama sebulan. Misalnya, jika Anda ingin program Anda mengingat nomor telepon 20 teman Anda, Anda akan membutuhkan 20 variabel! Tentu saja, menulis dan memelihara program dengan 20 variabel akan membosankan. Dalam bab ini, kita akan menjelajahi tipe data bawaan lain, yang disebut list, yang menawarkan cara mudah untuk mengelompokkan nilai-nilai yang terkait. Berikut yang akan kita bahas:

  • Cara membuat dan memanipulasi daftar
  • Menginisialisasi dan mengakses elemen individual dalam daftar
  • Teknik pengurutan dan pencarian dasar
  • Menggunakan daftar untuk membuat aplikasi yang ampuh

Pertama, saya akan menjelaskan cara membuat daftar di Scratch, mendemonstrasikan perintah yang dapat Anda gunakan dengannya, dan menunjukkan cara mengisi daftar dengan data yang dimasukkan oleh pengguna. Kemudian kita akan membahas daftar numerik dan operasi umum yang dilakukan padanya, seperti menemukan nilai minimum, maksimum, dan rata-rata elemennya. Setelah itu, kita akan mempelajari satu algoritma untuk mengurutkan elemen dalam daftar. Kita akan mengakhiri dengan beberapa contoh program yang mendemonstrasikan beberapa aplikasi daftar di dunia nyata.

Daftar di Scratch
Daftar seperti wadah tempat Anda dapat menyimpan dan mengakses banyak nilai. Anda dapat menganggapnya sebagai lemari dengan banyak laci, dengan setiap laci menyimpan satu barang. Saat Anda membuat daftar, Anda memberinya nama seperti halnya variabel. Anda kemudian dapat mengakses elemen-elemen individual dari daftar menggunakan posisi penyimpanannya dalam daftar. Gambar 9-1, misalnya, menggambarkan sebuah daftar bernama dayList yang menyimpan nama-nama tujuh hari dalam seminggu.

Anda dapat merujuk ke item yang terdapat dalam daftar menggunakan indeks penyimpanannya (atau posisinya). Di Scratch, item pertama memiliki indeks 1, item kedua adalah 2, dan seterusnya. Misalnya, karena Selasa berada di urutan ketiga dalam daftar, maka indeksnya adalah 3. Oleh karena itu, Anda dapat merujuk ke elemen ketiga dari dayList kita menggunakan perintah berbentuk “item 3 dari dayList.”

Mari kita langsung mulai dan membuat beberapa daftar di Scratch. Kita juga akan melihat perintah-perintah yang memungkinkan kita untuk mengelola dan memanipulasi daftar dalam program kita dan mempelajari bagaimana Scratch merespons perintah daftar yang tidak valid.

Membuat Daftar
Membuat daftar hampir identik dengan membuat variabel. Pilih palet Data dan klik Buat Daftar untuk memunculkan dialog pada Gambar 9-2 (kanan).


Selanjutnya, masukkan nama daftar (kita akan menggunakan dayList) dan tentukan cakupannya. Memilih opsi Untuk semua sprite akan membuat daftar global yang dapat diakses oleh sprite mana pun di aplikasi Anda, sedangkan opsi Hanya untuk sprite ini akan membuat daftar lokal yang dimiliki oleh sprite yang saat ini dipilih. Daftar lokal hanya dapat dibaca (dan ditulis) oleh sprite pemilik.

Saat Anda mengklik OK untuk mengkonfirmasi input Anda, Scratch akan membuat daftar kosong baru dan menampilkan blok terkait daftar, seperti yang diilustrasikan pada Gambar 9-3. Ini mirip dengan apa yang akan Anda lihat saat membuat variabel baru. Daftar kosong adalah daftar yang tidak berisi item apa pun.

Anda dapat menggunakan perintah baru ini untuk memanipulasi isi daftar Anda saat skrip Anda berjalan. Anda dapat menambahkan item baru, menyisipkan item pada posisi tertentu, menghapus item tertentu, atau mengganti nilai item yang sudah ada.


Belajar Pemrograman Scratch. Bab 8

8
Pemrosesan String

String adalah serangkaian karakter yang diperlakukan sebagai satu kesatuan. Anda dapat menulis program untuk menggabungkan, membandingkan, mengurutkan, mengenkripsi, dan memanipulasi string.

Berikut yang akan Anda pelajari dalam bab ini:

• Bagaimana Scratch menyimpan string

• Cara menggunakan blok manipulasi string yang tersedia di Scratch

• Beberapa teknik pemrosesan string

• Cara menulis program menarik yang memproses string

Kita akan mulai dengan melihat secara detail tipe data string, dan kemudian kita akan menulis prosedur untuk mengelola dan memanipulasi string. Prosedur tersebut akan menghapus dan mengganti karakter, menyisipkan dan mengekstrak substring, dan mengacak urutan karakter. Setelah itu, kita akan menggunakan prosedur ini dan menerapkan teknik ini untuk menulis beberapa aplikasi yang menyenangkan dan praktis.

Mengulas Kembali Tipe Data String
Seperti yang saya sebutkan di Bab 5, Scratch memiliki tiga tipe data: Boolean, angka, dan string. Pada dasarnya, string hanyalah urutan karakter yang teratur.

Karakter-karakter ini dapat mencakup huruf (baik huruf besar maupun kecil), angka, dan simbol lain yang dapat Anda ketik di keyboard Anda (+, -, &, @, dan seterusnya).

Anda dapat menggunakan string dalam program Anda untuk menyimpan nama, alamat, nomor telepon, judul buku, dan banyak lagi.

Di Scratch, karakter-karakter dalam sebuah string disimpan secara berurutan. Misalnya, jika Anda memiliki variabel bernama name, menjalankan perintah set name to Karen akan menyimpan karakter-karakter seperti yang diilustrasikan pada Gambar 8-1.


Gambar 8-1: Sebuah string disimpan sebagai urutan karakter.

Anda dapat mengakses karakter individual dari sebuah string dengan operator letter of.

Misalnya, blok letter 1 dari name mengembalikan huruf K, dan letter 5 dari name mengembalikan huruf n. Scratch juga menyediakan operator length of, yang mengembalikan jumlah karakter dalam sebuah string. Jika Anda menggunakan kedua operator ini dengan blok repeat, Anda dapat menghitung karakter, memeriksa beberapa karakter, dan melakukan banyak hal berguna lainnya, seperti yang akan saya demonstrasikan di subbagian berikut.

Menghitung Karakter Khusus dalam Sebuah String

Contoh skrip pertama kami, yang ditunjukkan pada Gambar 8-2, menghitung berapa banyak huruf vokal yang ada dalam sebuah string masukan. Skrip ini meminta pengguna untuk memasukkan sebuah string, kemudian menghitung dan menampilkan jumlah huruf vokal dalam string tersebut.


Gambar 8-2: Program penghitung huruf vokal


Belajar Pemrograan Scratch. Bab 7

 7
Pengulangan: Penjelasan Lebih Mendalam tentang Loop

Anda telah melihat beberapa struktur pengulangan Scratch sebelumnya, tetapi bab ini membahasnya secara lebih detail.

Saatnya membahas blok baru yang membuat loop, loop bersarang, dan rekursi. Pada akhir bab ini, kita akan mempelajari konsep pemrograman berikut:

• Struktur pengulangan untuk mengeksekusi pernyataan berulang kali

• Cara memvalidasi input pengguna

• Loop yang dikendalikan penghitung dan loop yang dikendalikan peristiwa

• Prosedur yang dapat memanggil dirinya sendiri dengan rekursi

Meskipun kebanyakan orang menganggap tugas berulang membosankan, komputer tampaknya sangat menyukainya. Struktur pengulangan, yang lebih dikenal sebagai loop, adalah perintah pemrograman yang memberi tahu komputer untuk mengeksekusi pernyataan atau serangkaian pernyataan secara berulang. Jenis loop paling sederhana adalah loop pasti, yang mengulangi serangkaian pernyataan dalam jumlah tertentu. Loop ini


Loop juga disebut loop terkontrol penghitung atau loop terhitung. Jenis loop lain terus berulang hingga suatu kondisi terjadi; ini disebut loop terkontrol kondisi atau loop tak tentu. Loop lain, yang disebut loop tak terbatas, berulang selamanya.

Dalam bab ini, Anda akan mempelajari berbagai struktur pengulangan yang tersedia di Scratch. Saya akan menjelaskan loop terkontrol penghitung dan loop terkontrol kondisi secara detail, dan saya akan memperkenalkan Anda pada blok berhenti, yang dapat Anda gunakan untuk mengakhiri loop tak terbatas. Anda juga akan mempelajari cara menggunakan loop untuk memvalidasi input pengguna.

Bab ini juga membahas loop bersarang (loop yang berisi loop lain) dan menunjukkan beberapa contoh penggunaannya. Kita juga akan membahas rekursi—prosedur yang memanggil dirinya sendiri—sebagai cara lain untuk mencapai pengulangan. Terakhir, kita akan mengembangkan sejumlah aplikasi menarik yang menggunakan loop dan kondisi, dan kita akan melihat cara menggabungkan loop ke dalam program praktis.


Blok Perulangan Lainnya di Scratch
Seperti yang telah Anda pelajari di Bab 2, blok perulangan memungkinkan Anda untuk mengulang perintah atau serangkaian perintah dalam sebuah program. Scratch mendukung tiga blok pengulangan yang ditunjukkan pada Gambar 7-1.


Gambar 7-1: Blok pengulangan Scratch

Anda telah menggunakan dua blok ini, blok repeat dan forever dalam banyak contoh di seluruh buku ini. Di bagian ini, kita akan memeriksa jenis blok perulangan ketiga—blok repeat until—dan menjelaskan beberapa istilah teknis yang terkait dengan perulangan secara umum.

Setiap pengulangan perulangan disebut iterasi, dan kata count sering digunakan untuk menggambarkan jumlah kali perulangan diulang. Blok repeat, yang sudah sangat Anda kenal, adalah perulangan yang dikendalikan oleh penghitung karena mengulang perintahnya sejumlah kali tertentu. Kita biasanya menggunakan perulangan ini ketika kita mengetahui jumlah pengulangan yang perlu dijalankan oleh perulangan, seperti ketika kita ingin menggambar poligon dengan jumlah sisi yang diketahui.

Di sisi lain, blok repeat until adalah perulangan yang dikendalikan oleh kondisi. Pernyataan di dalam blok ini diulang berdasarkan kebenaran atau kepalsuan ekspresi ujinya. Kita menggunakan blok ini ketika kita tidak tahu sebelumnya berapa kali loop perlu diulang dan ingin pengulangan berlanjut hingga suatu kondisi terpenuhi. Misalnya, Anda dapat mengatakan, "Ulangi perintah tanya hingga pengguna memasukkan angka positif." Atau, "Ulangi penembakan rudal hingga tingkat energi pemain turun di bawah nilai tertentu." Bagian berikut menjelaskan loop yang dikontrol kondisi secara lebih rinci.


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