Livre_silo 30 août 2013 16:32 Page 106
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
106
Informatique pour tous
SAVOIR-FAIRE Initialiser les variables
On a vu que, tant que l’on n’a pas affecté une valeur à une variable, celle-ci est absente
de l’état. Il faut donc s’assurer qu’à chaque fois qu’une variable est utilisée dans une
expression, elle est déjà présente dans l’état, sous peine d’une erreur. Pour cela :
1 On identifie la première ligne du programme où la variable est utilisée. Lorsque
l’algorithme comporte des instructions conditionnelles, il peut y avoir plusieurs
telles lignes pour la même variable, en fonction du résultat du test.
2 On vérifie que cette première ligne est toujours une affectation de cette variable.
Elle peut être rendue difficile à repérer parce qu’une instruction for la gère ou parce
qu’ elle est combinée avec une saisie au clavier.
3 Enfin, si une variable n’est pas initialisée, il faut déterminer une valeur d’initialisation cohérente avec la suite du programme et ajouter l’instruction correspondante
avant la première utilisation de la variable.
Exercice 4.28 Corriger le programme suivant.
n = int(input())
for i in range(n):
if i % 2 == 0:
carre = i ** 2
else:
carre = 0
total = total + carre
Ce programme semble prévu pour calculer la somme des carrés des entiers pairs strictement inférieurs
à n. Il comporte quatre variables :
• n est initialisée par une entrée au clavier en tout début de programme.
• i est un compteur de boucle et n’a donc pas besoin d’être initialisée.
• carre apparaît pour la première fois dans l’instruction conditionnelle et elle y est correctement initialisée,
quel que soit le résultat du test i % 2 == 0.
• total n’apparaît que dans la dernière ligne de la boucle. Cette ligne est bien une affectation de total,
mais avec une expression qui dépend elle-même de total : il sera impossible d’évaluer cette expression
lors de la première itération. Il faut donc initialiser total avant d’entrer dans la boucle, avec la valeur 0
pour ne pas perturber la somme qui sera calculée par la suite.
4.4.2 Valeurs itérables
Il y a un autre cas de figure qui nécessite de pouvoir faire une boucle : lorsque l’on veut
manipuler des valeurs de type composé, c’est-à-dire regroupant plusieurs éléments, tels les
n-uplets, les chaînes de caractères ou les listes. On aimerait pouvoir effectuer une opération
sur chacun des éléments d’une de ces valeurs, ce qui est raisonnable car :
• on sait identifier le premier élément que l’on va traiter (c’est le premier caractère d’une
chaîne, la première composante d’un n-uplet…) ;
• si on vient de traiter un élément, on sait que le suivant est juste après.
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
106
Informatique pour tous
SAVOIR-FAIRE Initialiser les variables
On a vu que, tant que l’on n’a pas affecté une valeur à une variable, celle-ci est absente
de l’état. Il faut donc s’assurer qu’à chaque fois qu’une variable est utilisée dans une
expression, elle est déjà présente dans l’état, sous peine d’une erreur. Pour cela :
1 On identifie la première ligne du programme où la variable est utilisée. Lorsque
l’algorithme comporte des instructions conditionnelles, il peut y avoir plusieurs
telles lignes pour la même variable, en fonction du résultat du test.
2 On vérifie que cette première ligne est toujours une affectation de cette variable.
Elle peut être rendue difficile à repérer parce qu’une instruction for la gère ou parce
qu’ elle est combinée avec une saisie au clavier.
3 Enfin, si une variable n’est pas initialisée, il faut déterminer une valeur d’initialisation cohérente avec la suite du programme et ajouter l’instruction correspondante
avant la première utilisation de la variable.
Exercice 4.28 Corriger le programme suivant.
n = int(input())
for i in range(n):
if i % 2 == 0:
carre = i ** 2
else:
carre = 0
total = total + carre
Ce programme semble prévu pour calculer la somme des carrés des entiers pairs strictement inférieurs
à n. Il comporte quatre variables :
• n est initialisée par une entrée au clavier en tout début de programme.
• i est un compteur de boucle et n’a donc pas besoin d’être initialisée.
• carre apparaît pour la première fois dans l’instruction conditionnelle et elle y est correctement initialisée,
quel que soit le résultat du test i % 2 == 0.
• total n’apparaît que dans la dernière ligne de la boucle. Cette ligne est bien une affectation de total,
mais avec une expression qui dépend elle-même de total : il sera impossible d’évaluer cette expression
lors de la première itération. Il faut donc initialiser total avant d’entrer dans la boucle, avec la valeur 0
pour ne pas perturber la somme qui sera calculée par la suite.
4.4.2 Valeurs itérables
Il y a un autre cas de figure qui nécessite de pouvoir faire une boucle : lorsque l’on veut
manipuler des valeurs de type composé, c’est-à-dire regroupant plusieurs éléments, tels les
n-uplets, les chaînes de caractères ou les listes. On aimerait pouvoir effectuer une opération
sur chacun des éléments d’une de ces valeurs, ce qui est raisonnable car :
• on sait identifier le premier élément que l’on va traiter (c’est le premier caractère d’une
chaîne, la première composante d’un n-uplet…) ;
• si on vient de traiter un élément, on sait que le suivant est juste après.
