---
# System prepended metadata

title: 'ULA: упражнения на слова/фразы. Настройка :gear:'
tags: [ulla]

---

---
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  >&nbsp;</td>
    </tr>
    <tr >
        <td   rowspan="2">текст</td>
        <td  >оригинала</td>
    </tr>
    <tr >
        <td  >перевода</td>
    </tr>
        <tr >
        <td   rowspan="2">картинка</td>
&nbsp;    </tr>
    <tr >
        <td  >&nbsp;</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>&nbsp;</td>

</tr>
<tr style="height: 18px;">
<td style="height: 36px;" rowspan="2">картинка</td>
<td style="height: 18px;">&nbsp;</td>
<td style="height: 36px;" rowspan="2">выбрать</td>
</tr>
<tr style="height: 18px;">
<td style="height: 18px;">&nbsp;</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  >&nbsp;</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  >&nbsp;</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 вариантов (или сколько вы задали).

Некоторые упражнения могут показаться очень легкими, например, послушать аудио и выбрать его текст из вариантов. В любом случае они дают гарантию что человек послушал все слова, прочитал их и правильно сопоставляет их. А если алфавит языка мало знаком ученику, то они могут быть вплоне сложными. 

Пока что результаты прохождения видны только ученику (самопроверка и закрепление). В будущем планируется собирать и выгружать информацию о процессе прохождения (для учителей, министерства образования и т.д.)