Faire un blindage sous Monia PL
Résolu
valogic13
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
valogic13 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
valogic13 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise actuellement Monia PL pour programmer des algo mais il y a un truc que je n'arrive pas à faire : LE BLINDAGE.
Je m'explique :
Mon algo est le suivant :
POUR indicePionsUtilisateur <- 1 JUSQU'A 5 FAIRE
Afficher(" ");
Saisir(pionsUtilisateur[indicePionsUtilisateur]);
Curseur(5*indicePionsUtilisateur,(CurseurY()-1));
CouleurFond(pionsUtilisateur[indicePionsUtilisateur]);
Afficher(" ",pionsUtilisateur[indicePionsUtilisateur]," ");
CouleurFond(0);
Afficher(" ");
FINP
Dans cet algo je demande à l'utilisateur de saisir un entier. Le problème est que si jamais l'utilisateur saisie une chaîne de caractère le programme plante.
J'aimerai faire en sorte que lorsque l'utilisateur saisie autre chose qu'un entier je puisse lui dire qu'il fait une erreur et ensuite lui redemander de saisir a nouveau.
J'espère avoir était assez "claire" ^^
Merci d'avance !
J'utilise actuellement Monia PL pour programmer des algo mais il y a un truc que je n'arrive pas à faire : LE BLINDAGE.
Je m'explique :
Mon algo est le suivant :
POUR indicePionsUtilisateur <- 1 JUSQU'A 5 FAIRE
Afficher(" ");
Saisir(pionsUtilisateur[indicePionsUtilisateur]);
Curseur(5*indicePionsUtilisateur,(CurseurY()-1));
CouleurFond(pionsUtilisateur[indicePionsUtilisateur]);
Afficher(" ",pionsUtilisateur[indicePionsUtilisateur]," ");
CouleurFond(0);
Afficher(" ");
FINP
Dans cet algo je demande à l'utilisateur de saisir un entier. Le problème est que si jamais l'utilisateur saisie une chaîne de caractère le programme plante.
J'aimerai faire en sorte que lorsque l'utilisateur saisie autre chose qu'un entier je puisse lui dire qu'il fait une erreur et ensuite lui redemander de saisir a nouveau.
J'espère avoir était assez "claire" ^^
Merci d'avance !
A voir également:
- Faire un blindage sous Monia PL
- Winrar 64 ccm pl - Télécharger - Compression & Décompression
- Pl studio - Télécharger - Édition & Montage
- Jpg. pl - Forum Perl
- Extension .pl - Forum Réseaux sociaux
- Flash pl - Télécharger - Divers Web & Internet
5 réponses
Bonsoir, je ne connais pas ce langage mais de façon générale tu as deux principes.
-Utiliser la gestion d'erreur: si une exception est générée et que son numéro correspond à une valeur incorrecte saisie alors je redemande.
C'est à utiliser en dernier ressort en général ça utilise beaucoup de ressources.
-Faire un test avant conversion: si l'utilisateur fait une saisie au clavier, alors la premiere donnée que tu reçois est soit un caractère soit une chaine de caractères.
A ce moment là beaucoup de langage propose une ou des méthode pour tester si une chaine représente un nombre (IsNumeric) ou un outil qui tester la conversion et ne retourne le résultat que si elle est possible (TryCast), reste à trouver un équivalent dans ton langage.
-Utiliser la gestion d'erreur: si une exception est générée et que son numéro correspond à une valeur incorrecte saisie alors je redemande.
C'est à utiliser en dernier ressort en général ça utilise beaucoup de ressources.
-Faire un test avant conversion: si l'utilisateur fait une saisie au clavier, alors la premiere donnée que tu reçois est soit un caractère soit une chaine de caractères.
A ce moment là beaucoup de langage propose une ou des méthode pour tester si une chaine représente un nombre (IsNumeric) ou un outil qui tester la conversion et ne retourne le résultat que si elle est possible (TryCast), reste à trouver un équivalent dans ton langage.
D'accord, merci pour cette réponse rapide, je vais essayer de trouver l'équivalent dans mon langage .
Non je n'y arrive pas, j'ai passé la journée dessus je pense qu'il faut que je me pause un peu parce que j'arrive plus à être lucide..
Il doit y avoir moyen de faire quelque chose avec les boucle TANT QUE et SI et la fonction ChaineVersEntier mais je sais pas comment faire :/
Il doit y avoir moyen de faire quelque chose avec les boucle TANT QUE et SI et la fonction ChaineVersEntier mais je sais pas comment faire :/
Il n'y a quasiment aucune littérature sur le net au sujet de Monia...
J'ai trouvé ceci
ici
Comme la fonction ChaineVersNombre n'est pas expliquée, je ne fais qu'une supposition:
Retourne le nombre décrit par s, et si s n'est pas un nombre, retourne le second argument, soit 0.
Si mon hypothèse est juste, tu étais bien sur la bonne voie.
Tu peux associer un Tant Que du genre:
Tant Que (n == 0) RedemandeUneSaisie
J'ai trouvé ceci
Que se passe-t-il lorsque l'utilisateur tape autre chose qu'une valeur entière ? Comment s'affranchir de ce type d'erreur ?
En n'effectuant que des saisies sous forme de chaînes de caractères, et en assurant soi-même les conversions nécessaires et le traitement des erreurs...
var s est une chaine ;
......
Saisir( s ) ;
n <- Plancher( ChaineVersNombre( s, 0 ) ) ;
ici
Comme la fonction ChaineVersNombre n'est pas expliquée, je ne fais qu'une supposition:
Retourne le nombre décrit par s, et si s n'est pas un nombre, retourne le second argument, soit 0.
Si mon hypothèse est juste, tu étais bien sur la bonne voie.
Tu peux associer un Tant Que du genre:
Tant Que (n == 0) RedemandeUneSaisie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ta réponse je viens enfin de réussir !
Voilà ce que j'ai fait :
POUR indicePionsUtilisateur <- 1 JUSQU'A 5 FAIRE
Afficher(" ");
pionsUtilisateur[indicePionsUtilisateur] <- 0 ;
TANT QUE (pionsUtilisateur[indicePionsUtilisateur] = 0 ) FAIRE
Saisir(test_si_saisie_correct);
pionsUtilisateur[indicePionsUtilisateur] <- Plancher( ChaineVersNombre( test_si_saisie_correct, 0 ) ) ;
Curseur(5*indicePionsUtilisateur,(CurseurY()-1));
FINTQ
CouleurFond(pionsUtilisateur[indicePionsUtilisateur]);
Afficher(" ",pionsUtilisateur[indicePionsUtilisateur]," ");
CouleurFond(0);
Afficher(" ");
FINP
Voilà ce que j'ai fait :
POUR indicePionsUtilisateur <- 1 JUSQU'A 5 FAIRE
Afficher(" ");
pionsUtilisateur[indicePionsUtilisateur] <- 0 ;
TANT QUE (pionsUtilisateur[indicePionsUtilisateur] = 0 ) FAIRE
Saisir(test_si_saisie_correct);
pionsUtilisateur[indicePionsUtilisateur] <- Plancher( ChaineVersNombre( test_si_saisie_correct, 0 ) ) ;
Curseur(5*indicePionsUtilisateur,(CurseurY()-1));
FINTQ
CouleurFond(pionsUtilisateur[indicePionsUtilisateur]);
Afficher(" ",pionsUtilisateur[indicePionsUtilisateur]," ");
CouleurFond(0);
Afficher(" ");
FINP