Vérififaction d'un tout ptit algo
Anildar
-
artragis Messages postés 481 Date d'inscription Statut Membre Dernière intervention -
artragis Messages postés 481 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai eu ma premiere heure de cour d''algo vendredi, et du coup j'ai eu envie de faire mon premier algo qui transforme les nombres décimaux en binaire.
Le probleme c'est que je n'ai aucun moyen de le vérifier donc je le post ici et faudrait juste me dire quelles sont les erreurs (s'il y en a) :)
Programme Binaire
Var entier nombre reste resultat=0 puissance=0
Début
-----Afficher("Entrez une valeur numérique :")
-----Saisir(nombre)
-----TantQue nombre <> 0
----------nombreDIV2=nombre
----------nombreMOD2=reste
----------resultat+reste*10^puissance=resultat
----------puissance+1=puissance
-----FinTantQue
-----Afficher("Votre nombre en binaire est:", resultat)
Fin
Voilà !!
J'ai une question subsidiaire : comment on fait pour vérifier un algo, lorsqu'on ne connait aucun langage de programmation ? ^^
Merci d'avance :)
J'ai eu ma premiere heure de cour d''algo vendredi, et du coup j'ai eu envie de faire mon premier algo qui transforme les nombres décimaux en binaire.
Le probleme c'est que je n'ai aucun moyen de le vérifier donc je le post ici et faudrait juste me dire quelles sont les erreurs (s'il y en a) :)
Programme Binaire
Var entier nombre reste resultat=0 puissance=0
Début
-----Afficher("Entrez une valeur numérique :")
-----Saisir(nombre)
-----TantQue nombre <> 0
----------nombreDIV2=nombre
----------nombreMOD2=reste
----------resultat+reste*10^puissance=resultat
----------puissance+1=puissance
-----FinTantQue
-----Afficher("Votre nombre en binaire est:", resultat)
Fin
Voilà !!
J'ai une question subsidiaire : comment on fait pour vérifier un algo, lorsqu'on ne connait aucun langage de programmation ? ^^
Merci d'avance :)
A voir également:
- Vérififaction d'un tout ptit algo
- Aide : algo palindrome - Forum Programmation
- Demande d'algo Mastermind - Forum Programmation
- Aide pour exercice algo - Forum Algorithmes / Méthodes
- Algo arbre/graph ✓ - Forum Programmation
- Algo nombres premiers - Forum Programmation
4 réponses
Salut,
Vos algo me semblent faux.
Il y a sinon une méthode plus simple pour convertir en binaire : la division successive.
Push permet d'insérer ret (la retenue) à la première position de nombreBin.
J'ai vraiment fait l'algo à l'arrache, donc pas de commentaires, et peut-être erreur d'inattention.
Cdt
Vos algo me semblent faux.
Il y a sinon une méthode plus simple pour convertir en binaire : la division successive.
Debut Var nombreBin="" Var nombreDec Afficher ("Choix du nombre décimal à convertir en binaire") Saisir(nombreDec) diviseur=nombreDec Tant que diviseur>0 Faire ret<--diviseur mod 2 push(nombreBin,ret) diviseur<--diviseur / 2 FinTantQue Afficher (nombreBin) Fin
Push permet d'insérer ret (la retenue) à la première position de nombreBin.
J'ai vraiment fait l'algo à l'arrache, donc pas de commentaires, et peut-être erreur d'inattention.
Cdt
Salut, Merci beaucoup pour toutes tes explications :)
en fait on a vu tout les operateur de maniere théorique et donc j'avais pas encore vu cela : variable<==affectation
Par contre il y a quelque chose que je comprend pas.
tu as transformé mon 10 en 2, mais si je fais ca, ca fonctionne plus ?!
J'ai refais plein de fois le calcul, et par exepmle avec 5 :
5 div 2 = 2
5 mod 2 = 1
2 div 2 = 1
2 mod 2=0
1 div 2 = 0
1 mod 2=1
resultat = 1*10^0 + 0*10^1 + 1*10^2 = 1 + 0 + 100 = 101 Là j'ai bien mon chiffre en binaire.
tandis que : resultat = 1*2^0 + 0*2^1 + 1*2^2 = 1 + 0 + 4 = 5 ^^
donc ca j'ai pas trop compris...
Voilà, Merci d'avance :)
en fait on a vu tout les operateur de maniere théorique et donc j'avais pas encore vu cela : variable<==affectation
Par contre il y a quelque chose que je comprend pas.
tu as transformé mon 10 en 2, mais si je fais ca, ca fonctionne plus ?!
J'ai refais plein de fois le calcul, et par exepmle avec 5 :
5 div 2 = 2
5 mod 2 = 1
2 div 2 = 1
2 mod 2=0
1 div 2 = 0
1 mod 2=1
resultat = 1*10^0 + 0*10^1 + 1*10^2 = 1 + 0 + 100 = 101 Là j'ai bien mon chiffre en binaire.
tandis que : resultat = 1*2^0 + 0*2^1 + 1*2^2 = 1 + 0 + 4 = 5 ^^
donc ca j'ai pas trop compris...
Voilà, Merci d'avance :)
bon, si tu veux faire un algorithme lisible n'utilise le "=" que dans les test (si, while, for, else if, until) sinon utilise ça
variable<==affectation
une bonne habitude est de mettre des commentaire aussi, surtout dans les petits programmes, et aussi déterminer à quoi sert chaque variable, c'est bien pour t'y retrouver après.
donc
sinon le but c'est de prendre un papier et de faire ce que j'ai ton nombre
j'ajouterai qu'ici, il te fait aussi rajouter une clause disant "si nombre>0" car sinon je peux faire la même chose avec -24 par exemple, pourtant ton résultat sera le même que si on avait pris 24, même si un ordi ne lit pas de "-" bas autant le rajouter, ou alors faire en sorte que le résultat ne soit pas le même.
variable<==affectation
une bonne habitude est de mettre des commentaire aussi, surtout dans les petits programmes, et aussi déterminer à quoi sert chaque variable, c'est bien pour t'y retrouver après.
donc
Programme Binaire Var entier nombre //le nombre lu reste //le reste de la dvision par 2 puissance=0 //la puissance qui est ainsi testée string (chaine de caractère) resultat="" //ce sera le nombre binaire Début -----Afficher("Entrez une valeur numérique :") -----Saisir(nombre) -----TantQue nombre <> 0 ----------nombre<==nombreDIV2 ----------reste<==nombreMOD2 ----------resultat<==resultat+(reste*2^puissance) //j'ai modiifé ton 10 en 2 car sinon ça sert à rien... ton but est de faire en puissance de 2 ----------puissance+1=puissance -----FinTantQue -----Afficher("Votre nombre en binaire est:", resultat) Fin
sinon le but c'est de prendre un papier et de faire ce que j'ai ton nombre
j'ajouterai qu'ici, il te fait aussi rajouter une clause disant "si nombre>0" car sinon je peux faire la même chose avec -24 par exemple, pourtant ton résultat sera le même que si on avait pris 24, même si un ordi ne lit pas de "-" bas autant le rajouter, ou alors faire en sorte que le résultat ne soit pas le même.
Programme Binaire Var entier nombre //le nombre lu reste //le reste de la dvision par 2 string (chaine de caractère) resultat="" Début -----Afficher("Entrez une valeur numérique :") -----Saisir(nombre) -----TantQue nombre <> 0 ----------reste<==nombreMOD2 ----------nombre<==nombreDIV2 ----------resultat<==reste + resultat//ce qui est plus élégant et plus facile à comprendre avec ta méthode, je l'avoue -----FinTantQue -----Afficher("Votre nombre en binaire est:", resultat) Fin
oui j'avais bien fait quelques erreur, notament en laissant ta phase ave les puissances de 10 ça alourdi un algorithme qui peut être très simple quand il est géré avec des string.
Quant aux => c'est utilisé en algorithmie pour ne pas se tromper, car en algo ou en prog x=y n'est pas l'équivalent de y=x, la première signifie qu'on sonne à x la valeur de y (souvent calculée au préalable) et inverse dans la seconde, ce qui permet d'avoir des opérations gnere x=x+1 donc le ==> est juste plus clair que le = (en prog tu verras souvent une diférence avec x=affectation et x==valeur à testée)
en somme fait confiance à fiddy, son algo est bon et le style aussi.