Skip to main content

Ders 3: Koşullu İfadeler

Önceki Ders'te, bir projede Optik Sensör'den gelen verileri kullanarak bir Diski renge göre nasıl sıralayacağınızı öğrendiniz. Bu Derste, öğrendikleriniz üzerine inşa ederek, Optik Sensör tarafından hangi renk algılanırsa algılansın projenin karar verebilmesini sağlayan VEXcode'daki seçenekleri keşfedeceksiniz. Şunları öğreneceksiniz: 

  • Endüstriyel bir ortamda karar vermeyi optimize etmenin önemi nedir?
  • If then,If then elseveElse ifblokları arasındaki fark.

Birden Fazla Koşulu Kontrol Etme

Önceki Ders'te bir Diski rengine göre kırmızı veya yeşil palete sıralayabilen bir proje oluşturdunuz. Bu etkili olsa da proje aynı anda yalnızca bir Diski sıralayabilir. Fabrika ortamında birçok nesnenin tekrar tekrar tasnif edilmesi ve paletlenmesi gerekir. Bunu etkili bir şekilde yapabilmek için 6 Eksenli Kolun, nesneleri nasıl hareket ettireceğine veya insan müdahalesine ihtiyaç olup olmadığına dair tekrar tekrar karar verebilmesi gerekir. 6 Eksenli Kol'a Giriş dersinde hareket ettirdiğiniz Küpleri düşünün.Optik sensörün üzerinde mavi bir küp tutan 6 Eksenli Kolun yakın çekimi.

Yükleme alanında mavi bir Küp olsaydı ne olurdu? Önceki Dersteki projede neler olurdu? Endüstriyel bir ortamda, olası tüm koşulların göz önünde bulundurulması gerekir. Sınıflandırılacak nesnelerin arasına hatalı bir nesnenin karıştırılması durumunda, çalışma hücresinin ve etrafındaki çalışanların güvenli ve etkili bir şekilde çalışmasını sağlamak için muhtemelen insan müdahalesine ihtiyaç duyulacaktır.

SıralıEğer o zamanblok

Önceki Ders'te, birbiri ardına gelen iki ayrı koşulu kontrol etmek için iki adetIf thenbloğunu kullandınız; esasen proje içerisinde iki soru sordunuz.

Önceki Dersteki zorluğu tamamlayacak örnek VEXcode Projesi. "Diski doğru palete taşı" yazan yorumun üzerinde kırmızı bir vurgu var ve bu yorumun altında iki "If then" bloğu yer alıyor. Kırmızı vurgulama kutusundaki bloklar şu şekildedir: eğer optik 5 kırmızıyı algılarsa, kol 10'u x 169 y 150 z 100 konumuna getirin ve eğer optik 5 yeşili algılarsa, kol 10'u x 172 y 1 z 100 konumuna getirin.

İlk olarak Nesne kırmızı mıdır?, sonraNesne yeşil midir?. Optik Sensör tarafından neyin algılandığına bakılmaksızın, proje her çalıştırıldığında her koşul kontrol edilir. Bu yapı, bir seferde bir Diski etkili bir şekilde sıralamanıza olanak sağlasa da, bunu yapmanın en verimli yolu değildir. Kırmızı bir Disk ayırt edilebilir, ancak Optik Sensör aynı zamanda ortamdaki başka bir şeyden yeşil olanı da algılayabilir ve bunun tersi de olabilir. Ayrıca, güvenlik sorunu yaratabilecek beklenmedik bir nesne gibi ne kırmızı ne de yeşil renkte olan bir nesneye de hiçbir şekilde önem verilmiyor.

Proje Akış Görüntüleri

Bu Ders boyunca VEXcode projelerinin akışını açıklayan görseller paylaşılmaktadır. Derste ilerlerken bu görselleri mühendislik defterinizde yeniden oluşturabilirsiniz. 

Defterinizde sizin için en uygun görselleştirmeleri oluşturmanıza yardımcı olması için oklar, kutular veya akış şemaları gibi Google Slaytlar veya Microsoft PowerPoint araçlarını kullanın.

