Langsung ke konten utama

Pelajaran 2: Pernyataan Bersyarat If/Else

Dalam pelajaran ini, Anda akan membuat proyek di mana Robot VR merobohkan setidaknya dua bangunan di Dynamic Castle Crasher Playground. Diperlukan algoritma untuk menyelesaikan tantangan menggunakan perulangan dan umpan balik sensor karena tata letak Taman Bermain berubah setiap kali direset.

Contoh Tata Letak Taman Bermain Castle Crasher yang Dinamis:

Tiga tampilan dari atas ke bawah dari contoh tata letak Dynamic Castle Crasher Playground dengan robot di posisi awal yang sama dan kastil di posisi yang berbeda. Tata letaknya berdampingan, untuk menekankan bagaimana kastil-kastil tersebut berubah posisi setiap kali Taman Bermain diatur ulang.

Hasil belajar

  • Identifikasi bahwa blok [If then else] adalah blok C yang menjalankan blok di dalam cabang If atau Else berdasarkan nilai Boolean yang dilaporkan.
  • Ketahuilah bahwa blok [If then else] biasanya digunakan bersama dengan blok [Repeat] atau [Forever] untuk memeriksa kondisi lebih dari sekali.
  • Identifikasi dan jelaskan mengapa blok [If then else] digunakan dengan perulangan.
  • Jelaskan apa yang akan menyebabkan cabang [If then else] dijalankan dalam sebuah proyek.

Cara Menggunakan Blok [Jika maka else]

Tantangan ini berbeda dari tantangan Castle Crasher di Unit 2. Tantangan Unit 2 menggunakan urutan sederhana dan perintah Drivetrain untuk merobohkan bangunan di taman bermain statis.

Contoh proyek VR VEXcode dari Unit 2. Proyek ini dimulai dengan blok "Saat dimulai" dan memiliki 6 blok yang terlampir. Blok-blok tersebut berbunyi, secara berurutan, Atur kecepatan penggerak ke 100%; Atur kecepatan belok ke 100%; maju sejauh 1550mm; belok kanan sejauh 180 derajat; maju sejauh 700mm; lalu belok kanan sejauh 90 derajat.

Perintah penggerak saja tidak akan cukup untuk membuat Robot VR merobohkan dua bangunan atau lebih karena tata letak Dynamic Castle Crasher Playground yang selalu berubah. Seperangkat perintah Drivetrain mungkin berfungsi di satu Playground, tetapi tidak di Playground lainnya. Diperlukan algoritma yang menggunakan sensor dan seleksi. Blok [If then else] akan digunakan untuk membuat algoritma dengan menambahkan seleksi dengan pernyataan kondisional pada proyek ini.

Tampilan dari atas arena bermain Dynamic Castle Crasher dengan hanya beberapa kastil yang roboh, dan yang lainnya tetap utuh, untuk menggambarkan bagaimana perintah penggerak saja tidak cukup ketika posisi kastil berubah secara acak.

Ada dua langkah utama bagi Robot VR untuk merobohkan bangunan di Dynamic Castle Crasher Playground.

  1. Jika Robot VR mendeteksi bangunan kastil, bergeraklah maju ke arahnya untuk merobohkannya.
    1. Berbeda dengan semua Playground lainnya, Dynamic Castle Crasher Playground tidak memiliki dinding. Karena bangunan adalah satu-satunya objek di Dynamic Castle Crasher Playground, Sensor Jarak dapat digunakan untuk mendeteksi bangunan.

      Tampilan dari atas arena bermain Dynamic Castle Crasher dengan robot berada di posisi awal, di bagian tengah bawah tata letak, dengan panah putus-putus menunjuk ke kastil tepat di depan robot yang disorot dalam kotak merah. Panah tersebut menunjukkan bahwa sensor dapat mendeteksi kastil sebagai objek di depannya.
  2. Jika Robot VR tidak mendeteksi bangunan kastil, putar dan periksa kembali keberadaan bangunan kastil.
    1. Karena bangunan adalah satu-satunya objek di Dynamic Castle Crasher Playground, Sensor Jarak dapat digunakan untuk mendeteksi bangunan kastil.

      Tampilan dari atas arena bermain Dynamic Castle Crasher, dengan robot dalam posisi awal, dan panah melengkung di kedua sisinya, menunjukkan perlunya berbelok hingga objek kastil terdeteksi.

