Lompat ke isi utama

Pelajaran 2: Menggunakan Perulangan While

Dalam Pelajaran ini, Anda akan membuat proyek menggunakan Bumper Sensor dan loop while. Dalam tantangan mini, Anda akan menerapkan keterampilan ini untuk menavigasi dari awal Wall Maze hingga huruf 'A'.

Taman Bermain Wall Maze tidak menampilkan dasbor taman bermain. Robot VR memiliki dinding di depannya yang disentuhnya, yang menunjukkan bahwa ia perlu berputar untuk dapat maju dalam labirin.

Hasil belajar

  • Identifikasi bahwa perintah yang tidak menunggu akan membuat proyek terus berlanjut meskipun perilaku perintah tersebut belum selesai.
  • Identifikasi bahwa perintah menunggu melengkapi perilaku sebelum melanjutkan proyek.
  • Identifikasi bahwa loop whileakan berulang kali memeriksa kondisi Boolean, dan tidak akan berpindah ke perintah berikutnya hingga kondisi melaporkan Benar.
  • Identifikasi bahwa loop whiledigunakan dengan perintah non-menunggu (misalnya drive) untuk memeriksa kondisi sensor.
  • Identifikasi bahwa kata kunci bukanmembalikkan nilai kondisi Boolean dari Benar ke Salah atau Salah ke Benar. 
  • Identifikasi bahwa perintah left_bumper.presseddan right_bumper.pressedmengembalikan nilai Benar atau Salah dalam loop while.
  • Jelaskan cara membuat proyek yang melibatkan Robot VR yang bergerak maju hingga Sensor Bumper ditekan.

Perulangan While

Perulangan while menerima kondisi Boolean. Sementaraloop berulang kali memeriksa kondisi Boolean dan mengontrol aliran proyek. Perulangan whileakan terus berulang selama kondisinya& Benar. Perulangan while akan keluar dari perulangan dan berpindah ke perintah berikutnya di luar perulangan setelah kondisi dilaporkan sebagai Salah.

Kotak Peralatan Python VEXcode VR. Perintah while disorot dalam warna merah, dengan panah menunjuk ke antarmuka pengkodean. Kode tersebut membaca def main():, while condition:, wait(5, MSEC) setelah perintah while diseret dari kotak peralatan ke antarmuka pengkodean.

Pada dasarnya, perulangansementaramemberi tahu Robot VR untuk terus melakukan perilakusementarakondisi tertentu terpenuhi. Logikanya mirip dengan skenario ini:Saatmatahari bersinar, pergilah bermain di luar.Apa yang akan Anda lakukan? Kondisi "matahari bersinar" menentukan di mana Anda seharusnya berada. Ketika matahari bersinar, kondisinya Benar, jadi Anda bermain di luar. Ketika matahari terbenam, kondisi itu Salah, jadi Anda akan kembali ke dalam.

Di sisi kiri adalah contoh kode yang dibaca saat matahari bersinar:, bermain di luar. Setelah pernyataan while terbaca masuk ke dalam. Di sebelah kanan adalah seorang gadis mengendarai sepeda di luar rumahnya pada hari yang cerah. Berdasarkan kode tersebut, dia akan bermain di luar sampai matahari tidak bersinar lagi, lalu akan masuk ke dalam.

Perulangan While dan Masalah Labirin Dinding

Logika yang sama berlaku untuk Robot VR di Wall Maze. SelamaSensor Bumper tidak ditekan, Robot VR harus tetap melaju ke depan. Bila ditekan, ia akan berhenti atau berputar. Dengan menggunakan perulanganwhilebersama dengan perintah yang tidak menunggu, seperti drive, kita dapat mengodekan Robot VR untuk melakukan hal tersebut. Akan tetapi, perintah Bumper Sensor menggunakan kondisi Bumper Sensor ditekan (left_bumper.pressedatau right_bumper.pressed)Untuk mengode Robot VR agar melaju saat Bumper Sensor ditekanbukan, kita perlu menggunakan operatorbukan.

def main():
	sementara tidak kondisi:
		tunggu (5, MSEC)

Untuk Informasi Anda

Perintah tidak menunggu dan menunggu menentukan kapan perintah berikutnya memulai suatu perilaku. Perintah menunggu, seperti drive_fordan turn_for, menyelesaikan perilakunya sebelum berpindah ke perintah berikutnya dalam proyek. Perintah yang tidak menunggu, seperti drivedan turn, terus berpindah ke perintah berikutnya dalam proyek meskipun perilaku perintah yang tidak menunggu belum selesai.

Perintah Menunggu

drivetrain.drive_for(MAJU, 200, MM)
drivetrain.turn_for(KANAN, 90, DERAJAT)

Perintah Non-Menunggu

drivetrain.drive(MAJU)
drivetrain.belok(KANAN)

Kata Kunci Bukan

Kata kuncinotbiasanya digunakan dengan loopwhileuntuk membuat perintah di dalam loop dieksekusi saat kondisi mengembalikan False. Untuk menggunakan contoh 'matahari bersinar', efek yang sama dapat dicapai dengan menggunakan operatorbukan. Saat matahari bersinarbukan, masuklah ke dalam.

