Lekce 3: Podmíněné příkazy
V předchozí lekci jste se naučili, jak v projektu použít data z optického senzoru k seřazení disku podle barvy. V této lekci navážete na to, co jste se naučili, a prozkoumáte možnosti ve VEXcode, které projektu umožňují činit rozhodnutí bez ohledu na to, jakou barvu detekuje optický senzor. Dozvíte se o:
- Proč je optimalizace rozhodování důležitá v průmyslovém prostředí.
- Rozdíl mezi blokyIf then,If then elseElse if.
Kontrola více podmínek
V předchozí lekci jste vytvořili projekt, který by dokázal seřadit disk podle barvy na červenou nebo zelenou paletu. I když je to efektivní, projekt mohl třídit pouze jeden disk najednou. V továrním prostředí je třeba mnoho předmětů opakovaně třídit a paletizovat. Aby to 6osé rameno fungovalo efektivně, musí být schopno opakovaně rozhodovat o tom, jak objekty přesunout, nebo zda je nutný lidský zásah. Vezměte si kostky, které jste přesunuli v úvodu do kurzu 6osé rameno.
Co kdyby se v nakládací zóně nacházela modrá kostka? Co by se stalo v projektu z předchozí lekce? V průmyslovém prostředí je třeba zvážit všechny možné podmínky. Pokud se mezi tříděné předměty přimíchá i pochybný předmět, bude pravděpodobně nutný lidský zásah, aby se zajistilo, že pracovní buňka a pracovníci v jejím okolí zůstanou v bezpečí a budou efektivně fungovat.
SekvenčníPokud pakbloky
V předchozí lekci jste použili dva blokyIf thenza sebou k postupné kontrole dvou samostatných podmínek, čímž jste v rámci projektu v podstatě položili dvě otázky.

Nejprve Je objekt červený?, a potéJe objekt zelený?. Každá podmínka je kontrolována při každém spuštění projektu, bez ohledu na to, co detekuje optický senzor. I když tato struktura umožňovala efektivně třídit disky po jednom, není to nejefektivnější způsob, jak toho dosáhnout. Červený disk by se dal roztřídit, ale optický senzor by také dokázal detekovat zelený z něčeho jiného v prostředí a naopak. Také se nebere v úvahu objekt, který není ani červený, ani zelený, jako například neočekávaný objekt, který by mohl způsobit bezpečnostní problém.
Obrázky toku projektu
V celé této lekci jsou sdíleny obrázky vysvětlující postup projektů VEXcode. Tyto obrázky si můžete znovu vytvořit ve svém technickém sešitě a také během procházení lekce.
Používejte nástroje v Google Slides nebo Microsoft PowerPointu, jako jsou šipky, rámečky nebo vývojové diagramy, k vytvoření vizualizací, které vám v poznámkovém bloku nejlépe vyhovují.

SekvenčníPokud pak jinakbloky
Existuje jiný blok, který by nám umožnil kontrolovat jak červené, tak zelené podmínky a zohledňovat různé barvy. BlokIf then elseje blok typu C, který spouští bloky uvnitř větveifnebo větveelsena základě nahlášené booleovské hodnoty.

Po spuštění větve ifnebo větve elsese projekt přesune na další blok v zásobníku. Pro lepší viditelnost větví lze také zobrazit tok projektu s blokyIf then else.

Všimněte si, že v těchto příkladech se větev elsepoužívá k ošetření podmínky, že objekt není ani červený, ani zelený. V takovém případě by byl nutný lidský zásah. Dříve jste se dozvěděli, že modré světlo na signální věži se používá k signalizaci potřeby lidského zásahu. Řízené zastavení navíc zastaví pohyb 6osého ramene, aby byla zajištěna bezpečnost osob a strojů. Do větvejinaklze přidat blok Nastavení signální věžea blokNastavení zastavení řízení, takže objekt, který nebyl červený nebo zelený, by spustil tyto bezpečnostní funkce.

Dosavadní obrázky ukazují pouze to, jak se vypořádat s červeným objektem. Další If then elseje potřeba pro kontrolu stavu, zda je objekt zelený.

Zamysleme se nad průběhem projektu s touto strukturou. Pokaždé, když je projekt spuštěn, se spustí více větví, bez ohledu na to, jakou barvu detekuje optický senzor.

