Vyhodnocení krátké tvořené odpovědi

Odpovědi v úloze Krátká tvořená odpověď lze analyzovat buďto jednoduchým způsobem (který je šířeji popsán na stránce věnované Vytváření krátké tvořené odpovědi) anebo s využitím regulárních výrazů. Druhý způsob analýzy umožňuje pouze modul Přednáška, v Testu jej využít nelze.


Jednoduchá analýza

Ve výchozím nastavení se při kontrole odpovědi nerozlišují malá a velká písmena. V definici odpovědí je možno používat hvězdičku (*) jako zástupný znak. Nahrazuje libovolný počet znaků (nebo také žádný znak). Například výrazu "Long*" vyhoví odpovědi "longer", "longest" a "long".

Jestliže jedna z definovaných odpovědí obsahuje pouze "*" (jednu *), vyhoví jí libovolný řetězec. Obvykle se tento výraz používá jako poslední definovaná odpověď, která zachytí všechny odpovědi studentů. Porovnávání odpovědí probíhá v tom pořadí, v jakém jsou zobrazeny na obrazovce. Jakmile je nalezena shoda, proces porovnávání skončí a vrátí odpovídající výsledek (a reakci, pokud je připojena). Jestliže jsou tedy například jako odpovědi definovány řetězce Longest, Long* a * (v tomto pořadí), vložená odpověď "longer" vyhoví druhé definované odpovědi; třetí definovaná odpověď se potom nebere v úvahu, i když by jí vložená odpověď rovněž vyhověla.

Pokud je potřeba použít ve vkládané odpovědi hvězdičku (*), je nutné před ni vložit obrácené lomítko \*

Analýza pomocí regulárních výrazů

Tento systém pro analýzu odpovědí studentů je účinnější, ale také složitější. Úplný úvod do problematiky regulárních výrazů naleznete na stránkách rezeau.org. V češtině lze základní poučení nalézt např. na příslušné stránce Wikipedie, kde jsou uvedeny také další odkazy.

Systém pro analýzu odpovědí s využitím regulárních výrazů aktivujete zaškrtnutím políčka "Požívat regulární výrazy" (nachází se pod oknem HTML editoru určeného pro vložení obsahu stránky s otázkou).

Správná odpověď shodující se s vzorcem regulárního výrazu

Není možné uvést zde všechny příklady širokých možností, které tento systém nabízí. Příklady zde uvedené jsou pouze ilustrační.

Příklad 1. Dejme tomu, že otázka zní "Jaké barvy má francouzská vlajka?". Do rámečku pro odpověď 1 napíšete tento regulární výraz: "je modrá, bílá(,| a) červená/i". Tomuto výrazu vyhovují všechny čtyři následující odpovědi studentů:

  • je modrá, bílá, červená
  • je modrá, bílá a červená
  • Je modrá, bílá, červená
  • Je modrá, bílá a červená

Upozornění: Ve výchozím nastavení se u regulárních výrazů rozlišují velká a malá písmena; abyste dosáhli opaku, je třeba na konec regulárního výrazu přidat parametr /i.

Příklad 2. Otázka: "What is blue, or red, or yellow?". Odpověď: "(|it's )a colou?r". Tomuto výrazu vyhovují odpovědi:

  • a colour
  • a color
  • it's a colour
  • it's a color

Poznámky: Úvodní části tohoto regulárního výrazu "(|it's )" vyhoví buď žádný znak, nebo řetězec "it's " (tj. "it's" a mezera). ? (otazník) znamená: počet výskytů předcházejícího znaku je 0 nebo 1; zde se zástupného znaku "?" používá ke kladnému vyhodnocení britského i amerického pravopisu.

Příklad 3. Otázka: "Uveďte anglické jméno zvířete složené ze tří písmen, jestliže prostředním písmenem je samohláska a". Odpověď: "[bcr]at". Tomuto výrazu vyhoví odpovědi: bat, cat a rat.

Zjišťování chybějících slov nebo řetězců

Regulární výrazy samy o sobě chybějící řetězce odhalit nemohou, a proto je třeba přidat do odpovědi jednoduchý kód, který se o to postará. Odpověď učitele, která začíná dvěma spojovníky, bude analyzovat odpověď studenta a zjišťovat, zda obsahuje následný řetězec či nikoli. Pokud řetězec je v odpovědi studenta obsažen, pokročí analýza k další otázce; pokud řetězec v odpovědi chybí, analýza se zastaví a zobrazí se odpovídající reakce.

Příklad 4.

  • Odpověď 2: --.*modr.*/i
  • Odpověď studenta: "červená a bílá"
  • Reakce 2: V odpovědi chybí barva oblohy!
  • Skok 2: tato stránka

Tečka (".") zde zastupuje libovolný znak a hvězdička ("*") znamená, že předcházející speciální znak se může libovolně opakovat. Regulární výraz uvedený v Odpovědi 2 tedy znamená: zkontroluj, zda se v odpovědi studenta vyskytuje řetězec "modr", jemuž může předcházet a po něm následovat libovolná sekvence znaků. Všimněte si prosím, že použití hvězdičky v jednoduché analýze a v systému regulárních výrazů se od sebe liší.

Příklad 5. Otázka: "Uveďte anglické jméno zvířete složené ze tří písmen, jestliže prostředním písmenem je samohláska a". Výraz v poli Odpověď: "--[b|c|r]". Reakce: "Vaše odpověď by měla začínat jedním z těchto písmen: b, c nebo r."

Zjišťování nechtěných (nesprávných) slov nebo řetězců

Chcete zjistit, zda odpověď studenta obsahuje jedno nebo více slov, která by neměla být v odpovědi obsažena (protože jsou špatně), a chcete jim vyčlenit určitou reakci. Prostě zadejte na začátku výrazu v poli Odpověď dvě znaménka plus (++).

Příklad 6.

  • Odpověď 3: ++(žlutá|černá|oranžová|zelená|černá|růžová)/i
  • Odpověď studenta: "modrá, oranžová a bílá"
  • Reakce 3: Jedna nebo více barev je špatně!
  • Skok 3: Tato stránka

Jestliže je některá z uvedených barev nalezena v odpovědi studenta, zobrazí se negativní reakce (Reakce 3) a nesprávné řetězce se obarví červeně (nebo jinou barvou určenou pro výpis chyb, pokud je v kaskádových stylech aktuálně používaného motivu definována).

Příklad 7. Otázka: "Uveďte anglické jméno zvířete složené ze tří písmen, jestliže prostředním písmenem je samohláska a". Výraz v poli Odpověď: "++hat". Reakce: "Možná máte kožešinovou čepici, ale tu není dost dobře možné považovat za zvíře."

Úprava speciálních znaků

Pokud potřebujete v odpovědi použít znaky, které patří do souboru speciálních znaků používaných v regulárních výrazech, je třeba je zapsat tak, že před ně vložíte obrácené lomítko. Např. chcete-li uznat odpověď "Můj počítač stál 1000$" jako správnou, musíte zapsat regulární výraz takto: "Můj počítač stál 1000\$". Speciální znaky, které je nutno zapisovat tímto způsobem, jsou tyto: .^$*()[]+?|