Programlama Döngüleri - C++
Öğretmen Araç Kutusu
-
Etkinlik Taslağı
-
Bu araştırma, öğrencilere tekrarlayan davranışları tekrarlama veya sonsuza kadar döngüler kullanarak programlamayı öğretecektir.
-
Tekrarlayan ve sonsuza kadar döngüleri kullanarak programlamayı öğrenmek, öğrencilerin aynı tekrarlanan eylemleri kullanan bir proje oluştururken zamandan tasarruf etmelerini sağlar. Bir metin projesinde kullanılan talimatlar hakkında daha fazla bilgi içinyardımbilgi sayfasını ziyaret edin.
Clawbot V5 harekete geçmeye hazır!
Bu keşif, döngüleri kullanan bazı harika projeler oluşturmaya başlayabilmeniz için size araçlar verecektir.
-
Bu keşifte kullanılacak VEXcode V5 talimatları:
-
Drivetrain.driveFor(ileri, 300, mm);
-
Drivetrain.turnFor(sağ, 90, derece);
-
ClawMotor.spinFor(ters, 70, derece);
-
ArmMotor.spinFor(forward, 360, degrees);
-
while (true) {}
-
tekrarla (4) {}
-
bekle(5, saniye);
-
Ek bilgiye erişmek için çalışma alanınızdaki bir komut adına sağ tıklayın ve o komut içinyardımgörün.
Öğretmen İpuçları
Eğer öğrenci VEXcode V5'i ilk kez kullanıyorsa,Kütüphanesi'ndeki çeşitli makaleleri okuyabilir

Öğretmen İpuçları
-
Otomatik Tamamlama Kullanımı
Otomatik tamamlama, VEXcode V5'te yazdığınız komutun geri kalanını tahmin eden bir özelliktir. Öğrenciler VEXcode V5'te çalışırken,yardımcı olması için Otomatik Tamamlama özelliğini kullanmalarını teşvik edin.

Otomatik Tamamlama - Eğitimlermakalesi Otomatik Tamamlama özelliğinin nasıl kullanılacağını ele alıyor. Daha fazla bilgi için VEXcode V5'teki eğitim videolarını inceleyin.

Otomatik Tamamlama eğitimini seçin.
Gerekli donanıma, mühendislik dizüstü bilgisayarınıza ve VEXcode V5 'e sahip olduğunuzdan emin olun.
| Adet | Gerekli Malzemeler |
|---|---|
| 1 |
VEX V5 Sınıf Başlangıç Kiti (güncel ürün yazılımı ile) |
| 1 |
VEXcode V5 (en son sürüm, Windows, macOS) |
| 1 |
Mühendislik Defteri |
| 1 |
Clawbot Template (Drivetrain 2 - motor, No Gyro) örnek projesi |
Adım 1: Döngülerle programlamaya başlayalım
-
Projenize başlamadan önce, doğru şablon projesini seçin. Clawbot Şablonu (Drivetrain 2 - motor, No Gyro) örnek projesi, Clawbot'un motor konfigürasyonunu içerir. Şablon kullanılmazsa, robotunuz projeyi doğru şekilde çalıştırmayacaktır.

- Dosyaveseçin. Örnekleri açın.
-
FarklıÖrnekprojelerine göz atın. Bu projeler, Clawbot'unuzun gerçekleştirebileceği çeşitli eylemleri göstermektedir. Clawbot Şablonu (Aktarma Organları 2 Motorlu, Jiroskop Yok)örnek projesini seçin ve açın.

