Pelajaran 2: Membangun dan Menguji Proyek
Melanjutkan Pembangunan Proyek
-
Sekarang kondisi dari pernyataan if elseperlu diatur. Untuk menggunakan Sensor Jarak untuk mendeteksi kastil, perintah found_objectdapat digunakan. Tambahkan perintah found_objectke kondisi tersebut. Proyek Anda sekarang akan terlihat seperti ini:
def main(): # Apakah Sensor Jarak mendeteksi kastil? Jika front_distance.found_object(): # Tabrak kastil yang terdeteksi oleh Sensor Jarak langkah jika tidak: # Berbelok untuk mencari kastil menggunakan Sensor Jarak langkah -
Jika Sensor Jarak mendeteksi suatu objek, Robot VR harus bergerak maju untuk merobohkan kastil. Tambahkan perintah driveke dalam cabang 'if' dari pernyataan if else , dan atur parameter untuk menggerakkan Robot VR ke depan. (Perintah ini harus menggantikan 'pass').
def main(): # Apakah Sensor Jarak mendeteksi kastil? jika front_distance.found_object(): # Tabrak kastil yang terdeteksi oleh Sensor Jarak drivetrain.drive(FORWARD) else: # Berbelok untuk mencari kastil menggunakan Sensor Jarak pass -
Ketika perintah found_object melaporkan False, cabang 'else' akan dijalankan, sehingga Robot VR perlu berputar untuk menemukan kastil di Taman Bermain. Tambahkan perintah turn di dalam cabang 'else', dan atur parameternya untuk memutar Robot VR ke kanan.
def main(): # Apakah Sensor Jarak mendeteksi kastil? Jika front_distance.found_object(): # Tabrak kastil yang terdeteksi oleh Sensor Jarak drivetrain.drive(FORWARD) else: # Berbelok untuk menemukan kastil menggunakan Sensor Jarak drivetrain.turn(RIGHT)
Untuk Informasi Anda
Cabang 'else' dari pernyataanif elsehanya berfungsi dalam sebuah proyek sebagai bagian dari pernyataanif else. Meskipun Anda dapat memiliki pernyataanjikayang berdiri sendiri, tidak ada pernyataan 'else' di VEXcode VR Python. Cabang 'else' dijalankan ketika kondisi cabang 'if' tidak terpenuhi. Tanpa kondisi yang ditentukan (cabang 'if'), cabang 'else' tidak akan pernah dijalankan. 
Tambahkan Perulangan dan Uji Proyek
- Sebelum proyek diuji, satu perintah lagi perlu ditambahkan. Pernyataan If else hanya akan memeriksa kondisi sekali sebelum beralih ke perintah berikutnya di luar pernyataan tersebut. Pada Unit 7, sebuah loop tak terbataswhile ditambahkan ke proyek untuk menginstruksikan Robot VR agar berulang kali memeriksa kondisi Sensor Mata Bawah. memastikan Jarak berulang, seret atau ketik while,di dalam. Proyek Anda sekarang akan terlihat seperti ini:
-
Ingatlah untuk memperhatikan indentasi saat menyalin dan menempelkan perintah ke dalam sebuah perulangan, agar proyek berfungsi sebagaimana mestinya saat dijalankan.
def main(): while True: # Apakah Sensor Jarak mendeteksi kastil? Jika front_distance.found_object(): # Tabrakan kastil terdeteksi oleh Sensor Jarak drivetrain.drive(FORWARD) else: # Berbelok untuk menemukan kastil menggunakan Sensor Jarak drivetrain.turn(RIGHT) wait(5, MSEC)
-
- Buka jendela Playground jika belum terbuka. PastikanDynamic Castle Crasher Playgroundterbuka, dan jalankan proyeknya.

- Setelah Robot VR berhasil merobohkan setidaknya dua kastil, muat ulang Playground dan jalankan proyek pada tata letak lain dari Dynamic Castle Crasher Playground.

- Pada setiap eksekusi proyek, Robot VR akan berputar hingga mendeteksi kastil oleh Sensor Jarak, kemudian bergerak menuju bangunan tersebut untuk merobohkannya.

