> For the complete documentation index, see [llms.txt](https://guida-wetambara.gitbook.io/guida-a-wetambara/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guida-wetambara.gitbook.io/guida-a-wetambara/esercitazioni.md).

# Esercitazioni

{% embed url="<https://youtu.be/JDIR82g7yeU>" %}

La gestione degli esercizi è il cuore di Wetambara. Attraverso Wetambara è possibile preparare esercitazioni tali che possano essere autocorretti **senza dover scrivere alcun test di unità**.

La sezione dedicata agli esercizi![](/files/eWRSun9ibZ5Ihgzx6jUY) è divisa in due sezioni:

* **soluzioni:** esercizi svolti;
* **template delle esercitazioni:** consegne da assegnare agli utenti.

## Creare un esercizio

### Descrizione

Cliccare il pulsante ![](/files/UhBolRfhQGs6oAfIZpjM)per iniziare la procedura guidata riguardante la creazione dell'esercizio.

<figure><img src="/files/BcKtNtoOlrMIztlzeOyg" alt=""><figcaption><p>Pannello per descrivere l'esercitazione</p></figcaption></figure>

Inserire i dati principali per la dichiarazione dell'esercizio:

* il titolo dell'esercitazione: titolo identificativo dell'esercizio;
* la consegna: definizione della consegna da svolgere;
* il linguaggio di programmazione da utilizzare: per specificare quale compilatore verrà utilizzato;
* la difficoltà: è possibile dare un valore di difficoltà da 1 a 10;
* i tag: manualmente o attraverso il tag manager è possibile categorizzare l'esercitazione.

### Test case e punteggio

Nella sezione "Test case" possiamo configurare:

* il punteggio totale dell'esercizio,
* i dati di input e di output che ci permetteranno di controllare la correttezza dello svolgimento dell'esercizio.

Il punteggio verrà calcolato sui test case risolti **proporzionalmente** al punteggio assegnato a ciascuno di questi.

I test case possono essere pubblici e privati. I test case pubblici saranno visibili dall'utente che svolgerà l'esercizio, mentre i test case privati saranno visibili solo dall'insegnante in fase di autocorrezione.

Cliccando il pulsante ![](/files/cecnBV7KfOE4yokbKUKF)possiamo creare i test case per l'esercitazione.

<figure><img src="/files/1kkLoOZzcB3LGWWhI09T" alt=""><figcaption><p>Pannello di creazione di un test case</p></figcaption></figure>

In questo esempio lo svolgimento verrà eseguito dandogli in **input** la sequenza di valori **3 ,1, 2, 3** e ci si aspetterà un **output equivalente a 6.**

E' possibile configurare più alternative di output.

**Logiche di IA controlleranno che stringhe statiche non interferiscano con il match previsto invalidando erroneamente il test.** Eventualmente è anche possibile configurare che si desidera avere un match esatto tra output previsto e output del test case.

<figure><img src="/files/7nXoz48xWVTgXfTl9Y5N" alt=""><figcaption></figcaption></figure>

Per un approfondimento riguardo i test case e alle loro logiche AI invitiamo a leggere attentamente la pagina "[Test case](#test-case)".

### Template code

Nella sezione "Template code" possiamo preparare un template base da cui l'utente può partire per svolgere l'esercitazione.

Se vogliamo preparare del codice che non può essere modificato, per esempio se prevediamo una logica di esercizio a completamento, abbiamo a disposizione i pulsanti ![](/files/RAGycTtfU2gt5Ujnk8iP) che ci consentono di **bloccare e sbloccare righe** di codice.

Il risultato visivo sarà come il seguente:

<figure><img src="/files/rYQ1VfLDaff2rNNDezDx" alt=""><figcaption><p>Effetto di righe bloccate</p></figcaption></figure>

Le righe rosse non potranno essere modificate dallo studente. In questo esempio si richiede all'utente di completare il codice dichiarando e definendo la funzione invocata nel *main*.

### Soluzione

Per ciascun esercizio è prevista anche la possibilità di salvare una soluzione ideale. Nello step successivo è eventualmente possibile configurare la visibilità di tale soluzione all'utente che dovrà svolgere l'esercizio.

<figure><img src="/files/XEG4yb5ihXhA6NcYfcco" alt=""><figcaption><p>Soluzione proposta</p></figcaption></figure>

### Configurazioni

Possiamo aggiungere alcune configurazioni al nostro esercizio, come per esempio i permessi riguardanti il "copia e incolla": possiamo impedire all'utente che copi e incolli codice da pagine esterne.

Attraverso il pannello possiamo decidere se **visualizzare la soluzione** del docente, limitare l'utente nella **gestione dei file**, impedire l'utilizzo di **stringhe specifiche** (per esempio del for o del while se richiedessimo una **soluzione ricorsiva**).

<figure><img src="/files/4Roxc44mSYvy6kdfFVzw" alt=""><figcaption><p>Configurazioni finali</p></figcaption></figure>

### Condivisione

Una volta creato l'esercizio possiamo visualizzarlo nella lista delle esercitazioni.

<figure><img src="/files/zC58oaTEx8lp3rZcIJrO" alt=""><figcaption><p>Il nostro esercizio C++</p></figcaption></figure>

Attraverso l'icona ![](/files/THfShDH2ks7vgP6dWpcp) possiamo condividere l'esercizio a chiunque desideri ricevere la consegna.

<figure><img src="/files/d2k00YnfGgCjjGLDYYvQ" alt=""><figcaption><p>Link di condivisione</p></figcaption></figure>

### Svolgimento e autocorrezione

Attraverso il link di condivisione è possibile accedere all'esercitazione e iniziare lo svolgimento.

<figure><img src="/files/yYxQqjhon4qMxR4634iz" alt=""><figcaption><p>Finestra di svolgimento</p></figcaption></figure>

Come possiamo vedere, nella finestra sono visibili la consegna e i pulsanti per eseguire e testare quanto svolto fino a quel momento.

Il pulsante ![](/files/ALwMDF4Dvc0jO2ooP1uu) ci consente di eseguire l'esercizio **interagendo manualmente con il terminale**.

Il pulsante ![](/files/Syr6UrF6ilf5BILBueVu) ci consente di eseguire **automaticamente** il programma con ciascun **test case pubblico** previsto.

<figure><img src="/files/4hKkP91czqYaW3XuumFS" alt=""><figcaption><p>Risultati dei test case pubblici</p></figcaption></figure>

Attraverso i test case pubblici possiamo ricevere un **feedback immediato** riguardo la correttezza del nostro svolgimento.

Cliccando sui singoli test case è possibile ottenere i dettagli dell'esito:

<figure><img src="/files/mkcX3CIO7tJlXkD6sIby" alt=""><figcaption><p>Dettagli di ciascun test case</p></figcaption></figure>

Gli esercizi svolti possono essere salvati ![](/files/PsYigJJGWwtgaOUyeoIH)ed eventualmente modificati. Si accede agli esercizi svolti dalla scheda relativa agli svolgimenti.
