Langsung ke konten utama

Pelajaran 2: Menggunakan Perulangan While

Dalam pelajaran ini, Anda akan membuat proyek menggunakan Sensor Bumper dan perulangan while. Dalam tantangan mini ini, Anda akan menerapkan keterampilan ini untuk menavigasi dari awal Labirin Dinding ke huruf 'A.'

Taman Bermain Labirin Dinding tidak menampilkan dasbor taman bermain. Robot VR tersebut memiliki dinding di depannya yang disentuhnya, menunjukkan bahwa ia perlu berbelok agar dapat melanjutkan perjalanan di dalam labirin.

Hasil belajar

  • Identifikasi bahwa perintah yang tidak menunggu akan membuat proyek terus berjalan meskipun perilaku perintah tersebut belum selesai.
  • Pastikan perintah tunggu menyelesaikan perilaku tersebut sebelum melanjutkan proyek.
  • Perhatikan bahwa perulangan whileakan berulang kali memeriksa kondisi Boolean, dan tidak akan beralih ke perintah berikutnya sampai kondisi tersebut bernilai Benar.
  • Identifikasi bahwa loop whiledigunakan dengan perintah tanpa menunggu (misalnya drive) untuk memeriksa kondisi sensor.
  • Pahami bahwa kata kunci notmembalikkan nilai kondisi Boolean dari True menjadi False atau False menjadi True. 
  • Identifikasi bahwa perintah left_bumper.presseddan right_bumper.pressednilai True atau False dalam sebuah loop.
  • Jelaskan cara membuat proyek yang memungkinkan Robot VR bergerak maju hingga Sensor Bumper ditekan.

Perulangan While

Loop while menerima kondisi Boolean. Sementaraberulang kali memeriksa kondisi Boolean dan mengontrol alur proyek. terusselama kondisinya&. Perulangan while akan keluar dari perulangan dan beralih ke perintah berikutnya di luar perulangan setelah kondisi dilaporkan sebagai False.

VEXcode VR Python Toolbox. Perintah while disorot dengan warna merah, dengan panah yang menunjuk ke antarmuka pengkodean. Kode tersebut menjadi def main():, while condition:, wait(5, MSEC) setelah perintah while diseret dari toolbox ke antarmuka pengkodean.

Pada dasarnya, loopwhilememberi tahu Robot VR untuk terus melakukan perilakuselamakondisi tertentu terpenuhi. Logikanya mirip dengan skenario ini:Saatbersinar, pergilah bermain di luar.Apa yang akan kamu lakukan? Kondisi "matahari bersinar" menentukan di mana Anda seharusnya berada. Saat matahari bersinar, kondisi tersebut benar, jadi kamu boleh bermain di luar. Saat matahari terbenam, kondisi itu menjadi salah, jadi Anda harus kembali masuk ke dalam.

Di sisi kiri terdapat contoh kode yang berbunyi: saat matahari bersinar, bermain di luar. Setelah pernyataan "while", tertulis "masuklah". Di sebelah kanan adalah seorang gadis yang sedang bersepeda di luar rumahnya pada hari yang cerah. Sesuai aturan, dia akan bermain di luar sampai matahari tidak lagi bersinar, lalu akan masuk ke dalam rumah.

Perulangan While dan Masalah Labirin Dinding

Logika yang sama berlaku untuk Robot VR di Labirin Dinding. SaatSensor Bumper tidak ditekan, Robot VR harus terus bergerak maju. Saat ditekan, seharusnya berhenti atau berputar. Dengan menggunakan perulanganwhilebersamaan dengan perintah tanpa menunggu, seperti drive, kita dapat memprogram Robot VR untuk melakukan hal tersebut. Namun, perintah Sensor Bumper menggunakan kondisi Sensor Bumper ditekan (left_bumper.pressedatau right_bumper.pressed)Untuk memprogram Robot VR agar bergerak saat Sensor Bumpertidakditekan, kita perlu menggunakan operatortidak.

def main():
	while not condition:
		wait (5, MSEC)

Untuk Informasi Anda

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

Perintah Menunggu

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

Perintah Tanpa Menunggu

drivetrain.drive(MAJU)
drivetrain.turn(KANAN)

Kata Kunci Bukan

Kata kuncinotbiasanya digunakan dengan, untuk membuat perintah di dalam loop dieksekusi selama kondisi bernilai False. Untuk menggunakan contoh 'matahari bersinar', efek yang sama dapat dicapai dengan menggunakan operatorbukan. Selagi matahari bersinarbukan, masuklah ke dalam.