Představme si to na příkladu červeného disku. Pokud optický senzor detekuje červenou barvu, podmínka prvního blokuIf then elsebude hlášena jako pravdivá. Blok uvnitř větveifby se spustil a pohnul by 6osé rameno přes červenou paletu. Podmínka uvnitř druhého blokuIf then elseby se však hlásila jako nepravdivá. To znamená, že blok uvnitř své větveelseby se spustil, čímž by se 6osé rameno řízeně zastavilo a na signální věži by blikal modře. Protože by 6osé rameno bylo v řízeném zastavení, nemohly by se spustit žádné další bloky v projektu a všechny operace by se zastavily, dokud by se problém nevyřešil.

I když nyní můžeme zohlednit neočekávaný objekt (jako je modrá krychle), šestiosé rameno v projektu nikdy nedosáhne bodu, kdy by uvolnilo disk na paletu. Místo postupné kontroly červené a zelené barvy existuje způsob, jak zkontrolovat, zda je objekt zelený, pouze pokud objekt není červený, a to pomocí.
VnořenéPokud pak jinakbloky
Každá z větví blokuIf then elsemůže přijímat další bloky C v sobě. Tomu se říká „vnoření“. To znamená, že druhý blokIf then elsemůže být vnořen do větveelseprvního bloku, takto.
Stav optického senzoru detekujícího zelenou barvu bude nyní kontrolován pouze tehdy, když předchozí stav (optický senzor detekující červenou barvu) hlásí jako nepravdivý. Takže když optický senzor detekuje červenou barvu, spustí se pouze první větevif, která posune disk nad červenou paletu.

Pokud optický senzor detekuje zelenou, podmínka první větvepokud(optický senzor detekuje červenou) by hlásila chybu, a proto by se spustil větevjinak. Podmínka vnořeného bloku If then elseby se zkontrolovala, zda optický senzor detekuje zelenou. Tato podmínka by se hlásila jako pravdivá, takže by se blok uvnitř druhé větveifspustil a pohnul by diskem přes zelenou paletu.
Pokud by optický senzor nedetekoval ani červenou, ani zelenou barvu (jako v případě zvednutí modré kostky), obě podmínky by byly hlášeny jako nepravdivé, a proto by se spustil větevelsevnořeného blokuIf then else, čímž by se spustilo řízené zastavení a upozornilo pracovníky na potřebu lidského zásahu. Tyto toky projektu lze také vizualizovat jako vývojový diagram, jako je ten zde.

Vnořené blokyPokud pak jinaklze považovat za kaskádový seznam otázek. Zde jsou otázky následující:
- Je objekt červený?
- Ano? Přesuňte se přes červenou paletu a přestaňte klást otázky.
- Žádný? Položte další otázku.
- Je objekt zelený?
- Ano? Přesuňte se přes zelenou paletu a přestaňte klást otázky.
- Žádný? Pak objekt není červený ani zelený. Změňte barvy signální věže a spusťte řízené zastavení.
- Je objekt zelený?
Všimněte si, že otázky se kladou pouze v případě záporné odpovědi na předchozí otázku.
I když toto zpracovává všechny podmínky, které chceme kontrolovat, existuje další blok, který bude kontrolovat podmínky stejným způsobem, ale jeho sestavení je snazší než vnořování bloků.
Jinak pokudblok
Blok Else if umožňuje kontrolovat více podmínek v rámci stejného bloku. Každá z podmínek v tomto bloku bude kontrolována postupně, pouze pokud předchozí podmínka hlásí jako nepravdivá. Pokud jsou všechny booleovské podmínky pro větve else if splněny, budou spuštěny bloky uvnitř sekce else.

Tento blok má stejný tok projektu jako vnořené blokyIf then else, ale je snazší ho sestavit, protože není třeba bloky vnořovat. V následující lekci se dozvíte více o kódování s blokem Else if.
Ověřte si své znalosti
Než přejdete k další lekci, ujistěte se, že rozumíte konceptům v této lekci, a to zodpovězením následujících otázek ve svém technickém sešitě.
Otázky k prověření vašich znalostí > (dokument Google/ .docx / .pdf)
VyberteDalší >pro použití bloku Jinak pokudv projektu.