Google Slaytlar'da satır araç kutusu açık. Araç kutusu, Çizgi, Ok, Dirsek Bağlantısı, Eğri Bağlantısı, Eğri, Çoklu Çizgi ve Karalama seçeneklerini gösterir.

 

SıralıEğer ise, değilseblok

Hem kırmızı ve yeşil koşullarını kontrol etmemizi hem de farklı bir rengi hesaba katmamızı sağlayacak farklı bir blok daha var. If then elsebloğu, bildirilen Boolean değerine bağlı olarak bloklarıifdalı veyaelsedalı içinde çalıştıran bir C bloğudur.

Proje akışını belirtmek için kırmızı ve yeşil oklarla if then else bloğu kullanan kod parçası. Proje şu şekildedir: diski doğru palete taşıyın, eğer optik 5 kırmızıyı algılarsa kol 10'u x 169 y 150 z 100 konumuna getirin, aksi takdirde sinyal kulesi 6'yı maviye ve yanıp sönmeye ayarlayın, kol 10'u kontrollü durdurmaya ayarlayın. Else komutundan sonraki iki komutun da if then else bloğunun else dalında olduğunu unutmayın. Yeşil ok ve Optik yazısı, Eğer'den hareket konumuna bloğuna doğru kırmızı gerçek noktaları algılar. Metin okuyan optik kırmızı ok, if then'den else dalının başlangıcındaki ayarlanmış sinyal kulesi bloğuna kadar olan kırmızı yanlış noktaları algılar.

ifdalını veya elsedalını çalıştırdıktan sonra proje yığındaki bir sonraki bloğa geçecektir. Dalları daha görünür kılmak içinIf then elsebloklarının proje akışı da gösterilebilir.

Öncekiyle aynı proje akışı, ancak açıklık sağlamak için if dalı ve else dalı ayrı. Sol tarafta kırmızı renkte "kırmızı algılanmadı yanlış" yazısı ve ayarlanmış sinyal kulesini ve ayarlanmış kontrollü durdurma bloklarını gösteren bir ok yer alıyor. Sağ tarafta kırmızı algılandı yazısı var, ardından hareket bloğunu işaret eden bir ok var. Hem sol hem de sağ tarafta, if then else bloğunun altındaki projeye devam edeceklerini gösteren turuncu oklar bulunmaktadır.

Bu örneklerde, değilsedalının, bir nesnenin ne kırmızı ne de yeşil olma durumunu işlemek için kullanıldığını unutmayın. Bu durumda insan müdahalesine ihtiyaç duyulacaktır. Daha önce, Sinyal Kulesi'ndeki mavi ışığın insan müdahalesine ihtiyaç duyulduğunu belirtmek için kullanıldığını öğrenmiştiniz. Ayrıca kontrollü bir durdurma, insanların ve makinelerin güvenliğini sağlamak amacıyla 6 Eksenli Kolun hareketini durduracaktır. elsekoluna Set sinyal kulesibloğu veSet kontrol durağıbloğu eklenebilir, böylece kırmızı veya yeşil olmayan bir nesne bu güvenlik özelliklerini tetikleyebilir.

If then else bloğunun else dalının içeriği kırmızı kutu ile çağrıldı. Bunlara set sinyal kulesi bloğu ve kol kontrollü durdurma bloğu dahildir.

Şu ana kadarki görseller sadece nesnenin kırmızı olma durumunun nasıl ele alınacağını gösterdi. Nesnenin yeşil olma durumunu kontrol etmek için bir daha gerekiyorsa o zamanihtiyaç vardır.

Aynı vexcode projesi, birinci if then else bloğunun hemen ardından eklenen ikinci bir if then else bloğu ile. Bu blok ve içinde bulunan bloklar şunları okur: eğer optik 5 yeşil algılarsa kol 10'u x 172 y 1 z 100 pozisyonuna getir, aksi takdirde sinyal kulesi 6'yı mavi ve yanıp söner hale getir, kol 10'u kontrol durdurulacak şekilde ayarla.

Bu yapı ile proje akışını düşünelim. Proje her çalıştırıldığında, Optik Sensör tarafından hangi renk algılanırsa algılansın, birden fazla dal çalıştırılacaktır.

