Ecrire un algorithme (en langage naturel)
Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
-
farcry
- Messages: 3
- Enregistré le: 10 Déc 2018, 21:23
-
par farcry » 10 Déc 2018, 21:27
Bonsoir, quelqu'un pourrait-il m'écrire ceci :
Écrire l'algorithme qui a pour entrée un nombre compris entre 0 et 255, affiche ce nombre en base 2.
Exemple : 59 s'écrit 0011 1011 en base 2 ( binaire )
en langage naturel svp.
Merci par avance de votre réponse.
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 10 Déc 2018, 21:36
comment fais-tu pour mettre un nombre en base 2 ?
-
farcry
- Messages: 3
- Enregistré le: 10 Déc 2018, 21:23
-
par farcry » 10 Déc 2018, 21:48
par une méthode de division
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 10 Déc 2018, 22:00
avec des nombre entier, et la division entière
n/128 = 1 -> on code 1 et on enlève 128 à n
sinon, on code 0
on recommence avec 64
ce qui donne un truc du genre
chaine t= chaine vide
k = 128
entrer n
faire
_si n/k = 1
__ ajouter "1" à t
__ n prends la valeur n-k
_sinon
__ajouter "0" à t
_k=k/2
tant que k>1
afficher t
A tester
-
farcry
- Messages: 3
- Enregistré le: 10 Déc 2018, 21:23
-
par farcry » 11 Déc 2018, 00:27
Merci!
Donc au début tu initialise la variable t si je comprends bien ?
à la fin il ne faudrait pas rajouter " fin" ?
-
FLBP
- Habitué(e)
- Messages: 289
- Enregistré le: 25 Aoû 2017, 02:07
-
par FLBP » 11 Déc 2018, 08:32
Salut,
si tu veux éviter la division entière tu peux simplement tester si n >= k
(dans le code de pascal16)
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 20:39
-
par chan79 » 11 Déc 2018, 10:59
salut
on peut aussi faire des divisions successives par 2, en divisant à chaque fois le quotient entier par 2 jusqu'à ce qu'il soit nul.
Les restes donnent l'écriture en base 2.
On n'est pas obligé de se limiter aux nombres inférieurs à 255
-
Black Jack
par Black Jack » 11 Déc 2018, 11:09
Voila le programme de Pascal adapté pour Algobox (ce qui n'est pas ce qui est demandé)
Mais ce programme (qui a été testé) permet de voir les quelques petites modifications à faire dans le programme de Pascal pour qu'il fonctionne sans erreurs.
- Code: Tout sélectionner
VARIABLES
T EST_DU_TYPE CHAINE
K EST_DU_TYPE NOMBRE
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER "Entrez un nombre entier compris entre 0 et 255"
LIRE N
K PREND_LA_VALEUR 128
T PREND_LA_VALEUR ""
TANT_QUE (K >= 1) FAIRE
DEBUT_TANT_QUE
SI (N >= K) ALORS
DEBUT_SI
T PREND_LA_VALEUR T + "1"
N PREND_LA_VALEUR N-K
FIN_SI
SINON
DEBUT_SINON
T PREND_LA_VALEUR T + "0"
FIN_SINON
K PREND_LA_VALEUR K/2
FIN_TANT_QUE
AFFICHER T
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 20:39
-
par chan79 » 11 Déc 2018, 11:14
salut Black Jack
en python (bien-sûr, on ne rentre pas la valeur 0 pour n)
-
Black Jack
par Black Jack » 11 Déc 2018, 11:16
Salut Chan.
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 11 Déc 2018, 12:06
On pourrait discuter sur l'utilité d'un code qui donne en base 2 un nombre déjà stocké en base 2 en mémoire.
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 20:39
-
par chan79 » 11 Déc 2018, 12:19
pascal16 a écrit:On pourrait discuter sur l'utilité d'un code qui donne en base 2 un nombre déjà stocké en base 2 en mémoire.
c'est vrai
Y a-t-il moyen d'obtenir directement le nombre qui a été stocké en base 2 ?
-
FLBP
- Habitué(e)
- Messages: 289
- Enregistré le: 25 Aoû 2017, 02:07
-
par FLBP » 11 Déc 2018, 12:22
L'exercice ne fait nulle part référence à une mémoire binaire,
mais j'avoue que si on prend cela en compte on a plus quelque chose comme (en python):
- Code: Tout sélectionner
taille=8
n = int(input())
b = [0 for _ in range(taille)]
for i in range(taille):
if n&(1<<i):b[taille-i-1] = 1
print("".join(map(str,b)))
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 11 Déc 2018, 12:36
A ma connaissance, Python ne permet pas de lire directement en base 2 (comme le C++), il existe une fonction "bin()" qui est une conversion intégrée.
-
chan79
- Membre Légendaire
- Messages: 10330
- Enregistré le: 04 Mar 2007, 20:39
-
par chan79 » 11 Déc 2018, 13:14
Effectivement en python
print(bin(59)[2:]) donne bien 111011
Le [2:] c'est pour éviter le 0b qui se colle à gauche du résultat, je ne sais pas pourquoi.
Merci pascal16
-
FLBP
- Habitué(e)
- Messages: 289
- Enregistré le: 25 Aoû 2017, 02:07
-
par FLBP » 11 Déc 2018, 18:47
pascal16 a écrit:A ma connaissance, Python ne permet pas de lire directement en base 2 (comme le C++), il existe une fonction "bin()" qui est une conversion intégrée.
La fonction bin(int) existe, mais tu pense que les nombres sous python sont stockés en base pi ?
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 11 Déc 2018, 19:08
oui, le format de stockage est binaire, c'est obligatoire en informatique (voir fonction binaires "et" "ou" ...).
Mais rien n'est fait pour afficher les donnés en binaires, c'est de la base 10 le plus souvent, du texte ou de l'hexa .
Les écrans de sortie de bas affichent du texte uniquement, les polices de caractère en mode graphique sont carrément des images vectorielles.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 53 invités