Lompat ke isi utama

Pelajaran 2: Membangun dan Menguji Proyek

Melanjutkan Pembangunan Proyek 

  • Sekarang kondisi pernyataan if elseperlu ditetapkan. 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():
    		# Kastil tabrakan terdeteksi oleh Sensor Jarak
    		lintasan
    		
    	yang lain:
    		# Putar untuk menemukan kastil menggunakan Sensor Jarak
    		lintasan
  • Jika Sensor Jarak menemukan suatu objek, Robot VR harus bergerak maju untuk menjatuhkan kastil. Tambahkan perintah driveke dalam cabang 'if' dari pernyataan if else , dan atur parameter untuk menggerakkan Robot VR maju. (Perintah ini harus menggantikan 'pass'). 

    def main():
    	# Apakah Sensor Jarak mendeteksi kastil?
    	
    	jika front_distance.found_object():
    		# Kastil tabrakan terdeteksi oleh Sensor Jarak
    		drivetrain.drive(MAJU)
    		
    	yang lain:
    		# Belok untuk menemukan kastil menggunakan Sensor Jarak
    		lewat
  • Bila perintah found_object melaporkan Salah, cabang 'else' akan berjalan, sehingga Robot VR perlu berputar untuk menemukan kastil di Taman Bermain. Tambahkan perintah putar di dalam cabang 'else', dan atur parameter untuk memutar Robot VR ke kanan. 

    def main():
    	# Apakah Sensor Jarak mendeteksi kastil?
    	
    	jika front_distance.found_object():
    		# Kastil tabrakan terdeteksi oleh Sensor Jarak
    		drivetrain.drive(MAJU)
    		
    	yang lain:
    		# Belok untuk menemukan kastil menggunakan Sensor Jarak
    		drivetrain.turn(KANAN)

Untuk Informasi Anda

Cabang 'else' dari pernyataanif elsehanya berfungsi dalam proyek sebagai bagian dari pernyataanif else. Meskipun Anda dapat memiliki pernyataanjikayang berdiri sendiri, tidak ada pernyataan 'else' dalam VEXcode VR Python. Cabang 'else' dijalankan ketika kondisi cabang 'if' tidak terpenuhi. Tanpa kondisi yang ditentukan (cabang 'if'), cabang 'else' tidak akan pernah berjalan. Tiga cuplikan kode yang menunjukkan pernyataan kondisional dalam Python, masing-masing menampilkan pernyataan if dengan kondisi diikuti oleh kata kunci pass. Dua cuplikan pertama memiliki tanda centang hijau di atasnya, yang menunjukkan penggunaan yang benar. Potongan kode pertama hanya memuat pernyataan if, sedangkan potongan kode kedua memuat pernyataan if dan else dengan kata kunci pass di masing-masingnya. Potongan kode ketiga, ditandai dengan tanda silang merah, hanya berisi pernyataan else dengan pass, yang menunjukkan penggunaan yang salah, karena pernyataan else seharusnya mengikuti pernyataan if.

Tambahkan Loop dan Uji Proyek

  • Sebelum proyek diuji, satu perintah lagi perlu ditambahkan. Pernyataan If else hanya akan memeriksa kondisi satu kali sebelum berpindah ke perintah berikutnya di luar pernyataan. Pada Unit 7, loopsementara tak terhingga ditambahkan ke proyek untuk menginstruksikan Robot VR agar berulang kali memeriksa kondisi Sensor Mata Bawah. Untuk memastikan kondisi Sensor Jarak diperiksa berulang kali, seret atau ketik loop tak terhingga while , lalu salin pernyataanif elseke dalam loop tak terhinggawhile. Proyek Anda sekarang akan terlihat seperti ini:
    • Ingatlah untuk memperhatikan lekukan saat menyalin dan menempelkan perintah ke dalam loop, sehingga proyek berfungsi sebagaimana mestinya saat dijalankan. 

      def main():
      
      	while True:
      		# Apakah Sensor Jarak mendeteksi sebuah kastil?
      	
      		jika front_distance.found_object():
      			# Kastil tabrakan terdeteksi oleh Sensor Jarak
      			drivetrain.drive(MAJU)
      		
      		yang lain:
      			# Belok untuk menemukan kastil menggunakan Sensor Jarak
      			drivetrain.turn(KANAN)
      		
      		tunggu(5, MSEC)
  • Buka Jendela Taman Bermain jika belum terbuka. PastikanDynamic Castle Crasher Playgroundterbuka, lalu jalankan proyek. Tampilan atas Dynamic Castle Crasher Playground yang menunjukkan hanya beberapa kastil yang roboh. Robot VR berada di kanan atas taman bermain setelah bergerak mengelilingi taman bermain.
  • Setelah Robot VR merobohkan setidaknya dua kastil, muat ulang Playground dan jalankan proyek pada tata letak lain dari Dynamic Castle Crasher Playground. Tampilan atas ke bawah Dynamic Castle Crasher dengan antarmuka taman bermain. Tombol reset di kiri bawah antarmuka taman bermain disorot dengan kotak merah.
  • Pada setiap putaran proyek, Robot VR akan berputar hingga sebuah kastil terdeteksi oleh Sensor Jarak, lalu melaju ke arah bangunan tersebut untuk menjatuhkannya.Pandangan bersudut dari taman bermain Dynamic Castle Crasher yang menunjukkan Robot VR mendorong sepotong kastil melewati garis batas merah dan keluar dari tepi taman bermain.
  • Selama proyek berlangsung, 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. Saat perintah ini melaporkan Benar, Robot VR melaju ke depan, yang menyebabkan Robot VR terjatuh dari Taman Bermain.