Di sebelah kiri terdapat contoh kode, yang berbunyi "saat matahari tidak bersinar:, masuklah ke dalam." Setelah perintah "while" adalah bermain di luar. Di sebelah kanan terlihat sebuah rumah di malam hari saat bulan bersinar. Menurut aturan ini, saat matahari tidak bersinar, tidak ada yang akan bermain di luar dan akan tetap berada di dalam rumah.

Dalam Labirin Dinding, ini berguna agar kita dapat memprogram Robot VR sehingga ketika Sensor Bumper ditekan pada angkabukan, robot akan bergerak maju. Kondisinya tetap 'jika Sensor Bumper ditekan', tetapi dengan cara ini, ketika sensor melaporkan False (tidak ditekan), alur proyek tetap berada dalam perulangan. Ketika Sensor Bumper ditekan, kondisi tersebut menjadi Benar, sehingga proyek akan keluar dari loop.Diagram alur proyek yang menggambarkan alur proyek dengan struktur "while not". Di sebelah kiri, definisi utama proyek berbunyi sebagai "selama bumper kiri tidak ditekan, dengan perintah maju, dan tunggu 5 milidetik di dalam loop". Di luar loop terdapat perintah berhenti. Di sebelah kanan, alur proyek yang diilustrasikan dengan panah merah melingkar menunjukkan bahwa selama bumper tidak ditekan, kondisi tersebut bernilai false dan robot bergerak maju. Selanjutnya, sebuah panah hijau lurus menunjuk ke bawah yang menggambarkan bahwa ketika bumper ditekan, kondisi tersebut bernilai benar, dan proyek keluar dari loop sehingga robot berhenti bergerak.

Untuk Informasi Anda

Kata kunci not adalah operator logika yang membalikkan nilai Boolean. Menambahkan kata kuncinotdi 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 nilai True. Kata kuncinotakan membalikkan nilai Boolean, dan membuat ekspresi ini mengembalikan False.

bukan bemper kiri.ditekan()

bukanmungkin diperlukan agar Robot VR dapat menjalankan perilaku yang diinginkan. 

def main():
	while not left_bumper.pressed():
		drivetrain.drive(FORWARD)
		wait(5, MSEC)
	drivetrain.stop()

Membangun Proyek dengan LoopWhile dan Sensor Bumper

Beri nama dan simpan proyek tersebut.

  • Buka proyek teks baru dan pilihWall Maze Playgroundsaat diminta. Ubin pilihan Taman Bermain Labirin Dinding bertuliskan Labirin Dinding di bagian bawah dan menunjukkan labirin di atasnya.
  • Beri nama proyek Unit4Lesson2.Toolbar 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 muncul sebagai bagian dari proyek Teks baru. Perhatikan ada perintah wait di dalam loop. Jangan hapus perintah tunggu, ini akan memastikan Robot VR menjalankan proyek dengan benar. Proyek Anda seharusnya terlihat seperti ini:

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

    def main():
    	while not condition:
    		wait(5, MSEC)
  • atau ketik perintah left_bumper.presseddi 'kondisi' loop while. Perintah di dalam loop akan dieksekusi selama kondisi tidak benar, artinya ketika Sensor Bumper Kiri ditekan pada nilaibukan. Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	while not left_bumper.pressed():
    		wait(5, MSEC)
  • Di dalam loop while, seret atau ketik perintah drive. Pastikan perintahdrivedan perintahwaitdiindentasi dengan benar di dalam loopwhile, sehingga loop berjalan sesuai yang diharapkan. Anda dapat menggunakan garis panduan sebagai alat bantu visual. Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
  • Seret atau ketik perintah stop di luar loop while. Pastikan perintahstopsejajar dengan loopwhile, dan tidak menjorok ke dalam, sehingga berjalan di luar loop seperti yang dimaksudkan. Anda dapat menggunakan garis panduan sebagai alat bantu visual.  Proyek Anda sekarang akan terlihat seperti ini:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	drivetrain.stop()
  • Jendela Taman Bermain jika belum terbuka. Pastikan Taman Bermain Labirin DindingWall Maze Playground)terbuka. 
  • Jalankan proyek tersebut.
  • Saksikan Robot VR bergerak dari awal Labirin Dinding dan berhenti ketika Sensor Bumper ditekan oleh dinding.
  • Perintah Drive memungkinkan Robot VR untuk terus bergerak maju sambil memeriksa kondisi Sensor Bumper dengan perintah Tekan Bumper Kiri. Setelah perintah left_bumper.presseddilaporkan sebagai True, Robot VR akan berpindah ke perintah berikutnya di luar loop dan berhenti mengemudi.

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