exercice à étapes avec nextstep

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

Mots-clés : 

Vous lisez 2 fils de discussion
  • Auteur
    Messages
    • #3060
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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 4 années et 3 mois par Richard Taillet. Raison: typo orthographique
    • #3062
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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 4 années et 3 mois par bernadette.
    • #3067
      Merci, ca m’a aidé
      Up
      0
      Down
      Pas très utile.
      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 lisez 2 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.