Vous êtes sur la page 1sur 11

UNIVERSITE ADVENTISTE COSENDAI – CAMPUS DE DOUALA

TRAVAUX DIRIGES D’ALGORITHME – 1ère Année

SCHEMAS ITERATIFS OU REPETITIFS


Exercice 1

Soit la séquence d’actions suivante :

A 0

Tant que A < 10 faire

A A+1

Fin tant que

a. Quelle sera la valeur de A à la suite de cette séquence ?


b. Combien de fois l’action de A A + 1 est-elle exécutée ?
c. Donner une action simple équivalente à cette séquence.

Exercice 2

Soit la séquence

X 68

Y 2

Tant que X > Y faire

X X/2

Y Y*3

Fin tant que

a. Combien de fois l’action composée est-elle exécutée ?


b. Quelles sont les valeurs de X et Y à la suite de cette séquence ?

Exercice 3

Etudier le comportement du schéma itératif suivant en fonction des valeurs initiales de A et B.

Tant que A < 0 faire

Si A # 5

Alors

A A+1

Finsi

B B+1

Fin tant que

Que peut-on dire de la cohérence du schéma ?


Exercice 4

Soit la séquence d’actions suivantes :

Tant que pas assez de patates épluchées faire

Si panier non vide

Alors

Prendre une patate et l’éplucher

Finsi

Fin tant que

*Ecrire une séquence correspondante n’utilisant pas le schéma conditionnel

Exercice 5

Ecrire un algorithme qui demande à l’utilisateur un nombre compris entre 1 et 3 jusqu’à ce que la réponse
convienne.

Exercice 6

Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse convienne. En
cas de réponse supérieure à 20, on fera apparaître un message : « Plus petit ! », et inversement, « Plus grand !
» si le nombre est inférieur à 10.

Exercice 7

Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants. Par
exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à 27.

Exercice 8