Setelah langkah 1 dan 2 selesai, Robot VR dapat kembali ke langkah 1 dan menggunakan Sensor Jarak untuk menemukan bangunan berikutnya yang akan dirobohkan.

  • Mulai proyek baru di VEXcode VR dan beri nama proyek tersebut Unit9Lesson2.

    Kotak nama proyek di tengah Toolbar VEXcode VR disorot dengan kotak merah, di sebelah kiri tombol Pilih Playground. Nama proyeknya adalah Unit 9 Pelajaran 2.
  • Tambahkan dua blok [Komentar] ke dalam ruang kerja dan isi langkah-langkah yang telah dijelaskan di atas.

    Sebuah proyek VEXcode VR baru dengan dua blok Komentar yang terlampir pada blok Saat dimulai. Komentar-komentar tersebut berbunyi secara berurutan: Merobohkan bangunan yang ditemukan menggunakan Sensor Jarak; dan Berputar untuk menemukan bangunan menggunakan Sensor Jarak.
  • Blok [If then else] dapat digunakan untuk memicu setiap tindakan yang diuraikan di atas. Setiap tindakan bergantung pada apakah kondisi Boolean di blok [Jika maka else] bernilai TRUE atau FALSE. Tambahkan blok [Jika maka else] di bawah blok [Komentar].

    Proyek VEXcode VR yang sama dengan blok If then else terlampir di bawah komentar kedua. Parameter cabang If dibiarkan terbuka.

    Untuk Informasi Anda

    Blok [If then else] adalah blok C yang menerima blok pelapor Boolean sebagai input. Blok [If then else] adalah pernyataan kondisional yang mengontrol alur suatu proyek. Blok [If then else] akan mengeksekusi serangkaian instruksi tertentu jika kondisi terpenuhi, dan serangkaian instruksi lain jika kondisi TIDAK terpenuhi, sehingga 'mencabang' alur proyek. Hanya satu cabang dalam [If then else] yang akan dieksekusi.

    Blok If then else dari VEXcode VR Toolbox.
    • Jika kondisi dilaporkan sebagai TRUE, blok-blok di dalam cabang If Then akan dijalankan.
    • Jika kondisi dilaporkan sebagai FALSE, blok di dalam cabang Else akan dijalankan.
    Sebuah proyek VEXcode VR digunakan untuk mengilustrasikan fungsi setiap cabang dari blok If then else. Dalam proyek ini, blok If then else terpasang pada When started dan membaca If Front Distance found an object, then Comment - Hancurkan bangunan yang ditemukan menggunakan Distance Sensor dan maju terus; Else, Belok untuk menemukan bangunan menggunakan Distance Sensor, dan Belok kanan. Cabang 'Jika maka' diberi label Maju jika Sensor Jarak mendeteksi suatu objek. Cabang 'Else' diberi label Belok kanan jika sensor jarak tidak mendeteksi objek.

    Setelah semua blok di dalam salah satu cabang dijalankan, proyek akan beralih ke blok berikutnya di luar blok [If then else].

  • Dalam proyek ini, Sensor Jarak dapat digunakan untuk mendeteksi bangunan di Taman Bermain. Tambahkan blok <Distance found object> ke blok [Jika maka else].

    Proyek VEXcode VR yang sama seperti sebelumnya, dengan blok objek Distance Found ditambahkan sebagai parameter dari cabang If then. Blok If then sekarang berbunyi Jika Front Distance menemukan sebuah objek maka.

    Untuk Informasi Anda

    Blok <Distance found object> adalah blok pelapor Boolean yang melaporkan apakah Sensor Jarak telah menemukan objek di depan Robot VR. Blok ini melaporkan TRUE ketika ada objek atau permukaan dalam jarak 3000 milimeter (mm) dari Robot VR.

    Blok VEXcode VR dari Toolbox yang bertuliskan "Jarak Depan ditemukan sebuah objek?" adalah sebuah blok yang menampilkan jarak dari objek tersebut.
  • Sekarang setiap cabang dari blok [Jika maka else] perlu didefinisikan menggunakan komentar yang dibuat di awal proyek. Ketika blok <Distance found object> melaporkan TRUE, Robot VR harus bergerak menuju gedung itu untuk merobohkannya. Pindahkan blok [Komentar] itu ke cabang 'Jika Maka' dari proyek.

    Proyek VEXcode VR yang sama dengan komentar pertama dipindahkan ke dalam blok C pada cabang If then. Proyek tersebut sekarang berbunyi: Saat dimulai, jika Jarak Depan menemukan suatu objek, maka robohkan bangunan yang ditemukan menggunakan Sensor Jarak.
  • Pindahkan blok [Komentar] lainnya ke cabang 'Else' dari proyek untuk menjelaskan apa yang harus terjadi jika Robot VR TIDAK mendeteksi bangunan.

    Proyek VEXcode VR yang sama dengan komentar kedua di dalam blok C pada cabang else. Proyek tersebut sekarang berbunyi: Saat dimulai, jika Jarak Depan menemukan suatu objek, maka robohkan bangunan yang ditemukan menggunakan Sensor Jarak; jika tidak, putar untuk menemukan bangunan menggunakan Sensor Jarak.
  • Tambahkan blok [Drive] ke cabang 'If Then' dari blok [If then else].

    Proyek VEXcode VR yang sama dengan blok Drive yang diatur ke maju di bawah komentar pertama di cabang If then. Cabang If then sekarang berbunyi, Jika Jarak Depan menemukan suatu objek, maka Komentar: Hancurkan bangunan yang ditemukan menggunakan sensor Jarak; Maju terus.
  • Ketika blok <Distance found object> melaporkan FALSE, Robot VR perlu berbalik dan mencari bangunan di Taman Bermain. Tambahkan blok [Turn] di bawah blok [Comment] pada cabang 'Else' dari blok [If then else].

    Proyek VEXcode VR yang sama dengan blok Putar yang diatur ke kanan di bawah komentar kedua di cabang Else. Cabang Else sekarang berbunyi, Else, Komentar tentang berbelok untuk menemukan bangunan menggunakan Sensor Jarak; lalu Belok kanan.
  • Sebelum proyek diuji, satu blok lagi perlu ditambahkan. Blok [if then else] hanya akan memeriksa kondisi sebelum beralih ke blok berikutnya di tumpukan. Pada Unit 7, blok [Selamanya] ditambahkan ke proyek untuk menginstruksikan Robot VR agar berulang kali memeriksa kondisi Sensor Mata Bawah. Untuk memastikan kondisi Sensor Jarak diperiksa berulang kali , seret blok [Selamanya] ke ruang kerja di sekitar blok [Jika maka lain].

    Gambaran umum tentang cara menambahkan blok Forever ke proyek sehingga seluruh blok If then else berada di dalam C dari blok Forever. Proyek tersebut sekarang berbunyi: Saat dimulai, Selamanya, Jika jarak depan menemukan suatu objek maka terus maju; jika tidak, belok kanan.
  • Buka Dynamic Castle Crasher Playground dan jalankan proyeknya.

    Tampilan dari atas taman bermain Castle Crasher dengan tiga kastil yang masih utuh dan dua bangunan kastil yang roboh. Robot itu berada di pojok kanan atas, di samping kastil yang roboh.
  • Setelah Robot VR merobohkan setidaknya dua bangunan, muat ulang Playground dan jalankan proyek pada tata letak lain dari Dynamic Castle Crasher Playground.

    Tampilan dari atas taman bermain Castle Crasher dengan tiga kastil yang masih utuh dan dua bangunan kastil yang roboh. Robot itu berada di pojok kanan atas, di samping kastil yang roboh.
  • Pada setiap eksekusi proyek, Robot VR akan berputar hingga mendeteksi sebuah bangunan oleh Sensor Jarak, kemudian bergerak menuju bangunan tersebut untuk merobohkannya.

    Tampilan samping Robot VR yang mendorong potongan kastil dari sisi Taman Bermain, tetapi robot tersebut mulai melaju ke tepi Taman Bermain seolah-olah ia juga akan jatuh dari tepi.
  • Selama berlangsungnya proyek, Robot VR mungkin mendorong bagian bangunan hingga ke tepi dan jatuh dari area bermain. Hal ini karena blok <Distance found object> masih melaporkan bahwa ada objek di depan Robot VR. Ketika blok ini melaporkan TRUE, Robot VR akan bergerak maju. Mengarahkan robot VR agar jatuh dari meja.

Pilih tombol Berikutnya untuk melanjutkan ke bagian selanjutnya dari Pelajaran ini.