Département Informatique 2008-2009 PROGRAMMATION 1 TD1 Notions à acquérir Déclaration des variables et définition des types simples (entiers, réels, booléens et caractères) Instructions simples : affectation et instruction nulle Instructions séquentielles Instructions itératives : Tant que Condition Faire Instruction Fin Tant que Boucle Pour Commentaires pertinents des programmes et trace des algorithmes Exercice 1 Sachant que Nbre, X suivant début Nbre Valeur X Valeur X fin et Valeur sont des variables de type entier, effectuer la trace de l'algorithme 10 8 Valeur - Nbre Valeur * 2 Valeur - Nbre Exercice 2 Sachant que A et B sont des variables de type entier, quelles seront les valeurs affectées à A et B en fin de l’algorithme suivant début B 5 A B + 4 B A * 2 A A - B fin Exercice 3 a) Quelles seront les valeurs des variables de type entier A, B après exécution des instructions suivantes : Département Informatique 2008-2009 Programmation 1 1 début A B A B 10 3 B A fin b) Les deux dernières instructions permettent elles d’échanger les deux valeurs de A et B ? Si l’on inverse l’ordre de ces deux dernières instructions, cela change-t-il quelque chose ? c) Proposez une solution pour échanger les valeurs de A et B. Exercice 4 Dans l'algorithme qui suit, discuter la validité et la pertinence de chaque affectation : Variables début a d c c1 c2 u v u v a a a, b, c, d : entier; c1, c2 : caractère; u, v : booléen; 10 a b + c 'a' 'b' c1 = c2 vrai u ou v a + v c1 / 4 d / 5 fin Exercice 5 Soient les deux types : type T_COULEUR = (bleu, rouge, vert, jaune) type T_FEUX = ( rouge, orange, vert) et soient les variables suivantes C1, C2 : T_COULEUR F1, F5 : T_FEUX Discuter de la validité et de la pertinence des instructions suivantes : début C1 C2 F1 F1 F5 F5 C1 rouge orange C1 rouge F1 vert vert + rouge fin Département Informatique 2008-2009 Programmation 1 2 Exercice 6 a) Ecrire un algorithme qui calcule la somme des quinze premiers nombres entiers naturels. b) Ecrire un algorithme qui calcule la somme des quinze premiers termes de la suite U n qui est telle que : U1 = 1 Un = Un-1 + n où n > 1 c) Ecrire un algorithme qui calcule la factorielle d’un nombre entier donné par l’utilisateur. N’y a-t-il pas un « problème » pour le calcul de la factorielle d’un nombre entier « relativement » grand ? Lors du passage en machine, déterminer à partir de quelle valeur votre résultat est erroné. Exercice 7 Ecrire un algorithme qui demande un nombre entier au départ, puis qui affiche à l’écran les dix nombres suivants. Exercice 8 Ecrire un algorithme qui demande un nombre entier au départ, puis qui affiche à l’écran la table de multiplication de ce nombre. Si le nombre est 12, on verra à l’écran : 12 x 1 = 12 12 x 2 = 24 ….. 12 x 10 = 120 Exercice 9 Soit la liste des âges d'un certain nombre de personnes, ce nombre étant strictement positif. Ces âges sont exprimés en années à l'aide d'entiers. Ecrire un algorithme qui permet d’afficher à l'écran l’âge moyen de l'ensemble considéré, sachant que les âges sont lus au clavier les uns après les autres jusqu'à trouver un nombre nul. Exercice 10 a) Ecrire un algorithme qui calcule puis affiche successivement le résultat des 20 premiers termes de la suite : x0 = 1 xn 2n = --------------(n)! Département Informatique 2008-2009 Programmation 1 3 b) La suite xn étant convergente, écrire un algorithme qui calcule la somme des xn . On arrêtera l’algorithme lorsque le terme additionnel xn deviendra inférieur à une valeur EPSILON qui sera fixée en début de programme (par exemple EPSILON = 10 -4 ) Exercice 11 Ecrire un algorithme qui permette de calculer /4 sachant que cette valeur est la limite de la suite : S = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...... Exercice 12 Ecrire un algorithme permettant de calculer la suite de Fibonacci F(n) à l'ordre 15, sachant que : F(n) = 1 si n = 1 1 si n = 2 F(n-1) + F(n-2) si n > 2 Calculer et afficher à chaque itération (pour n > 1) le rapport de 2 termes successifs F(n) / F(n-1) Exercice 13 Ecrire un algorithme qui permet de convertir un nombre entier écrit en base 10, en un nombre écrit en base 2, en faisant des divisions successives par 2. Exemple : (5)10 = (101)2 Remarque : s’interroger sur la présentation du nombre obtenu : à l’endroit, à l’envers ? Exercice 14 a) Etant donnés deux entiers a et b, calculer a * b en n’utilisant que l’opérateur d’addition « + ». b).Etant donnés deux entiers a et n lus au clavier, calculer a puissance n en utilisant seulement l’opérateur « + ». Exercice 15 Ecrire un algorithme qui permet d'afficher la table de vérité d'un expression booléenne comme par exemple A and ( B or C ) où A, B et C sont des variables booléennes. Département Informatique 2008-2009 Programmation 1 4