Ecrire un algorithme qui demande un nombre de départ, et qui ensuite écrit la table de multiplication de ce
nombre, présentée comme suit (cas où l'utilisateur entre le nombre 7) :

Table de 7 :
7x1=7
7 x 2 = 14
7 x 3 = 21

7 x 10 = 70

Exercice 9

Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce
nombre. Par exemple, si l’on entre 5, le programme doit calculer :

1 + 2 + 3 + 4 + 5 = 15

NB : on souhaite afficher uniquement le résultat, pas la décomposition du calcul.

Exercice 10

Ecrire un algorithme qui demande successivement 20 nombres à l’utilisateur, et qui lui dise ensuite quel était
le plus grand parmi ces 20 nombres :

Entrez le nombre numéro 1 : 12


Entrez le nombre numéro 2 : 14

etc.

Entrez le nombre numéro 20 : 6


Le plus grand de ces nombres est : 14

Modifiez ensuite l’algorithme pour que le programme affiche de surcroît en quelle position avait été saisi ce
nombre :

C’était le nombre numéro 2

Exercice 11

Réécrire l’algorithme précédent, mais cette fois-ci on ne connaît pas d’avance combien l’utilisateur souhaite
saisir de nombres. La saisie des nombres s’arrête lorsque l’utilisateur entre un zéro.

Exercice 12

Ecrire un algorithme qui déclare et remplisse un tableau de 7 valeurs numériques en les mettant toutes à
zéro.

Exercice 13

Ecrire un algorithme qui déclare et remplisse un tableau contenant les six voyelles de l’alphabet latin.

Exercice 14

Que produit l’algorithme suivant ?

Tableau Nb(6) : Numérique


Variable i : Numérique
Début
Pour i de 0 à 5 faire
Nb(i) ← i * i
Finpour
Pour i de 0 à 5 faire
Ecrire Nb(i)
Finpour
Fin

Peut-on simplifier cet algorithme avec le même résultat ?

Exercice 15

Que produit l’algorithme suivant ?

Tableau N(7) : Numérique


Variables i, k : Numérique
Début
N(0) ← 1
Pour k de 1 à 6 faire
N(k) ← N(k-1) + 2
Finpour
Pour i de 0 à 6 faire
Ecrire N(i)
Finpour
Fin

Peut-on simplifier cet algorithme avec le même résultat ?


Exercice 16

Ecrire un algorithme qui lit une chaine de caractères et détermine s’il elle est un palindrome.

Un palindrome est une chaine de caractères qui se lit de la même manière dans les deux sens ;

Exemple : RADAR

Exercice 17

Que produit l’algorithme suivant ?

Tableau Suite(8) : Numérique


Variable i : Numérique
Début
Suite(0) ← 1
Suite(1) ← 1
Pour i de 2 à 7 faire
Suite(i) ← Suite(i-1) + Suite(i-2)
Finpour
Pour i de 0 à 7 faire
Ecrire Suite(i)
Finpour
Fin

Exercice 18

Ecrire un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui devront être
stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de valeurs qu’il compte
saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le programme affichera le nombre
de valeurs négatives et le nombre de valeurs positives.

Exercice 19

Ecrire un algorithme qui calcule la somme des valeurs d’un tableau (on suppose que le tableau a été
préalablement saisi).

Exercice 20

Ecrire un algorithme qui constitue un tableau, à partir de deux tableaux de même longueur préalablement
saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.

Tableau 1 :

4 8 7 9 1 5 4 6

Tableau 2 :

7 6 5 2 1 3 7 4

Tableau à constituer

11 14 12 11 2 8 11 10
Exercice 21

Toujours à partir de deux tableaux précédemment saisis, écrire un algorithme qui calcule le Bazoréen des
deux tableaux. Pour calculer le Bazoréen, il faut multiplier chaque élément du tableau 1 par chaque élément
du tableau 2, et additionner le tout. Par exemple si l'on a :

Tableau 1 :

4 8 7 12

Tableau 2 :

3 6

Le Bazoréen sera :

3 * 4 + 3 * 8 + 3 * 7 + 3 * 12 + 6 * 4 + 6 * 8 + 6 * 7 + 6 * 12 = 279

Exercice 22

Ecrire un algorithme permettant, toujours sur le même principe, à l’utilisateur de saisir un nombre déterminé
de valeurs. Le programme, une fois la saisie terminée, renvoie la plus grande valeur en précisant quelle
position elle occupe dans le tableau. On prendra soin d’effectuer la saisie dans un premier temps, et la
recherche de la plus grande valeur du tableau dans un second temps.

Exercice 23
Toujours et encore sur le même principe, écrire un algorithme permettant, à l’utilisateur de saisir les notes d'une classe. Le
programme, une fois la saisie terminée, renvoie le nombre de ces notes supérieures à la moyenne de la classe.

Exercice 24

Ecrire un algorithme qui permette de saisir un nombre quelconque de valeurs, et qui les range au fur et à
mesure dans un tableau. L’algorithme, une fois la saisie terminée, doit dire si les éléments du tableau sont
tous consécutifs ou non.

Par exemple, si le tableau est :

12 13 14 15 16 17 18

ses éléments sont tous consécutifs. En revanche, si le tableau est :


9 10 11 15 16 17 18

ses éléments ne sont pas tous consécutifs.

Exercice 25
Ecrire un algorithme qui inverse l’ordre des éléments d’un tableau dont on suppose qu'il a été préalablement saisi
(« les premiers seront les derniers… »)

Exercice 26
Ecrire un algorithme qui permette à l’utilisateur de supprimer une valeur d’un tableau préalablement saisi.
L’utilisateur donnera l’indice de la valeur qu’il souhaite supprimer. Attention, il ne s’agit pas de remettre une
valeur à zéro, mais bel et bien de la supprimer du tableau lui-même ! Si le tableau de départ était :
12 8 4 45 64 9 2

Et que l’utilisateur souhaite supprimer la valeur d’indice 4, le nouveau tableau sera :


12 8 4 45 9 2

Exercice 27

Écrire un algorithme remplissant un tableau de 6 sur 13, avec des zéros.

Exercice 28

Quel résultat produira cet algorithme ?

Tableau X(2, 3) : Numérique


Variables i, j, val : Numérique
Début
Val ← 1
Pour i de 0 à 1 faire
Pour j de 0 à 2 faire
X(i, j) ← Val
Val ← Val + 1
Finpour
Finpour
Pour i de 0 à 1 faire
Pour j de 0 à 2 faire
Ecrire X(i, j)
Finpour
Finpour
Fin

Exercice 29

Quel résultat produira cet algorithme ?

Tableau X(2, 3) : Numérique


Variables i, j, val : Numérique
Début
Val ← 1
Pour i de 0 à 1 faire
Pour j de 0 à 2 faire
X(i, j) ← Val
Val ← Val + 1
Finpour
Finpour
Pour j de 0 à 2 faire
Pour i de 0 à 1 faire
Ecrire X(i, j)
Finpour
Finpour
Fin
Exercice 30

Quel résultat produira cet algorithme ?

Tableau T(4, 2) : Numérique


Variables k, m : Numérique
Début
Pour k de 0 à 3 faire
Pour m de 0 à 1 faire
T(k, m) ← k + m
Finpour
Finpour
Pour k de 0 à 3 faire
Pour m de 0 à 1 faire
Ecrire T(k, m)
Finpour
Finpour
Fin

Exercice 31

Soit un tableau T à deux dimensions (12, 8) préalablement rempli de valeurs numériques.

Écrire un algorithme qui recherche la plus grande valeur au sein de ce tableau.

Exercice 32

Un wagon comporte 60 places assises dont 30 places non-fumeurs numérotées de 1 à 30 et 30 places fumeurs
numérotées de 31 à 60.

*Ecrire un algorithme qui gère les réservations de places.

Remarque : Il y a arrêt de réservation dans les cas suivants :

Plus de place assise libre dans le wagon.


Départ du train imminent.

Exercice 33

Parmi ces affectations (considérées indépendamment les unes des autres), lesquelles provoqueront des
erreurs, et pourquoi ?

Variables A, B, C en Numérique
Variables D, E en Caractère
A ← Sin(B)
B ← Sin(A) – Sin(D)
D ← Sin(A / B)
C ← Cos(Sin(A)
Exercice 34

a) N et CTR sont des variables numériques, VNOTE un vecteur de 100 éléments de type numérique. On
exécute la séquence S1 pour laquelle on frappe, au clavier, des valeurs numériques :

Séquence S1

CTR 0

Itérer

Ecrire (‘Taper une note de 0 à 20’)

Lire (N)

Sortir Si N > 20

CTR CTR + 1

VNOTE(CTR) N

FinItérer

Quelle catégorie de valeur faut-il frapper au clavier pour arrêter l’itération S1 ? Combien peut-on en frapper
au maximum ? Sachant que les valeurs saisies sont des notes, comment peut-on modifier S1 pour qu’aucune
valeur extérieure à l’intervalle [0, 20] ne soit acceptée.

b).On suppose que la séquence S1 a été exécutée. On exécute alors la séquence S2 dans laquelle CMOY et I
sont des valeurs numériques.

