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

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

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.

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.

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.

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

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.

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.

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

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.

İç içeEğer ise değilseblok, basamaklı bir soru listesi olarak görülebilir. İşte sorular:
- Nesne kırmızı mı?
- Evet? Kırmızı paleti kaldırın ve soru sormayı bırakın.
- HAYIR? Başka bir soru sor.
- Nesne yeşil mi?
- Evet? Yeşil paleti bir kenara bırakın ve soru sormayı bırakın.
- HAYIR? O zaman nesne ne kırmızı ne de yeşildir. Sinyal Kulesinin renklerini değiştirin ve kontrollü bir durdurmayı tetikleyin.
- Nesne yeşil mi?
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.

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.