Langsung ke konten utama

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. Tiga cuplikan kode yang mendemonstrasikan pernyataan kondisional dalam Python, masing-masing menampilkan pernyataan if dengan kondisi yang diikuti oleh kata kunci pass. Dua cuplikan pertama memiliki tanda centang hijau di atasnya, yang menunjukkan penggunaan yang benar. Cuplikan pertama hanya berisi pernyataan if, sedangkan cuplikan kedua berisi pernyataan if dan else dengan kata kunci pass di masing-masingnya. Cuplikan ketiga, yang ditandai dengan tanda silang merah, hanya terdiri dari pernyataan else dengan pass, yang menunjukkan penggunaan yang salah, karena pernyataan else seharusnya mengikuti pernyataan if.

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. Tampilan dari atas arena bermain Dynamic Castle Crasher yang menunjukkan bahwa hanya sebagian kastil yang telah roboh. Robot VR berada di pojok kanan atas taman bermain setelah bergerak mengelilingi taman bermain.
  • Setelah Robot VR berhasil merobohkan setidaknya dua kastil, muat ulang Playground dan jalankan proyek pada tata letak lain dari Dynamic Castle Crasher Playground. Tampilan dari atas Dynamic Castle Crasher dengan antarmuka taman bermain. Tombol reset di bagian kiri bawah antarmuka playground ditandai dengan kotak merah.
  • Pada setiap eksekusi proyek, Robot VR akan berputar hingga mendeteksi kastil oleh Sensor Jarak, kemudian bergerak menuju bangunan tersebut untuk merobohkannya.Tampilan miring dari taman bermain Dynamic Castle Crasher yang menunjukkan Robot VR mendorong sepotong kastil melewati garis batas merah dan keluar dari tepi taman bermain.
  • 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.Di sebelah kiri adalah cuplikan kode proyek saat ini. Di sebelah kanan adalah tampilan dari atas taman bermain Dynamic Castle Crasher dengan antarmuka taman bermain yang terlihat. Pengukuran Sensor Jarak pada antarmuka taman bermain menunjukkan angka 568 mm dan ditandai 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, 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.Di sebelah kiri adalah cuplikan kode proyek saat ini. Di sebelah kanan adalah tampilan dari atas taman bermain Dynamic Castle Crasher dengan antarmuka taman bermain yang terlihat. Pengukuran Sensor Jarak pada antarmuka taman bermain menunjukkan angka 1354 mm dan ditandai dengan kotak merah. Ini menunjukkan bahwa kastil di bagian atas 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 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.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 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.

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

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

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

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. Diagram yang menunjukkan persimpangan berbentuk T berwarna abu-abu dengan tiga panah penunjuk arah - satu menunjuk ke kiri, satu menunjuk lurus ke atas, dan satu menunjuk ke kanan. Di tengah persimpangan terdapat Robot VR. Di sebelah kanan diagram terdapat dua pernyataan bersyarat 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 arah berwarna biru.

 

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.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 ini untuk mengakses kuis pelajaran.

Google Doc / .docx / .pdf