Switch Bloğu İç içe. Çoğu zaman, robotumuz için birden çok durum tanımlamamız gerekir. Bunları "davranışsal durumlar" olarak düşünebiliriz. Mesela, ultrasonik sensörümüz bu yöne bakıyor olsun. Basit bir cisim detektörü, iki duruma dayalı çalışabilir. Bu hat 20 santimetre uzakta, diyelim. Eğer sensör burada bir şey tespit ederse A durumu, eğer burada bir cisim tespit ederse veya hiçbir şey tespit etmezse de B durumu geçerli. Bu durumlarla her şey yapılabilir. Mesela A durumu La notasını çalabilir motorları döndürebilir bir ışık yakabilir veya bambaşka bir programı çalıştırabilir. Aynı şekilde B durumuyla da her şey yapılabilir. Peki, işin içine bir durum daha girerse ne olur? Başlamadan önce, hatırlatayım: Bu cisim detektörü problemini çözmek için, basit bir "switch" ifadesi kullanabiliyoruz. Bu switch ifadesi ultrasonik sensör tarafından kontrol ediliyor. Mesela "20'den yakın mı? O halde git, A'yı yap. 20'den uzaktaysa da B'yi yap." Peki ya bir de C durumu varsa ve mesela 40 santimetreden uzak cisimler için geçerliyse? Yani burada B bölgesi, bir ara bölge. Bunu tek bir switch ifadesiyle çözemeyiz. Peki n'apabiliriz? Şunu bilmek önemli: Birden çok switch ifadesi iç içe bulunabilir. Mesela böyle. Temelde, aşamalı bir karar bu. B ve C burada. Bu nasıl çalışıyor olabilir? Program burada başlıyor. İlk olarak şu soruyu soruyor: Cisim 20 santimetreden yakın mı? Eğer öyleyse, A eylemini yapıyor. A, bu bölge. Eğer değilse bir soru daha soruyor. Bunu bir "böl ve yönet" yaklaşımı olarak düşünün. İkinci switch ifadesi artık sadece bu bölgeye bakıyor. Çünkü A'yı zaten hallettik. Bu ifadede, program şu soruyu soruyor: Cisim 40 santimetreden uzak mı? Bu soru C ile ilgili. Eğer öyleyse, C durumuna atlıyor. Eğer değilse, geriye bir tek B durumu kalıyor. Mesela D gibi başka durumlar söz konusu olsaydı, istediğimiz kadar switch ifadesini iç içe yazabilirdik. Mindstorms ortamında iç içe switch ifadeleri kullanmak gayet kolay. Sürükleyip bırakıyoruz sadece. Mesela ultrasonik sensörün ayarları böyle olsun. Şu an iki durum söz konusu. Buraya bir switch ifadesi daha sürüklüyorum. Artık üç durumumuz var. Görüyorsunuz. Buraya bir ses koyuyorum ki şema biraz genişlesin. Burası A, burası B, bu da C. Eğer dört durum tanımlamak istersek aynı şekilde, başka bir switch ifadesini buraya sürüklüyoruz. Artık programımızın çalıştırabileceği dört farklı durum var. İşte bu kadar basit. İlk adım, switch ifademizin çalışma şemasını çizmek ve işe yaradığından emin olmak. Sonra, switch ifademizi burada düzenliyoruz. Ve tabii karşılaştırma ayarlarının doğru olduğundan emin oluyoruz. İşte iç içe switch ifadeleri böyle oluşturuluyor.