Skip to main content

Programlama Döngüleri - C++

Öğretmen Araç Kutusu simgesi Öğ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ı simgesi Öğretmen İpuçları

Eğer öğrenci VEXcode V5'i ilk kez kullanıyorsa,Kütüphanesi'ndeki çeşitli makaleleri okuyabilir

Öğretmen İpuçları simgesi Öğ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.

Gerekli Malzemeler:
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.

    Açık Örnekler seçeneğini gösteren VEXcode V5 'te açık Dosya menüsünü gösteren resim

     

  • 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.

    VEXcode V5 'te Mükerrer Eylemler proje adını gösteren resim

  • 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.

  1. 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?

  2. Tahmininizi yazın, ancak kısa projeyi ikiden fazla parçaya bölmeyin.

Öğretmen Araç Kutusu simgesi Öğretmen Araç Kutusu - Cevap

  1. 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.

  2. 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.

    VEXcode V5 'teki Araç Çubuğundaki Yinelenen Eylemler proje adının görüntüsü

  • 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

VEXcode'daki iki C++ kod snippet'inin karşılaştırılması. Sol snippet, ne zaman döneceğini belirlemek için sensör girişini kullanır ve tampon anahtarına basılıp basılmadığını kontrol eden bir süre döngüsü vardır; basıldığında, robot 90 derece sağa döner, aksi takdirde ileri gider. Sağ snippet, robotu 300 mm ileri iten, 90 derece sağa dönen ve 5 saniye bekleyen bir tekrar döngüsü ile ne zaman döneceğini belirlemek için sabit bir mesafe kullanır ve bu sırayı dört kez tekrarlar

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 simgesi Öğ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!

Kare etrafındaki hareket yönünü gösteren oklarla birlikte yeşil bir kare yolu gösteren bir diyagram. Farklı yönlerde kare noktanın dışında, yolu takip etmek için gereken dönüşlere ve hareketlere karşılık gelen ek turuncu oklar

  • 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.

VEXcode V5 Araç Çubuğundaki Squared Loops proje adının görüntüsü

Mühendislik defterinizde aşağıdakileri planlayın:

  • Çözümünüzü planlayın ve projenizdeki her talimatın Clawbot'un ne yapmasını sağlayacağını tahmin edin.
  • göndermeden önce test etmek için indirin ve çalıştırın.
  • Gerektiğinde projede değişiklik yapın ve test sırasında nelerin değiştiğine dair notlar alın.

Öğretmen Araç Kutusu simgesi Öğ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.