exercice à étapes avec nextstep

Accueil Forums Programmation WIMS Programmation dans le langage wims exercice à étapes avec nextstep

Mots-clés : 

Ce sujet a 2 réponses, 2 participants et a été mis à jour par  Richard Taillet, il y a 2 ans et 2 mois.

  • Auteur
    Messages
  • #3060

    Richard Taillet
    Participant

    Bonjour,

    Pour tenter de comprendre le mécanisme \nextstep dans OEF, j’essaie sans succès de faire un exemple minimal dans lequel :
    – l’utilisateur doit taper le texte « toto », on lui redemande jusqu’à ce qu’il y arrive
    – puis l’utilisateur doit taper le texte « tata », jusqu’à ce qu’il y arrive.
    J’ai testé le programme suivant, qui ne marche pas pour plusieurs raisons. D’une part, si on rentre les bons textes du premier coup, c’est compté faux quand même au moment de l’analyse finale, et d’autre part si on se trompe une fois, le programme ne s’arrête jamais.

    Quelqu’un peut-il m’expliquer ce qui cloche ? Merci ! 🙂

    NB : je ne veux pas spécialement un autre code différent qui fait ce que je veux, mais je veux comprendre pourquoi le code ci-dessous ne marche pas !

    \text{etap=r1}
    \nextstep{\etap}
    
    \statement{Entrer le texte demandé :
    \if{\step == 1}{Tapez "toto" : \embed{r1}}
    \if{\step == 2}{Vous avez tapé \reponse1. Tapez "tata" : \embed{r2}}
    }
    
    \answer{}{\reponse1}{type=nocase}
    \answer{}{\reponse2}{type=nocase}
    
    \condition{Vous avez tapé \reponse1}{\reponse1 == toto}
    \condition{Vous avez tapé \reponse2}{\reponse2 == tata}
    
    \if{\step == 2 and \reponse1 == toto}
    {\text{etap = r2}}
    {\text{etap = r1}}
    
    \if{\step == 3 and \reponse2 == tata}
    {\text{etap =}}
    {\text{etap = r2}}
    • Ce sujet a été modifié le il y a 2 ans et 2 mois par  Richard Taillet. Raison: typo orthographique
  • #3062

    bernadette
    Admin bbPress
    \text{etap=r1}
    \nextstep{\etap}
    
    \statement{Entrer le texte demandé :
    \if{\step == 1}{Tapez "toto" : \embed{r1}}
    \if{\step == 2}{Vous avez tapé \reponse1. Tapez "tata" : \embed{r2}}
    }
    
    %%% Il n'y a donc rien pour \step >2 ? si on recommence 3 fois on en sera à 
    \step=4
    Ici on affiche automatiquement à la deuxième étape r2
    
    \answer{}{\reponse1}{type=nocase}
    \answer{}{\reponse2}{type=nocase}
    
    \condition{Vous avez tapé \reponse1}{\reponse1 == toto}
    \condition{Vous avez tapé \reponse2}{\reponse2 == tata}
    
    %%%% mettre issametext au lieu de == .
    
    \if{\step == 2 and \reponse1 == toto}
    {\text{etap = r2}}
    {\text{etap = r1}}
    
    \if{\step == 3 and \reponse2 == tata}
    {\text{etap =}}
    {\text{etap = r2}}
    ### si step=2 la première fois,  la condition \step == 3 and \reponse2 == tata
    est fausse, donc etap =r2.
    
    • Cette réponse a été modifiée le il y a 2 ans et 2 mois par  bernadette.
  • #3067

    Richard Taillet
    Participant

    Merci pour votre réponse, j’avais en effet mal compris la variable \step. Du coup, juste au cas où ça intéresse d’autres personnes, voici le code qui fait ce que je voulais :

    \text{etap=r1}
    \nextstep{\etap}
    \integer{ok1=0}
    \integer{ok2=0}
    
    \statement{Entrer le texte demandé :
    \if{\ok1 == 0}{Tapez "toto" : \embed{r1}}
    \if{\ok1 == 1 and \ok2 == 0 }{Vous avez tapé \reponse1. Tapez "tata" : \embed{r2}}
    }
    
    \answer{}{\reponse1}{type=nocase}
    \answer{}{\reponse2}{type=nocase}
    
    \condition{Vous avez tapé \reponse1}{\reponse1 issametext toto}
    \condition{Vous avez tapé \reponse2}{\reponse2 issametext tata}
    
    \if{\ok1 == 1 and \ok2 == 0 and \reponse2 issametext tata}
    {\text{etap =}}
    {\text{etap = r2}}
    
    \if{\ok1 == 0}
    {
       \if{\reponse1 issametext toto}
       {
       \text{etap = r2}
       \integer{ok1=1}
       }
       {\text{etap = r1}}
    }

Vous devez être connecté pour répondre à ce sujet.