Séquence S2

CMOY 0

Pour I de 1 à CTR faire

Si VNOTE(I) >= 10

Alors

CMOY CMOY + 1

Finsi

Finpour

Ecrire (‘Il y a ‘, CMOY, ‘notes…..’)

Expliquer ce que fait la séquence S2 en remplaçant par un texte les points de suspension de la dernière
action de cette séquence.

c). En supposant toujours que S1 a été exécutée, rédiger une séquence qui calcule la moyenne des notes
saisies puis affiche cette moyenne et le nombre de notes qui soit supérieures ou égales à cette moyenne.

Exercice 35

Ecrire un algorithme qui demande une phrase à l’utilisateur et qui affiche à l’écran le nombre de mots de
cette phrase. On suppose que les mots ne sont séparés que par des espaces.

Exercice 36

Ecrire un algorithme qui demande une phrase à l’utilisateur et qui affiche à l’écran le nombre de
voyelles contenues dans cette phrase.
Exercice 37

On a relevé les notes d’un examen sur un bordereau. Composer un algorithme qui effectue la saisie de ces
notes et affiche la meilleure note, la note la plus faible et la moyenne des notes.

Exercice 38
Ecrivez un algorithme qui demande une phrase à l’utilisateur. Celui-ci entrera ensuite le rang d’un caractère à
supprimer, et la nouvelle phrase doit être affichée (on doit réellement supprimer le caractère dans la variable qui
stocke la phrase, et pas uniquement à l’écran).

