# Logica

### Voorwaardelijke aanwijzingen

Voorwaardelijke aanwijzingen zijn het belangrijkst voor de programmering. Ze maken het mogelijk om de verschillen tussen gevallen te formuleren zoals:

- Wanneer er een weg naar links is, moet je links afbuigen.
- Wanneer het aantal punten = 100, druk "Goed gedaan!” in.

#### **wanneer**-blokken

De meest eenvoudige voorwaarde is een **wanneer**-blok:

[![image-1623517867641.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623517867641.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623517867641.png)

Wanneer dit wordt uitgevoerd, wordt de waarde van de variabele **x** met 100 vergeleken. Wanneer deze groter is wordt "Wat een hoog cijfer!" uitgegeven. In het andere geval gebeurt er niets.

#### **wanneer-anders**-blokken

Ook is het mogelijk om aan te geven dat er iets moet gebeuren wanneer de voorwaarde niet waar is, zoals in dit voorbeeld:

[![image-1623517882587.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623517882587.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623517882587.png)

Net als bij het voorgaande blok verschijnt de melding "Wat een hoog cijfer!", wanneer **x** &gt; 100 is. In het andere geval verschijnt de melding "Dat is niet erg hoog.".

Een **wanneer**-blok kan een **anders**-segment hebben, maar niet meer dan een.????????????????????

#### **wanneer-anders-wanneer**-blokken

Ook is het mogelijke om meerdere voorwaarden met een enkel **wanneer**-blok te testen wanneer **anders**-**wanneer**-clausules worden toegevoegd:

[![image-1623517913101.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623517913101.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623517913101.png)

Eerst controleert het blok of **x** &gt; 100 is en geeft de melding "Wat een hoog cijfer!", indien dat het geval is. Wanneer dat niet het geval is controleert deze verder of **x** = 42 is. Zo ja, dan verschijnt de melding "Dat is mijn geluksgetal!". In het andere geval gebeurt er niets.

Een **wanneer**-blok kan een willekeurig aantal **anders**-**wanneer**-segmenten hebben. De voorwaarden worden van boven naar onderen toe geanalyseerd, tot aan een voorwaarde is voldaan of er geen voorwaarde meer over is.

#### **wanneer-anders-wanneer-anders**-blokken

**wanneer**-blokken kunnen zowel **anders**-**wanneer** als ook **anders**-segmenten hebben:

[![image-1623517925344.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/scaled-1680-/image-1623517925344.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623517925344.png)

Het **anders**-segment garandeert dat een actie wordt uitgevoerd, ook wanneer geen van de voorgaande voorwaarden waar is.

Een **anders**-segment kan na een willekeurig aantal van **anders**-**wanneer**-segmenten optreden, inclusief nul, dan krijg je een heel normaal **wanneer**-**anders**-blok.

#### Blokmodificatie

In de gereedschapsbalk verschijnt alleen het enkelvoudige **wanneer**-blok en het **wanneer**-**anders-**blok:

[![image-1638372839221.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638372839221.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/image-1638372839221.png)

Je moet op (+)-symbool klikken om **anders**-**wanneer**- en **anders**-clausules toe te voegen. Met het (-)-symbool kunnen **anders**-**wanneer**-clausules weer worden verwijderd:

[![image-1638373059561.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638373059561.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/image-1638373059561.png)

Let erop dat de vormen van de blokken het toevoegen van een willekeurig aantal **anders**-**wanneer**-subblokken mogelijk maken, echter slechts een **wanneer**-blok.

### Booleaanse logica

Booleaanse logica is een eenvoudig wiskundig systeem dat twee waarden kent:

- **waar**
- **onwaar**

Logische blokken in ROBO Pro Coding zijn er normaal gesproken voor om voorwaarden en loops te controleren.

Hier een voorbeeld:

[![Bild1_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild1-n.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild1-n.PNG)

Wanneer de waarde van de variabele x groter is dan 100, is de voorwaarde waar en verschijnt de tekst "Wat een hoog cijfer!". Wanneer de waarde van x niet groter is dans 100, is de voorwaarde onwaar en verschijnt de melding "Dat is niet erg hoog.". Booleaanse waarden kunnen ook in variabelen worden opgeslagen en aan functies worden doorgegeven, net als getallen, tekst en lijstwaarden.

Wanneer een blok een Booleaanse waarde verwacht, wordt een ontbrekende invoer als **onwaar** geïnterpreteerd. Waarden die niet Booleaans zijn kunnen niet rechtstreeks daar worden ingevoerd waar Booleaanse waarden worden verwacht. Het is echter wel mogelijk (maar niet raadzaam) om een waarde die niet Booleaans is in een variabele op te slaan en deze dan in de voorwaardeninvoer in te voegen. Deze methode wordt niet aanbevolen en het gedrag kan in toekomstige versies van ROBO Pro Coding veranderen.

#### Waarden

Een afzonderlijk blok met een dropdown-lijst, die of **waar** of **onwaar** aangeeft, kan worden gebruikt om een Booleaanse waarde op te vragen:

#### Vergelijkingsoperatoren

Er zijn zes vergelijkingsoperatoren. Aan iedere vergelijkingsoperator worden twee invoeren (normaal gesproken twee getallen) overgedragen en de vergelijkingsoperator retourneert de melding **waar** of **onwaar**, afhankelijk hoe de invoeren met elkaar worden vergeleken.

[![image-1623518116706.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-feisckwd.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116706.png)[![image-1623518117182.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-hicczqjn.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518117182.png)

[![image-1623518116894.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-lnryusnd.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116894.png)[![image-1623518116802.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-01ehfvu9.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116802.png)

[![image-1623518116985.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-booqkiqp.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116985.png)[![image-1623518166030.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-wfiqxn7y.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518166030.png)

De zes operatoren zijn: gelijk aan, niet gelijk aan, kleiner dan, groter dan, kleiner dan of gelijk aan, groter dan of gelijk aan.

#### Logische operatoren

Het **en**-blok retourneert dan en alleen dan de melding **waar**, wanneer zijn beide ingangswaarden waar zijn.

[![Bild8.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/oGTbild8.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/oGTbild8.PNG)

Het **of**-blok retourneert de melding **waar**, wanneer minimaal een van zijn beide ingangswaarden waar is.

[![Bild9.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/gp8bild9.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/gp8bild9.PNG)

#### niet

Het **niet**-blok zet zijn Booleaanse invoer om in het tegendeel. Bijvoorbeeld is het resultaat van:

[![Bild10_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild10-n.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild10-n.PNG)

**onwaar**.

Wanneer niets wordt ingevoerd wordt de waarde **waar** aangenomen, zodat het volgende blok de waarde **onwaar** oplevert:

[![Bild11_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild11-n.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild11-n.PNG)

Er wordt echter niet geadviseerd om niets in te voeren.

#### trio-operator

De trio-operator gedraagt zich als een miniatuur-**wanneer-anders**-blok. Hij neemt drie ingangswaarden op, waarbij de eerste ingangswaarde de te testen Booleaanse voorwaarde is, de tweede ingangswaarde de waarde die geretourneerd moet worden, wanneer de test als **waar** wordt gezien en de derde ingangswaarde is de waarde die moet worden geretourneerd wanneer de test als onwaar wordt gezien. In het onderstaande voorbeeld wordt de variabele **kleur** op rood gezet, wanneer de variabele **x** minder is dan 10, in het andere geval wordt de variabele **kleur** op groen gezet.

[![Bild12_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild12-n.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild12-n.PNG)

Een trioblok kan altijd door een **wanneer-anders**-blok worden vervangen. De onderstaande twee voorbeelden zijn precies gelijk.

[![Bild13_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild13-n.PNG) ](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild13-n.PNG)

[![Bild14_n.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild14-n.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild14-n.PNG)