- Selama berlangsungnya proyek, Robot VR mungkin mendorong bagian kastil hingga ke tepi dan jatuh dari Taman Bermain. Hal ini karena perintah found_objectmasih melaporkan bahwa ada objek di depan Robot VR. Ketika perintah ini melaporkan True, Robot VR akan bergerak maju, menyebabkan Robot VR jatuh dari Area Bermain.
Alur Proyek dengan Pernyataan If Else
Pernyataan if else digunakan agar Robot VR dapat mengambil keputusan. Jika kondisi Boolean bernilai True, maka perintah-perintah di dalam cabang 'if' akan dijalankan. Jika kondisi Boolean bernilai False, maka perintah-perintah di dalam cabang 'else' akan dijalankan.
Misalnya, pada iterasi Dynamic Castle Crasher Playground ini, ketika proyek dimulai, Sensor Jarak mendeteksi sebuah objek – kondisi perintahfound_objectmelaporkan True. Sekarang cabang 'if'dari proyek akan berjalan, dan Robot VR akan bergerak maju. Robot VR akan melewati cabang 'else' dari proyek.
- Perhatikan bahwa data Sensor Jarak juga dilaporkan di Dasbor. Saat suatu objek terdeteksi, nilai jarak akan ditampilkan.
Namun, pada iterasi Dynamic Castle Crasher Playground ini, saat proyek dimulai, Sensor Jarak TIDAK mendeteksi objek – kondisi perintahfound_object melaporkan False. Sekarang Robot VR akan melewati cabang 'if' dari proyek, dan cabang 'else' dari proyek akan dijalankan, sehingga Robot VR akan berbelok ke kanan.
- Perhatikan bahwa nilai Sensor Jarak di Dasbor dilaporkan sebagai > 3000 mm. Sensor Jarak dapat mendeteksi objek dalam rentang 3000 milimeter (mm), jadi ketika suatu objek tidak terdeteksi, nilainya dilaporkan lebih besar dari (>) 3000 mm.
pernyataan if else berada di dalam loop tak terbatas while , proyek akan kembali ke bagian atas loop tak terbataswhile untuk memeriksa kondisi pernyataan if else secara berulang. Perulangan ini akan terus berlanjut selamanya, menginstruksikan Robot VR untuk terus memeriksa kondisi jika atauratusan kali per detik.
- Perhatikan bahwa perintah drive dan turn di dalam pernyataan if elseadalah perintah yang tidak menunggu. Perintah yang tidak menunggu tidak menghentikan alur proyek saat sedang berjalan. Perilaku tanpa menunggu yang dieksekusi dalam pernyataan if else (seperti 'maju jika objek terdeteksi') akan berlanjut selama kondisi diperiksa, dan hanya akan berubah ketika kondisi berubah.
Untuk Informasi Anda
Pernyataanif elsedigunakan untuk memastikan bahwa hanya satu cabang dalam proyek yang dijalankan ketika kondisi diperiksa. Hanya satu kejadian atau kondisi yang dapat benar pada satu waktu. Hal ini membuat proyek menjadi lebih efisien.

Bandingkan proyek saat ini dengan proyek yang dibuat di Unit 7. Proyek Unit 7 menggunakan empat pernyataan jika

Saat menjalankan proyek dengan beberapa pernyataan if , ada kemungkinan beberapa kondisi akan melaporkan True (atau False) saat proyek menjalankan perintah dalam loop tak terbatas while. Konflik seperti ini dapat menyebabkan proyek berhenti berjalan atau berjalan lebih lambat.
Dengan kata lain, banyak pernyataan jikadalam sebuah proyek seperti menempuh jalan dengan banyak jalur keluar. Tergantung ke mana Anda ingin pergi, Anda akan berbelok di tempat yang berbeda. , jikapergi ke sekolah, Anda akan belok kiri; pergi ke toko, Anda akan belok kanan. Tapi bagaimana jika kamu tidak pergi ke sekolah atau ke toko? Kedua kondisi tersebut akan melaporkan False, dan Anda akan tetap berada di jalur lurus. Atau bagaimana jika Anda pergi ke sekolah dan toko sekaligus? Kedua kondisi tersebut akan melaporkan True, tetapi Anda tidak dapat berbelok di dua lokasi sekaligus. 
Untuk melanjutkan analogi tersebut, sebuah pernyataan if elseseperti bepergian ke persimpangan jalan – hal itu memaksa Anda untuk membuat keputusan. JikaAnda pergi ke sekolah, belok kiri; jika tidak, belok kanan. Ke mana pun Anda pergi, Anda akan berbelok ke kiri atau ke kanan. Menggunakan pernyataan if else akan menghindari bug seperti yang disebutkan di atas, karena akan memaksa Anda untuk membuat keputusan, karena hanya satu kondisi yang dapat bernilai Benar pada saat tertentu.
Pertanyaan
Silakan pilih tautan di bawah ini untuk mengakses kuis pelajaran.
Google Doc / .docx / .pdf