Voorwaardelijke inhoud
Een blok Voorwaardelijke inhoud (type CONDITIONAL) laat een les zich aanpassen aan de cursist. Het groepeert blokken in takken, en elke tak heeft een voorwaarde over wat de cursist deed in een simulatie van dezelfde inhoud: hoeveel punten hij haalde, bij welk einde hij uitkwam, een variabele die de simulatie bijhoudt. De cursist ziet de blokken van de eerste tak waarvan de voorwaarde klopt; klopt er geen, dan ziet hij de blokken van de laatste tak, Anders.
Typische toepassingen: een verdiepingstekst alleen voor wie slecht eindigde, een felicitatie voor wie het beste einde haalde, een andere vervolgstap afhankelijk van een beslissing.
Wat je eerst nodig hebt
Voorwaarden lezen simulaties, dus de inhoud heeft er minstens één nodig:
- Een blok Ingesloten code met een geüpload pakket dat voortgang of een cijfer verstuurt.
- Een simulatie-ID op dat blok, uniek in de inhoud (kleine letters, cijfers en
_, beginnend met een letter, bijvoorbeeldsim_u1). De voorwaarde verwijst met dit ID naar de simulatie. - Die simulatie moet buiten elke tak staan. Een simulatie binnen een tak kan niet worden genoemd en ook niet als Beoordeeld worden gemarkeerd (ze zou verborgen zijn en nooit afronden).
Opbouwen in de editor
Het blok maken
In het invoegvenster staat Voorwaardelijke inhoud in de familie Structuur. Het begint met één lege voorwaardetak, die pas kan kloppen als je de voorwaarde schrijft, en de tak Anders. Het wordt niet aangeboden vanaf het invoegpunt van een tak (er is maar één niveau), en ook niet in de editor van examens of banken.
Het kader en zijn takken
Op het canvas is het blok een kader. Bovenaan staan het label Voorwaardelijke inhoud en, tak per tak, de voorwaarde in gewone woorden (‘Tak 1: wordt getoond als sim_u1.trust groter dan of gelijk aan 3 is’). Daaronder staat een zone per tak: de voorwaardetakken in hun volgorde en Anders als laatste, elk met een label (Tak 1, Tak 2…, Anders) en zijn blokken.
- Tak toevoegen, onderaan het kader, voegt een voorwaardetak toe (maximaal 10).
- De kop van elke voorwaardetak heeft knoppen om hem omhoog of omlaag te zetten en hem te verwijderen. Herschikken verandert welke tak eerst wordt gecontroleerd; geen enkel blok verandert van tak.
- Een lege tak wordt gewoon verwijderd. Heeft hij blokken, dan vraagt de editor: Verwijderen met de blokken of Blokken bewaren; die blijven in de les direct na de voorwaardelijke inhoud staan en zijn altijd zichtbaar (ze gaan nooit naar een andere tak).
- Een lege tak toont ‘Deze tak heeft nog geen blokken’ en de knop Blok toevoegen. Elke tak heeft daarnaast een eigen invoegpunt.
Blokken erin zetten en eruit halen
- Door te slepen: zet een blok neer op een blok van een tak om het op die plek te zetten, of op de zone van een tak (ook een lege) om het aan het eind te zetten. Als je het kader sleept, verplaats je de voorwaardelijke inhoud met al zijn takken.
- Zonder slepen (met het toetsenbord of op smalle schermen): in de werkbalk van het blok toont Verplaatsen naar… elke tak van elke voorwaardelijke inhoud in de les (met nummer als er meer zijn) en, vanuit een tak, Uit de voorwaardelijke inhoud, dat het blok er direct achter zet. Het blok komt aan het eind van de tak.
- Omhoog en Omlaag verplaatsen een blok binnen zijn tak. De blokken van een tak worden per tak genummerd: ‘Acties voor blok 2 in tak 1’.
Verwijderen, dupliceren en sjablonen
- Blok verwijderen op een voorwaardelijke inhoud met blokken vraagt: Verwijderen met de blokken of Blokken bewaren (ze blijven in de les, op hun plek en altijd zichtbaar). Beide kun je terugdraaien met Ongedaan maken.
- Blok dupliceren dupliceert de voorwaardelijke inhoud met al zijn takken en blokken. Een blok dat je binnen een tak dupliceert, blijft in die tak.
- Als je blokken kiest voor een sjabloon of voor AI, neemt de voorwaardelijke inhoud zijn blokken mee; een blok uit een tak kies je niet los. Een sjabloon dat je vanuit een tak plakt, komt in die tak.
De voorwaarde van elke tak
Blok bewerken opent het paneel van de voorwaardelijke inhoud, met een deel per voorwaardetak:
- Het veld Voorwaarde van tak N, waarin je de voorwaarde schrijft (zie ‘Een voorwaarde schrijven’ verderop). Is ze niet te begrijpen, dan verschijnen eronder de reden en het teken waar het lezen stopte, bijvoorbeeld ‘Onverwachte ‘)’ bij teken 12’; anders de voorwaarde in gewone woorden, dezelfde als in de kop van het kader.
- De waarschuwingen van die tak (zie ‘Waarschuwingen’ hieronder).
- Een assistent die ze voor je schrijft. Kies de Simulatie (die van deze les en die van de andere lessen van de inhoud die buiten elke tak staan), de Variabele (die het pakket declareert, met hun type, en die uit het resultaat:
grade,score,maxScore,endingenkind), de Vergelijking en de Waarde (een selectievakje voor waar of onwaar, een getal, een tekst voorendingen een lijst metgood,mixedenbadvoorkind) en klik op Aan de voorwaarde toevoegen. Stond er al iets, kies dan eerst of het wordt verbonden met en (&&, beide moeten kloppen) of of (||, één is genoeg). Declareert het pakket zijn variabelen niet, dan kun je de naam zelf typen, met een waarschuwing dat die niet te controleren is. De assistent schrijft de vergelijking op de plek van je cursor in het veld (of in plaats van de geselecteerde tekst), laat de cursor er direct achter staan en geeft de focus terug; heeft het veld nog geen cursor gehad, dan voegt hij hem aan het einde toe.
Waarschuwingen
Wat ervoor zou zorgen dat een tak nooit wordt getoond, of dat een simulatie niet werkt, verschijnt als waarschuwing in het paneel en in Controles, met het label Inhoud. Waarschuwingen houden opslaan, exporteren of delen nooit tegen:
- geen enkele tak heeft blokken, ook ‘Anders’ niet;
- een tak heeft geen voorwaarde, of een die niet te begrijpen is;
- een voorwaarde leest een simulatie die niet in de inhoud staat (gebeurt bij kopiëren tussen inhouden) of een variabele die het pakket niet declareert;
- een voorwaarde leest variabelen van een simulatie waarvan het pakket zijn stand (
state) niet verstuurt; - een voorwaarde gebruikt een variabele met een type dat die bewerking niet toelaat, volgens wat het pakket declareert (bijvoorbeeld een waar/onwaar-variabele met een getal vergelijken);
- de simulatie staat in de leesvolgorde na de voorwaardelijke inhoud: als de cursist daar aankomt, heeft hij of zij die nog niet gespeeld;
- een beoordeelde simulatie staat in een tak, of een simulatie in een tak wordt door een voorwaarde gelezen.
Een assistent die via MCP is verbonden, krijgt dezelfde waarschuwingen in warnings als hij het blok maakt, wijzigt of blokken verplaatst.
Een voorwaarde schrijven
Een voorwaarde is een korte uitdrukking die waar of onwaar is. Ze leest variabelen, geschreven als simulatie.naam:
sim_u1.reused
sim_u1.trust >= 3
sim_u1.kind == "good" && sim_u1.grade >= 70
!(sim_u1.reused) || sim_u2.ending == "agreement"
Variabelen
| Naam | Wat ze bevat | Type |
|---|---|---|
grade | Het cijfer (0–100) dat het pakket verstuurde | getal |
score | De score die het pakket verstuurde | getal |
maxScore | De maximumscore | getal |
ending | Het ID van het bereikte einde | tekst |
kind | good, mixed of bad | tekst |
| elke andere naam | Een variabele die het pakket in zijn status bijhoudt (bijvoorbeeld trust) | getal of waar/onwaar |
grade, score, maxScore, ending en kind zijn gereserveerd: ze lezen altijd het laatste resultaat dat het pakket verstuurde. De overige namen zijn de variabelen die het pakket in zijn slxd-embed.json declareert; vraag wie het pakket bouwde welke het biedt.
Operatoren
| Wat | Hoe | Voorbeeld |
|---|---|---|
| Getallen vergelijken | < <= > >= | sim_u1.trust >= 3 |
| Gelijk / ongelijk | == != | sim_u1.kind != "bad" |
| En | && | sim_u1.trust >= 3 && sim_u1.reused |
| Of | || | sim_u1.kind == "good" || sim_u1.grade > 80 |
| Niet | ! | !sim_u1.reused |
| Optellen / aftrekken | + - | sim_u1.score + sim_u2.score >= 10 |
| Groeperen | ( ) | (a.x || b.y) && c.z |
- Getallen schrijf je met een optioneel decimaalpunt (
3,2.5), zonder exponent. Negatieve getallen gebruiken-. - Teksten staan tussen dubbele aanhalingstekens:
"good". Daarbinnen zijn alleen\"en\\bijzonder, en er zijn geen regeleinden. trueenfalsezijn beschikbaar als waarden.- Er zijn geen omzettingen: je kunt een getal niet met een tekst vergelijken, en een tekst vergelijk je alleen met een andere tekst, met
==of!=.sim_u1.trust == "3"is een fout. - Vergelijkingen koppel je niet aaneen:
1 < sim_u1.trust < 3is een fout; schrijfsim_u1.trust > 1 && sim_u1.trust < 3. &&en||stoppen zodra het antwoord vaststaat, zoals in JavaScript.- De hele uitdrukking moet waar of onwaar zijn.
Grenzen
Een voorwaarde is hoogstens 500 tekens lang. Schrijf je iets onbegrijpelijks, dan meldt de editor bij welk teken hij stopte.
Meerdere takken en „Anders”
Een blok Voorwaardelijke inhoud kan tot 10 takken met een voorwaarde hebben, plus de tak Anders, die er altijd is en geen voorwaarde heeft. De takken worden op volgorde gecontroleerd en de eerste waarvan de voorwaarde klopt wint; zet de meest specifieke dus eerst:
sim_u1.kind == "good" && sim_u1.trust >= 3→ felicitatiesim_u1.kind == "good"→ korte positieve feedback- Anders → verdieping
Blokken binnen een tak zijn gewone blokken: van elk type en in elk aantal. Regels om te onthouden:
- Eén niveau: een blok Voorwaardelijke inhoud kan niet in de tak van een ander staan.
- Een voorwaarde kan tot 8 verschillende simulaties noemen.
- Een tak mag leeg zijn.
Nooit in examens of vragenbanken. Voorwaardelijke inhoud is alleen beschikbaar in gewone lessen. De editor biedt het niet aan in examens en banken, een les die het bevat kan niet in een examen worden omgezet of naar een bank worden verplaatst, en via MCP geldt hetzelfde.
Wat de cursist ziet
De cursist ziet alleen de blokken van de tak die geldt, op hun plaats, alsof het blok Voorwaardelijke inhoud er niet was. De andere takken bestaan niet voor hem: ze tellen niet mee voor de voortgang, houden hem niet tegen en versturen geen xAPI.
Enkele details:
- Een tak kan pas kloppen als de simulaties die hij leest zijn afgerond. Een simulatie is afgerond wanneer haar pakket meldt dat het klaar is (
complete, of een eindstatus). Tot dan zijn die voorwaarden onwaar en ziet de cursist de volgende tak of Anders. Bestaat een variabele nog niet of heeft ze een ander type, dan is die voorwaarde ook onwaar. - Het wordt live opnieuw beoordeeld. Speelt de cursist een simulatie opnieuw en verandert de uitkomst, dan wordt de les bijgewerkt. Schermlezers krijgen een beleefde melding dat de inhoud is veranderd; de focus verplaatst niet.
- Wat al gedaan is, blijft behouden. Verandert de zichtbare tak boven de plek waar de cursist is, dan moet een openstaande blokkering in de nieuwe tak nog steeds worden vervuld, en wat al voltooid was blijft voltooid.
- Bij terugkeer (SCORM): heeft de cursist de les verlaten binnen een tak die niet meer geldt, dan gaat hij verder aan het begin van de tak die wel geldt, of bij het volgende blok als die leeg is.
- De variabelen van het pakket worden samen met de voortgang van de cursist bewaard. Past de voortgang niet in de ruimte van de LMS, dan beschermt Creator de variabelen die voorwaarden lezen.
Voorbeeld bekijken
Auteurs moeten alle takken kunnen zien, niet alleen die bij hun testronde hoort.
- In het voorbeeld, in een versie (snapshot) en in de review heeft de balk de schakelaar Alle takken tonen. Staat die aan, dan toont de speler alle takken na elkaar, in leesvolgorde: de takken van het voorwaardelijke blok op volgorde, dan Anders, zonder melding. In de review zet het openen van een opmerking bij een les met voorwaardelijke inhoud hem aan.
- Alleen in deze weergave staat voor elke tak een label met de samenvatting van zijn voorwaarde in woorden ("Tak 1: getoond als sim_u1.trust minstens 3 is"), of Anders, en de tak die de cursist nu zou zien heeft nog een regel die dat zegt. De cursist ziet deze labels nooit.
- Deellinks hebben de schakelaar niet: ze tonen wat de cursist ziet.
De pdf is naslagmateriaal zonder cursist en drukt daarom alle takken af, in leesvolgorde. Vóór het eerste blok van elke tak staat het label „Getoond als: …” met de voorwaarde in woorden, in de taal van de cursus (bijvoorbeeld sim.trust groter dan of gelijk aan 3 is en sim.reused waar is; kan ze niet worden gelezen, precies zoals je die schreef), en „Getoond als geen van de bovenstaande voorwaarden geldt” vóór Anders. Lege takken krijgen geen label.
Fouten in voorwaarden begrijpen
Het paneel markeert een voorwaarde die niet te begrijpen is met de reden en het teken waar het lezen stopte, en waarschuwt voor een simulatie die niet in de inhoud bestaat. Schrijft een assistent het blok via MCP, dan wordt de hele voorwaarde bovendien getoetst aan de bovenstaande regels voordat er iets wordt opgeslagen. Typische fouten:
| Probleem | Voorbeeld | Oplossing |
|---|---|---|
| Tekst met een getal vergeleken | sim_u1.ending == 3 | sim_u1.ending == "agreement" |
| Getal met een tekst vergeleken | sim_u1.trust == "3" | sim_u1.trust == 3 |
| Waar/onwaar-variabele met een getal vergeleken | sim_u1.reused == 3 | sim_u1.reused |
!, && of || op een getal, of waar en onwaar ordenen | !sim_u1.trust | sim_u1.trust == 0 |
! op een tekst | !sim_u1.kind | sim_u1.kind != "bad" |
| Aaneengeschakelde vergelijking | 1 < sim_u1.trust < 3 | sim_u1.trust > 1 && sim_u1.trust < 3 |
| Niet waar of onwaar | sim_u1.trust + 1 | sim_u1.trust + 1 > 3 |
| Simulatie die niet bestaat of binnen een tak staat | sim_x.trust | gebruik het ID van een simulatie buiten elke tak |
Declareert het pakket het type van zijn variabelen (getal of waar/onwaar), dan controleren het paneel en de MCP ook dat je ze met dat type gebruikt: sim_u1.reused == 3 is een fout als reused waar/onwaar is. Een variabele die het pakket niet declareert, kan niet worden gecontroleerd.
Volgende stappen
- Insluitpakketten en simulaties: hoe een pakket zijn status en cijfer verstuurt.
- Content-bricks: het blok Ingesloten code en zijn beoordeling.
- MCP-server: voorwaardelijke inhoud maken met een assistent.