Di sebelah kiri menunjukkan sepotong contoh kode, membaca saat matahari tidak bersinar:, masuklah ke dalam. Setelah perintah while adalah bermain di luar. Di sebelah kanan memperlihatkan sebuah rumah pada malam hari ketika bulan muncul. Menurut kode ini, selama matahari tidak bersinar, tidak seorang pun akan bermain di luar dan akan tetap berada di dalam rumah.

Di Wall Maze, ini berguna agar kita dapat membuat kode pada Robot VR sehingga saat Bumper Sensor ditekan padabukan, ia akan bergerak maju. Kondisinya masih 'jika Sensor Bumper ditekan', tetapi dengan cara ini, saat melaporkan Salah (tidak ditekan), aliran proyek tetap dalam lingkaran. Saat Bumper Sensor ditekan, kondisinya adalah Benar, sehingga proyek akan keluar dari loop.Diagram alir proyek yang menggambarkan aliran suatu proyek dengan struktur while not. Di sebelah kiri, proyek dalam definisi utama terbaca sebagai while not left bumper pressed, with a drive forward, and wait 5 milliseconds command di dalam loop. Di luar loop ada perintah berhenti. Di sebelah kanan, alur proyek yang diilustrasikan dengan panah merah melingkar menunjukkan bahwa saat bumper tidak ditekan, kondisi tersebut mengembalikan salah dan robot melaju maju. Berikutnya, panah hijau lurus menunjuk ke bawah yang menggambarkan bahwa saat bemper ditekan, kondisi kembali benar, dan proyek keluar dari loop yang menyebabkan robot berhenti melaju.

Untuk Informasi Anda

Kata kunci not adalah operator logika yang membalikkan nilai Boolean. Menempatkan kata kuncibukandi depan perintah yang mengembalikan nilai Boolean akan membalikkan True menjadi False, dan False menjadi True. Misalnya, bayangkan Sensor Bumper Kiri pada Robot VR ditekan, dan perintah left_bumper.pressedmengembalikan True. Kata kuncibukanakan membalikkan nilai Boolean, dan membuat ekspresi ini mengembalikan False.

tidak bemper kiri.ditekan()

Bergantung pada data sensor yang Anda gunakan, kata kuncibukanmungkin diperlukan untuk membuat Robot VR menjalankan perilaku yang diinginkan. 

def main():
	sementara tidak bemper kiri.ditekan():
		drivetrain.berkendara(MAJU)
		tunggu(5, MSEC)
	drivetrain.berhenti()

Membangun Proyek dengan LoopWhile dan Sensor Bumper

Beri Nama dan Simpan Proyek

  • Buka proyek teks baru dan pilihWall Maze Playgroundsaat diminta. Ubin pilihan Taman Bermain Wall Maze bertuliskan Wall Maze di bagian bawah dan menunjukkan labirin di atas.
  • Beri nama proyek Unit4Lesson2.Bilah alat VEXcode VR. Nama Proyek di tengah Toolbar bertuliskan Unit 4 Pelajaran 2 dan disorot dengan kotak merah.

     

  • Seret atau ketik perintah whileke dalam ruang kerja untuk mengganti perintah Drivetrain yang secara otomatis terisi sebagai bagian dari proyek Teks baru. Perhatikan ada perintah wait di dalam loop. Jangan hapus perintah wait, itu akan memastikan Robot VR mengeksekusi proyek dengan benar. Proyek Anda akan terlihat seperti ini:

    def main():
    	sementara kondisi:
    		tunggu(5, MSEC)
  • Ketik operatorbukansetelah 'while' dalam perintahwhile. Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	sementara tidak kondisi:
    		tunggu(5, MSEC)
  • Seret atau ketik perintah left_bumper.pressedke dalam 'kondisi' loop while. Perintah di dalam loop akan dieksekusi saat kondisinya tidak Benar, artinya saat Sensor Bumper Kiri ditekan padabukan. Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	sementara tidak left_bumper.pressed():
    		tunggu(5, MSEC)
  • Di dalam loop while, seret atau ketik perintah drive. Pastikan perintahdrivedan perintahwaitdiindentasi dengan benar dalam loopwhile, sehingga loop berjalan sebagaimana mestinya. Anda dapat menggunakan garis panduan sebagai bantuan visual. Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	sementara tidak bemper kiri.ditekan():
    		drivetrain.drive(MAJU)
    		tunggu(5, MSEC)
  • Seret atau ketik perintah stop di luar loop while. Pastikan perintahstopselaras dengan loopwhile, dan tidak menjorok, sehingga berjalan di luar loop sebagaimana dimaksud. Anda dapat menggunakan garis panduan sebagai bantuan visual.  Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	sementara tidak bemper kiri.ditekan():
    		drivetrain.berkendara(MAJU)
    		tunggu(5, MSEC)
    	drivetrain.berhenti()
  • Buka Jendela Taman Bermain jika belum terbuka. PastikanWall Maze Playgroundterbuka. 
  • Jalankan proyeknya.
  • Saksikan Robot VR melaju dari awal Wall Maze dan berhenti saat Bumper Sensor ditekan oleh dinding.
  • Perintah Drive memungkinkan Robot VR untuk terus melaju ke depan sambil memeriksa kondisi Sensor Bumper dengan perintah Bumper Kiri Ditekan. Setelah perintah left_bumper.pressedmelaporkan sebagai Benar, Robot VR akan berpindah ke perintah berikutnya di luar loop dan berhenti melaju.

Pilih tombol Berikutnya untuk melanjutkan sisa Pelajaran ini.