# Verwerking



# 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)

# Loops

Het bereik "Besturing" bevat blokken die aansturen of andere blokken, die in hun inhoud zijn opgenomen, worden uitgevoerd.???? Er zijn twee soorten besturingsblokken: [**wanneer-anders**-blokken](https://docs.fischertechnik-cloud.com/books/robo-pro-coding/page/bedingungen "Voorwaarden") (die op een eigen pagina beschreven worden) en blokken die aansturen hoe vaak de inhoud moet worden uitgevoerd. De laatst worden loops genoemd, omdat hun inhoud, ook loop-systeem of systeem genaamd, (mogelijkerwijs) meerdere malen worden herhaald. Iedere doorloop van een loop wordt als iteratie (herhaling) omschreven.

### Blokken voor het aanmaken van loops

#### **permanent herhalen**

Het blok **permanent herhalen** voert de code in zijn systeem net zolang uit tot het programma eindigt.

#### **herhaal**

Het blok **herhaal** voert de code in zijn systeem net zo vaak uit als aangegeven. Het volgende blok geeft bijvoorbeeld tien keer "Hallo!" uit:

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

#### **herhaal-net zolang**

Stel jezelf een spelletje voor waarbij een speler een dobbelsteen werpt en alle geworpen waarden bij elkaar optelt zolang som lager is dan 30. De onderstaande blokken implementeren dit spel:

1. een variabele genaamd **in totaal** bevat een beginwaarden van 0.
2. De loop begint met een controle of **in totaal** minder is dan 30. Zo ja, dan worden de blokken in het systeem doorlopen.
3. Er wordt een toevalsgetal in een gebied van 1 tot 6 gegenereerd (om een worp met de dobbelsteen te simuleren) en in een variabele genaamd **geworpen** opgeslagen.
4. Het geworpen getal wordt aangegeven.
5. De variabele **in totaal** wordt met de **geworpen** waarde verhoogd.
6. Wanneer het einde van de loop is bereikt gaat de besturing terug naar stap 2.

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

Nadat de loop is beëindigd worden alle opeenvolgende blokken (niet weergegeven) doorlopen. In het voorbeeld eindigt de loop-doorloop nadat een bepaald aantal toevalsgetallen in het bereik van 1 tot 6 zijn uitgegeven en de variabele **in totaal** heeft dan als waarde de som van deze getallen, die tenminste 30 moet zijn.

#### **herhaal-tot**

**herhaal net zolang**-loops herhalen hun systeem, **net zolang** tot aan een voorwaarde is voldaan. **herhaal tot**-loops zijn identiek met dat verschil dat zij hun systeem net zolang herhalen, **tot** aan een bepaalde voorwaarde is voldaan. De onderstaande blokken zijn gelijkwaardig aan het voorgaande voorbeeld omdat de loop draait tot **in totaal** hoger of gelijk aan 30 is.

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

#### **tellen-van-tot**

Bij de **tellen-van-tot**-loop verhoogt een variabele de waarde, beginnend met een eerste waarde, eindigend met een tweede waarde en in stappen van een derde waarde, waarbij het systeem voor elke waarde van de variabele eenmaal wordt uitgevoerd. Het volgende programma geeft bijvoorbeeld de getallen 1, 3 en 5 uit.

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

Zoals beide volgende loops laten zien, die elk de getallen 5, 3 en 1 uitgeven, kan deze waarde hoger zijn dan de tweede. Het gedrag is hetzelfde, ongeacht of het incrementele bedrag (derde waarde) positief of negatief is.

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

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

#### **voor allemaal**

Het blok **voor allemaal** is vergelijkbaar met de **tellen-van-tot**-loop, behalve dat hij in plaats van de loop-variabele in een numerieke volgorde de waarden uit een lijst een voor een gebruikt. Het volgende programma geeft elk element uit de lijst "alfa", "beta", "gamma" uit:

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

### Loop-afbreekblokken

De meeste loops worden net zolang doorlopen tot aan de afbreekvoorwaarde (bij **herhaal**-blokken) is voldaan of totdat alle waarden van de loop-variabelen zijn aangenomen (bij **tellen met**- en **voor allemaal**-lussen). Twee zelden benodigde, maar soms nuttige blokken bieden extra mogelijkheden voor de besturing van het loop-gedrag. Ze kunnen bij iedere soort loop worden gebruikt, ook wanneer het onderstaande voorbeeld het gebruik bij de **voor iedereen**-loop laat zien.

#### **ga-door-met-volgende-iteratie**

**ga-door-met-volgende-iteratie** zorgt ervoor dat de resterende blokken in het loop-systeem worden overgeslagen en de volgende iteratie van de loop begint.

Het volgende programma geeft bij de eerste iteratie van de loop "alfa” aan. Bij de tweede iteratie wordt het blok **ga-door-met-volgende-iteratie** uitgevoerd, waardoor het uitgeven van "beta" wordt overgeslagen. Bij de laatste iteratie wordt "gamma" afgedrukt.

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

#### loop-afbreken

Het blok **loop-afbreken** biedt de mogelijk om een loop voortijdig te beëindigen. Het volgende programma geeft bij de eerste iteratie "alfa" weer en wordt bij de tweede iteratie uit de loop afgebroken wanneer de loop-variabele gelijk is aan "beta". Het derde punt in de lijst wordt nooit bereikt.

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

# Wiskunde

De blokken uit de categorie Wiskunde worden gebruikt om berekeningen te maken. De resultaten van de berekeningen kunnen bijvoorbeeld als waarden voor variabelen worden gebruikt. De meeste wiskunde-blokken hebben betrekking op algemene wiskundige berekeningen en moeten zelfverklarend zijn.

### Blokken

#### Getallen

Gebruik het cijferblok om een willekeurig getal in je programma in te voegen of een variabele van dit getal als waarde toe te wijzen. Dit programma wijst het getal 12 toe aan de variabele **leeftijd** :

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

#### Eenvoudige berekeningen

Dit blok heeft de structuur waarde-operator-waarde. Als operatoren zijn de rekenwijzen **+**, **-**, **÷**, **×** en **^** beschikbaar. De operator kan via het dropdown-menu worden geselecteerd. Hij kan rechtstreeks op getallen of ook op waarden van variabelen worden toegepast. Voorbeeld:

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

it blok geeft het resultaat 144 (12^2) weer.

#### Speciale berekeningen

Dit blok gebruikt de, via het dropdown-menu geselecteerde, rekenwijze op het daarachter geplaatste getal of op de waarden van de daarachter geplaatste variabele. De beschikbare berekeningen zijn:

- vierkantswortel,,
- bedrag,
- natuurlijke logaritme,
- decimale logaritme,
- exponentiële functie met de basis e (e^1, e^2,...),
- exponentiële functie met de basis 10 (10^1, 10^2,...),
- voortekenwissel (vermenigvuldiging met -1).

e is hierbij de wiskundige constante. Dit blok trekt de vierkantswortel uit 16 en zet de variabele **i** op het resultaat.

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

#### Trigonometrische functies

Dit blok werkt hetzelfde als het hiervoor beschreven blok, met dat verschil dat als berekeningen de trigonometrische functies sinus, cosinus, tangens en hun omkeerfuncties worden gebruikt. Het aangegeven getal of waarde van de aangegeven variabele wordt aldus in de in het dropdown-menu geselecteerde functie ingezet en het resultaat kan dan in het programma verder worden verwerkt. Bovendien is er nog het blok **arctan2 of X: ... Y: ...**, die het mogelijk maakt, met behulp van twee reële getallen (in te zetten als X en Y) een functiewaarde van de arctan2 in het bereik van 360° uit te laten geven.

#### Veel gebruikte constanten

Dit blok werkt net als het cijferblok, alleen wordt hier het getal niet zelf aangegeven. In plaats daarvan zijn veel gebruikte constanten (bijv. π) vooraf opgeslagen. De constante kan via het dropdown-menu worden geselecteerd.

#### Rest van een deling

Het blok **rest van ...** wordt gebruikt om de rest van een deling uit te geven. Dit programma wijst de variabele **Rest** van de rest van de deling 3:2, dus 1, toe:

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

#### Afronden

Met het blok **afronden ...** kan een aangegeven decimaal getal of de waarde van een aangegeven variabele op een heel getal worden afgerond. Daarbij kun je in het dropdown-menu uit drie opties kiezen:

- met "afronden" commercieel afgerond (bijv. 4,5 wordt 5)
- met "afronden naar boven" wordt afgerond (bijv. 5,1 wordt 6)
- met "afronden naar beneden" wordt afgerond (5,9 wordt bijv. 5).

#### Analyse van lijsten

Met het blok **... van de lijst** kun je

- met "totaal" het totaal van alle waarden in een lijst,
- met "min" de laagste waarde van een lijst,
- met "max" de hoogste waarde van een lijst,
- met "gemiddelde waarde" de gemiddelde waarde van alle waarden in een lijst,
- met "mediaan" de mediaan van een lijst,
- met "modale waarde" de vaakst voorkomende waarde in een lijst,
- met "standaardafwijking" de standaardafwijking van alle waarden in een lijst,
- met "toevalswaarde" een toevallige waarde uit een lijst

laten uitgeven. Al deze opties kun je via het dropdown-menu van het blok selecteren.

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

#### De invoerwaarde beperken

Het blok **beperken ... van ... tot ...**maakt het mogelijk om de invoerwaarden tot een bepaalde interval te beperken. Voordat een invoerwaarde verder worden verwerkt, wordt getest of deze binnen een vastgelegde interval ligt. Er zijn drie opties hoe een ingevoerde waarde wordt gebruikt:

- De waarde valt binnen de interval, wordt dus onveranderd doorgegeven.
- De waarde ligt onder de onderste grens van de interval, dus wordt deze onderste grens doorgegeven.
- De waarde ligt boven de bovenste grens van de interval, dus wordt deze bovenste grens doorgegeven.

In dit voorbeeld wordt het blok gebruikt om de waarde van de variabele **toerental** tot de door de motor ondersteunde toerentallen te beperken:

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

#### Toevallige waarden genereren

De beide blokken **toevallig getal van ... tot...** en **toevallige breuk** geven een toevallige waarde uit. Daarbij geeft het **toevallige getal van ... tot...- blok** een getal uit de gedefinieerde interval uit. Het blok **toevallige breuk** geeft daarentegen een waarde tussen 0,0 (ingesloten) en 1,0 (uitgesloten) uit.

# Teksten

Voorbeelden voor teksten zijn:

"Ding 1"  
"12. maart 2010"  
"" (lege tekst)  
Tekst kan letters (groot of klein geschreven), getallen, leestekens, andere symbolen en spaties bevatten.

### Blokken

#### Opstellen van tekst

Het onderstaande blok genereert de tekst "Hallo" en slaat deze op in de variabelen onder **Groet:**

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

Het blok **stel tekst op vanuit** combineert de waarde van de variabele **Groet** en de nieuwe tekst "wereld" tot de tekst"Hallowereld". Let erop dat er tussen de beide teksten geen spatie staat, omdat in beide oorspronkelijke teksten ook geen spatie stond.

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

Om het aantal tekstinvoeren te verhogen moet je het (+)-symbool aanklikken. Om de laatste invoer te verwijderen moet je het (-)-symbool aanklikken.

#### Tekst wijzigen

Het blok **bij ... toevoegen** voegt de aangegeven tekst aan de aangegeven variabele toe. In dit voorbeeld verandert hij de waarde van de variabele **Groet** van "Hallo" in "Hallo, daar!":

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

#### Lengte van de tekst

Het blok **lengte van** telt het aantal tekens (letters, getallen, enz.) die in een tekst zitten. De lengte van "Wij zijn #1!" is 12, en de lengte van de lege tekst is 0.

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

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

#### Controleren op lege tekst

Het component **is leeg** controleert of de aangegeven tekst leeg is (de lengte 0 heeft). Het resultaat is in het eerste voorbeeld **waar** en in het tweede voorbeeld **onwaar**.

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

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

#### Zoeken naar tekst

Deze blokken kunnen worden gebruikt om te controleren of een tekst in een andere tekst voorkomt en zo ja, waar deze voorkomt. Zo wordt bijvoorbeeld gevraagd wanneer voor het eerst een "a" in "Hallo" voorkomt, het resultaat is 2.

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

Hier wordt gevraagd wanneer voor het laatst een "a" in "Hallo” voorkomt, wat eveneens een 2 oplevert:

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

Ongeacht of het eerst of laatst voorkomende wordt gekozen, levert dit blok het resultaat 0 op, aangezien "Hallo" geen "z" bevat.

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

#### Extraheren van tekst

##### Extraheren van een afzonderlijk teken

Dit geeft "b", de tweede letter in "abcde":

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

Dit geeft "d", de voorlaatste letter in "abcde":

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

Dit geeft "a", de eerste letter in "abcde":

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

Dit geeft "e", de laatste letter in "abcde":

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

Dit bevat de 5 letters in "abcde" met dezelfde waarschijnlijkheid:

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

Geen van hen verandert de tekst van waaruit wordt geëxtraheerd.

#### Extraheren van een tekstgebied

Met het blok **in tekst ... lever tekenketting** kan een tekstgebied worden geëxtraheerd, dat hetzij met:

- letter #
- letter # vanaf einde
- eerste letter

start en met:

- letter #
- letter # vanaf einde
- laatste letter

eindigt.

In het volgende voorbeeld wordt "abc" geëxtraheerd:

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

#### Aanpassen van groot/klein schrijven van de tekst

Dit blok genereert een versie van de invoertekst die hetzij

- GROOT GESCHREVEN (alle letters als hoofdletters) of
- klein geschreven (alle letters zijn klein geschreven) of
- substantief (eerste letter hoofdletter, alle andere letters klein geschreven).

Het resultaat van het volgende blok is "HALLO":

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

Dit is niet van toepassing op niet-alfabetische tekens. Let erop dat dit blok op tekst in talen zonder groot- en klein geschreven letters, zoals bijv. het Chinees, niet werkt.

#### Trimmen (verwijderen) van spaties

Het volgende blok verwijdert, afhankelijk wat in het dropdown-menu (klein driehoekje) wordt ingesteld, spaties:

- aan het begin van de tekst
- aan het einde van de tekst
- aan beide kanten van de tekst

Het resultaat van het volgende blok is "Hi jij":

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

Dit heeft geen invloed op spaties middenin de tekst.

#### Tekst uitvoeren

Het blok **geeft uit** zorgt er voor dat de invoerwaarde op het consolevenster wordt weergegeven:

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

In geen geval wordt het naar de printer gestuurd, zoals de naam misschien laat vermoeden.

#### Tekst weergeven met formattering

Met het blok **formatteer tekst** kunnen teksten met variabeleninhoud geformatteerd worden weergegeven. Daarbij worden alle wildcards **{}** in de tekst door de inhoud van de na de tekst bijgevoegde variabelen vervangen. Binnen de accolades kan een formattering worden aangegeven. De formattering **{:.1f}** geeft bijv. alleen de eerste decimaal achter de komma in de variabele **t** weer.

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

# Lijsten

Net als in de alledaagse taal staat ook in ROBO Pro Coding een lijst van een geordende verzameling van elementen, zoals bijv. een "To-do"-lijst of een inkooplijst. Elementen in een lijst kunnen van een willekeurig type zijn en dezelfde waarde kan meerdere malen in een lijst voorkomen.

### Opstellen van een lijst

#### **maak lijst met**

Met het blok **maak lijst met** kun je de beginwaarden in een nieuwe lijst aangeven. In dit voorbeeld wordt een lijst van woorden gemaakt en in een variabele genaamd **Letters** opgeslagen.

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

Wij omschrijven deze lijst als \["alfa", "beta", "gamma"\].

Dit geeft het opstellen van een lijst van **getallen** weer:

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

Zo wordt een lijst van **kleuren** opgesteld:

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

Het is minder gebruikelijk, maar het is mogelijk om een lijst met waarden van verschillende te maken:

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

#### Aantal ingangen veranderen

Om het aantal ingangen te veranderen, moet je op het tandwielsymbool klikken of deze aanraken. Daardoor wordt een nieuwe venster geopend. Je kunt subblokken van elementen van de linker kant van het venster naar het lijstenblok aan de rechter kant trekken, om een nieuwe ingang toe te voegen.

Terwijl het nieuwe element in dit voorbeeld onderaan is toegevoegd, kan het overal worden toegevoegd. Op vergelijkbare wijze kunnen ongewenste subblokken van elementen uit het lijstenblok naar links worden getrokken.

#### Lijst met element opstellen

Met het blok **stel lijst met element op** kun je een lijst opstellen die het aangegeven aantal kopieën van een element bevat. De onderstaande blokken zetten bijvoorbeeld de variabele **woorden** op de lijst \["heel", "heel", "heel"\].

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

### De lengte van een lijst controleren

#### **is leeg**

De waarde van een **is leeg**-blok is **waar**, wanneer de invoer de lege lijst is en **onwaar**, wanneer het iets anders is. Is deze invoer **waar**? De waarde van het volgende blok zou **onwaar** zijn, omdat de variabele kleuren niet leeg is: Deze heeft drie elementen.

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

Let op de gelijkenis met het **is leeg**-blok voor tekst.

#### **Lengte van**

De waarde van het blok **lengte van** is het aantal elementen dat in de als invoer gebruikte lijsten is opgenomen. De waard van het volgende blok zou bijvoorbeeld 3 zijn, omdat **kleur** drie elementen heeft.

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

Let erop dat het blok **lengte van** aangeeft hoeveel elementen in de lijst zijn opgenomen en niet hoeveel verschillende elementen erin inzetten. Zo heeft bijvoorbeeld de volgende de waarde 3, hoewel **woorden** uit drie kopieën uit dezelfde tekst bestaat.

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

Let op de gelijkenis met het **lengte van**-blok voor tekst.

### Zoeken van elementen in een lijst

Deze blokken vinden de positie van een element in een lijst. Het volgende voorbeeld heeft de waarde 1, omdat het eerste voorkomen van "heel" aan het begin van de woordenlijst staat (\["heel", "heel", "heel"\]).

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

Het resultaat van de volgende is 3, omdat het laatste voorkomen van "heel" in **woorden** op positie 3 staat.

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

Wanneer het element nergens in de lijst voorkomt, is het resultaat van de waarde 0, zoals in dit voorbeeld:

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

Deze blokken werken hetzelfde als de blokken voor het vinden van letters in tekst.

### Openen van elementen in een lijst

#### Openen van een afzonderlijk element

Denk aan de definitie van de lijst **kleuren**:

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

Het volgende blok bevat de kleur blauw, omdat dat het tweede element in de lijst is (vanaf links beginnend te tellen):

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

Deze bevat groen omdat dat het tweede element is (vanaf rechts beginnend te tellen):

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

Deze bevat het eerste element, rood:

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

Deze bevat het laatste element, geel:

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

Dit selecteert toevallig een element uit de lijst, waarbij met dezelfde waarschijnlijkheid een van de elementen, rood, blauw, groen of geel wordt weergegeven.

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

#### Openen en verwijderen van een element

Via het dropdown-menu wordt het blok **uit lijst ... openen** in het blok **uit lijst ... openen** **en verwijderen** gewijzigd die dezelfde weergave levert, maar ook de lijst verandert:

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

Dit voorbeeld zet de variabele **eerste letter** op "alfa" en laat de resterende letters (\["beta", "gamma"\]) in de lijst.

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

#### Een invoer verwijderen

Wanneer je in het dropdown-menu **verwijderen** kiest, verdwijnt de lip links van het blok:

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

Daarmee wordt het eerste element uit **letters** verwijderd.

#### Een sublijst openen

Het blok **uit lijst ... Sublijst openen** lijkt op het blok in **uit lijst ... openen** met dat verschil dat deze een uittreksel van een sublijst maakt en niet een afzonderlijk element. Er zijn meerdere opties, om het begin en het einde van de sublijst aan te geven:

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

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

In dit voorbeeld wordt een nieuwe lijst **eerste letter** opgesteld. Deze nieuwe lijst heeft twee elementen: \["alfa", "beta"\].

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

Let erop dat dit blok de oorspronkelijke lijst niet verandert.

### Toevoegen van elementen aan een lijst

#### Elementen van een lijst verwijderen

Het blok **in lijst ... vervang** vervangt het element op een bepaalde plaats in een lijst door een ander element.

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

De betekenis van de afzonderlijke dropdown-opties vindt je in het vorige hoofdstuk.

Het volgende voorbeeld zorgt voor twee dingen:

1. De lijst **woorden** wordt met 3 elementen opgesteld: \["heel", "heel", "heel"\].
2. Het derde element in de lijst wordt door "goed" vervangen. De nieuwe waarde van **woorden** is \["heel", "heel", "goed"\]

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

#### Elementen op een bepaalde plaats in een lijst toevoegen

Het blok **in lijst ... toevoegen bij** wordt via het dropdown-menu van het **in lijst ... vervang**-blok geopend:

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

Deze voegt een nieuw element op de aangegeven plaatst in de lijst toe, en wel voor het element, dat eerder op deze plaats stond. Het volgende voorbeeld (dat op een eerder voorbeeld is gestoeld) doet drie dingen:

1. De lijst **woorden** wordt met 3 elementen opgesteld: \["heel", "heel", "heel"\].
2. Het derde element in de lijst wordt door "goed" vervangen. De nieuwe waarde van **woorden** is daarmee \["heel", "heel", "goed"\].
3. Het woord "Wees" wordt aan het begin van de lijst toegevoegd. De uiteindelijke waarde van **woorden** is daarmee \["Wees", "heel", "heel", "goed"\].

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

### De tekensketting verdelen en in lijsten samenvoegen

#### Een lijst vanuit een tekst opstellen.

De bouwsteen **stel lijst op vanuit tekst** knipt de aangegeven tekst met behulp van een begrenzingsteken in delen:

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

In het bovenstaande voorbeeld wordt een nieuwe lijst geretourneerd, die drie tekststukken bevat: "311", "555" en "2368".

#### Een tekst vanuit een lijst opstellen.

De bouwsteen **stel een tekst op uit lijst** voegt een lijst met behulp van een scheidingsteken tot één enkele tekst samen:

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

In het bovenstaande voorbeeld wordt een nieuwe tekst met de waarde geretourneerd: "311-555-2368".

### Soortgelijke blokken

#### Afdrukken van een lijst

Met de bouwsteen **afdrukken** in de categorie Tekst kun je lijsten afdrukken. Het resultaat van het onderstaande programma is de afgebeelde console-afdruk:

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

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

#### Iets voor elke element in een lijst uitvoeren

Het blok **voor-iedereen** in de categorie Besturing voert een handeling voor elk element in de lijst uit. Dit blok drukt bijvoorbeeld elk element in de lijst apart af:

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

Daardoor worden de elementen niet uit de oorspronkelijke lijst verwijderd.

Zie ook de voorbeelden voor de [loop-afbreekblokken](https://docs.fischertechnik-cloud.com/books/robo-pro-coding/page/schleifen "Loops").

# Gebruik

De categorie Gebruik bevat bij ROBO Pro Coding de onderstaande soorten blokken:

- kleurkeuze
- wachten
- Python Code
- starten
- uitvoeren van functie

#### kleurkeuze

Dit blok dient als invoerwaarde, wanneer naar een kleur wordt gevraagd (bijvoorbeeld voor de kleurcompensatie door de camera). Door de kleur aan de klikken of aan te raken kan uit een kleurenpalet één van de 70 kleuren worden geselecteerd.

#### wachten

##### Wachten tot de tijd verstreken is

Het blok **wacht \[\] ...** voorkomt dat het programma gaat draaien voordat de wachttijd is verstreken. Daarbij kan in het dropdown-menu (kleine driehoekje) de tijdeenheid en in het invoerveld daarachter de gewenste lengte van de pauze worden gekozen.

##### Wachten met voorwaarde

Bij het blok **wachten tot** is de pauze niet gekoppeld aan de tijd maar of er aan een voorwaarde wordt voldaan (bijvoorbeeld of een toets is ingedrukt) De voorwaarde wordt aan het **wachten** **tot**-blok gehangen.

#### Python Code

Wanneer je een bestaande Python-code in ROBO Pro Coding wilt integreren kun je die in het **Python Code**-blok toevoegen. Het programma voert dan alles uit wat in het blok in Python is geschreven.

#### starten

Ook het blok **start wanneer** is aan een voorwaarde gekoppeld. Pas wanneer aan deze voorwaarde is voldaan wordt het in het bloksysteem staande programma gestart.

#### Uitvoeren van functie

Met het **voer functie ... in een thread uit** kan de geselecteerde functie in een afzonderlijke thread worden uitgevoerd. Deze maatregel kan er in vele gevallen voor zorgen dat een programma steeds op invoeren kan reageren en sneller wordt uitgevoerd.

# Variabelen

Wij gebruiken het begrip variabele zo zoals in de wiskunde en andere programmeertalen wordt gebruikt: een benoemde waarden die kan worden veranderd (gevarieerd). Variabelen kunnen op verschillende manieren worden opgesteld.

- Sommige blokken zoals **tel met** en **voor iedereen** gebruiken een variabele en definiëren hun waarden. Een traditioneel informaticabegrip voor dergelijke variabelen luidt loopvariabelen.
- Gebruikersgedefinieerde functies (ook "procedures" genoemd) kunnen invoeren definiëren, waardoor variabelen worden gegenereerd, die alleen binnen deze functie kunnen worden gebruikt. Dergelijke variabelen worden traditioneel als "parameters" of "argumenten" aangeduid.
- Gebruikers kunnen te allen tijde variabelen met het **instel**-blok wijzigen. Deze worden traditioneel als "algemene variabelen" aangegeven. Zij kunnen overal in de code van ROBO Pro Coding worden gebruikt.

#### Dropdown-menu

Wanneer je op het dropdown-symbool (kleine driehoekje) op een variabele klikt, verschijnt het onderstaande menu:

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

Het menu biedt onderstaande mogelijkheden.

- de weergave van de namen van alle beschikbare, in het programma gedefinieerde variabelen.
- "Variabele hernoemen...", dat wil zeggen het wijzigen van de naam van deze variabele, ongeacht waar deze in het programma verschijnt (wanneer deze optie wordt gekozen wordt de vraag om een nieuwe naam geopend)
- "Variabele wissen...", dat wil zeggen dat alle blokken worden verwijderd waar deze variabele naar verwijst, ongeacht waar deze in het programma voorkomen.

### Blokken

#### Vastleggen

Het **instel**-blok wijst een waarde aan een variabele toe en maakt de variabele aan, mocht deze nog niet bestaan. Als voorbeeld wordt zo de waarde van de variabele **leeftijd** op 12 gezet:

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

#### Openen

Het **open**-blok levert de in een variabele opgeslagen waarden, zonder deze te veranderen:

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

Het is mogelijk, maar een slecht idee, om een programma te schrijven, waarin een **open**-blok voorkomt zonder een dienovereenkomstig instel-blok.

#### Wijzigen

Het **wijzig**-blok voegt een getal aan een variabele toe.

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

Het **wijzig**-blok is een afkorting voor de volgende constructie:

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

#### Voorbeeld

Bekijk de onderstaande voorbeeldcode eens:

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

De eerste rij blokken genereert een variabele genaamd **leeftijd** en **stelt** de beginwaarde in op het getal 12. De tweede rij blokken **opent** dan de waarde 12 , telt daar 1 bij op en slaat het totaal (13) in de variabelen op. In de laatste regel wordt de volgende melding getoond: "Hartelijk gefeliciteerd! Je bent nu 13".

# Functies

Functies hebben ten doel om delen van de code opnieuw bruikbaar te maken en daardoor de code in zijn geheel te structureren. Wanneer een functieblok wordt gevuld, verschijnt in het functiemenu een nieuwe blok dat dezelfde naam draagt als juist dit functieblok. Het is nu mogelijk om in het hoofdprogramma alleen nog het blok met de naam van de functie te gebruiken. Wanneer het programma wordt doorlopen, leidt dit blok naar de code in de gelijknamige functie en werkt deze af.

#### Enkelvoudige functie

Met het enkelvoudige blok kan een functie wordt ingesteld die de in het tekstveld ingevoerde naam draagt. De functie kan willekeurig veel variabelen bevatten die met behulp van het tandwielsymbool kunnen worden toegevoegd. De functie **ouder worden** telt 1 op bij de variabele **leeftijd** op:

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

De functie kan in het hoofdprogramma worden gebruikt:

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

#### Functie met geretourneerde waarde

Dit blok maakt het mogelijk om een functie met geretourneerde waarde op te stellen. Deze geretourneerde waarde kan in het hoofdprogramma verder worden gebruikt. Hier een voorbeeld:

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