A. Sigayret : Algorithmique

Exercices d'algorithmique : série 1

N.B. Rechercher sur Wikipedia (ou autre) les définitions inconnues nécessaires à la résolution des exercices.

Exercice 1.1.
a) Avec un mot-mémoire de 32 bits, combien peut-on représenter d'entiers naturels ? d'entiers relatifs ? de caractères ? de chaines de caractères ?
b) Quel taille de mot-mémoire faudrait-il pour coder tous les chiffres ? pour donner un identifiant unique à chaque être humain de la planète ? Pour représenter tous les réels compris entre 0 et 1 ?
c) Quel est le rapport de l'algorithme Encadrer avec les questions précédentes ?
algorithme Encadrer
Donnée : un entier naturel n.
Résultat : un entier naturel k tel que 2k−1 < n ≤ 2k.
k←0;
p←1;
Tantque p<n faire
k←k+1;
p←2*p;
d) Quelle taille de mot-mémoire faudrait-il pour représenter le nombre π avec sept chiffres après la virgule ?

Exercice 1.2.
a) Quel est l'effet de chacune des instructions de l'algorithme :
algorithme 12a
Donnée  un entier n.
Résultat : ...
a← 5;
b←b+n;
c=4;
c→4;
s="ok";
x←(s≠"ko");
y←(x ou a=5);
a←3a;
a*3←a+2;
b) Ecrire un algorithme qui affiche la conjugaison au singulier du futur de l'indicatif d'un verbe du premier groupe dont l'infinitif est donné. (L'opérateur de concaténation de chaine est noté +)
c) Ecrire un algorithme qui affiche toute la conjugaison du conditionnel présent d'un verbe du premier groupe dont l'infinitif est donné.

Exercice 1.3.
a) Ecrire une procédure Echanger qui échange les valeurs de deux variables x et y quelconques.
b) Faire la trace de l'algorithme ci-dessous pour x=−5 et y=4, puis préciser de qu'il fait.
algorithme 13b
Donnée : deux entiers n et p.
Résultat : ...
n←n+p;
p←n−p;
n←n−p.
c) Ecrire une fonction qui transforme une température en Farenheit en une température en Celsius. Ecrire la fonction réciproque.
d) Ecrire une fonction IMC qui donne l'indice de masse corporelle d'une personne. Pourquoi ne peut-on écrire la fonction réciproque ?

Exercice 1.4.
a) Ecrire une fonction qui détermine si un nombre est pair. De quel type est le retour de cette fonction ?
b) Que fait l'algorithme précisé suivant ?
fonction Estconforme
Entrée : un entier n.
Sortie : ...
x←0; y←1; z←2 ;
Retourner ((x+y+z+n) mod 2 = 0).

Exercice 1.5.
a) Ecrire une fonction Distance qui calcule la distance entre deux points du plan.
b) Ecrire une fonction qui vérifie si un point du plan appartient à une droite d'équation ax+by+c=0.
c) En utilisant la fonction Distance, écrire une fonction qui vérifie si un triangle est équilatéral. Même question pour un triangle isocèle, puis pour un triangle rectangle.

Exercice 1.6.
a) Ecrire un algorithme général qui détermine si une année est bissextile.
b) Ecrire un algorithme qui détermine si une date est valide. (Quel structure de contrôle utiliser pour vérifier le nombre de jours des différents mois ?)
c) Ecrire un algorithme qui calcule le nombre de jour entre le premier janvier et une date de la même année.
d) Ecrire un algorithme qui convertit une durée en jours, heures, minutes et secondes en une durée en secondes. Ecrire l'algorithme réciproque.

Exercice 1.7.
a) Quelle est la complexité de l'algorithme Encadrer de la question 1.1.c) ?
b) Pour chacun des autres algorithmes ci-dessus, montrer que le problème correspondant est en O(1). Pourquoi une complexité algorithmique en O(1) rend-elle évidente la preuve d'arrêt d'un algorithme ?
c) Pourquoi le problème suivant est-il semi-décidable ?
Problème Résolution
Donnée : une équation ax2+bx+c=0 à coefficients réels.
Résultat : les solutions de cette équation.