Alur Proyek dengan Pernyataan If Else

Pernyataan if else digunakan agar Robot VR dapat membuat keputusan. Jika kondisi Boolean adalah Benar, maka perintah di dalam cabang 'if' akan dijalankan. Jika kondisi Boolean adalah Salah, maka perintah di dalam cabang 'else' akan dijalankan.

Misalnya, dalam iterasi Dynamic Castle Crasher Playground ini, saat proyek dimulai, Sensor Jarak mendeteksi sebuah objek – kondisi perintahfound_objectmelaporkan Benar. Sekarang cabang 'if'dari proyek akan berjalan, dan Robot VR akan melaju maju. Robot VR akan melewati cabang 'lainnya' dari proyek.Di sebelah kiri adalah cuplikan kode proyek saat ini. Di sebelah kanan adalah tampilan atas ke bawah taman bermain Dynamic Castle Crasher dengan antarmuka taman bermain yang terlihat. Pengukuran Sensor Jarak pada antarmuka taman bermain menunjukkan 568 mm dan disorot dengan kotak merah. Ini menunjukkan bahwa kastil di tengah taman bermain berjarak 568 milimeter dari Robot VR.

  • Perhatikan bahwa data Sensor Jarak juga dilaporkan di Dasbor. Saat suatu objek terdeteksi, nilai jarak akan ditampilkan.

Namun, dalam iterasi Dynamic Castle Crasher Playground ini, saat proyek dimulai, Sensor Jarak TIDAK mendeteksi objek – kondisi perintahfound_object melaporkan Salah. Sekarang Robot VR akan melewati cabang 'if' proyek, dan cabang 'else' proyek akan berjalan, sehingga Robot VR akan berbelok ke kanan.Di sebelah kiri adalah cuplikan kode proyek saat ini. Di sebelah kanan adalah tampilan atas ke bawah taman bermain Dynamic Castle Crasher dengan antarmuka taman bermain yang terlihat. Pengukuran Sensor Jarak pada antarmuka taman bermain menunjukkan 1354 mm dan disorot dengan kotak merah. Ini menunjukkan bahwa kastil di puncak taman bermain berjarak 1354 milimeter dari Robot VR.

  • Perhatikan bahwa nilai Sensor Jarak di Dasbor dilaporkan sebagai > 3000 mm. Sensor Jarak dapat mendeteksi objek dalam jarak 3000 milimeter (mm), jadi jika suatu objek tidak terdeteksi, nilainya dilaporkan lebih besar dari (>) 3000 mm. 

Karena pernyataan if else ada di dalam loop while tak terhingga, proyek akan mengulang kembali ke awal loopwhile tak terhingga untuk memeriksa kondisi pernyataan if else berulang kali. Loop ini akan terus berlanjut selamanya, menginstruksikan Robot VR untuk terus memeriksa kondisi jika yang lainratusan kali per detik.This is the project's code snippet surrounded by an orange arrow that begins and ends on the while True: statement at the top of the code snippet. There is a note on the arrow that says Loops continuously, showing that anything nested in the while True loop will repeat forever.

  • 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 dijalankan dalam pernyataan if else (seperti 'bergerak maju jika objek terdeteksi') akan terus berlanjut selagi kondisi diperiksa, dan hanya akan berubah saat kondisi berubah.

