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