---
tags: ulla
disqus: hackmd
image: https://i.imgur.com/P21OzwQ.png
---
# ULA: упражнения на слова/фразы. Настройка :gear:
<br />
<div style="text-align:center;">
<img src='https://i.imgur.com/42owMhq.gif' alt="exercises" />
</div>
<br />
Упражнения на слова и фразы -- это интерактивный элемент урока, когда ученику предлагается послушать или прочитать слово, и перевести его. Они автоматически создаются из материалов урока (типа oneLineOneFile или media с таймингом), вам нужно указывать только параметры упражнений и количество. Сочетая всего нескольких настроек вы можете создать большое разнообразие. Все возможные варианты представлены в таблицах ниже.
<table style="float:left; width:45%">
<tbody>
<tr >
<th colspan="2">Что даётся ученику?</th>
</tr>
<tr >
<th>Тип материала</th>
<th>Язык</th>
</tr>
<tr >
<td rowspan="2">аудио</td>
<td >оригинала</td>
</tr>
<tr>
<td > </td>
</tr>
<tr >
<td rowspan="2">текст</td>
<td >оригинала</td>
</tr>
<tr >
<td >перевода</td>
</tr>
<tr >
<td rowspan="2">картинка</td>
</tr>
<tr >
<td > </td>
</tr>
</tbody>
</table>
<table style="float: left; width: 55%; ">
<tbody>
<tr style="height: 18px;">
<th style="height: 18px;" colspan="3">Что требуется от ученика?</th>
</tr>
<tr style="height: 18px;">
<th style="height: 18px;">Тип материала</th>
<th style="height: 18px;">Язык</th>
<th style="height: 18px;">Тип ввода</th>
</tr>
<tr style="height: 18px;">
<td style="height: 36px;" rowspan="2">аудио</td>
<td style="height: 36px;" rowspan="2">оригинала</td>
<td style="height: 18px;">записать<sup>*</sup></td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;">выбрать</td>
</tr>
<tr style="height: 18px;">
<td style="height: 36px;" rowspan="4">текст</td>
<td style="height: 18px;" rowspan="2">оригинала</td>
<td style="height: 18px;">написать</td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;">выбрать</td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;" rowspan="2">перевода</td>
<td style="height: 18px;">упорядочить</td>
</tr>
<tr>
<td> </td>
</tr>
<tr style="height: 18px;">
<td style="height: 36px;" rowspan="2">картинка</td>
<td style="height: 18px;"> </td>
<td style="height: 36px;" rowspan="2">выбрать</td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;"> </td>
</tr>
</tbody>
</table>
Язык оригинала -- это изучаемый язык, а язык перевода -- это язык знакомый пользователю.
<sup>*</sup> - Запись аудио пока не работает, но возможно будет добавлена в следующих версиях.
## Пример 1
<table style="float:left; width:45%">
<tbody>
<tr >
<th colspan="2">Что даётся ученику?</th>
</tr>
<tr >
<th >Тип материала</th>
<th >Язык</th>
</tr>
<tr >
<td style="background:skyblue" rowspan="2">аудио</td>
<td style="background:skyblue" >оригинала</td>
</tr>
<tr>
<td > </td>
</tr>
<tr >
<td rowspan="2">текст</td>
<td >оригинала</td>
</tr>
<tr >
<td >перевода</td>
</tr>
</tbody>
</table>
<table style="float:left; width:55%" >
<tbody>
<tr >
<th colspan="3">
Что требуется от ученика?
</th>
</tr>
<tr >
<th >Тип материала</th>
<th >Язык</th>
<th >Тип ввода</th>
</tr>
<tr >
<td rowspan="2">аудио</td>
<td rowspan="2">оригинала</td>
<td >записать</td>
</tr>
<tr >
<td >выбрать</td>
</tr>
<tr >
<td style="background:skyblue" rowspan="2">текст</td>
<td >оригинала</td>
<td >написать</td>
</tr>
<tr >
<td style="background:skyblue" >перевода</td>
<td style="background:skyblue" >выбрать</td>
</tr>
</tbody>
</table>
Ученику даётся послушать аудио на языке оригинала и предлагаются варианты перевода. Он должен выбрать 1 правильный.
## Пример 2
<table style="float:left; width:45%">
<tbody>
<tr >
<th colspan="2">Что даётся ученику?</th>
</tr>
<tr >
<th >Тип материала</th>
<th >Язык</th>
</tr>
<tr >
<td rowspan="2">аудио</td>
<td >оригинала</td>
</tr>
<tr>
<td > </td>
</tr>
<tr >
<td style="background:skyblue" rowspan="2">текст</td>
<td >оригинала</td>
</tr>
<tr >
<td style="background:skyblue" >перевода</td>
</tr>
</tbody>
</table>
<table style="float:left; width:55%" >
<tbody>
<tr >
<th colspan="3">
Что требуется от ученика?
</th>
</tr>
<tr >
<th >Тип материала</th>
<th >Язык</th>
<th >Тип ввода</th>
</tr>
<tr >
<td rowspan="2">аудио</td>
<td rowspan="2">оригинала</td>
<td >записать</td>
</tr>
<tr >
<td >выбрать</td>
</tr>
<tr >
<td style="background:skyblue" rowspan="2">текст</td>
<td style="background:skyblue" >оригинала</td>
<td style="background:skyblue" >написать</td>
</tr>
<tr >
<td >перевода</td>
<td >выбрать</td>
</tr>
</tbody>
</table>
Ученику даётся текст на его языке и предлагается написать перевод на изучаемом языке.
## Как добавлять?
Вы можете создать упражнения из любых сочетаний этих двух таблиц.
В примере ниже задаются:
* 20 упражнений типа "Пример 1" с 4-мя вариантами выбора
* 10 упражнений типа "Пример 2"
```
### Упражнения на слова урока [exercise]
audio-original --> text-translation choose-from-4 20
text-translation --> text-original write 10
```
Подобно тому, как подкрашены ячейки в таблице выше, вы также описываете тип упражнения и количество. В случае, если от ученика требуется выбор правильного варианта -- надо указать и количество вариантов для выбора.
Каждому упражнению соответствует строка из условных обозначений вида:
`givenType-givenLang --> requiredType-requiredLang activityType count`
Возможные значения:
| key | value |
| ----------------------- | --------------------------- |
| givenType, requiredType | audio, text |
| givenLang, requiredLang | original, translation |
| activityType | write, choose-from-N, order |
| count | integer, percent, none |
Подобные упражнения можно формировать из материалов типа:
* oneLineOneFile
* media с таймингом
Если упражнения находятся далеко от основного материала, то надо указать его адрес в формате `chapterId/subchapterId` сразу после типа контента, например: `[exercise | 003/001]`. Если упражнение идёт сразу после материала, к которому привязано, то адрес можно не указывать.
Если число упражнений не указано, оно будет равно количеству всех элементов в материале. Если указаны проценты `50%`, `25%` то число упражнений будет равно соответственно 50% и 25% от количества элементов в исходном материале.
## Толерантность к пользовательскому вводу (в разработке)
Для упражнений где надо писать текст, логично добавить некоторый процент ошибок, которые может допустить пользователь, чтобы задание считалось выполненным. Так же в разных языках есть допустимые отклонения в тексте. Например:
* в учебниках арабского текст пишут с огласовками, но если пользователь написал слово без огласовок -- в этом не должно быть ошибки, потому что норма арабского языка -- писать без огласовок;
* в учебниках русского пишут ударение, -- но если его не написал ученик, это не должно быть ошибкой, потому что норма русского языка -- не писать ударение;
* порядок слов не важен в некоторых языках, и его нарушение не должно быть ошибкой.
Пока что мы проверяем тексты на строгое совпадение, но по мере общения с пользователями и представителями разных языков, мы будем настраивать подобные нюансы.
## Примечание
Упражнение на написание слова/фразы -- намного сложнее упражнений с выбором из вариантов (в 20-30 раз). Написать слово из 5 букв -- это надо сильно напрячь память и сделать 5 выборов из 30 вариантов (букв в клавиатуре в среднем). Выбрать слово, которое уже на экране - это минимум памяти и 1 выбор из 4 вариантов (или сколько вы задали).
Некоторые упражнения могут показаться очень легкими, например, послушать аудио и выбрать его текст из вариантов. В любом случае они дают гарантию что человек послушал все слова, прочитал их и правильно сопоставляет их. А если алфавит языка мало знаком ученику, то они могут быть вплоне сложными.
Пока что результаты прохождения видны только ученику (самопроверка и закрепление). В будущем планируется собирать и выгружать информацию о процессе прохождения (для учителей, министерства образования и т.д.)