İki if then else blokları için proje akış görüntüsü. Üst yarıda daha önceki proje akışının aynısı gösteriliyor, ardından ilk if then else bloğundan ikinciye doğru hareket eden turuncu bir ok görülüyor. İkinci if then else bloğunda yeşil oklar ve yan tarafta "optik yeşil doğruyu algılar" yazısı bulunur. Ok, if then dalındaki move to position bloğuna işaret ediyor. Aynı noktadan başlayarak kırmızı bir metin ve kırmızı bir ok var: Optik yeşil algılıyor yanlış. Ok, if then'den else dalındaki ayarlanmış sinyal kulesi bloğuna işaret eder.

Bunu kırmızı bir Disk örneğiyle düşünelim. Eğer Optik Sensör kırmızıyı algılarsa, ilkIf then elsebloğunun koşulu doğru olarak raporlanacaktır. ifdalının içindeki blok çalışacak ve 6 Eksenli Kolu kırmızı paletin üzerine hareket ettirecektir. Ancak ikinciIf then elsebloğunun içindeki koşul false olarak raporlanacaktır. Bu,değilsedalının içindeki bloğun çalışacağı, 6 Eksenli Kolu kontrollü bir şekilde durduracağı ve Sinyal Kulesinde mavi renkte yanıp söneceği anlamına gelir. 6 Eksenli Kol kontrollü durdurma durumunda olacağından, projedeki diğer bloklar çalışamayacak ve bu sorun çözülene kadar tüm işlemler durdurulacaktır. 

Optik sensörün kırmızıyı algılaması örneğinde proje akışı. Projenin yan tarafındaki notlar ve oklar optik kırmızıyı algılarsa doğru, ardından ilk blok pozisyonuna geçerse o zaman dal çalışacaktır. Alttaki metinde ise: else dalı çalıştırılmayacağı yazıyor çünkü if then dalı çalıştırılmış. Bir ok ikinci if then else bloğunu işaret ediyor. Bunun yanındaki metinde şöyle yazıyor: optik yeşili algılar, yanlıştır ve kırmızı oku ikinci if then else bloğunun else dalına yönlendirir. Turuncu ok, ayar kolundan durdurma bloğunu kontrol etmek için yandaki 10 numaralı kolu kontrol etmek için yandaki 10 numaralı bloğa işaret eder. Aşağıdaki metinde kontrol durdurmanın, kontrol durdurulduğunda şapka bloğuna bağlı olanlar hariç tüm blokları durduracağı yazıyor.

Artık beklenmedik bir nesneyi (örneğin mavi bir Küp) hesaba katabiliriz, ancak 6 Eksenli Kol, Diski palete bırakma projesindeki noktaya asla ulaşamayacaktır. Kırmızı ve yeşil durumlarını tek tek kontrol etmek yerine, bir nesnenin yeşil olup olmadığını kontrol etmenin bir yolu varnesne kırmızı değilse yalnızca.   

İç içeEğer ise, değilseblok 

If then elsebloğunun her bir dalı kendi içinde C adet blok kabul edebilir. İşte buna 'yuvalama' denir. Bu, ikinciIf then elsebloğunun, birinci bloğunelsedalının içine bu şekilde yerleştirilebileceği anlamına gelir.Yukarıdakiyle aynı proje, ancak ikinci if then else bloğu, ilk if then else bloğunun else dalı içinde yer alıyor. Kırmızı bir kutu, ilk if then else bloğunun else dalının içinde yer alan ikinci if then else bloğunun etrafında yer alır.

Artık Optik Sensörün yeşil algılama durumu yalnızca önceki durum (Optik Sensör kırmızı algılıyor) yanlış olarak raporlandığında kontrol edilecektir. Yani Optik Sensör kırmızıyı algıladığında, yalnızca ilkçalışacak ve Disk kırmızı paletin üzerine çıkacaktır. 

İlk if then else bloğunun if then dalındaki move to position bloğunun kırmızı kutu ile çağrıldığı projenin yakın görünümü.