Exercice 39

On a relevé sur une feuille une liste comportant au moins 40 noms.

A. Composer un algorithme qui affiche ces noms, dans l’ordre dans lequel ils apparaissent sur cette liste,
puis affiche ces noms à l’écran, dans l’ordre inverse.
B. Composer un algorithme qui affiche ces noms, dans l’ordre dans lequel ils apparaissent sur la liste, à
raison de 2 noms par ligne d’écran.
C. Composer un algorithme qui affiche ces noms par ordre alphabétique.

Exercice 40

Avec le processeur que l’on utilise, on suppose que l’on dispose d’une fonction permettant de tirer un entier au
hasard dans un intervalle [d, f] sous la forme d’une fonction notée hasard (d, f) (d et f sont deux entiers tels
que d < f). Par exemple, si X est une variable numérique, chaque exécution de X hasard(1, 10) affectera à
X un entier tiré au hasard parmi les nombres 1,2,3,4,5,6,7,8,9,10.

Composer un algorithme qui étudie la qualité de la répartition au hasard ainsi obtenue pour la simulation de
jets de dé (tirage de 1 à 6). L’algorithme doit effectuer un grand nombre de tirages et afficher le nombre
d’apparition de chaque entier possible : Si la répartition est bonne, les nombres doivent être sensiblement
égaux.

Exercice 41

On peut programmer un jeu de dé très simple, opposant un joueur à l’ordinateur. Le joueur et l’ordinateur
jettent alternativement le dé (le jet de l’ordinateur est simulé par un tirage au hasard en utilisant la fonction
hasard déjà définie) et les points marqués à chaque jet sont cumulés pour chaque participant au jeu jusqu’à
ce que l’un des cumuls dépasse 36. Le joueur ayant le cumul est alors déclaré vainqueur.

*Composez l’algorithme correspondant en étudiant bien les procédures de dialogue entre le joueur et
l’ordinateur.

Exercice 42

Dans une entreprise à succursales multiples, on a relevé, sur un bordereau les quantités vendues dans chaque
succursale, pour un certain produit. Pour chaque point de vente, le bordereau indique le nom de la ville où est
localisée la succursale et la quantité vendue. Composez un algorithme qui effectue les saisies des
informations et calcule la moyenne des quantités vendues. L’algorithme devra ensuite afficher le nom des
villes pour lesquelles cette moyenne a été atteinte ou dépassée. On supposera que le nombre de succursales
ne dépasse pas 50.

Exercice 43

Une manufacture de matériel électrique emballe les ampoules de 60 W qui lui sont commandées par des
détaillants dans les emballages de type G, qui contiennent 200 ampoules, ou de type M, qui contiennent 50
ampoules, ou de type P, qui contiennent 10 ampoules. Les quantités commandées doivent être un multiple de
10. Composez un algorithme qui dialogue avec l’employé du service des emballages par l’intermédiaire d’un
poste de travail et effectue les opérations suivantes :
Lire une quantité commandée.
Vérifier qu’elle est bien multiple de 10.
Si elle l’est, déterminer le nombre d’emballages G, M et P nécessaire et les afficher à l’écran. Pour
cela, on cherche à utiliser le plus possible d’emballage de grande contenance et les emballages doivent
être remplis à 100%.

Exercice 44

Ecrivez un algorithme qui demande un nombre entier à l’utilisateur. L’ordinateur affiche ensuite le message
"Ce nombre est pair" ou "Ce nombre est impair" selon le cas.

Exercice 45

