CM 5 (Conception d`un programme, exemple : conversion décimal

publicité
15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille INFORMATIQUE ET PROGRAMMATION Licence 1 -­‐ Sciences Cogni;ves 2014 -­‐ 2015 Adrien Guille -­‐ Université Lumière Lyon 2 Bureau K195 adrien.guille@univ-­‐lyon2.fr hRp://mediamining.univ-­‐lyon2.fr/people/guille 1
15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 2
Concevoir un programme en Python •  Définir les entrées et les sor;es •  Variables •  Spécifier les éventuelles contraintes •  Tester les entrées •  Concevoir l’algorithme •  Diagramme d’ac;vité •  Écrire le programme correspondant •  Traduire l’algorithme en Python 15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 3
Exemple : conversion décimal -­‐ binaire •  Entrée •  Écriture décimale d’une valeur en;ère •  Sor;e •  Écriture binaire de ceRe valeur •  Contrainte •  L’entrée doit être strictement inférieure à 256, autrement dit la sor;e est une séquence binaire de 8 bits (11111111 = 255) •  Algorithme •  Construire la somme de puissances de 2 valant l’entrée, en testant toutes les puissances de 2 à par;r de la plus grande possible (ici 27 puisque la séquence est de longueur 8 et que le premier bit représente 20) 15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 4
Exemple : conversion décimal -­‐ binaire •  Algorithme Début Décimal = lecture d’une valeur en;ère Posi;on = Posi;on -­‐ 1 Fin : la valeur décimale saisie ne peut être représentée par une séquence binaire de longueur 8 FAUX Décimal < 256 VRAI Somme < Décimal VRAI FAUX (Somme + 2 Posi;on) ≤ Décimal Binaire[posi;on] = 1 Somme = Somme + 2 Posi;on VRAI Posi;on = 7 Somme = 0 Binaire = [0,0,0,0,0,0,0,0] FAUX Fin : on a construit la séquence binaire représentant la valeur décimale saisie 15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 5
Exemple : conversion décimal -­‐ binaire •  Algorithme Début Décimal = lecture d’une valeur en;ère Fin : la valeur décimale saisie ne peut être représentée par une séquence binaire de longueur 8 FAUX Décimal < 256 VRAI BOUCLE
Posi;on = Posi;on -­‐ 1 Somme < Décimal VRAI FAUX (Somme + 2 Posi;on) ≤ Décimal Binaire[posi;on] = 1 Somme = Somme + 2 Posi;on VRAI Posi;on = 7 Somme = 0 Binaire = [0,0,0,0,0,0,0,0] FAUX Fin : on a construit la séquence binaire représentant la valeur décimale saisie 15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 6
Exemple : conversion décimal -­‐ binaire •  Programme Python •  Le texte coloré en vert et précédé du symbole # est un commentaire en Python decimal = input("Saisir un nombre en;er : ") # Entrée decimal = int(decimal) # On indique à Python que ceRe variable représente un en;er somme = 0 # Valeur courante de la somme de puissance de 2 binaire = [0,0,0,0,0,0,0,0] # Séquence binaire que l'on va modifier dans la boucle posi;on = 7 # Variable u;lisée pour suivre le déplacement à travers la séquence binaire if decimal < 256 : # On vérifie que l'entrée est strictement inférieure à 256 while (somme < decimal) : if (somme + 2 ** posi;on) <= decimal : # On s'approche de la valeur d'entrée sans la dépasser somme = somme + 2 ** posi;on # On met à jour la somme binaire[posi;on] = 1 # On met à jour la séquence binaire posi;on = posi;on -­‐ 1 # On se déplace d'un rang dans la séquence print("Le nombre décimal ",decimal," s'écrit ",binaire," avec le système binaire") # Sor;e else : print("Le nombre décimal ",decimal," ne peut pas être représenté avec une séquence binaire de longueur 8") # Sor;e alterna;ve 15/10/2014 Informa;que et programma;on -­‐ CM5 -­‐ A. Guille 7
Exemple : conversion décimal -­‐ binaire •  Programme Python •  Si l’u;lisateur saisi la valeur décimale 121, le programme renvoie : 10011110 •  Ce qui est correct puisque 1+0+0+8+16+32+64+0 = 121 decimal = input("Saisir un nombre en;er : ") # Entrée decimal = int(decimal) # On indique à Python que ceRe variable représente un en;er somme = 0 # Valeur courante de la somme de puissance de 2 binaire = [0,0,0,0,0,0,0,0] # Séquence binaire que l'on va modifier dans la boucle posi;on = 7 # Variable u;lisée pour suivre le déplacement à travers la séquence binaire if decimal < 256 : # On vérifie que l'entrée est strictement inférieure à 256 while (posi;on >= 0) and (somme < decimal) : if (somme + 2 ** posi;on) <= decimal : # On s'approche de la valeur d'entrée sans la dépasser somme = somme + 2 ** posi;on # On met à jour la somme binaire[posi;on] = 1 # On met à jour la séquence binaire posi;on = posi;on -­‐ 1 # On se déplace d'un rang dans la séquence print("Le nombre décimal ",decimal," s'écrit ",binaire," avec le système binaire") # Sor;e else : print("Le nombre décimal ",decimal," ne peut pas être représenté avec une séquence binaire de longueur 8") # Sor;e alterna;ve 
Téléchargement