-
Projeyi RepeatingActions olarak adlandırın.
-
Aşağıdaki kodu yazın:
int main() { // Robot Yapılandırması Başlatılıyor. SÖKMEYİN! vexcodeInit (); // 4 yineleme için ileri gider ve 90 derece döner (4){ Drivetrain.driveFor (forward, 300, mm ); Drivetrain.turnFor (right, 90, degrees); wait(5, seconds );}}
Projeye göz atın ve ardından mühendislik defterinizde aşağıdakileri yapın.
-
Projenin Clawbot'a ne yaptıracağını tahmin edin. Projenin tekrar etmesinden daha fazlasını açıklayın.
Neyi tekrarlıyor? Pençe Robot ne yapıyor?
- Tahmininizi yazın, ancak kısa projeyi ikiden fazla parçaya bölmeyin.
Öğretmen Araç Kutusu
-
Cevap
-
Bu projede robotun: 300 milimetre ileri gitmesini, 90 derece sağa dönmesini ve ardından bir kareyi tamamlamak için 4 kez 5 saniye beklemesini gerektirecek. Aynı 3 talimatı 4 kez kullanmak yerine, tekrarlanan talimat miktarı sadece 1 keze düşer. Tekrar talimatı ileri sürüş ve ardından dönüş hareketlerini tekrarlar.
-
Tahmin basitçe "Pençebot bir kare içinde hareket eder" şeklinde olabilir. Bu, herhangi bir bağlamdan yoksun olarak Pençebot'un tekrarlanan hareketlerini yakalamanın özlü bir yolu olurdu.
Öğrencilerin mühendislik not defterleri tutulabilir vebireyselveyatakım halindeolarak puanlanabilir. Önceki bağlantılar her yaklaşım için farklı bir değerlendirme ölçütü sunmaktadır. Eğitim planlamasına bir değerlendirme ölçütü eklendiğinde, etkinlik başlamadan önce değerlendirme ölçütünün öğrencilere açıklanması veya en azından bir kopyasının öğrencilere verilmesi iyi bir uygulamadır.
-
Tekrarlanan Eylemlerkaydedin, indirin ve çalıştırın.
- Mühendislik defterinizdeki proje açıklamalarınızı kontrol edin ve gerektiğinde düzeltmek için notlar ekleyin.
Adım 2: Projeyi çalıştırın ve robotu gözlemleyin

Tekrarlanan Eylemler projesine (sağda) tekrar bakın. Bu proje ileri ve sonra davranışı dört kez tekrarlayacaktır. "Tekrar" döngü yapısı, belirli sayıda davranışı kullanmak istediğinizde kullanılır.
Tekrar yapısı "while" döngü yapısıyla değiştirilirse, robot koşul doğru olduğu sürece ileri ve sonra dönüş davranışlarını tekrarlayacaktır. "While" döngüsünün sonsuza kadar devam etmesi için koşulu "true" olarak da ayarlayabilirsiniz.
Soldaki projede, bir sensörün girişi dönmeye ne zaman başlanacağını belirlemek için kullanılır. Sağdaki proje, dönmeye ne zaman başlanacağını belirlemek için sabit bir Aktarma Organları mesafesi kullanır.
Bir sensörün girişini sürekli olarak kontrol etmek için, bir "if/else" ifadesi bir "while" döngüsü ile birlikte kullanılır. Soldaki projede "BumperB" sensörüne basıldığında robot sağa dönecek, aksi takdirde "BumperB" sensörüne basılmazsa robot sonsuza kadar ileri gidecektir. BumperB sensörünün değerini sürekli kontrol etmek için, "if" ifadesi "while true" döngüsünün içindedir.
Soldaki yukarıdaki proje, while döngüleri ve if ifadelerini birlikte kullanan, sonsuza kadar tekrar eden bir yapının pratik bir kullanım örneğidir. Bir duvara veya nesneye çarpana kadar ileri doğru sürmeye devam eden, ardından sürmeye devam etmeden önce dönen bir otonom süpürge hayal edin.
Öğrenmenizi Genişletin
Koşullu döngülerin nasıl kullanılacağını daha detaylı incelemek için öğrencilerin VEXcode V5'te bir Zemin Süpürgesi projesi oluşturmalarını sağlayın.
- Öğrencilerin tampon anahtarlarınıedip kablolamalarını sağlayarak başlayın
-
ÖğrencilerdenClawbot Şablonu (Aktarma Organları 2 Motorlu, Jiroskop Yok)örnek projesini açmalarını isteyin.

-
Öğrencilerden projeye Yer Süpürgesi adını vermelerini isteyin.
-
Öğrencilerden aşağıdaki projeyi yapmalarını isteyin.
// V5 Kütüphanesini ekle #include "vex.h" // VEX Kütüphanesinin daha kolay kullanılmasını sağlar vex; namespace'ini kullanarak // pickRandom fonksiyonu, parametre olarak geçirilen min ve değerleri arasında rastgele bir tam sayı döndürür. int pickRandom(int min, int max) { return min + rand() / (RAND_MAX / (max - min + 1)); } int main() { // Robot Yapılandırması Başlatılıyor. ÇIKARMAYIN! vexcodeInit(); // Rastgele sayı üretecini başlat. srand(randomSeed); while (true) { while (!BumperB.pressing()) { Drivetrain.drive(forward); wait(5, ms); } Drivetrain.stop(); Drivetrain.turnFor((90 + pickRandom(0, 90)), degrees); wait(5, ms); } }
Öğrencilerin talimatlardan herhangi biriyle ilgili yardıma ihtiyaçları olursa, onlarıYardımbilgilerine yönlendirin.
Öğrencilerdenprojeyi indirip çalıştırmalarını verobotun nasıl hareket ettiğini gözlemlemelerini isteyin. Daha sonra, bir sınıf tartışması başlatın ve öğrencilerden tekrarlı yapı yerine neden sonsuza kadar olan yapının kullanıldığını açıklamalarını isteyin.
Öğrenciler, bu projenin tampon anahtarının basılıp basılmadığını sürekli olarak kontrol ettiği için sonsuza kadar olan bir yapının kullanıldığını unutmamalıdır.
Adım 3: Kareli Döngüler Mücadelesi!

- Clawbot'unun bir meydanda araba kullanmasını sağla.
- Her dönüşten önce pençe açılıp kapatılmalı ve kol kaldırılıp indirilmelidir.
- Clawbot, meydanın bir tarafında birden fazla süremez.
- Yukarıdaki RepeatingActions projesini başlangıç noktası olarak kullanabilirsiniz ancak herhangi bir değişiklik yapmadan önceSquaredLoopsolarak kaydedin.
Mühendislik defterinizde aşağıdakileri planlayın:
Öğretmen Araç Kutusu
-
Çözümü
Aşağıda Kare Döngüler Mücadelesi için olası bir çözüm bulunmaktadır:
int main() {
// Robot Yapılandırması Başlatılıyor. ÇIKARMAYIN!
vexcodeInit();
repeat(4){
Drivetrain.driveFor(ileri, 300, mm);
ClawMotor.spinFor(geri, 70, derece);
ArmMotor.spinFor(ileri, 360, derece);
ClawMotor.spinFor(ileri, 70, derece);
ArmMotor.spinFor(geri, 360, derece);
Drivetrain.turnFor(sağ, 90, derece);
wait(5, milisaniye);
}
}Öğrencilere projelerini puanlamaları içinprogramlama kriterisağlayabilirsiniz.
Öğrencilerin mühendislik not defterleri tutulabilir vebireysel olarakveyatakım halindepuanlanabilir.