A partir d’un recensement national, on a relevé, sur un bordereau de saisie, les noms d’un certain nombre de
villes et le nombre d’habitants de chacune de ces villes. Chaque ligne du bordereau donne le nom de la ville et
la population correspondante. On veut enregistrer ces informations dans deux vecteurs l’un qui répertorie les
villes de moins de 2000 habitants, l’autre qui répertorie toutes les autres villes, sachant que le nombre total
des villes recensées est inférieur à 300.

*Définissez les objets nécessaires

*Construisez la séquence algorithmique correspondant au travail souhaité.

Exercice 46.
Dans un vecteur V, indicé de 1 à 200, on a rangé, par ordre croissant, 200 valeurs entières qui ne sont pas
toutes distinctes. En raison du classement, si une même valeur est présente plusieurs fois dans V, ses
apparitions sont consécutives.

A. Composez un algorithme qui effectue le parcours de V, pour afficher toutes les valeurs distinctes.

Composez un algorithme qui détermine la ou les valeur(s) qui sont répétées le plus souvent puis affiche cette
ou ces valeurs(s) et le nombre de répétitions.

Exercice 47.

On considère les définitions suivantes :

Type RESULTAT = refusé, rattrapage, reçu

R vecteur indicé sur (1, ….. 200) de valeurs de type composé :

Nom de type chaine (20)

Décision de type RESULTAT

N variable entière de type (1, ….., 20)

Dans le vecteur R, on a enregistré les délibérations d’un jury d’examen qui a pris, pour chaque candidat, l’une
des trois décisions suivantes :

Candidat refusé
Candidat admis au rattrapage
Candidat reçu

Le nombre de candidats est inférieur ou égal à 200 et il est indiqué par la valeur de la variable N.

Si n est cette valeur, les délibérations sont enregistrées dans les n premiers éléments de R.

Composez un algorithme qui détermine les pourcentages de candidats reçus, soumis à subir l’examen de
rattrapage et refusés et qui affiche la liste des candidats à convoquer pour l’examen de rattrapage.
Exercice 48.
Dans un vecteur V dont les éléments sont composés de deux champs NOM, de type chaine et AGE, de type
entier, on a enregistré le nom et l’âge de N personne (N est une constance entière). Ce vecteur est ordonné
en fonction du contenu des champs NOM. On a parfois besoin d’accéder à ce vecteur en fonction de l’âge.
Etant donné qu’on doit toujours garder les noms en ordre alphabétique, et le cout relativement élevé d’un tri
sur un vecteur composé, on veut éviter de trier selon l’âge, et on ne peut pas, non plus, en faire une copie,
pour les raisons d’espace mémoire.

Proposez un algorithme permettant de créer un ordre de parcours selon les âges sans modifier ni même
recopier V.

Indication : Vous pouvez créer un vecteur d’entiers de dimension N, qui servira d’intermédiaire. On pourra
supposer que la valeur de N est inférieure à 100.

Exercice 49.
On a relevé, sur un bordereau de saisie, les résultats obtenus par des étudiants à une épreuve écrite. Chaque
ligne du bordereau donne le matricule et le nom ainsi que la note correspondante de l’étudiant, sachant que le
nombre d’étudiants est inférieur à 500, composer un algorithme qui effectue la saisie dans un vecteur et qui
détermine :

La meilleure note
La note la plus faible
La moyenne des notes
Le nom du ou des candidats ayant obtenus la meilleure note.

Exercice 50.
On a relevé, sur un bordereau de saisie, des informations relatives à tous les déplacements professionnels
effectués dans une entreprise pendant une année. Chaque ligne du bordereau est relative à un déplacement
et donne :

Le nom de la ville vers où s’est effectué le déplacement


Le nom du mois du déplacement
Le nom de la personne qui s’est déplacée
La date de déplacement

Les relevés ont été enregistrés par ordre chronologique et les informations n’apparaissent donc pas dans
l’ordre des noms des villes.

Composez un algorithme qui saisit les informations nécessaires et affiche un état, donnant pour chaque ville
le nombre de voyages effectués sachant que le nombre de villes distinctes est inférieur à 100.

Vous aimerez peut-être aussi