Optik Sensör yeşil algılarsa, ilkisedalın (Optik kırmızı algılar) durumu false olarak raporlanır ve bu nedenledeğilsedal çalışır. İç içe geçmiş Eğer o zaman değilsebloğunun durumu, Optik Sensörün yeşil algılayıp algılamadığını görmek için kontrol edilecektir. Bu koşul doğru olarak raporlanacağından, ikinciiçindeki blokdalı çalışacak ve Diski yeşil paletin üzerine taşıyacaktır. 

Optik Sensör tarafından ne kırmızı ne de yeşil algılanmazsa (örneğin mavi bir Küpün alınması durumunda), her iki koşul da yanlış olarak raporlanır ve böylece iç içe geçmişEğer o zaman değilsebloğunundeğilsedalı çalışır, kontrollü bir durdurmayı tetikler ve çalışanları insan müdahalesine ihtiyaç olduğu konusunda uyarır. Bu proje akışlarını burada görüldüğü gibi bir akış şeması olarak da görselleştirmek mümkündür.

Bir projenin akışını açıklayan diyagram. Üstte optik kırmızıyı algılar mı sorusu var? Yeşil bir çizgi sola doğru uzanıyor ve kırmızı paletin üstüne çık diyor, ardından oradan aşağı doğru turuncu bir çizgi inerek diski doğru palete yerleştir diyor. Orijinal sorudan kırmızı bir çizgi çıkıyor ve yanlış diyor. Bunun ardından bir soru daha geliyor: Optik yeşili algılar mı? Yine sağdaki yeşil çizgi doğru diyor ve yeşil paletin üstüne çıkıyor. Bu, diski doğru palete yerleştirin yazan diğer yeşil çizgiyle aynı kutuya turuncu bir çizgiyle bağlanır. Sağ tarafta ise false yazan ve sinyal kulesini mavi yanıp sönmeye ayarlayıp kontrollü durdurmayı tetikleyen kırmızı çizgi bulunmaktadır.

İç içeEğer ise değilseblok, basamaklı bir soru listesi olarak görülebilir. İşte sorular: 

  1. Nesne kırmızı mı? 
    1. Evet? Kırmızı paleti kaldırın ve soru sormayı bırakın.
    2. HAYIR? Başka bir soru sor. 
      1. Nesne yeşil mi?
        1. Evet? Yeşil paleti bir kenara bırakın ve soru sormayı bırakın.
        2. HAYIR? O zaman nesne ne kırmızı ne de yeşildir. Sinyal Kulesinin renklerini değiştirin ve kontrollü bir durdurmayı tetikleyin.

Dikkat edin, sorular yalnızca bir önceki soruya olumsuz cevap verildiğinde sorulur. 

Bu, kontrol etmek istediğimiz tüm koşulları ele alırken, koşulları aynı şekilde kontrol edecek, ancak iç içe geçmiş bloklardan oluşturulması daha kolay olan başka bir blok daha var. 

Aksi takdirdeBlok

Else if bloğu aynı blok içerisinde birden fazla koşulu kontrol etmenizi sağlar. Bu bloktaki koşulların her biri, yalnızca önceki koşul yanlış olarak raporlanırsa sırayla kontrol edilecektir. Eğer else if dalları için tüm Boole koşulları yanlış ise else bölümünün içindeki bloklar çalıştırılacaktır.

VEXcode'da else if bloğu. Bu blok, if then else if then else şeklinde okunur ve bloğu genişletmek ve ek if then else segmentleri eklemek için bir artı simgesine sahiptir.

Bu blok, iç içe geçmişIf then elsebloklarıyla aynı proje akışına sahiptir, ancak blokları iç içe geçirmeye gerek olmadığından oluşturulması daha kolaydır. Aşağıdaki Ders'te Else ifbloğuyla kodlama hakkında daha fazla bilgi edineceksiniz.

Anlayışınızı Kontrol Edin

Bir sonraki derse geçmeden önce, mühendislik defterinize aşağıdaki soruları cevaplayarak bu dersteki kavramları anladığınızdan emin olun.

Anladığınızı Kontrol Edin soruları > (Google Dokümanı/ .docx / .pdf)


Bir projede Aksi takdirdebloğunu uygulamak içinSonraki >seçin.