Académique Documents
Professionnel Documents
Culture Documents
1.2 Expression
Une expression est une formule permettant de trouver une valeur après avoir effectué un calcul
sur des données : constantes, variables ou fonctions.
Exemples :
1
1.3 Structures de contrôle de flux d’exécution
Les structures de contrôle de flux permettent d’exprimer l’ordre dans lequel les instructions seront
éxexutées.
1.3.3 En python if
La sutructure sélective est implémentée par la structure if:
1. if est obligatoire (pas de eilf ou else sans un bloc if) (1:1 fois)
2. elif est optionnelle, permet d’introduire plusieurs blocs conditionnés (0:* fois)
3. else est optionnelle, représente la négation de toutes les conditions précédentes (0:1 fois)
if cnd1:
# bloc 1
elif cnd2:
# bloc 2
elif cnd3:
# bloc 3
else:
# bloc 4
2
1.3.5 Pour en python
La boucle pour en python permet d’exécuter un traitement autant de fois qu’on a d’éléments dans
un ensemble :
1. Vérifier la condition
2. Exécuter le bloc indenté de while
while condition:
# Traitement
Attention à ne pas donner une condition Fausse, ou une condition toujours vraie.
while True:
# Traitement
if condition:
break
2 Projet
2.1 Représentation des données
Nous souhaitons réaliser une petite application qui permet aux élèves de la première année
(CPGE) de comprendre comment les données sont représentées au sein d’un système informa-
tique.
1. Dans un premier temps, répondez aux questions suivantes de la façon la plus précise possi-
ble
3
1. Comment convertir un nombre en binaire ?
• Exprimer en fonction de la valeur Combien de fois on vérifie si le quotient est nul
2. Comment évaluer un code binaire ?
3. Comment écrire un code binaire sur un nombre de bits donné ?
4. Comment coder un nombre en notation biaisée ?
5. Comment coder un nombre en notation signe + valeur ?
6. Comment coder un nombre en complément à 1
7. Comment coder un nombre en complément à 2
2. En utilisant flowgorithm
# Exemple d'appel
bin(63)
Out[1]: '111111'
4
pour représenter une valeur en utilisant les notations demandées il faut présiser le nombre de
bits à utiliser, il nous faut donc une fonction qui permet d’écrire un code sur le nombre de bits
spécifié.
# Exemple d'appel
etendre('111111', 8)
Out[2]: '00111111'
# Exemple d'appel
evaluer('00111111')
Out[3]: 63
5
2.1.3 Méthode : calcul du produit
n
• Pour calculer un produit de la forme P = ∏ ti
i =0
3 Notation biasée
In [4]: def coderennb(n, k, nbits):
codenb = n + k
codenb = bin(codenb)
codenbsurnbits = etendre(codenb, nbits)
return codenbsurnbits
# Exemple d'appel
coderennb(-67, 127, 8)
Out[4]: '00111100'
4 Notation signe+Valeur
Pour programmer la notation signe+Valeur, nous avons besoin de calculer la valeur absolue du
nombre relatif :
Calcul de la valeur absolue (NB: python offre une fonction prédéfinie abs() ):
{
x si x ≥ 0
|x| =
− x si x < 0
# Exemple d'appel
abs(-67)
Out[5]: 67
6
Exercice: Redéfinissez la fonction abs() en utilisant l’expression conditionnelle (vv if cnd else
vf)
Nous avons besoin de coder le signe en utilisant la convention suivante :
{
0 si n ≥ 0
signe(n) =
1 si n < 0
# Exemple d'appel
codersigne(-17)
Out[6]: 1
# Exemple d'appel
coderensv(-17, 8)
Out[7]: '10010001'
4.1 Complément à 1
Pour coder une valeur en complément à 1, il nous faut une fonction qui permet d’intervertir les
bits du code binaire de la valeur absolue du nombre s’il est négatif.
# Exemple d'appel
c1('11110000')
7
Out[8]: '00001111'
# Exemple d'appel
c1('11110000')
Out[9]: '00001111'
Exercices
• Définissez la fonction copie(chaine) qui crée une copie de chaine caractère par caractère.
• Définissez la fonction souschaine(chaine, i, n) qui retourne n caractères à parir du car-
actère d’indice i.
• Définissez la fonction inverser(chaine) qui retourne l’inverse de la chaîne passée en argu-
ment.
• Définissez la fonction hexa(n) qui prend un entier n et retourne une chaîne qui représente
son code en hexadécimal.
On combine les fonctions que l’on a définies pour répondre à notre question principale :
8
codec1 = codebinairenbits
return codec1
# Exemple d'appel
coderenc1(-32, 8)
Out[10]: '11011111'
# Exemple d'appel
coderenc2(-32, 8)
--------------------------------------------------------------------------
<ipython-input-11-e899d6cc384a> in <module>
10
11 # Exemple d'appel
---> 12 coderenc2(-32, 8)
9
4.1.3 Méthode
Si le problème est difficile
In [15]: # Main
N = int(input('Entrer une valeur '))
nb = int(input('Entrer le nombre de bits '))
codebin = etendre(bin(abs(N)), nb)
codesv = coderensv(N, nb)
codenb = coderennb(N, 127,nb)
codec1 = coderenc1(N, nb)
print(codebin, ' est le code binaire de ', abs(N), ' sur ', nb ,' bits')
print(codesv, ' est le code en signe+valeur de ', N, ' sur ', nb ,' bits')
print(codenb, ' est le code en notation biaisée de ', N, ' sur ', nb ,' bits')
print(codec1, ' est le code en complément à 1 de ', N, ' sur ', nb ,' bits')
10
Top Down
5.1 Avantages :
1. Modularité : Les sous-problèmes peuvent être traités indépendamment, ce qui facilite la
résolution, l’implémentation et le test de chaque solution.
2. Réutilisation : Les solutions partielles peuvent être réutilisées ou adaptées aux problèmes
similaires.
3. Travail en équipe : les membres d’une équipe peuvent travailler en parallèle sur des parties
différentes.
Remarque Les solutions partielles peuvent être implémentées par des fonctions liées re-
groupées dans des ensembles cohérents dits modules.
Exercices Analyser les problèmes suivants en utilisant la méthode TOP/DOWN
11