Untuk Informasi Anda

Pernyataanif elsedigunakan untuk memastikan bahwa hanya satu cabang dalam proyek yang dijalankan saat kondisi diperiksa. Hanya satu kejadian atau kondisi yang dapat benar pada suatu waktu. Ini membuat proyek lebih efisien.

Kode proyek Python dengan panah yang menunjuk ke pernyataan if dan else. Bagian atas tanda panah bertuliskan Memeriksa kondisi Sensor Jarak untuk menunjukkan jarak.found_object jika pernyataan memeriksa kondisi. Jika objek terdeteksi, perintah di bawah pernyataan if akan dieksekusi, tetapi jika tidak ada objek yang terdeteksi, perintah di bawah pernyataan else akan dieksekusi.

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

Kode proyek dari Unit 7 dengan panah oranye besar mengelilingi seluruh kode, dimulai dan diakhiri pada pernyataan while True. Catatan pada tanda panah oranye berbunyi Jika pernyataan yang terdapat dalam perulangan while tak terhingga diperiksa berulang kali. Panah hijau di dalam pernyataan while True menunjukkan aliran proyek, dimulai dengan pernyataan if individual tentang apakah warna tertentu terlihat dan perilaku yang harus dilakukan sesuai dengan itu, apakah itu melakukan perilaku atau beralih ke pernyataan if berikutnya hingga akhir di mana semuanya berulang sekali lagi.

Saat menjalankan proyek dengan beberapa pernyataan if , mungkin saja beberapa kondisi akan melaporkan Benar (atau Salah) saat proyek menjalankan perintah dalam loop while yang tak terhingga. Konflik seperti ini dapat menyebabkan proyek berhenti berjalan atau berjalan lebih lambat. 

Dengan kata lain, beberapa pernyataan jikadalam sebuah proyek seperti berjalan di jalan dengan beberapa jalur keluar. Tergantung ke mana Anda ingin pergi, Anda akan berbelok di tempat yang berbeda. Misalnya,jikaAnda pergi ke sekolah, Anda akan berbelok kiri; jika Anda pergi ke toko, Anda akan berbelok kanan. Tetapi bagaimana jika Anda tidak pergi ke sekolah atau ke toko? Kedua kondisi akan melaporkan Salah, dan Anda akan tetap berada di jalur yang lurus. Atau bagaimana jika Anda pergi ke sekolah dan toko? Kedua kondisi akan melaporkan Benar, tetapi Anda tidak dapat berbelok di dua lokasi pada saat yang bersamaan. Diagram yang menunjukkan persimpangan berbentuk T berwarna abu-abu dengan tiga anak panah arah - satu menunjuk ke kiri, satu menunjuk lurus ke atas, dan satu menunjuk ke kanan. Di tengah persimpangan ada Robot VR. Di sebelah kanan diagram terdapat dua pernyataan kondisional dalam format kode: jika pergi ke sekolah: Belok kiri dan jika pergi ke toko: Belok kanan. Pernyataan if ditulis dalam teks hitam dan biru, dengan if berwarna biru dan instruksi arahnya berwarna biru.

 

Untuk melanjutkan analoginya, pernyataan if elseseperti bepergian ke persimpangan jalan – ia memaksa Anda untuk membuat keputusan. JikaAnda pergi ke sekolah, belok kiri; jika tidak, belok kanan. Ke mana pun Anda pergi, Anda harus belok kiri atau kanan. Menggunakan pernyataan if elseakan menghindari bug seperti yang disebutkan di atas, karena pernyataan tersebut akan memaksa Anda untuk membuat keputusan, karena hanya satu kondisi yang bisa bernilai Benar pada saat tertentu.A diagram showing a gray Y-shaped intersection with two directional paths - one leading left and one leading right. In the center of the intersection is the VR Robot. Above the diagram is code showing conditional statements in code format: if going to school: Turn left and else: Turn right. The if and else statements are written in black and blue text, with if and else in blue and the directional instructions in lighter blue.

Pertanyaan

Silakan pilih tautan di bawah untuk mengakses kuis pelajaran.

Google Doc / .docx / .pdf