Vérififaction d'un tout ptit algo

Fermé
Anildar - 7 sept. 2008 à 14:18
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 - 7 sept. 2008 à 20:01
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 :)
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
7 sept. 2008 à 18:46
Salut,
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
1
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 :)
0
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
7 sept. 2008 à 14:45
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
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.
-1
artragis Messages postés 481 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 6 avril 2010 146
7 sept. 2008 à 20:01
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.
-1