programmation 1

publicité
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
Téléchargement