4. Питања у тексту и квизовима¶
Садржај
Питања се, као и сви други елементи документа, додају помоћу одговарајућих директва. Међутим, с обзиром на обим и значај теме, питања су описана као посебна целина.
Концептуално разликујемо две врсте питања, које зовемо питања у тексту и питања у квизу.
Питања у тексту обично служе за брзу проверу, тј. потврду разумевања одмах након објашњења неког појма, а уједно и за одржавање пажње читаоца. Уз ову врсту питања може да се постави провратна информација (ако синтакса питања то допушта), коју корисник види одмах након одговора. Повратна информација не мора да буде само тачно/нетачно, већ може да садржи различите текстуалне поруке за различите одговоре корисника. Питања у тексту могу да се поставе и у курсеве и у приручнике, а постављају се спорадично, где је примерено. Наставник не може да види резултате ученика при одговарању на питања у тексту.
Квиз је посебна активност/страница у курсу (и посебан фајл у изворном коду курса), која се обично налази на крају лекције, теме, или целог курса. То је нешто већа група питања у односу на она у тексту, а поставља се пре свега ради самоевалуације, тј. да би корисник добио јаснију представу о томе колико је успешно теоријски савладао одређену лекцију или тему. Корисник неће добити повратну информацију (фидбек) на појединачна питања у квизу, већ само укупан број тачних одговора. Квиз је тако дизајниран са идејом да не подстиче учење одговора. Корисник који није задовољан резултатом квиза треба да поново прочита лекцију. Квиз не може да се поставља у приручнике, већ постоји само у курсевима. Наставник може да види резултат ученика на квизу, али не са идејом да тај резултат користи директно за оцењивање, већ само као додатну информацију у праћењу рада ученика.
Истакнимо још једном концептуалне разлике између питања у тексту и квизова:
Питања у тексту |
Квизови |
|
---|---|---|
Подржана |
у приручницима и курсевима |
само у курсевима |
Намена |
брза потврда разумевања управо прочитаног, одржавање пажње при читању |
самовеалуација, завршна провера знања стеченог у лекцији |
Типично место постављања |
расуто по тексту у мањим групама, често само по једно или два |
посебна активност (посебна веб страница), већа група пиатња, обично на крају лекције, теме, или целог курса |
Тачност одговора |
видљива одмах након одговора |
само укупан број тачних одговора, након одговора на сва питања у квизу |
Повратна информација |
видљива одмах након одговора (ако постоји), |
није видљива |
4.1. Питања у тексту¶
Следе примери појединих типова питања. Под типовима подразумевамо различите форме питања, од ојих свака има своју синтаксу. У сваком примеру дат је прво изворни кôд какав треба навести у RST фајлу, а одмах затим изглед питања у HTML документу. Сва питања, без обзира на тип, морају као аргумент директиве да имају стринг - идентификатор, који је јединствен у оквиру целог Петљадок пројекта.
4.1.1. Питања са понуђеним одговорима - mchoice¶
У овој врсти питања бира се један од више понуђених одговора. Број понуђених одговора може да се разликује од питања до питања. Овај тип питања добија се помоћу директиве mchoice
, која обавезно мора имати јединствени идентификатор као аргумент (у нашем примеру то је mchoice_sample_question1). Обавезне опције директиве су:
опције
answer_a
,answer_b
…, од којих свака као аргумент има стринг који ће се кориснику приказати као један понуђени одговор,опција
correct
, која представља тачан одговор, а као аругмент има латиничи карактер који је последње слово опције са тачним одговором.
Обратите посебну пажњу ако материјал пишете ћирилицом. Често се дешава да се као тачан одговор наведе ћирилични карактер а, који (зависно од фонта који користите у едитору) визуелно може и да се не разликује од латиничног карактера а. Међутим, ако као аргумент опције correct
ставимо ћирилично а, то ће направити проблем при парсирању питања.
Опције feedback_a
, feedback_b
… су опционе, а омогућавају да се за сваки могући избор корисника зада повратна информација.
4.1.1.1. Пример:¶
.. mchoice:: mchoice_sample_question1
:answer_a: 20
:answer_b: 14
:answer_c: 9
:feedback_a: Води рачуна о приоритету операција.
:feedback_b: Тачан одговор.
:feedback_c: Тачка означава множење.
:correct: b
Колико је :math:`2 + 3 \cdot 4`?
- 20
- Води рачуна о приоритету операција.
- 14
- Тачан одговор.
- 9
- Тачка означава множење.
Q-9: Колико је \(2 + 3 \cdot 4\)?
4.1.2. Питања са бирањем више одговора - mchoice multiple_answers¶
У овој врсти питања може да се изабере један или више од понуђених одговора (за сад није могуће да се не изабере ни један одговор). Директива овог питања је такође mchoice
, али када желимо да омогућимо избор више одговора, треба да користимо опцију multiple_answers
, која нема аргумената. Сви тачни одговори се наводе као аргументи опције correct
одвојени зарезом и спејсом.
4.1.2.1. Пример:¶
.. mchoice:: mchoice_sample_question2
:multiple_answers:
:answer_a: весео
:answer_b: и
:answer_c: спретан
:answer_d: дечак
:answer_e: трчи
:feedback_a: Тачан одговор.
:feedback_b: Не, и је везник.
:feedback_c: Тачан одговор.
:feedback_d: Не, дечак је именица.
:feedback_e: Не, трчи је глагол.
:correct: a, c
Које од набројаних речи су придеви (означи све тачне одговоре)?
- весео
- Тачан одговор.
- и
- Не, и је везник.
- спретан
- Тачан одговор.
- дечак
- Не, дечак је именица.
- трчи
- Не, трчи је глагол.
Q-10: Које од набројаних речи су придеви (означи све тачне одговоре)?
Опције feedback_a
, feedback_b
итд. имају исту синтаксу и значење као код питања са избором једног одговора. Ако користимо ове опције, корисник ће фидбек који смо написали за одређене одговоре видети само ако изабере само тај одговор. Ако изабере нетачну комбинацију одговора видеће само нетачно, а у супротном видеће само тачно.
4.1.3. Питања са повезивањем појмова - dragndrop¶
Код ове врсте питања је потребно спојити повезане појмове у парове. Појам са леве стране се превлачи на десну страну до појма са којим чини пар.
Питање овог типа се укључује помоћу директиве dragandrop
. Опције match_1
, match_2
… које се користе уз ову директиву, садрже исправно спојене парове. У свакој од ових опција, први елемент пара је раздвојен од другог симболима |||
. Ако се користи опција feedback
, као аргумент се наводи стринг који ће се појавити када корисник не одговори тачно.
4.1.3.1. Пример:¶
.. dragndrop:: dragndrop_sample_question1
:feedback: Покушајте поново.
:match_1: јарац ||| коза
:match_2: јелен ||| кошута
:match_3: бик ||| крава
Повежи мужјака и женку исте врсте
-
Q-11: Повежи мужјака и женку исте врсте
Покушајте поново.
- јарац
- коза
- јелен
- кошута
- бик
- крава
4.1.4. Питања са ређањем појмова - parsonsprob¶
Код ове врсте питања потребно је поређати појмове у правилном редоследу (појмови са леве стране се превлаче на десну страну).
Питања овог типа додајемо помоћу директиве parsonsprob
. У телу директиве се наводи прво текст питања, затим ред од пет знакова - (-----
), испод кога се пишу појмови у исправном редоследу. Када се питање прикаже у браузеру, појмови ће бити у случајном редоследу.
4.1.4.1. Пример:¶
.. parsonsprob:: parsonsprob_sample_question1
Поређај од најмлађег до најстаријег.
-----
беба
дечак
момак
човек
деда
Q-12: Поређај од најмлађег до најстаријег.беба
дечак
момак
човек
деда
4.1.5. Питања са допуњавањем - fillintheblank¶
Код питања са допуњавањем потребно је у једно или више поља уписати тражени одговор. Ова врста питања је погодна пре свега за бројчане одговоре. Тачан одговор може да се зада у облику регуларног израза, што значи да може да се прихвати и више различитих одговора. Писање регуларних израза можете да увежбавате овде.
Основно о регуларним изразима
Почетак одговора: Сваки тачан одговор треба да почне карактером
^
, који означава почетак уноса. Уколико не користимо овај знак на почетку, корисник може испред тачног одговора да унесе било какав текст, а да његов одговор и даље буде прихваћен као тачан.Крај одговора: Слично претходном, сваки тачан одговор треба да се заврши карактером
$
, означава крај уноса. Уколико не користимо овај знак на крају, корисник после тачног одговора може да унесе било какав текст, а да такав унос и даље буде прихваћен као тачан одговор. Ово је посебно проблематично када се очекује број као резултат (нпр. осим 23 прихвата се и било који број који почиње са 23).Белине на почетку и крају: Ако на почетку (или крају) одговора желимо да допустимо неколико размака или таб карактера, онда одмах после знака
^
(или одмах пре знака$
) треба да наведемо\s*
. У овом регуларном изразу\s
означава белину (размак, таб, нови ред), а*
означава нула или више понављања.Допуштање белина на почетку и крају одговора је скоро увек пожељно. Једини случај у коме не треба да се употреби
\s*
на почетку и крају регуларног израза је ситуација у којој је за само питање важно да се одговор који ће корисник понудити дословно поклапа са очекиваним одговором (на пример, питамо корисника шта ће се исписати у конзоли по извршавању неког програма и важно нам је да у одговор не уђу whitespace карактери). У том случају препоручујемо да се у тексту питања нагласи да одговор треба уписати без размака, табова и сл.Тачка: Када се у одговору очекује тачка (нпр. при навођењу броја
3.14
или адресе ime.prezime@petlja.org), у регуларном изразу испред тачке треба да се наведе обрнута коса црта (бекслеш)\
. То је зато што сама тачка има посебно значење у регуларним изразима. Исто важи и за симболе[
,]
,|
,\
,^
,$
,{
,}
,*
,+
,(
,)
.
4.1.5.1. Пример 1:¶
У овом примеру потребно је унети одговор 2.25
или 2,25
, јер су то једина два облика који се прихватају као тачни.
.. fillintheblank:: fillintheblank_sample_question1
У поље за одговор упиши децималан број, који је четири пута мањи од 9.
Одговор упиши без размака и сувишних децимала.
Одговор: |blank|
- :^2\.25|2,25$: Одговор је тачан.
:x: Одговор није тачан.
У поље за одговор упиши децималан број, који је четири пута мањи од 9. Одговор упиши без размака и сувишних децимала.
Одговор:
4.1.5.2. Пример 2:¶
У овом примеру за проверу одговора употребљен је регуларан израз, који прихвата одговоре Кошута
, кошута
, Košuta
i košuta
, са могућим белинама пре и после речи (\s*
у регуларном изразу). За одговоре Срна
, срна
, Srna
и srna
(са могућим белинама около) је дат посебан коментар, док је за све остале одговоре коментар заједнички (да одговор није тачан).
.. fillintheblank:: fillintheblank_sample_question2
Како се зове женка јелена?
Одговор: |blank|
- :^\s*[Кк]ошута|[Kk]ošuta\s*$: Одговор је тачан.
:^\s*[Сс]рна|[Ss]rna\s*$: Не, то је женка срндаћа.
:x: Одговор није тачан.
Како се зове женка јелена?
Одговор:
4.1.5.3. Пример 3:¶
У овом примеру потребно је унети два одговора. За проверу оба одговора користе се регуларни изрази, који прихватају тачан број са могућим белинама пре и после броја.
.. fillintheblank:: fillintheblank_sample_question3
Упиши бројеве који недостају у проширеној пропорцији:
| 5 : 2 =
| |blank| : 4 =
| 100 : |blank|
- :^\s*10\s*$: Први одговор је тачан.
:x: Први одговор није тачан.
- :^\s*40\s*$: Други одговор је тачан.
:x: Други одговор није тачан.
Упиши бројеве који недостају у проширеној пропорцији:
4.2. Питања у квизу¶
Квизови се реализују као .rst фајлови, који су у index.yaml фајлу пројекта означени као активности типа quiz
. Питања у квизовима имају сличну синтаксу као Питања у тексту, а овде ће бити опсане синтаксне специфичности приликом писања квизова и питања у њима. Ако је потребно, пре тога можете да се подсетите које су концептуалне разлике између питања у тексту и квизова, наведене на почетку ове стране.
4.2.1. Директива quizq
¶
Из концептуалних разлика следе неке разлике у начину постављања и техничкој реализацији питања. Питања у тексту су део текста, па могу да референцирају на претходни садржај у тексту (нпр. слике, делове кода и слично). Питања у квизу су целине за себе и не могу да рефенцирају на околни садржај. Тачније, око питања у квизу нема (не треба да буде) околног садржаја.
Због тога је за питања у квизу уведена директива quizq
, у чије тело смештамо све елементе од којих се питање састоји. Један елемент је увек питање неког од типова о којима је већ било речи у делу Питања у тексту. Остали елементи могу да буду слике, делови кода и слично.
У изворни .rst фајл у коме се налази квиз, не треба писати никакав садржај између питања, тј. ван директивa
quizq
. Садржај између питања (текст, наслови, друге директиве и остали елементи који нису питања) ће бити игнорисан и неће бити видљив у објављеном курсу.Аргумент питања унутар директиве
quizq
мора да буде јединствен на нивоу пројекта, јер се користи као идентификатор питања.У питањима унутар директиве
quizq
не треба користити опцијуfeedback
, пошто повратне информације у квизовима неће бити видљиве кориснику.
Најједноставнији случај употребе директиве quizq
је стављање само једне директиве за питање унутар директиве qquiz
, на пример овако:
.. quizq::
.. mchoice:: primer_quizq
:answer_a: 20
:answer_b: 14
:answer_c: 9
:correct: b
Колико је :math:`2 + 3 \cdot 4`?
Питање у браузеру изгледа овако:
- 20
- 14
- 9
Q-13: Колико је \(2 + 3 \cdot 4\)?
4.2.2. Укључивање додатних директива у quizq директиву¶
Као што је речено, директива quizq
поред питања може да садржи и друге директиве, што нам омогућује да у питања у квизовима укључујемо слике, кôд, видео, аудио и све друге елементе који се могу укључити помоћу директива Петљадока. При томе треба веома водити рачуна о поравнању.
4.2.2.1. Пример 1:¶
Следећи пример нам показује како изгледа коришћење директиве quizq
са директивом image
и питањем типа упаривања појмова (dragndrop
).
.. quizq::
.. image:: ../../_images/trouglovi.png
:align: center
.. dragndrop:: dragndrop_sample_question12_image
:match_1: А1 ||| В2
:match_2: А2 ||| В3
:match_3: А3 ||| В1
Спој троуглове са слике по боји
Овај код ће се у браузеру приказати овако:
-
Q-14: Спој троуглове са слике по боји
- А1
- В2
- А2
- В3
- А3
- В1
4.2.2.2. Пример 2:¶
У следећем примеру видећемо како изгледа коришћење директиве quizq
са директивом fillintheblank
и питањем са допуњавањем (fillintheblank
)
.. quizq::
.. image:: ../../_images/kosuta.png
:align: center
.. fillintheblank:: fillintheblank_sample_question_image
Како се зове животиња са слике?
Одговор: |blank|
- :^\s*[Кк]ошута|[Kk]ošuta\s*$:
Како се зове животиња са слике?
Одговор:
4.2.2.3. Пример 3:¶
У следећем примеру видећемо како изгледа коришћење директиве quizq
са директивом code-block
и питањем са бирањем тачних одговора (mchoice
)
Следећи код:
.. quizq::
Дата је наредба:
.. code-block:: python
pygame.draw.line(prozor, pg.Color("black"), (200, 200), (200, 300), 1)
.. mchoice:: duz1
:answer_a: Дуж ће бити постављена хоризонтално.
:answer_b: Дуж ће бити постављена вертикално/усправно.
:answer_c: Дуж ће бити искошена.
:correct: b
У ком положају ће бити дуж исцртана претходном наредбом?
У браузеру ће дати:
Дата је наредба:
pygame.draw.line(prozor, pg.Color("black"), (200, 200), (200, 300), 1)
- Дуж ће бити постављена хоризонтално.
- Дуж ће бити постављена вертикално/усправно.
- Дуж ће бити искошена.
Q-15: У ком положају ће бити дуж исцртана претходном наредбом?
4.2.2.4. Пример 4:¶
У следећем примеру видећемо како изгледа коришћење директиве quizq
са три директиве - директивом code-block
, директивом image
и питањем са бирањем тачних одговора (mchoice
).
Следећи код:
.. quizq::
Следеће наредбе цртају једну црвену и једну црну дуж:
.. code-block:: python
pygame.draw.line(prozor, pygame.Color("red"), (x1, y1), (x2, y2), 3)
pygame.draw.line(prozor, pygame.Color("black"), (x1, y2), (x2, y1), 3)
Дужи ће бити нацртане у једном од ових положаја:
.. image:: ../../_images/pg_linije_dve_duzi_a.png
.. mchoice:: duz_druga_dijagonala
:answer_a: као на слици 1
:answer_b: као на слици 2
:answer_c: као на слици 3
:answer_d: ни једна од наведених слика
:correct: c
У ком положају ће бити дужи исцртане датим наредбама?
У браузеру ће дати:
Следеће наредбе цртају једну црвену и једну црну дуж:
pygame.draw.line(prozor, pygame.Color("red"), (x1, y1), (x2, y2), 3)
pygame.draw.line(prozor, pygame.Color("black"), (x1, y2), (x2, y1), 3)
Дужи ће бити нацртане у једном од ових положаја:
- као на слици 1
- као на слици 2
- као на слици 3
- ни једна од наведених слика
Q-16: У ком положају ће бити дужи исцртане датим наредбама?
4.2.3. Пример квиза¶
У коду испод налази се пример како може да изгледа један цео квиз са свим тренутно подржаним типовима питања. Илустровано је правилно укључивање других елемената у питање. Изглед овог квиза у браузеру можете да видите на следећој страници курса.
Још једном скрећемо пажњу на следеће:
питања немају наслове
свако питање је наведено унутар директиве
quizq
нема никаквог садржаја (текста, директива, наслова итд.) између питања, тј. ван директива
quizq
у питањима се не користи опција
feedback
.. quizq::
.. mchoice:: quiz_question_1
:answer_a: 20
:answer_b: 14
:answer_c: 9
:correct: b
Колико је :math:`2 + 3 \cdot 4`?
.. quizq::
.. mchoice:: quiz_question_2
:multiple_answers:
:answer_a: весео
:answer_b: и
:answer_c: спретан
:answer_d: дечак
:answer_e: трчи
:correct: a, c
Које од набројаних речи су придеви (означи све тачне одговоре)?
.. quizq::
.. dragndrop:: quiz_question_3
:match_1: А1 ||| В2
:match_2: А2 ||| В3
:match_3: А3 ||| В1
Повежи мужјака и женку исте врсте
.. quizq::
.. parsonsprob:: quiz_question_4
Поређај од најмлађег до најстаријег.
-----
беба
дечак
момак
човек
деда
.. quizq::
.. fillintheblank:: quiz_question_5
У поље за одговор упиши децималан број, који је четири пута мањи од 9.
Одговор упиши без размака и сувишних децимала.
Одговор: |blank|
- :^2.25|2,25$:
.. quizq::
.. image:: ../../_images/trouglovi.png
:align: center
.. dragndrop:: quiz_question_6
:match_1: А1 ||| В2
:match_2: А2 ||| В3
:match_3: А3 ||| В1
Спој троуглове са слике по боји
.. quizq::
Следеће наредбе цртају једну црвену и једну црну дуж:
.. code-block:: python
pygame.draw.line(prozor, pygame.Color("red"), (x1, y1), (x2, y2), 3)
pygame.draw.line(prozor, pygame.Color("black"), (x1, y2), (x2, y1), 3)
Дужи ће бити нацртане у једном од ових положаја:
.. image:: ../../_images/pg_linije_dve_duzi_a.png
.. mchoice:: duz_druga_dijagonala
:answer_a: као на слици 1
:answer_b: као на слици 2
:answer_c: као на слици 3
:answer_d: ни једна од наведених слика
:correct: c
У ком положају ће бити дужи исцртане датим наредбама?