You are on page 1of 45

REPUBLIQUE DU SENEGAL

UN PEUPLE – UN BUT – UNE FOI

UNIVERSITE DE THIES
UFR DES SCIENCES ECONOMIQUES ET SOCIALES
DEPARTEMENT DE MANAGEMENT DES ORGANISATIONS

C 3

A L G O
1 1 2 1

S 1 D 2

E 1 T 1 E 1

U 1

C 3

E 1

ALGO, ASTUCE ET CODE


Version rééditée.
Recueil d’exercices corrigés et rappels de cours, pour une mise à niveau en algorithmique.
Proposé et publié par le CLUB LMIO DE L’UFR S.E.S
Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |2

TABLE DES MATIERES

PREFACE PAGE 3
STRUCTURE GENERALE D’UN ALGORITHME PAGE 5
DECLARATION DE VARIABLES ET AFFECTATION PAGE 8
LECTURE ET ECRITURE PAGE 11
STRUCTURES CONDITIONNELLES (SI…ALORS) PAGE 14
STRUCTURES ITERATIVES (BOUCLES) PAGE 18
TABLEAUX PAGE 21
TRAITEMENT SUR LES CHAINES DE CARACTERES PAGE 24
PROPOSITION DE SOLUTIONS AUX EXERCICES PAGE 27
PROBLEMES DE RECHERCHE PAGE 44

Mentions utiles
Les solutions, aux exercices proposés ont été intégralement vérifiées avec les logiciels
Algobox et LARP
Vous pourriez les télécharger et apprendre les tutoriaux d’utilisation depuis leurs sites web.
- ALGOBOX - http://www.xm1math.net/algobox/
- LARP (Logiciel d’Algorithmes et de Résolution de Problèmes) - http://larp.marcolavoie.ca/fr/

Pour vos problèmes sur les logigrammes et algorigrammes rendez-vous sur ce site
http://openclassrooms.com/courses/introduction-aux-algorigrammes

*************************

Il est formellement interdit de reproduire le présent ouvrage,


partiellement ou intégralement par quelconque procédé.
Car cette pratique peut provoquer une baisse brutale de l’achat de l’ouvrage,
au point moins même d’impacter sur le cycle normal de production.
Merci de votre compréhension.
__________________________________________

ALGO, ASTUCE ET CODE © Mars 2015, Tous droits réservés.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |3

PREFACE

Actuellement, nous évoluons dans un système ou presque tout est traduit selon un langage
numérique, en ce sens être néophyte ou plus pire encore être ignorant des TIC s’avère très grave.
C’est ce qui a inspiré d’ailleurs le nouveau contexte socio professionnel, ou maintenant tout est
automatisé afin de permettre une meilleure rentabilité des activités. Et cette donne est allée
jusqu’à conditionner les modalités de formations délivrées au sein même de nos universités ou
dorénavant on forme un nouveau type de manager, qui malgré une bonne maitrise des techniques
de gestions aura une main mise entière, sur les principes de traitement automatique et infaillible
de l’information. Sur cette veine, on ne peut pas parler d’informatique sans pour autant aborder
l’algorithmique, qui est une des bases fondamentales de celle-ci.
D’où la mise au point de ce chef d’œuvre.

ALGO, ASTUCE ET CODE pourquoi ce nom ? Parce que nous avons jugé utile et
nécessaire d’offrir un précepte d’auto apprentissage simple du langage algorithmique, via une voie
de raisonnement canalisée.

L’objectif principal de ce recueil est d’accompagner l’étudiant qui vient juste de débuter, une
carrière en informatique notamment le nouveau bachelier, mais surtout à l’aider au moins à
démystifier la première impression qu’il se fait de l’algorithmique, c’est à dire une discipline
complexe et très difficile à appréhender. En lui donnant la possibilité de se familiariser à une
méthode de travail, par l’intermédiaire d’exercices classiques corrigés, précédés par un bref
rappel des concepts déjà énoncés en cours magistral en guise de rafraichissement de la mémoire.

Ce modeste projet d’aide à l’accès de la connaissance n’est nullement un travail de plagiat


profane et abusif de mots ou de logiques, mais plutôt une initiative menée avec réflexion,
sélection, rédaction, vérification, soumission et rectification effectuée par de simples étudiants.
Ayant juste le vœu solennel de faire un partage humble des acquis et expériences vécus, en ce
sens sachiez que ce produit est très loin d’être parfait donc vos remarques seront toujours bien
appréciées.

En espérant que les fruits tiendront la promesse des fleurs,

Nous vous souhaitons une très bonne exploitation.

Club LMIO DE L’UFR S.E.S

ALGO, ASTUCE ET CODE EST UNE ŒUVRE DE

- Mansour DIOUF - Mohamed Abdoulaye MBAYE


MIO promotion 2014 MIO promotion 2014
Ex Chef du pôle pédagogique, club LMIO 2014 2015 Ex Président du club LMIO 2014 2015

« Les paroles s’envolent, mais les écrits restent ! »

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |4

REMERCIEMENT
Nous tenons à remercier très solennellement.

M. Papa Mamour DIOUF (MIO promo 2014) et Mlle Fatoumata Néné DIA (SEG promo 2014)
Pour leurs soutiens logistique (ordinateur, logiciel…) lors de la conception.

M. Boubacar SYLLA (MTH promo 2013)


Président de l’amicale des étudiants de l’UFR SES (2014 - 2015)
Pour avoir assuré la production de la première partie du recueil.

M. Saliou CISSE (MIO promo 2015) et Mlle Mayrame Maya DIALLO (LEA promo 2015)
M. Baba DIAW, M. Libasse DIOP et Babacar NDIAYE (MIO promo 2015)
Pour leurs collaborations au projet et leurs disponibilités.

M. Insa DIOP (MIO promo 2014) et M. Jean Marie Samba FAYE (MIO promo 2013)
Pour leurs conseils et orientations lors de la conception.

Enfin mention spéciale à


M. Dame SAMB et M. Mamadou BOUSSO
Enseignants Chercheurs en Informatique de l’Université de Thiès

Pour leurs états d’esprits, en ayant acceptés et appréciés notre volonté et le dévouement
qu’ils ont manifesté à bien vouloir nous accompagner et nous épauler sans demie mesure en
terme de remarques, critiques et contributions…
Tout au long du projet, nous leurs en sommes redevables.

********

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |5

Structure
Générale
D’UN
ALGORITHME
" On peut apprendre à un ordinateur à dire : "Je t'aime",
mais on ne peut pas lui apprendre à aimer. "

Albert JACQUARD

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |6

STRUCTURE D’UN ALGORITHME

L’écriture d’un programme* est une opération complexe qui requiert de nombreuses étapes.
Le plus important est de comprendre l’objectif final et de le respecter. Pour cela, il est souvent préférable de
décomposer le traitement souhaité en une succession d’opérations plus petites et plus simples.
En ce sens un algorithme est constitué de la suite de ces opérations élémentaires.
Elles devront être décrites avec précision, dans un ordre cohérent.
Ainsi pour pouvoir représenter cette suite d’opération, nous allons introduire ce qu’est un langage algorithmique.

QU’EST - CE QU’UN ALGORITHME ?

Un algorithme est la description des étapes à suivre pour résoudre un problème en un nombre fini d’étapes.
Il décrit un traitement sur un certain nombre de données (éventuellement aucune).

Un algorithme s'écrit le plus souvent dans un langage proche du langage courant.


Les algorithmes ont pour vocation de nous faire réfléchir mais pas de s’exécuter uniquement sur un ordinateur.

Donc ils peuvent s’utiliser dans plusieurs domaines et même de la vie quotidienne.
Par exemple le fait de cuisiner, prendre un itinéraire de voyage, mission…

Pour qu’un algorithme déjà écrit puisse s’exécuter sur ordinateur,


il sera nécessaire de le traduire dans un langage de programmation*.

Conventionnellement tout algorithme s’articule sur deux parties :


- La première, une ligne d’entête pour indiquer le nom de l’algorithme.
- La deuxième, le traitement situé entre les mots clés Début et Fin, contenant un bloc d’instructions.

QU’EST-CE QU’UN BLOC D’INSTRUCTIONS ?

C’est une partie de traitement d’un algorithme, constituée d’opérations élémentaires situées entre
DEBUT et FIN.

EXEMPLE
Algorithme nom_algo
Début_algo
- Bloc d’instructions
Fin_algo

Les ordinateurs, quels qu’ils soient, ne sont fondamentalement capables de comprendre que quatre familles
d'instructions.
Ces quatre familles d'instructions sont :

- Déclaration de variables et affectation


- La lecture / écriture
- Les tests (Structures alternatives ou conditionnelles)
Tout début est
- Les boucles (Structure itératives)
difficile mais bon,
STRUCTURE GENERALE D’UN ALGORITHME je tiens le coup !

Algorithme Nom algorithme


Constante
Nom de la constante = Valeur
Variable
Nom de la variable : Type
DEBUT {Algo}
- ECRIRE
- LIRE
- Bloc d’instructions - AFFECTATION
- SI…ALORS
- REPETER
FIN {Algo}

* Programme : C’est une suite d’instructions exécutées sur un ordinateur ou toute machine programmable.
* Langage de programmation : C’est une notation conventionnelle destinée à formuler des algorithmes et de produire des
programmes informatiques, qui les appliquent.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |7

LOGIGRAMME OU ORGANIGRAMME DES INSTRUCTIONS A ABORDER

INSTRUCTION REPRESENTATION

- AFFECTATION A←B

- LECTURE LIRE (B)

- ECRITURE ECRIRE (A)

- SI (N > 0) ALORS
DEBUT_SI N>0
VRAIE

ECRIRE ("VALEUR POSITIVE")


FIN_SI
SINON
FAUSSE
DEBUT_SINON
ECRIRE ("VALEUR NEGATIVE OU NULLE")
FIN_SINON Valeur
Positive
Valeur
Négative

Valeur
Positive

V
Condition
- BOUCLE TANT QUE
F

Valeur
Négative

V
Condition Instruction i←i+1
- BOUCLE POUR
F

Instruction

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |8

PREMIERE PARTIE
VARIABLES
ET
AFFECTATION
" N’attribuez jamais à la malveillance, ce qui s’explique très bien par l’incompétence. "
Napoléon BONAPARTE

Bizzaaarrr…
Qu’est ce que Napoléon a
voulu dire par là ?

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE |9

DECLARATION DE VARIABLES ET AFFECTATION


QU’EST-CE QU’UNE VARIABLE ?
Une variable désigne un emplacement mémoire dont le contenu peut changer
au cours de l’exécution d’un algorithme (programme).
Elle est définie par :
1. Un nom unique qui la désigne ;
2. Un type de définition unique ;
3. Une valeur attribuée et modifiée au cours du déroulement de l’algorithme ;

La déclaration de variables se fait comme suit :

Variable nom : type


 Le nom ou identificateur permet d’identifier de manière unique la variable.
 Le type, appelé également domaine de définition de la variable indique l’ensemble des valeurs que la variable
peut prendre.
Les types sont les suivants :
Type numérique (entier ou réel)
- Entier : la variable ne prend que des valeurs entières naturelles
- Réel : la variable peut prendre toute valeur numérique réelle (N, Z, Q, R…)
Type caractère (lettres majuscules, minuscules, symbole…)
Type chaine de caractère (toute suite de caractères c’est-à-dire mot ou phrase)
Type logique ou booléen (assertion logique)

La déclaration de variables, aussi simple qu’elle soit obéie à certaines normes :


- Il est préférable d’écrire le nom de la variable tout en minuscule.
Exemple : Variable nom : chaine de caractère Oups !
Je suis cuit… !
ERREURS A EVITER
- Un nom doit commencer par une lettre alphabétique.
Exemple invalide : Variable 1A : entier (à éviter)

- Le nom ne doit pas comporter d’espace et éviter d’utiliser, certains caractères (‘ : ; - …)


Exemple invalide : Variable prix d’achat : entier (à éviter)

- Donner un nom explicite pour une meilleure lisibilité de l’algorithme


Exemple invalide : Variable iii : réel (à éviter)

- Eviter d’utiliser des identificateurs du genre (début, si, fin, pour…)


Exemple invalide : Variable si : entier (à éviter)

QU’EST-CE QUE L’AFFECTATION ?

L’affectation consiste à attribuer une valeur à une variable.


(Ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)

En algorithme l’affectation se note ainsi " ← "


Exemple : A ← P
- Cette notation veut dire que la variable A prend la valeur P
- P peut être une valeur, une autre variable ou une expression.
- A et P doivent être de même type

ATTENTION : Une affectation ne se note, jamais au plus grand jamais comme suit ( → )
Exemple à éviter : A → P

- L’affectation n'est pas commutative :


A ← B est différente de B ← A

- L’affectation est différente d'une équation mathématique :


A + 1 ← 2 n'est pas possible en algorithme et n'est pas équivalente à A ← 1

- A ← A + 1 a un sens en algorithme. C’est-à-dire on prend la valeur contenue dans la variable A et on y ajoute 1.


© Mars 2015, Tous droits réservés. Club LMIO
Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 10

QU’EST-CE QU’UNE CONSTANTE ?

Une constante, désigne certes un emplacement mémoire,


mais dont le contenu ne change jamais au cours de l’exécution d’un algorithme (programme).
La constante se déclare comme suit :

Constante nom = valeur prise

Exemple : Constante pi = 3,14


- La valeur prise peut être numérique, caractère…
- On n’a pas besoin de faire une déclaration de type.
- D’habitude la constante est utilisée dans les exercices de conversion ou de correspondance.

UN PEU DE PEDAGOGIE

Une variable pourrait être assimilée si c’était dans la vie réelle, à une bouteille qui permet de prendre exclusivement
un contenu.
Et la nature du contenu pourrait bien représenter le type.
Par exemple :
Supposons que vous ayez deux bouteilles A et B
- Une bouteille A qui ne doit contenir que de l’eau
- Une bouteille B qui ne doit contenir que de l’essence

Ici le terme bouteille va désigner la notion de variable


Le terme A ou B notamment le nom ou l’identificateur de la variable
Enfin la nature du contenu exemple eau ou essence représentera le type qui conditionnera ce qu’on devra y remplir.

Donc imaginez-vous les dégâts que ça produirez, si vous vous aventuriez à confondre le contenu à remplir dans
chacune de ces deux bouteilles !
C’est pareil en Algo !!! Donc de la rigueur s’impose lors de la déclaration de celle-ci.

EXERCICE 1

CAS 1
Soient les variables suivantes :
A : entier ; B : réel ; C : chaine de caractère ; D : booléenne
Les affectations ci-dessous sont-elles valables ? Justifier
1) A ← 1,5
2) B ← 1
3) C ← salut
4) D ← A + 3

CAS 2
Répondez par oui ou non si les écritures suivantes sont-elles correctes, justifier :
5) Constante A = 3 : entier
6) Ecrire ("La somme est de : ", S)
7) Ecrire (313)
8) Variable Ex10 : booléenne
9) A + 1 ← A

CAS 3
Donnez les valeurs de A, B, C en fin d’exécution
Variables A, B, C: Entier;
Début
A ← 3;
B ← 2 * A;
A ← B;
B ← A - 2;
C ← A + B + 3;
C ← A – B;
Fin

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 11

Deuxième PARTIE
Lecture
ET
Écriture
" Il est assez difficile de trouver une erreur dans son code quand on la cherche.
C’est encore bien plus dur quand on est convaincu que le code est juste."

Steve McCONNELL

Ok Man, je te passe le
relais… Les variables à elles
seules ne suffisent pas !

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 12

LECTURE ET ECRITURE
PREMIERE APPROCHE
Pour vous donner un simple aperçu de ce qu’est la notion de lecture et écriture, référez-vous sur votre machine à
calculer que vous utilisez quotidiennement, en fait elle est bâtit exclusivement sur le principe de lecture et d’écriture.
C’est-à-dire ; la valeur que vous saisissez via le clavier après traitement s’affiche spontanément sur le petit écran de
votre calculatrice. En ce sens nous aborderons ces deux éléments.

LECTURE
Cette instruction permet de saisir des donnés à partir d’un périphérique d’entrée.

En algorithme on utilisera la codification suivante LIRE (Variable) pour désigner une opération de saisie de donnée.

Une fois l’algorithme implémenté, dès que le programme rencontre une instruction LIRE,
l’exécution s’interrompt, en attendant la saisie d’une valeur.

EXEMPLE
Variable N : entier * Ce bloc d’instructions une fois exécutée
Début permet juste à l’utilisateur de saisir une valeur
Lire (N) de type entier dans la variable N
Fin

ECRITURE
Cette instruction permet d'afficher des résultats sur un périphérique de sortie.
En algorithme on utilisera le mot ECRIRE ("Information") pour conditionner,
par exemple l’affichage d’une information.

EXEMPLE
Début * Une fois exécuté, ce bloc d’instructions permettra
Ecrire ("Bonjour") simplement d’afficher le message " Bonjour ".
Fin

Tout aussi l’instruction ECRITURE peut être utilisée pour afficher le contenu d’une variable.
EXEMPLE
Début * Ce bloc d’instructions stipule que :
N ← 20 D’abord la variable N prend la valeur 20
Ecrire ("La valeur de N est : ", N) Ensuite afficher cette information :
Fin La valeur de N est 20

ATTENTION
Pour afficher le contenu d’une variable en utilisant l’instruction Ecrire,
il ne faut jamais mettre le nom de la variable entre les guillemets du message annonce.

* Certes N prendra la valeur de 20.


EXEMPLE Mais à l’affichage de la valeur de N,
Début l’algorithme s’exécutera comme suit :
N ← 20 (La valeur de N est : N) et n’affiche point
Ecrire ("La valeur de N est : N") la valeur de N notamment 20 car il est
Fin perçu comme message, mais non pas
comme une donnée à afficher

RELATION ENTRE ECRITURE ET LECTURE


Avant de LIRE une variable, il est préférable d’ECRIRE des messages à l’écran,
Afin de guider l’utilisateur sur ce qu’il doit saisir, mais c’est juste optionnel.

EXEMPLE * A l’exécution de
Variable N : entier l’algorithme, l’utilisateur aura
Début
la latitude de comprendre
Ecrire ("Veuillez saisir un nombre entier à afficher")
Lire (N) réellement ce qu’il devra
Ecrire ("La valeur de N est : N") saisir dans la variable,
Fin notamment un nombre entier.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 13

EXERCICES SUR DECLARATION DE VARIABLES – ECRITURE – LECTURE

EXERCICE 2 : AFFICHAGE DE VARIABLE EXERCICE 10: LE MODULO


Ecrire un algorithme qui demande de saisir trois Ecrire un algorithme qui permet d’afficher le reste
réels et de les afficher. de la division de deux entiers.

EXERCICE 3 : PERMUTATION CIRCULAIRE EXERCICE 11


Ecrire un algorithme qui permet de faire la Ecrire un algorithme qui calcule la résistance
permutation de la valeur de deux variables. équivalente de 3 résistances
montées en parallèle.

EXERCICE 4 : CONCATENATION EXERCICE 12 : AFFICHAGE DE MESSAGE


Ecrire un algorithme qui te demande de saisir un AVEC VARIABLE
prénom et un nom et qui t’affiche le nom complet. Ecrire un algorithme qui calcule la surface d’un
rectangle de dimensions données
EXERCICE 5 et affiche le résultat.
Ecrire un algorithme qui conjugue un verbe du Sous la forme suivante :
premier groupe au futur simple. " Le rectangle de longueur…m "
NB : Pour ce cas on ne traitera pas les verbes " De largeur…m "
irréguliers. " A une surface égale à…m² "

EXERCICE 6 EXERCICE 13 : PENSEZ A PYTHAGORE


Ecrire un algorithme qui te permet de faire la Ecrivez un algorithme qui à partir de la largeur et
somme, le produit et le calcul de la moyenne de de la longueur d’un rectangle fournie calcule et
deux nombres. affiche la valeur de sa diagonale.
Rappel : D = √(𝑳 ∗ 𝑳 ) + (𝒍 ∗ 𝒍 )

EXERCICE 7 EXERCICE 14
Ecrire un algorithme qui demande un nombre Ecrire un algorithme qui fait lire les données
entier à l'utilisateur, puis qui calcule et affiche le nécessaires calcule et affiche le taux de
double de ce nombre. consommation d’un véhicule aux 100km.

EXERCICE 15
EXERCICE 8 : RACINE CARREE
Ecrire un algorithme qui à partir du prix hors taxe
Ecrire un algorithme qui permet de calculer la
PHT, d’un produit et du taux de TVA, calcule et
racine carrée d’un nombre quelconque fourni.
affiche le prix toute taxe comprise PTTC.

EXERCICE 9
EXERCICE 16 : CONSTANTE
Ecrire un algorithme qui lit les dimensions d’une
Ecrire un algorithme qui lit une température en
piscine et affiche la quantité d’eau nécessaire
degré Celsius et qui affiche son équivalence en
pour la remplir. Supposons que la piscine est
Kelvin. Rappel : 1°C = 273,16 K
parallélépipédique. Rappel : V = L * l * h

Certes fatigué mais je


demeure toujours motivé !

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 14

TROISIEME PARTIE
TESTS
Ou
Structures
Conditionnelles
Ou
Structures
Alternatives
" Si on ment à un compilateur alors il prendra sa revanche. "

Henry SPENCER

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 15

TESTS (STRUCTURES CONDITIONNELLES)


Les structures conditionnelles permettent d'exécuter des instructions différentes,
en fonction de certaines conditions. On distingue deux cas de conditions :

- CONDITIONS SIMPLES
Exemple : (x >0) ; (Delta=0)…

- CONDITIONS COMPOSEES
Une condition composée est une condition formée de plusieurs conditions simples reliées par des opérateurs
logiques: ET, OU et NON

Exemples :
- x compris entre 2 et 6 s’exprime par la condition composée (x > 2) ET (x < 6)
- n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)

Certains algorithmes exigent parfois de formuler des conditions qui ne peuvent pas être exprimées sous la forme
simple exposée ci-dessus. Prenons le cas " n est compris entre 2 et 6 ". En fait cette phrase cache non une, mais
deux conditions. Car elle revient à dire que " n est supérieur à 2 et n est inférieur à 6 ". Il y a donc bien là deux
conditions, reliées par ce qu’on appelle un opérateur logique, le mot ET. Comme on l’a évoqué plus haut,
l’informatique met à notre disposition trois opérateurs logiques : ET, OU, et NON. Le ET a le même sens en
informatique que dans le langage courant.

- Pour que C1 ET C2 soit VRAI, il faut impérativement que C1 soit VRAIE et que C2 soit VRAIE.
- Il faut se méfier un peu plus du OU. Pour que C1 OU C2 soit VRAI, il suffit que C1 soit VRAIE ou que C2 soit VRAIE.
- Le point important est que si C1 est VRAIE et C2 est VRAIE, alors C1 OU C2 est VRAIE.
- Le OU informatique ne veut donc pas dire " ou bien ".
- VRAI ⇔ NON FAUX
On représente tout ceci dans des tables de vérité
C1 C2 C1 ET C2 C1 OU C2

VRAI VRAI VRAI VRAI

VRAI FAUX FAUX VRAI


FAUX VRAI FAUX VRAI

FAUX FAUX FAUX FAUX

STRUCTURE SI
La structure SI permet de conditionner l’exécution d’un ensemble d'instructions à la valeur d’une condition,
La syntaxe générale de cette structure est la suivante:
SI (condition) ALORS
Traitement 1
FIN SI
SINON
Traitement 2
FIN SINON

Les traitements apparaissant après les mots Alors et Sinon peuvent être constitués d'une instruction simple ou d'un
ensemble d'instructions (bloc d'instructions). La condition est d'abord évaluée.
 Si elle est vraie, traitement1 est exécuté puis le contrôle passe à l’instruction suivante.
 Si elle est fausse, traitement2 est exécuté puis le contrôle passe à l’instruction qui suit le Fin Si.

EXEMPLE (voir logigramme)


VARIABLE n : ENTIER SINON // dans le cas où la condition n > 0
DEBUT_ALGO est fausse
ECRIRE ("Entrez un nombre") DEBUT_SINON
LIRE (n) ECRIRE ("Valeur négative ou nulle")
SI (n > 0) ALORS // dans le cas où la condition n > 0 est vraie FIN_SINON
DEBUT_ALORS FIN_ALGO
ECRIRE ("Valeur positive")
FIN_ALORS

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 16

Rappel : La phrase débutée par les symboles // indique ce qu’on appelle en algorithme un commentaire, c’est juste
une phrase indicative permettant de dire ce que l’algorithme exécutera, mais il ne participera pas à l’exécution du
code. Donc c’est juste optionnel…

- LA CLAUSE SINON N'EST PAS OBLIGATOIRE


Ainsi, on peut avoir le schéma suivant:
Si (condition) Alors
Traitement
Fin_Si

- Si condition est vraie, le traitement est exécuté puis le contrôle passe à l’instruction qui suit le Fin Si.
- Si condition est fausse, le traitement n'est pas exécuté et le contrôle passe à l’instruction qui suit le Fin Si.

Comprenez que le SINON permet juste d’exprimer la condition qui est contraire à celle fixée dans le bloc SI.

SI x=y x≠y x≥y x<y x>y x≤y ET OU


SINON
EXPRIMERA x≠y x=y x<y x≥y x≤y x>y OU ET

- LA STRUCTURE SI PEUT CONTENIR DES CLAUSES SINON SI


Selon le schéma suivant :
Si (condition1) Alors
Traitement1
Sinon
Si (condition2) Alors * Les conditions sont évaluées dans l’ordre d’apparition.
Traitement2 Dès qu’une condition est vraie, le traitement associé est exécuté.
... L’instruction suivante à exécuter sera alors celle qui suit le Fin_Si.
Sinon Si aucune condition n’est vérifiée, alors le traitement associée au
Si (conditionN) Alors Sinon, s’il existe, est exécuté.
TraitementN
Sinon Dans ce cas de figure on dira un Si imbriqué.
TraitementN Quand nous avons des Si imbriqués, c’est légèrement décalé
FinSi (c’est comme un genre d’alinéa) et là on parlera d’indentation pour
une meilleure lisibilité.

IMBRIQUER car nous avons l’impression d’empiler des "briques" de SI.

STRUCTURE SELON
La structure SELON permet de choisir le traitement à effectuer en fonction de la valeur d'une variable,
ou d'une expression. Cette structure permet parfois de remplacer avantageusement une structure SI.

La syntaxe de cette structure est


Selon (expression) Faire
valeur1 : traitement1…
valeur N : traitement N
Fin Selon

Où expression est nécessairement une expression de type (entier, caractère, booléen…)


L’expression est évaluée, puis sa valeur est successivement comparée à chacune des valeurs. Dès qu’il y a
correspondance, les comparaisons sont arrêtées et le traitement associé est exécuté. Si aucune valeur ne correspond
à la valeur de l’expression, alors le traitement associé au Sinon par défaut, s’il existe est exécuté.

EXEMPLE : Programme qui affiche le genre en toute lettre selon son numéro.
Le numéro du genre est mémorisé dans la variable genre.

Ecrire (" Donner le numéro du genre : 1 pour masculin / 2 pour féminin !")
Selon (genre) Faire
1 : Ecrire (" Masculin")
2 : Ecrire (" Féminin")
Sinon
Ecrire (" Un numéro de genre doit être compris entre 1 et 2 ")
Fin_Sinon
Fin_Selon

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 17

EXERCICES SUR LES TESTS (STRUCTURES CONDITIONNELLES)

EXERCICE 23
Écrire un algorithme qui demande deux nombres
EXERCICE 17 : CLASSEMENT
à l’utilisateur et l’informe ensuite si le produit est
Ecrire un algorithme qui affiche le plus petit ou le
négatif, positif ou nul.
plus grand de deux nombres.
Toutefois, on ne doit pas faire le calcul du produit.

EXERCICE 24
EXERCICE 18 Ecrire un algorithme qui fait résoudre dans R
Ecrire un algorithme qui permet d’obtenir le l’équation 𝑎𝑥 + 𝑏 = 0 pour tout couple réels
maximum de trois réels donnés. (a, b) donné.

EXERCICE 25
EXERCICE 19
Ecrire un algorithme qui fait résoudre dans R une
Ecrire un algorithme qui permet de déterminer et
l’équation 𝑎𝑥² + 𝑏𝑥 + 𝑐 = 0 pour tout triplet
d’afficher la valeur absolue de (A - B).
(a, b, c) donné par l’utilisateur.

EXERCICE 20 : PARITE D’UN NOMBRE EXERCICE 26 : LA CALCULETTE


Ecrire un algorithme qui saisit un nombre entier et Ecrire un algorithme qui fait lire dans cette ordre :
détecte si ce nombre est pair ou impair. un réel, un opérateur (+ - * /) et un autre réel.
Et nous affiche le résultat de l’opération.
EXERCICE 21 Exemple :
Ecrire un algorithme qui lit le prénom, nom et le Donnez un réel : 2
titre d’une personne, puis l’affiche comme suit : Choisir votre opérateur : *
« Mr Abdou, soyez le bienvenu » ou Donnez un autre réel : 4
« Mme Rose, soyez la bienvenue » Le résultat sera : 8

EXERCICE 27
Ecrire un algorithme qui permet de saisir la
EXERCICE 22 : VARIABLE BOOLEENNE
moyenne d’un élève et affiche la décision du
Dans une ville le paiement d’impôts se base sur
conseil de classe sur la base d’une mention.
les critères suivants :
Intervalle (s) – Mention
- Homme, âgé à partir de 18 ans
18 <= Moyenne – Excellent
- Femme, âgée de 20 à 45 ans
16 <= Moyenne < 18 – Très Bien
Ecrire l’algorithme qui te permet de saisir un âge
14 <= Moyenne < 16 – Bien
et un sexe quelconque ensuite qui t’informe si
12 <= Moyenne < 14 – Assez Bien
l’individu doit payer l’impôt ou pas.
10 <= Moyenne < 12 – Passable
Moyenne < 10 – Redouble

****************************
EXERCICE 28 (PROBLEME)
Ecrire un algorithme qui te demande de saisir une date quelconque et d’afficher la date du lendemain.
.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 18

Quatrième PARTIE
Boucles
Ou
Structures
Itératives
" Informatique : alliance d’une science inexacte et d’une activité humaine faillible. "
Luc FAYARD

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 19

LES BOUCLES (STRUCTURES ITERATIVES)


Les structures itératives, appelées aussi boucles, permettent de répéter un traitement,
(Contrôle une instruction simple ou composée) autant de fois qu’il est nécessaire.
Soit tant qu’une condition est vraie soit un nombre déterminé de fois.
On distingue 2 boucles principales :

1. LA BOUCLE TANT QUE


La boucle TANT QUE permet de répéter un traitement tant qu’une condition est vraie.

Si, dès le début, la condition est fausse, alors le traitement ne sera pas exécuté.
Syntaxe

Tant que (condition vérifiée) Faire


Traitement
Fin_Tant que

EXEMPLE
Ecrire un algorithme qui affiche 5 fois " Bienvenue en LMIO "
Variable i : entier
Début_algo
I←1
Tant que (i<5) faire
Début_tant que
Ecrire (" Bienvenu en LMIO ")
I←i+1
Fin_tant que
Fin_algo

UN PEU DE PEDAGOGIE
La notion de boucle Tant que peut être assimilé au scénario suivant :
Un maitre interroge un élève et lui demande de lui donner le résultat de 2x5.
L’élève par malchance fourni un résultat différent de 10 !
Le maitre tellement furieux prend la chicotte et décide de le bastonné.
Dans cette éventualité, le maitre continuera à le bastonner à chaque mauvaise réponse.
Il n’arrêtera que lorsque l’élève donne la vraie réponse notamment 10.

2. LA BOUCLE POUR (POUR compteur ← valeur initiale à valeur finale)


La boucle POUR permet de répéter une instruction un nombre connu de fois.

Elle a le formalisme suivant :


Pour compteur allant de valeur initiale à valeur finale Faire
Traitement
Fin Pour

La variable compteur est de type entier.


Elle est initialisée à la valeur initiale.
Le compteur augmente (implicitement) de la valeur incrémente à chaque exécution du traitement.
Lorsque la variable compteur vaut la valeur finale, le traitement est exécuté une dernière fois puis le programme sort
de la boucle.
Par défaut, l’incrément est de 1 pour cette boucle.
(Pour être simple l’incrément est équivalent à la notion de raison comme dans une suite numérique)

EXEMPLE : Ecrire un algorithme qui affiche 5 fois " Bienvenue en LMIO "
Variable i : entier
Début
Pour i allant de 1 à 5 Faire
Début_pour
Ecrire (" Bienvenu en LMIO ")
Fin_pour
Fin_algo

RELATION ENTRE LES TESTS ET LES BOUCLES


En algorithme, une relation peut s’établir entre ces deux structures et le plus fréquent est le test multiple, qui permet de comparer
un objet à une série de valeurs, et exécuter si la condition est vérifiée. (Ex : recherche des nombres premiers dans un intervalle)

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 20

EXERCICES SUR LES BOUCLES (STRUCTURES ITERATIVES)

EXERCICE 29 EXERCICE 35
Ecrire un algorithme qui affiche la table de Ecrire un algorithme qui permet d’afficher tous les
multiplication de 1 à 12 de n’importe quel entier. entiers positifs pairs inférieurs à 100.

EXERCICE 36
EXERCICE 30
Ecrire un algorithme qui permet d’afficher tous les
Ecrire un algorithme qui calcule et affiche la
entiers positifs impairs inférieurs à 100 en
somme et le produit des 20 premiers entiers.
omettant tous ceux qui sont divisibles par 7.

EXERCICE 31 EXERCICE 37
Soit la suite définie par : 𝑈0 = 5 de r = 2 Ecrire un algorithme qui permet d’effectuer cette
On veut calculer la somme des 10 premiers somme avec x une valeur fournie.
termes de cette suite.
𝑥2 𝑥3 𝑥4 𝑥5
𝑆= − 3! + 4! − 5!
2!
EXERCICE 32 : CONTROLE DE SAISIE EXERCICE 38 : PRODUIT SANS
Ecrire l’algorithme qui permet de saisir puis MULTIPLICATION
d’afficher une valeur comprise entre 1 et 31 ; Ecrire un algorithme qui permet de faire le produit
on recommencera la saisie jusqu’à ce que la de deux entiers A et B sans utiliser la
valeur soit bien dans les bornes imposées. multiplication uniquement l’addition.
Exemple : Valeur saisie 43
Résultat affiché : Non comprise entre 1 et 31 EXERCICE 39 : CALCUL DE PUISSANCE
Valeur saisie 15 Ecrire un algorithme qui permet de calculer et
Résultat affiché : 15, ok ! d’afficher un entier x fourni et son exposant n.

EXERCICE 40
EXERCICE 33 : FACTORIEL D’UN NOMBRE Ecrire un algorithme qui permet de saisir un entier
Ecrire un algorithme qui fait le calcul et l’affichage et de déterminer tous ses diviseurs
du factoriel d’un entier N donné.
EXERCICE 41
EXERCICE 34 Ecrire un algorithme qui permet,
Ecrire un algorithme qui permet de calculer et de vérifier si un nombre est parfait.
afficher la moyenne de notes fournies au clavier. Rappel : Un nombre est parfait s’il est égal à la
Le dialogue se présentera comme suit : somme de ses diviseurs, respectifs
Combien de notes : 4 excepté lui-même.
Note 1 : 12
Note 2 : 15.25 EXERCICE 42 ; QUOTIENT ET RESTE
Note 3 : 13.5 SANS DIVISION
Note 4 : 8.5 Ecrire un algorithme permettant de donner le
Moyenne de ces 4 notes : 12.31 quotient et le reste de la division entière
NB : Tenez compte du fait qu’une note est de deux entiers a et b.
comprise entre 0 et 20 ! Rappel : Vous ne devrez utiliser en aucun cas les
opérateurs / et %

*************************
EXERCICE 43 (PROBLEME)
Ecrire un algorithme qui permet d’afficher la liste des nombres premiers
d’un intervalle donné.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 21

Cinquième PARTIE
LES TABLEAUX
" La question de savoir si un ordinateur peut penser n’est pas plus intéressante,
que celle de savoir si un sous-marin peut nager. "

Edgar W. DIJKSTRA

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 22

LES TABLEAUX

PREMIERE APPROCHE
Imaginons que dans un algorithme, nous ayons besoin simultanément de 12 valeurs,
(Par exemple, des notes pour calculer une moyenne).
Evidemment, la seule solution dont nous disposons à l’heure actuelle consiste à déclarer douze variables, appelées
par exemple Note1, Note2, Note3, etc. Bien sûr, on peut opter pour une notation un peu simplifiée, par exemple N1,
N2, N3, etc. Mais cela ne change pas fondamentalement notre problème, car arrivé au calcul, et après une
succession de douze instructions « Lire » distinctes, cela donnera obligatoirement une atrocité du genre :
Moy ← (N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12)/12
C’est pourquoi la programmation nous permet de rassembler toutes ces variables en une seule en utilisant un
nouveau type de variable notamment "Tableau".

QU’EST-CE QU’UN TABLEAU ?


C’est un ensemble de valeurs portant le même nom de variable, repéré et accessible par un nombre, appelé indice.
Donc un tableau représente une série de variables accolées et numérotées.
EXEMPLE

Soient 3 variables A, B, C contenant 3 valeurs

A 10
* On peut préconiser cette possibilité
B 15 en déclarant 3 variables distinctes
ensuite les utiliser.
C 20

L’avantage d’un tableau sera de déclarer uniquement une seule variable et d’y stocker les 3 valeurs.

Valeur 10 15 20 * Pour faciliter la manipulation des valeurs contenues dans les


Indice 0 1 2 variables, chaque donnée introduite correspondra à un indice.

UTILISATION DES TABLEAUX

Tableau Note(11) en Entier

Un tableau doit être déclaré comme tel,


en précisant le nombre notamment le 11 et le type de valeurs qu’il contiendra notamment l’entier.

• Les « cases » sont numérotées à partir de zéro, autrement dit que le plus petit indice est zéro.
• Lors de la déclaration d’un tableau, on précise la plus grande valeur de l’indice (différente, donc, du nombre de
cases du tableau, puisque si on veut 12 emplacements, le plus grand indice sera 11).

- On peut créer des tableaux contenant des variables de tous types : tableaux de numériques, bien sûr, mais aussi
tableaux de caractères, tableaux de booléens, tableaux de tout ce qui existe comme type de variables.
- On ne peut pas faire un mixage de types différents de valeurs au sein d’un même tableau.

EXEMPLE : Ecrire un algorithme qui te permet de calculer la moyenne de 12 notes saisies au clavier.

Tableau Note(11) en Entier


Variables Moy, Som en Entier
Début_algo
Pour i ← 0 à 11
Ecrire (" Entrez la note n° ", i)
Lire Note(i)
* La ou on doit utiliser 12 fois l’instruction Lire (N) mieux vaut
Fin_pour
déclarer un tableau à 11 indices afin d’y stocker les notes par
Som ← 0
saisie répétée, ensuite faire leurs exploitations ultérieure pour
Pour i ← 0 à 11
calculer facilement la moyenne.
Som ← Som + Note(i)
Fin_pour
Moy ← Som / 12
Ecrire (" La moyenne est de : ", Moy)
Fin_algo

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 23

EXERCICES SUR LES TABLEAUX (Seul l’exercice 48 est corrigé)

Exercice 44 Exercice 49
Ecrire un algorithme qui déclare et remplisse un
Que produit l’algorithme suivant ? tableau de 7 valeurs numériques en les mettant
toutes à zéro.
Tableau Nb(5) en Entier

Variable i en Entier Exercice 50


Ecrire un algorithme qui te permet de saisir une
Début Matrice carrée puis il cherche et affiche son
Pour I ← 0 à 5 transposée.
Nb(i) ← I * i
Fin Exercice 51
Pour i ← 0 à 5 Ecrire un algorithme qui permet de calculer la
Début variance et l’écart type d’une série de nombres.
Ecrire Nb(i)
Fin
Fin
Exercice 52
Exercice 45 Ecrire un algorithme permettant de saisir dans un
tableau, N entiers positifs triés dans l’ordre
Ecrire un algorithme qui déclare un tableau de
croissant, puis d’afficher les entiers manquants entre
9 notes, dont on fait ensuite saisir les valeurs le premier et le dernier élément de ce tableau ainsi
par l’utilisateur et de les affichées. que leur nombre.

Exercice 53
Exercice 46
Ecrire un algorithme qui déclare et remplisse un
Proposez un algorithme qui permet de déterminer et
tableau contenant les six voyelles de l’alphabet.
d’afficher le rang de chaque élève.
Exercice 54
Exercice 47 Ecrire un algorithme qui fait le remplissage d’un
Ecrire un algorithme qui permet de créer un tableau tableau par N entiers compris entre 1 et 20.
V3 d’entiers croissants à partir de deux tableaux V1 Ensuite il fait calculer et afficher la somme, le produit
et V2 d’entiers. et la moyenne des éléments du tableau.
N (5<n<=10)
Exercice 48
Exercice 55
Ecrire un algorithme permettant de déclarer un
Ecrire un algorithme qui fait remplir un tableau T par
tableau de 20 entiers (0 à 19) et de vérifier si un
N lettres. Ensuite il fait afficher sans redondance les
entier s’y trouve.
éléments de T.

******************************
Weah j’ai enfin relevé le défi !

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 24

Sixième PARTIE
TRAITEMENT
SUR LES CHAINES
DE
CARACTERES
" Le vrai problème n’est pas de savoir si les machines pensent,
mais de savoir si les hommes pensent. "

B.F. SKINNER

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 25

TRAITEMENT SUR LES CHAINES DE CARACTERES


PREMIERE APPROCHE
Un individu, juste alphabétisé à chaque fois qu’on lui demande de donner les initiaux de son nom complet
sans hésité il aura toujours la possibilité en un temps record de le faire.
Supposons qu’on pose cette question à une personne prise au hasard,
par exemple du nom de Dame SAMB sans même perdre du temps il répondra par D S.
Nous tenterons de découvrir ensemble comment l’informatique aborde cette subtilité et tant d’autres.

Une catégorie privilégiée de fonctions est celle qui nous permet de manipuler des chaînes de caractères.
Nous avons déjà vu qu’on pouvait facilement « coller » deux chaînes l’une à l’autre avec l’opérateur de
concaténation « & ».Mais ce que nous ne pouvions pas faire, et qui va être maintenant possible, c’est
pratiquer des extractions de chaîne ou autres.
En algorithme on utilisera des fonctions spéciales pour faire ces opérations indispensables et classiques.

Nous avons les fonctions suivantes, appliquées aux chaines de caractères :

• Len (chaîne)
Qui renvoie le nombre de caractères contenus dans une chaîne.

• Mid (chaîne, n1, n2) :


Qui renvoie un extrait de la chaîne, commençant au caractère n1 et faisant n2 caractères de long.

- Ce sont les deux seules fonctions de chaînes réellement indispensables.

Cependant, pour vous épargner des algorithmes fastidieux, vous avez également :

• Left (chaîne, n)
Qui renvoie les n caractères les plus à gauche dans chaîne.

• Right (chaîne, n)
Qui renvoie les n caractères les plus à droite dans chaîne.

• Trouve (chaîne1, chaîne2)


Qui renvoie un nombre correspondant à la position de chaîne2 dans chaîne1.
Si chaîne2 n’est pas comprise dans chaîne1, la fonction renvoie zéro.

EXEMPLES :

 Len (" lmio ") vaut 4


 Len (" ") vaut 0
 Mid (" But en or du Sénégal ", 4, 7) vaut "en or "
 Mid (" But en or du Sénégal ", 12, 1) vaut " u "
 Left (" Et pourtant… ", 5) vaut " Et po "
 Right (" Et pourtant… ", 4) vaut " t… "
 Trouve (" Un pur bonheur ", " pur ") vaut 4
 Trouve (" Un pur bonheur ", " techno ") vaut 0

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 26

EXERCICES TRAITEMENT SUR LES CHAINES DE CARACTERES


(Seul l’exercice 57 est corrigé)

Exercice 57
Exercice 64
Ecrire un algorithme qui décompte le nombre de
Ecrire un algorithme qui permet d’inverser une
voyelles contenu dans une quelconque chaine de
chaine de caractères.
caractères (phrase ou mot)
Exercice 65
Ecrire un algorithme qui saisit une phrase et
Exercice 58
l’affiche renversée.
Ecrire un algorithme permettant de supprimer les
Exemple :
espaces superflus dans une chaine de
SOLUTION A VIE
caractères.
VIE A SOLUTION

Exercice 66
Exercice 59
Ecrire un algorithme permettant de lire deux mots
Ecrire un algorithme qui vérifie si un mot saisi au
et d’afficher tous les caractères qui apparaissent
clavier est un palindrome ou pas.
dans les deux caractères sans redondance.

Exercice 60
Exercice 67
Ecrire un algorithme qui permet de tester si deux
Ecrire un algorithme permettant de déterminer la
chaines de caractères représentent des
première position d’une chaine ch1 dans une
anagrammes.
autre ch2.

Exercice 61
Ecrire un algorithme qui permet de chercher er
d’afficher le plus long palindrome contenu dans
une quelconque chaine de caractère.

Exercice 62
Ecrire un algorithme qui permet de vérifier si une
phrase est un totalogramme.

Exercice 63
Ecrire un algorithme qui permet de convertir une
chaine de caractère soit en minuscule ou
majuscule

" La chance accorde ses faveurs aux esprits avertis. "

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 27

REMARQUE

Ne vous focalisez pas exclusivement sur ce que nous allons vous proposez comme vrai,
Car un algorithme peut se résoudre de diverses manières cohérentes.
S’il vous plait, merci d’essayer avant de regarder les solutions proposées.

PROPOSITION
DE
Solutions
AUX
Exercices
" L’algorithme, c’est comme un jeu où les règles sont édictées par des normes logiques ! "
Donc ne vous cassez pas la tête, soyez juste réfléchit et vous gagnerez beaucoup de parties…

Club LMIO

Rappel – Pour la partie sur les TABLEAUX seul l’exercice 48 est résolu.
Pour la partie TRAITEMENT SUR LES CHAINES DE CARACTERES seul l’exercice 57 est résolu.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 28

ANALYSE ALGO
Comprenez juste que tout algorithme obéi à un principe universel selon ce schéma :

- DONNEE , - RESULTAT
- ENTREE
- TRAITEMENT - SORTIE

C’est-à-dire tout algorithme a pour vocation de prendre des données (entrée), de faire
leur traitement par une méthode bien définie, en vue de les diffuser en un résultat (sortie).

En ce sens, il est bon de détecter ces différentes parties,


sur le libellé d’un exercice et d’attribuer à chacune de ces dernières les instructions adéquates.

De ce fait :
- Tout ce qui représentera DONNEE ou ENTREE correspondra à LIRE (Variable)
- Tout ce qui représentera RESULTAT ou SORTIE correspondra à ECRIRE (Variable ou information)
- Enfin tout ce qui représentera les opérations de TRAITEMENT correspondra aux structures :
AFFECTATION ; TESTS (SI… SINON) ; BOUCLES (TANT QUE ; POUR)…

Le tableau suivant représente un aide-mémoire qui vous permettra de mieux aborder les
exercices. La plus part du temps, ces mots clés correspondent aux instructions suivantes :

MOTS CLES Correspond à INSTRUCTION


Prendre la valeur
Stocker → AFFECTATION
Affecter - Calculer
Saisir - Fournir
Donner - Entrer
→ LIRE
Lire - Demander
Taper
Afficher
Ecrire → ECRIRE
Prononcer
Vérifier - Tester
Savoir - Essayer → SI
Renvoyer
Répéter - Liste
→ TANT_QUE, POUR
Série - 1 à n (entier)

Conventionnellement certaines notations mathématiques sont écrites autrement en programmation,


Les plus fréquentes sont les suivantes :

En Mathématique = ≠ ≥ ≤ √x π
En Algorithmique
== != ou <> >= <= x ^ 0.5 pi = 3.15
ou Programmation

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 29

DECLARATION DE VARIABLES – LECTURE – ECRITURE - AFFECTATION

EXERCICE 1

CAS 1

1) 1,5 est une valeur décimale alors que A est du type entier
2) 1 appartient à l’ensemble des entiers naturels
3) Le mot ‘salut’ devait être mis entre les guillemets " "
4) L’expression A+3 doit être vérifiée

CAS 2

5) NON, car lors de la déclaration d’une constante on n’a pas besoin de type
6) OUI, car le programme affichera la valeur de S
7) NON, car on ne sait pas si l’on doit afficher un message ou une variable
8) OUI, car même si la variable est booléenne elle respecte toutes les normes (nom, type…)
9) NON, on devrait écrire l’inverse c’est à dire A ← A + 1

Cas 3 : Comprendre la notion d’affectation et de variables, exécution progressive d’un algorithme

Instructions A B C
A ← 3; 3 0 0
B ← 2 * A; 3 6 0
A ← B; 6 6 0
B ← A - 2; 6 4 0
C ← A + B + 3; 6 4 13
C ← A – B; 6 4 2
Une variable déclarée sans initialisation ou lecture aura une valeur nulle.

EXERCICE 2 EXERCICE 3
ASTUCE – Cet exercice n’a rien de spécial, c’est ASTUCE - Ici il fallait juste chercher un moyen
juste l’approche classique de la complémentarité de garder la valeur de l’une des variables
des notions de LECTURE et ECRITURE, quelque part provisoirement, afin de la réutiliser
c'est-à-dire on saisit une valeur puis on l’affiche. après. Raison pour laquelle on a fait appel à une
Algorithme_lecture_affichage autre variable C, pour y stocker la valeur de A.
VARIABLE A, B, C : REEL Ce principe très utilisé en informatique s’intitule
DEBUT_ALGO permutation circulaire.
er
ECRIRE ("Saisir le 1 réel")
LIRE (A) A B
nd
ECRIRE ("Saisir le 2 réel")
LIRE (B)
ECRIRE ("Saisir le 3
éme
réel") C
LIRE (C)
ECRIRE (A) Algorithme_permutation_circulaire
ECRIRE (B) VARIABLE A, B, C : REEL
ECRIRE (C) DEBUT_ALGO
FIN_ALGO ECRIRE ("Veuillez saisir une première valeur")
LIRE (A)
ECRIRE ("Tapez une deuxième valeur")
LIRE (B)
C←A
A←B
B←C
ECRIRE ("La valeur de A devient: ", A)
ECRIRE ("Celle de B devient maintenant: ", B)
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 30

DECLARATION DE VARIABLES – LECTURE – ECRITURE - AFFECTATION

EXERCICE 4 EXERCICE 8
ASTUCE – En fait l’exercice consiste ASTUCE - Ce qu’il faut comprendre c’est
simplement à trouver une méthode adéquate, qu’en mathématique le symbole √ (racine)
pour accoler le nom et le prénom afin que ça est certes permis mais pas en algorithmique,
donne le nom complet de l’individu d’où l’usage de ce fait il faut juste penser à appliquer cette
du et commercial (&) afin de permette la correspondance universelle √x = 𝒙𝟎,𝟓
concaténation des chaines de caractères. (racine de x est équivalente à x exposant 0,5)
avec exposant qui se note par le symbole ^.
Algorithme_nom_complet Algorithme_racine_carrée
VARIBALE prenom, nom : CHAINE DE CARACTERE VARIABLE N, R : REEL
nom_complet : CHAINE DE CARACTERE DEBUT_ALGO
DEBUT_ALGO LIRE (N)
LIRE (prenom) R ← (N^0,5)
LIRE (nom) ECRIRE (R)
nom_complet ← prenom & nom FIN_ALGO
ECRIRE (nom_complet)
FIN_ALGO EXERCICE 9
ASTUCE – V = L * l * h ou V = S * h
EXERCICE 5 Avec S = L * l
Algorithme_conjugaison_verbe_au_futur
Algorithme_volume_piscine
VARIABLE Verbe : CHAINE DE CARACTERE
VARIABLE L, l, H, S, V: REEL
DÉBUT_ALGO
er DÉBUT_ALGO
ECRIRE ("Saisir un verbe du 1 groupe")
ECRIRE ("Saisir la longueur")
LIRE (Verbe)
LIRE (L)
ECRIRE ("Je" & " " & Verbe & "ai")
ECRIRE ("Saisir la largeur")
ECRIRE ("Tu" & " " & Verbe & "as")
LIRE (l)
ECRIRE ("Il" & " " & Verbe & "a")
ECRIRE ("Saisir la hauteur")
ECRIRE ("Nous" & " " & Verbe & "ons")
LIRE (h)
ECRIRE ("Vous" & " " & Verbe & "ez")
S ← L*l
ECRIRE ("Ils" & " " & Verbe & "ont")
V ← S*h
FIN_ALGO
ECRIRE ("le volume nécessaire est : ", V)
FIN_ALGO
EXERCICE 6
Algorithme_calcul_simple
EXERCICE 10
VARIABLE A, B, S, P, M: REEL
ASTUCE – Dans un algorithme, chaque fois
DÉBUT
que vous aurez besoin de connaitre le reste
ECRIRE ("Saisir la première valeur")
de la division de deux entiers, utiliser
LIRE (A)
simplement le symbole % (Modulo)
ECRIRE ("Saisir une deuxième valeur")
LIRE (B) Algorithme_calcul_reste_division
S ← A+B VARIABLE A ; B ; R : ENTIER
ECRIRE ("La somme est :", S) DEBUT_ALGO
P ← A*B LIRE (A)
ECRIRE ("Le produit est :", P) LIRE (B)
M ← S/2 R ← (A%B)
ECRIRE ("La moyenne est :", M) ECRIRE (R)
FIN FIN_ALGO

EXERCICE 7 EXERCICE 11
ASTUCE – 4 = 2 * 2 ; 18 = 9 * 2 Algorithme_calcul_resistance_équivalente
VARIABLE R_equ, R1, R2, R3 : REEL
Algorithme_calcul_double_d’un_entier
DEBUT_ALGO
VARIABLE N, D : ENTIER
LIRE (R1)
DÉBUT_ALGO
LIRE (R2)
ECRIRE ("Saisir une valeur")
LIRE (R3)
LIRE (N)
R_equ ← ((1/R1)+(1/R2)+(1/R3))
D ← (N*2)
ECRIRE (R_equ)
ECRIRE ("Le double du nombre est ", D)
FIN_ALGO
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 31

DECLARATION DE VARIABLES – LECTURE – ECRITURE - AFFECTATION

EXERCICE 12 EXERCICE 14
Algorithme_calcul_de_surface ASTUCE – Règle de trois : classe de CM1
VARIABLE larg, long, S : REEL 1km → Ckm
DEBUT_ALGO 100 km → ?
ECRIRE ("Saisir la longueur") Produit des moyens = Produit des extrêmes
LIRE (long) La valeur inconnue à trouver correspondra à la
ECRIRE ("Saisir la largeur") valeur contenue dans la variable C100.
LIRE (larg)
S ← (long*larg) 100 ∗ 𝐶𝑘𝑚
C100 =
ECRIRE ("le rectangle de la longueur : ", long) 1
ECRIRE ("Et de largeur : ", larg)
ECRIRE ("à une surface égale à : ", S) Algorithme_calcul_de_consommation
FIN_ALGO VARIABLE Ckm, C100 : REEL
DÉBUT_ALGO
EXERCICE 13 LIRE (Ckm)
ASTUCE – Soit un rectangle C100 ← (100*Ckm)
ECRIRE (C100)
FIN_ALGO
H
l EXERCICE 15
ASTUCE – 1°C = 273,16 K
Algorithme_conversion_de_degré
L VARIABLE C, K, Conv : REEL
DEBUT_ALGO
Un rectangle est formé par deux triangles. En LIRE (C)
observant la figure, on peut appliquer directement K ← 273,16
le théorème de Pythagore pour trouver la valeur Conv ← (C*K)
de l’hypoténuse (H) de notre triangle choisi et ECRIRE (Conv)
cette valeur correspondra à celle de la diagonale FIN_ALGO
de notre rectangle à trouver au préalable.
Soit la formule à utiliser : EXERCICE 16
H² = L*L + l*l ↔ H = √(𝑳 ∗ 𝑳 ) + (𝒍 ∗ 𝒍 ) ASTUCE – L’exercice 15 nous a déjà donné
une première approche de la notion de
Algorithme_calcul_de_diagonale constante, seulement là-bas l’utilisation n’était
VARIABLE L ; l ; H ; D : REEL pas si commode, car on avait initialisé une
DÉBUT_ALGO variable avec laquelle on devait travailler pour
ECRIRE ("Saisir la longueur") le restant de l’algorithme.
LIRE (L) Cette fois si on fera l’usage d’une constante.
ECRIRE ("Saisir la largeur") ______________________________________
LIRE (l) Algorithme_calcul_du_PTTC
H ← (l*l + L*L) CONSTANTE TVA = 0,18
D ← (H^0,5) VARIABLE PHT, PTTC : REEL
ECRIRE ("le diagonale sera :", D) DEBUT
FIN_ALGO LIRE(PHT)
PTTC ← (1 + TVA) * PHT
ECRIRE (PTTC)
FIN

*************************

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 32

TESTS OU STRUCTURES CONDITIONNELLES

UN PEU DE RAPPELS MATHEMATIQUES


Une expression peut être :
Une valeur, une variable ou une opération constituée de variables reliées par des opérateurs.
EXEMPLES
2 ; b ; a * 2 ; (a + 3) * b - c, …

- L'évaluation de l'expression fournit une valeur unique qui est le résultat de l'opération

- Les opérateurs dépendent du type de l'opération, ils peuvent être :

Des opérateurs arithmétiques: +, -, *, /, % (modulo), ^ (puissance)


Des opérateurs logiques: NON, OU, ET
Des opérateurs relationnels: =, <, >, <=, >=
Des opérateurs sur les chaînes: & (concaténation)

Une expression est évaluée de gauche à droite mais en tenant compte de priorités
Pour les opérateurs arithmétiques donnés ci-dessus, l'ordre de priorité est le suivant,

(Du plus prioritaire au moins prioritaire) :

^ (Élévation à la puissance)

*, / (multiplication, division)

% (modulo)

+, - (addition, soustraction)

EXEMPLE : 2 + 3 * 7 valent 23

3 * 7 = 21 ensuite 2 + 21 = 23
(La multiplication est prioritaire)

En cas de besoin (ou de doute),


on utilise les parenthèses pour indiquer les opérations à effectuer en priorité

EXEMPLE : (2 + 3) * 7 vaut 35

(2 + 3) = 5 ensuite 5 * 7 = 35

(A) correspond à l’assertion normale


Le non (A) au contraire de l’assertion

(A) x=y x≠y x≥y x<y x>y x≤y ET OU


non (A) x≠y x=y x<y x≥y x≤y x>y OU ET

Avec x et y des variables

La maitrise de ce tableau s’avère intéressante, dans la mesure où il peut s’utiliser dans les structures
alternatives pour faire, le contrôle d’une condition et son inverse (SI… SINON).

Mais aussi dans la partie qui suit sur les structures itératives,
car on l’exploitera pour établir, les conditions d’arrêt et de continuité des boucles.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 33

TESTS OU STRUCTURES CONDITIONNELLES

EXERCICE 17 EXERCICE 19
ASTUCE – Il faut juste faire une simple opération ASTUCE – La valeur absolue d’un nombre est
de comparaison des deux réels. toujours positive. En ce sens, en faisant un test
Et procéder à l’affichage de la plus grande ou de on arrivera à connaitre le signe de la différence
la plus petite valeur selon votre choix. des valeurs fournies. De ce fait, on posera deux
conditions afin de rétablir la nature préalable du
Algorithme_comparaison_simple nombre. C’est-à-dire si la différence de A et de B
VARIABLE A, B : REEL stockée sur R est positive on laisse comme ça
DEBUT_ALGO sinon on multiplie la différence par -1 pour avoir
LIRE (A) une valeur positive.
LIRE (B) Algorithme_valeur_absolue
SI (A>B) ALORS VARIABLE A, B, R, Vabs : REEL
DEBUT_ALORS DEBUT_ALGO
ECRIRE (A) LIRE (A)
FIN_ALORS LIRE (B)
FIN_ALGO R ← (A - B)
SI (R>0) ALORS
EXERCICE 18 DEBUT_ALORS
ASTUCE – Ici on a juste utilisé le principe de Vabs ← R
croissance comparée c’est-à-dire sur les trois ECRIRE (Vabs)
variables utilisées, on prendra la première que FIN_ALORS
l’on va comparer avec les deux autres, prendre le SI (R<0) ALORS
deuxième en faire de même ainsi de suite. DEBUT_ALORS
Juste une remarque l’équivalence n’est pas prise Vabs ← - (R)
en compte. ECRIRE (Vabs)
FIN_ALORS
Algorithme_comparaison_complexe FIN_ALGO
VARIABLE A, B, C : REEL
DEBUT_ALGO EXERCICE 20
LIRE (A) ASTUCE – Un nombre est pair s’il est divisible
LIRE (B) par 2 ou écrit sous la forme 2n, un nombre est
LIRE (C) impair, si le reste de sa division par 2 donne 1 ou
SI (A>B et B>C) ALORS il s’écrit sous la forme 2𝑛 + 1
DEBUT_ ALORS
ECRIRE (A) Algorithme_parité_d’un_nombre
FIN_ ALORS VARIABLE n, Pair, Impair: REEL
SI (B>A et A>C) ALORS DEBUT_ALGO
DEBUT_ ALORS LIRE (n)
ECRIRE (B) SI (n%2=0) ALORS
FIN_ ALORS DEBUT_ ALORS
SI (C>A et A>B) ALORS ECRIRE ("Pair")
DEBUT_ ALORS FIN_ ALORS
ECRIRE (C) SI (n%2=1) ALORS
FIN_ ALORS DEBUT_ ALORS
FIN_ ALGO ECRIRE ("Impair")
FIN_ ALORS
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 34

EXERCICE 21 EXERCICE 23
ASTUCE – Dans cet exercice, nous allons juste ASTUCE –
utiliser la concaténation et sur la base des titres
fournis, l’algorithme conditionnera le résultat à Signe A Signe B Signe de A * B
afficher selon le genre (Mr ou Mme). + + +
- - +
Algorithme_titre - + -
VARIABLE P, N, Nom_C, Titre : CHAINE + - -
DEBUT_ALGO
LIRE (Titre)
Souvenez-vous en classe de 5éme :
LIRE (P)
L’ami de mon ami est mon ami
LIRE (N)
L’ennemi de mon ennemi est mon ami
Nom_C ← P &" " & N
SI (Titre = "Mr") ALORS
L’ennemie de mon ami est mon ennemi
DEBUT_ ALORS
L’ami de mon ennemie est mon ennemi
ECRIRE ("Mr " & Nom_C &" soyez le bienvenu")
Le reste n’est que de la logique!
FIN_ ALORS
SI (Titre = "Mme") ALORS Algorithme_signe_d’un_produit
DEBUT_ ALORS VARIABLE A, B : REEL
ECRIRE ("Mr " & Nom_C &" soyez la bienvenue") DEBUT_ALGO
FIN_ ALORS LIRE(A)
FIN_ALGO LIRE (B)
SI ((A>0 et B>0) ou (A<0 et B<0)) ALORS
EXERCICE 22 DEBUT_ ALORS
ASTUCE – Dans cet exercice il fallait juste savoir ECRIRE ("Le produit sera positif")
comment transcrire une valeur comprise dans un FIN_ ALORS
intervalle en algorithme. En ce sens, là où l’on a SI ((A>0 et B<0) ou (A<0 et B>0)) ALORS
Age appartient à [20 ; 45] va se traduire par une DEBUT_ ALORS
expression composée du genre, ECRIRE ("Le produit sera négatif")
(Age ≥ 20 et Age ≤ 45) pour symboliser l’aspect FIN_ ALORS
d’encadrement. Après cela faire usage d’une SI (A=0 ou B=0) ALORS
variable booléenne pour y stocker l’expression DEBUT_ ALORS
composée suivi de l’autre variable notamment ECRIRE ("Le produit sera nul")
sexe, afin d’éviter d’avoir des conditions longues FIN_ ALORS
lors de l’écriture de la structure alternative. Enfin FIN_ALGO
dans cet algorithme, deux cas étaient juste de Remarque - Une solution, plus commode est
prévalence le cas où l’on paie l’impôt et le cas envisageable en utilisant les variables
contraire. booléennes.
Pensez également aux tables de vérité !
EXERCICE 24
Algorithme_paiement_impot
ASTUCE – Soient les équations suivantes :
VARIABLE Age : ENTIER
2x + 3 = 0
Sexe : CHAINE DE CARACTERE
2x = -3
C1, C2 : BOOLÉENNE
x = -3/2
DEBUT_ALGO
LIRE (Age)
0x + 3 = 0
LIRE (Sexe)
0x = -3
C1 ← (Age ≥ 18 et Sexe = ‘M’)
x = - 3 / 0 (impossible)
C2 ← ((Age ≥ 20 et Age ≤ 45) et Sexe = ‘F’) er
SI (C1 ou C2) ALORS Algorithme_equation_du_1 _degré
DEBUT_ALORS VARIABLE a, b, x : REEL
ECRIRE ("Paie l’impôt") DEBUT_ALGO
FIN_ ALORS LIRE (a)
SINON LIRE (b)
DEBUT_SINON SI (a = 0) ALORS
ECRIRE ("Ne paie pas l’impôt") DEBUT_ ALORS
FIN_SINON ECRIRE ("Impossible")
FIN_ALGO FIN_ ALORS
SI (a!=0) ALORS
DEBUT_ ALORS
x← b/a
ECRIRE (x)
FIN_ ALORS
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 35

EXERCICE 25 EXERCICE 26
nd
ASTUCE – Soit une équation du 2 degré de la ASTUCE – Cet exercice nous donne un aperçu
forme : (E) : 𝑎𝑥² + 𝑏𝑥 + 𝑐 = 0 du principe de base de la réalisation, de toute
Avec a, b et c des réels calculatrice. Vous tapez un premier opérande
Si a = 0 alors suivi d’un opérateur ensuite d’un autre opérande,
nd
(E) n’est pas du 2 degré. Maintenant le calcul consigné sera conditionné
par le signe précisé donc si c’est (+) l’algorithme
Si a ≠ 0 alors exécutera le bloc d’addition ainsi de suite. En fin
Calcul du delta (𝐷) = 𝑏² − 4 ∗ 𝑎 ∗ 𝑐 d’exécution il affichera le résultat stocké dans la
- Si (D<0) alors variable (R). Si un problème de compréhension
(E) n’admet aucune racine. se pose, observez votre machine à calculer.
- Si (D=0) alors Algorithme_calculatrice_simple
(E) admet une racine double. VARIABLE A, B, R : REEL
- Si (D>0) alors Signe : CHAINE DE CARACTERE
(E) admet deux racines. DEBUT_ALGO
nd
Algorithme_equation_du_2 _degré LIRE (A)
VARIABLE a, b, c, x1, x2, x0, D : réel LIRE (Signe)
DEBUT_ALGO LIRE (B)
LIRE (a) SELON (Signe)
LIRE (b) DEBUT_SELON
LIRE (c) + : R ← (A + B)
SI (a = 0) ALORS - : R ← (A – B)
DEBUT_ ALORS * : R ← (A * B)
nd
ECRIRE ("L’équation n’est pas du 2 degré") / : R ← (A / B) // Pensez au cas où B = 0
FIN_ ALORS FIN_SELON
SINON ECRIRE (R)
DEBUT_SINON FIN_ALGO
D ← (b^2) - (4*a*c)
SI (D<0) ALORS EXERCICE 31
DEBUT_ ALORS ASTUCE – Cet exercice nous donne un aperçu
ECRIRE ("Pas de solution possible") de ce qu’est l’appréciation automatique. Fallait
FIN_ ALORS juste comprendre comment définir les intervalles
SI (D=0) ALORS de notes donnés selon le libellé de l’exercice et
DEBUT_ ALORS sur cette base conditionnée la mention ou
x0 ← −
b l’appréciation à afficher via un message.
2∗a
ECRIRE (x0) Algorithme_appréciation
VARIABLE Note : réel
FIN_ ALORS
Mention : CHAINE DE CARACTERE
SI (D>0) ALORS
DEBUT_ ALORS DEBUT_ALGO
LIRE (Note)
−b − D^0,5 SI (Note < 10) ALORS
x1 ← DEBUT_ ALORS
2∗a
Mention ← "Redouble"
−b + D^0,5 FIN_ ALORS
x2 ←
2∗a SI ((Moy>=10) et (Moy<12)) ALORS
ECRIRE (x1 ; x2) DEBUT_ ALORS
FIN_ ALORS Mention ← "Passable"
FIN_SINON FIN_ ALORS
FIN_ALGO SI ((Moy>=12) et (Moy<14)) ALORS
DEBUT_ ALORS
Mention ← "Assez Bien"
FIN_ ALORS
SI ((Moy>=14) et (Moy<16)) ALORS
DEBUT_ ALORS
Mention ← "Bien"
FIN_ ALORS
SI ((Moy>=16) et (Moy<18)) ALORS
DEBUT_ ALORS
Mention ← "Très Bien"
FIN_ ALORS
SI (Moy>=18) ALORS
DEBUT_ ALORS
Mention ← "Excellent"
FIN_ ALORS
ECRIRE (Mention)
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 36

TESTS OU STRUCTURES CONDITIONNELLES


PROBLEME
ASTUCE – Le but de ce problème est tout simplement de faire de sorte qu’à chaque fois que l’on fournit
une date au programme, il nous affiche la date du lendemain. Seulement l’affichage de la date obéie à un
ensemble de paramètres.
1. L’année est divisée en 12 mois numérotés de 1 à 12 ;
2. Les mois 1, 3, 5, 7, 8, 10 et 12 comptent 31 jours;
3. Les mois 4, 6, 9 et 11 comptent 30 jours;
4. Le mois 2 compte 29 jours si l’année est bissextile, 28 sinon
5. Une année est bissextile si :
- elle ne se termine pas par 00 et est divisible par 4,
- elle se termine par 00 et son quotient par 100 est divisible par 4.

Algorithme_date_du_lendemain
VARIABLE J, M, A, B, C, D: ENTIER
B1, B2, B3, B4, B5, B6: BOOLÉENNE
DEBUT_ALGO Une fois la partie sur les boucles maitrisées pensez
LIRE J après à améliorer l’algorithme, en apposant des
LIRE M contrôles de saisie au niveau de la lecture des
LIRE A variables J, M, A.
B ← A/100
C ← A%4
D ← A%100
B1 cas de la fin d’année
B1 ← (J=31 ET M=12)
B2 cas des autres mois sauf Février
B2 ← (J>=1 ET J<=29 ET M!=2)
B3 ← (J=28 ET M=2) B3 cas du mois de Février
B4 ← (C=0 ET D!=0) OU (D=0 ET B=0) B4 c’est pour gérer l’année bissextile
B5 ← (J=29 ET M=2) B5 cas du mois de Février à année bissextile
B6 ← (J=30 ET (M=4 ou M=6 ou M=9 ou M=11) B6 cas des mois à 30 jours
B7 ← (J=31 ET (M=3 ou M=5 ou M=7 ou M=8 ou M=10) B7 cas des mois à 31 jours, excepté Décembre
//
SI (B1) ALORS
DEBUT_ALORS Par principe, ce bloc correspondra au cas où la
J←1 date du lendemain vire au premier jour de l’an
M←1 raison pour laquelle sur la base de la condition
A←A+1 fixée,
ECRIRE ("Demain votre date sera: ", J, M, A)
J sera égal à 1, M = 1 et pour l’année y ajoutera + 1 .
FIN_ALORS
//
SINON
DEBUT_SINON Le bloc suivant quant à lui correspondra au cas
SI (B2 OU (B3 ET B4)) ALORS générique de changement quotidien de la date
DEBUT_ALORS raison pour laquelle, la date du lendemain sera la
J←J+1 valeur du jour d’hier sur laquelle on ajoute 1,
ECRIRE ("Demain votre date sera: ", J, M, A) J sera égal à J (jour précédent) + 1
FIN_ALORS
//
SINON
DEBUT_SINON Ce cas correspondra à la situation ou le virement
SI ((B5 ET B4) OU (B6) OU (B3) OU (B7)) ALORS de date coïncidera avec un changement de mois, la
DEBUT_ALORS date du lendemain sera une réinitialisation du jour à
J←1 1 avec un changement de mois. Alors le piège à
M ← M+1 prévoir sera le cas du mois à 30 jr ou 31 jr, le cas
ECRIRE ("Demain votre date sera: ", J, M, A) d’un février lequel son année est bissextile,
FIN_ALORS J = 1, M=M+1
FIN_SINON
FIN_SINON
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 37

BOUCLES OU STRUCTURES ITERATIVES

Méthodologie pour l’écriture d’une boucle

 (1) Repérer une action répétitive, donc une boucle


 (2) Choix entre boucle avec compteur ou sans

(3) Question ? Peut-on prévoir/déterminer le nombre d'itérations ?


 (4) Si oui, boucle avec compteur : la boucle Pour …
 (5) Si non, boucle sans compteur

(6) Est ce qu’il faut commencer l'action avant de tester ou l'inverse ?


 (7) Si tester d'abord, alors boucle Tant_que
 (8) Si action puis tester, alors Répéter … Jusqu’à

 (9) Ecrire l'action répétitive et l'instruction de boucle choisie

(10) Question ? Faut-il préparer les données à l'itération suivante ?


 (11) Si oui, compléter le corps de boucle

 (12) Initialiser les variables utilisées (si nécessaires)


 (13) Ecrire les conditions d'arrêt, voire l'incrémentation de la variable de contrôle.
 (14) Exécuter pour les cas extrêmes et au moins un cas "normal".

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 38

BOUCLES OU STRUCTURES ITERATIVES

EXERCICE 29 Algorithme_suite_géométrique
ASTUCE – La table de multiplication obéie à un principe CONSTANTE : r = 2
unanime selon lequel, on répète n fois l’entier n à VARIABLE U, S : ENTIER
multiplier par une série de valeur admettant une suite DEBUT_ALGO
consécutive allant de 1 à 12 par exemple. Chaque U←5
multiplication de l’entier n et d’un élément de la série, POUR i ALLANT DE 0 à 9
correspondra a un produit. DEBUT_POUR
U←U*r
Algorithme_table_de_multiplication S←S+U
VARIABLE n, i : ENTIER FIN_POUR
DEBUT_ALGO ECRIRE (S)
LIRE (n) FIN_ALGO
POUR i ALLANT DE 1 à 12
DEBUT_POUR EXERCICE 32
ECRIRE (n,"x", i,= n*i) ASTUCE – Juste qu’ici fallait seulement créer un
FIN_POUR principe de rejet de la valeur non comprise sur
FIN_ALGO l’intervalle fixé. En ce sens l’usage d’une boucle,
tant que s’avère nécessaire, avec une condition de
EXERCICE 30 rejet qui sera l’inverse de l‘assertion donné dans le
ASTUCE – Le principe est juste que l’algorithme va libellé. C’est-à-dire dans l’exercice on a dit :
parcourir la liste des entiers consécutifs allant de 1 à 20, n doit appartenir [1 ; 31]
maintenant il va faire leur somme à part ensuite donc l’inverse sera n ne doit pas appartenir [1 ; 31]
enchainé par leur produit. Seulement la spécificité de Voir le tableau de correspondance à la page 27
cet exercice est que la variable qui doit stocker le Algorithme_rejet_fausse_valeur
produit des entiers doit être initialisé tout à fait au début VARIABLE n : ENTIER
à 1 sinon vous aurez jamais votre produit car n’oubliez DEBUT_ALGO
pas qu’une variable déclarée, sans initialisation aura LIRE (n)
comme valeur par défaut 0 et 0 multiplié par un nombra TANT QUE (n<1 et n>31) FAIRE
à l’infini donnera toujours 0. DEBUT_TANT QUE
LIRE (n)
Algorithme_somme_et_produit_sur_intervalle FIN_TANT QUE
VARIABLE n, Prod, Som, i, j : ENTIER ECRIRE ("Ok")
DEBUT_ALGO FIN_ALGO
Som ← 0
POUR i ALLANT DE 1 à 20 REMARQUE : Ce morceau de code assez simple est
DEBUT_POUR très important en programmation, il représente ce
Som ← Som+i qu’on appelle la notion de CONTROLE DE SAISIE,
FIN_POUR très utilisé dans beaucoup de domaine en
Prod ← 1 informatique…
POUR j ALLANT DE 1 à 20
DEBUT_POUR EXERCICE 33
Prod ← Prod*i ASTUCE – Le factoriel d’un entier n c’est seulement
FIN_POUR le produit enchainé et cumulé des entiers consécutif
FIN_ALGO allant de 1 à n, on sait que le calcul du factoriel de 5
donne 120, donc voici le principe :
EXERCICE 31 5!=1x2x3x4x5
ASTUCE – Une suite c’est juste une somme ou 1 x 2 = 2 ; 2 x 3 = 6 ; 6 x 4 = 24 ; 24 x 5 = 120
l’obtention d’une valeur se base sur une valeur Donc on voit nettement que le produit déjà calculé
er
précédente en y adjoignant une raison, si c’est une suite représentera le 1 membre du prochain produit et le
nd
arithmétique on additionne la raison au cas d’une suite 2 membre, l’entier qui suit ainsi de suite jusqu’au
géométrique on la multiplie. dernier entier.
Pour notre exemple nous avons le calcul de la suite Algorithme_calcul_factoriel
géométrique des 10 premiers termes de : VARIABLE n, F, i : ENTIER
U0 = 5 et de r = 2 DEBUT_ALGO
La logique se passera comme suit : LIRE (n)
U0 = 5 F← 1
U1 = 5 * 2 = 10 POUR i ← 1 à n // Cette notation a un même sens
S = 10 que " POUR i ALLANT DE 1 à n "
U2 = 10 * 2 = 20 DEBUT_POUR
S = 10 + 20 = 30 F ← F*i
Ainsi de suite jusqu’à atteindre les 10 termes. FIN_POUR
ECRIRE (F)
FIN_ALGO
© Mars 2015, Tous droits réservés. Club LMIO
Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 39

EXERCICE 34 EXERCICE 36
ASTUCE – Dans cet exercice trois aspects ASTUCE – On appliquera le même principe que celui
interviennent. Le premier c’est de saisir un nombre de de l’exercice précédent seulement ici il faut modifier
fois bien défini une série de notes ou le calcul de la la condition en faisant la recherche des nombres
somme de ces dernières s’effectuera simultanément. impairs, en excluant tous ceux qui sont divisibles par
Le second sera le contrôle de saisie c’est-à-dire qu’une 7.
note doit être comprise entre [0 et 20]. __________________________________________
Enfin le calcul final de la moyenne du nombre de note Algorithme_recherche_de_nombre_impair
saisie. VARIABLE i : ENTIER
DEBUT_ALGO
Algorithme_calcul_limité_de_la_moyenne POUR i ALLANT DE1 à 100
VARIABLE Note, i, n, S, M : RÉEL DEBUT_POUR
DEBUT_ALGO SI (i%2=1 et i%7≠0) ALORS
S←0 DEBUT_ALORS
LIRE (n) ECRIRE (i)
POUR i ALLANT DE 1 à n FIN_ALORS
DEBUT_POUR FIN_POUR
LIRE (note) FIN_ALGO
TANT QUE (note>20 ou note<0) FAIRE
DEBUT_TANT QUE EXERCICE 37
LIRE (note) ASTUCE - Cet algorithme nous demande de faire le
FIN_TANT QUE calcul d’une somme mais une somme assez
S ← S + note complexe car pour l’avoir, faudra faire le calcul d’un
FIN_POUR ensemble de puissance, ainsi que leur factoriel
M ← S/n respectif, faire leur division en tenant compte de la
ECRIRE (M) variation des signes.
FIN_ALGO Donc quatre éléments interviennent calcul de la
puissance et du factoriel et variation du signe enfin
EXERCICE 35 faire la somme.
ASTUCE – Un nombre est pair s’il est divisible par 2,
cette condition s’incrustera dans une boucle qui se Algorithme_calcul_somme_complexe
chargera de faire la vérification sur 100 entiers VARIABLE x, F, P, S, i, a : REEL
consécutifs et une fois cette condition respectée DEBUT_ALGO
l’algorithme affichera le nombre. LIRE (x)
POUR i ALLANT DE 1 à 5
Algorithme_recherche_de_nombres_pairs DEBUT_POUR
VARIABLE i, P : ENTIER SI (i%2=0) ALORS
DEBUT_ALGO DEBUT_ALORS
POUR i allant de 1 à 100 P ←1
DEBUT_POUR P ← -1 * (P*x)
SI (i%2=0) ALORS FIN_ALORS
DEBUT_ALORS SI (i % 2 =1) ALORS
ECRIRE (i) DEBUT_ ALORS
FIN_ALORS P ←1
FIN_POUR P ← (P*x)
FIN_ALGO FIN_ ALORS
POUR a ALLANT_DE 1 à i
DEBUT_POUR
F←F*a
FIN_POUR
S ← S + (P/F)
FIN_POUR
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 40

EXERCICE 38 EXERCICE 39
ASTUCE – A chaque fois qu’on demande à un élève de ASTUCE – En mathématique quand on nous demande
CE1 4 x 3 sans réfléchir il dira 12. En fait ce résultat si 2 ² automatiquement nous répondons par 4.
simple est basé sur une logique intéressante. Ça parait simple, oui en mathématique mais en
Tout produit est en réalité une suite d’addition limitée. algorithme ce résultat obéi à un processus cohérent le
A chaque fois que nous avons a x b en fait c’est faire quel est le suivant : 2² = 2 x 2
n
l’addition par cumul de a, b fois. Donc soit l’écriture générique de la puissance x ceci
Donc 4 x 3 sera 4 + 4 + 4 veut dire qu’il faut multiplier par cumul x, n fois.

Algorithme_produit_sans_multiplication Algorithme_calcul_puissance
VARIABLE A, B, P, i : ENTIER VARIABLE x, n, Puiss, i : ENTIER
DEBUT_ALGO DEBUT_ALGO
P←1 LIRE (x)
LIRE (A) LIRE (n)
LIRE (B) Puiss ← 1
POUR i ALLANT DE 1 à B POUR i ALLANT DE 1 à n
DEBUT_POUR DEBUT_POUR
P←P+A Puiss ← Puiss * x
ECRIRE (P) FIN_POUR
FIN_POUR ECRIRE (Puiss)
FIN_ALGO FIN_ALGO

EXERCICE 40 EXERCICE 41
ASTUCE – Un nombre est divisible par un entier si le reste ASTUCE – Un nombre est parfait s’il est égal à la
de leur division donne 0. Donc fallait juste chercher à somme de ses diviseurs respectifs excepté lui-même.
poser cette divisibilité comme condition et le souscrire 6 admet comme diviseur 1 ; 2 ; 3
dans une boucle qui se chargera d’afficher le quelconque Maintenant 1 + 2 + 3 = 6, donc il est parfait
diviseur si cette condition est vérifiée. Algorithme_nombre_parfait
VARIABLE n, i, S : ENTIER
Algorithme_recherhce_de_diviseur DEBUT_ALGO
VARIABLE n, i : ENTIER LIRE (n)
DEBUT_ALGO POUR i ALLANT DE 1 à n/2
LIRE (n) DEBUT_POUR
POUR i ALLANT DE 1 à n SI (n%i=0) ALORS
DEBUT DEBUT_ ALORS
SI (n%i=0) ALORS S←S+i
DEBUT_ALORS FIN_ ALORS
ECRIRE (i) FIN_POUR
FIN_ALORS SI (S=n) ALORS
FIN_POUR DEBUT_ALORS
FIN_ALGO ECRIRE (n,"est un nombre parfait")
FIN_ ALORS
EXERCICE 42 FIN_ALGO
ASTUCE- La division de 24 par 3 donne 8 et il reste 1.
Comprenez qu’en fait une division n’est rien d’autre qu’une (Suite exercice 42)
soustraction cumulée répétitive de a sur b. Algorithme_quotient_et_reste_sans_division
En ce sens tant que b est plus petit que a donc une VARIABLE a, b, R, Q : ENTIER
soustraction de la valeur de a déjà calculée sur b est DEBUT_ALGO
possible. Le quotient représentera le nombre de fois ou la LIRE (a)
soustraction est effectuée et le reste la dernière valeur LIRE (b)
trouvée. TANT QUE (a >= b) FAIRE
Exemple : 24 / 3 = 8 et il reste 1 DEBUT_TANT QUE
En fait le principe de calcul est le suivant : a←a–b
Q←Q+1
24 – 3 = 22 FIN_TANT QUE
22 – 3 = 19 R←a
19 – 3 = 16 ECRIRE (Q)
16 – 3 = 13 ECRIRE (R)
13 – 3 = 10 FIN_ALGO
10 – 3 = 7
7–3=4
4–3=1

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 41

BOUCLES OU STRUCTURES ITERATIVES


PROBLEME

ASTUCE – Un nombre est premier s’il est divisible par 1 et lui-même.


- 5 est premier car sur tous ses entiers consécutifs, seul 1 et 5 sont divisibles par lui.
- 6 n’est pas premier car sur tous ses entiers consécutifs il admet 1, 2, 3 et lui-même comme diviseur.

Donc le principe de résolution est le suivant, c’est qu’à chaque fois que l’on fournit un intervalle de valeur,
l’algorithme part de l’entier le plus petit vers le plus grand en prenant entier par entier. En faisant un étalage
des entiers consécutifs de chacun de ces derniers, puis faire une vérification des diviseurs adéquats en
même temps. Et pour chaque entier, dont le nombre totalisé de diviseur est égale à 2 (1 et l’entier lui-
même) alors l’algorithme le retient comme nombre premier.
Exemple : Soit l’intervalle suivant [5 ; 6]

L’algorithme commence par la valeur 5 en faisant le décorticage de la manière suivante 1, 2, 3, 4, 5


Ensuite il opère comme suit : 5%1=0 ; 5%2=3 ; 5%3=2 ; 5%4=1 ; 5%5=0

N’oubliez pas la notion de modulo (%) ; un entier A est divisible par B,


si le reste de la division de A par B donne 0, c’est-à-dire (A%B=0)

Sur ce, 5 sera retenu comme nombre premier car il admet deux diviseurs 1 et 5 (lui-même)

Par contre pour le cas de 6 : 1 2 3 4 5 6


6%1=0 ; 6%2=0 ; 6%3=0 ; 6%4=2 ; 6%6=0
En appliquant la logique, 6 ne sera pas premier, car même s’il admet 1 et 6 comme diviseur, il admet
également des diviseurs comme 2 ; 3 ce qui sera en porte à faux avec ce qu’est un nombre premier,
Donc 6 ne sera pas retenu. De manière simple voilà la logique.

Algorithme_recherhce_de_nombres_premiers
VARIABLE n, m, i, j, nbdiv : ENTIER
DEBUT_ALGO
LIRE (n)
LIRE (m)
//
TANT QUE (n > m) FAIRE Le contrôle de saisi est placé ici, pour
DEBUT_TANT QUE
permettre de faire une vérification des
ECRIRE (n, "doit être plus petit que m !")
LIRE (m)
deux entiers fournis car le 1er doit être
FIN_TANT QUE toujours inférieur au 2nd.
//
POUR i ALLANT DE n à m Ici la boucle imbriquée nous permet à
DEBUT_POUR priori de copter un entier, en suite de
POUR j ALLANT DE 1 à i faire l’étalage de ses valeurs
DEBUT_POUR consécutives.
SI (i % j = 0) ALORS Maintenant la structure conditionnelle
DEBUT_ALORS (SI) nous permettra de faire le décompte
nbdiv ← nbdiv + 1
FIN_SI
des nombres de diviseurs sur la base de
FIN_POUR la condition posée.
//
SI (nbdiv = 2) ALORS Enfin cette structure conditionnelle nous
DEBUT_ALORS permettra réellement de savoir, si oui ou
ECRIRE (i) non l’entier à vérifier est effectivement un
FIN_SI nombre premier, sur la base du
FIN_POUR décompte du nombre de diviseur. Qui
FIN_ALGO
doit être 2.

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 42

TABLEAUX

EXERCICE 48
ASTUCE – Le principe est qu’il faudra déclarer un tableau à 20 valeurs sur ce, l’algorithme se chargera de les étalées
de manière consécutive. En ce sens quand nous aurions besoin de rechercher une valeur, on le saisie. De ce fait
l’algorithme va initialiser une variable booléenne en l’attribuant FAUX, avant de parcourir toutes les valeurs du
tableau. Une fois qu’il trouve la valeur recherchée, la variable Ok change de valeur pour devenir VRAIE et la
vérification de ce changement conditionnera l’affichage de la valeur à rechercher.

Algorithme_recherche_entier_dans_un_tableau
TABLEAU TAB (19) : ENTIER
VARIABLE N, i : ENTIER
Ok : BOOLEENNE
DEBUT_ALGO
ECRIRE ("Entrez la valeur à rechercher")
LIRE (N)
Ok ← Faux
POUR i ← 0 à 19
DEBUT_POUR
SI (N = Tab(i)) ALORS
DEBUT_ALORS
Ok ← Vraie
FIN_ALORS
FIN_POUR
SI (Ok) ALORS
DEBUT_ALORS
ECRIRE (N, " fait partie du tableau")
FIN_ALORS
SINON
DEBUT_SINON
ECRIRE (N, " ne fait pas partie du tableau")
FIN_SINON
FIN_ALGO

TRAITEMENT SUR LES CHAINES DE CARACTERES

EXERCICE 57
ASTUCE – A chaque fois que l’on fournit une phrase, le programme utilisera d’abord la fonction len pour faire le
décompte complet du nombre de caractères de la phrase, ensuite avec l’aide d’une boucle il utilisera une condition
d’extraction générale des voyelles. Et à chaque fois que cette condition est satisfaite alors le programme rajoute +1
au compteur de voyelles jusqu'à la fin.

Algorithme_décompte_nombre_de_voyelles
VARIABLE Phrase : CHAINE DE CARACTERE
VARIABLE Nb, i, j : ENTIER
DEBUT_ALGO
ECRIRE ("Entrez une phrase : ")
LIRE (Phrase)
Nb ← 0
POUR i ← 0 à Len (Phrase)
DEBUT_POUR
//
SI (Mid (Phrase, i, 1) = "a" OU Mid (Phrase, i, 1) = "e" OU Mid (Phrase, i, 1) = "i" OU
Mid (Phrase, i, 1) = "o" OU Mid (Phrase, i, 1) = "u" OU Mid (Phrase, i, 1) = "y") ALORS
//
DEBUT_ALORS
Nb ← Nb + 1
FIN_ALORS
//
FIN_POUR
ECRIRE ("Cette phrase compte ", Nb, " voyelles")
FIN_ALGO

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 43

PROBLEMES
De
Recherche
" Les premiers 90% du code prennent les premiers 90% du temps de développement.
Les 10% restants prennent les autres 90% du temps de développement "
Tom CARGILL

PAS D’EBAUCHE DE SOLUTIONS POUR CETTE PARTIE, A VOUS D’ALLER LES CHERCHER.
MERCI

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 44

PROBLEMES DE RECHERCHE

Comprenez juste qu’un problème algorithmique est formé d’un ensemble de petits exercices.
Donc basez-vous simplement sur ce que vous avez déjà traité sur les parties précédentes,
accompagné d’un peu de réflexion.

Remarque : Un contrôle de saisie est recommandé, pour chaque cas de saisie de données.

PROBLEME 1
Ecrire un algorithme qui permet de calculer le développement limité,
de la fonction exponentielle et celle logarithmique de x à l’ordre n.
x et n doivent être fournis par l’utilisateur.

PROBLEME 2
Ecrire un algorithme qui permet à l’utilisateur de saisir un jour, un mois, une année et qui affiche :
- 1 Si la date est valide et 0 sinon
- Si l’année est bissextile ou pas
- Le nombre de jour du mois de cette année

PROBLEME 3
Ecrire un algorithme qui demande à l’utilisateur de saisir une série de nombre
et qui affiche le plus grand et le plus petit élément.

PROBLEME 4
Ecrire un algorithme qui demande à l’utilisateur de saisir une série de nombre positif ou nul
représentant le nombre de buts marqué par journée dans un championnat de Football de N
journées. L’algorithme calcule et affiche le nombre de buts marqués en moyenne et le nombre de
journées ou cette moyenne a été dépassée.

PROBLEME 5

Ecrire un algorithme qui te demande un nombre et qui t’affiche son plus grand diviseur (PGD), son
plus grand diviseur premier (PGDP) et son plus petit diviseur premier (PPDP).

PROBLEME 6
M. Bousso veut utiliser l’ordinateur pour faire le classement semestriel de ses étudiants de la
LMIO sur la base de leur moyenne. Sachant que sa classe contient 15 étudiants
M. Bousso veut afficher les résultats comme suit, soit l’exemple :
N° Nom Prénom (s) Note 1 Note 2 Moyenne Décision Rang
1 Nom 1 Prénom 1 10 10 10 Passable 1
2 Nom 2 Prénom 2 5 5 5 Faible 2

Moyenne = (note1 * 0.4 + note2 * 0.6) / 2

Veuillez lui proposer une méthode lui permettant de faire cette opération fastidieuse.

*************************

© Mars 2015, Tous droits réservés. Club LMIO


Université de Thiès, UFR SES ALGO, ASTUCE ET CODE | 45

CASSE - TETE

PROBLEME 7
Une compagnie d'assurance automobile propose à ses clients quatre familles de tarifs
identifiables par une couleur, du moins au plus onéreux : tarifs bleu, vert, orange et rouge.
Le tarif dépend de la situation du conducteur :

- Un conducteur de moins de 25 ans et titulaire du permis depuis moins de deux ans, se voit
attribuer le tarif rouge, si toutefois il n'a jamais été responsable d'accident. Sinon, la compagnie
refuse de l'assurer.

- Un conducteur de moins de 25 ans et titulaire du permis depuis plus de deux ans, ou de plus de
25 ans mais titulaire du permis depuis moins de deux ans a le droit au tarif orange s'il n'a jamais
provoqué d'accident, au tarif rouge pour un accident, sinon il est refusé.

- Un conducteur de plus de 25 ans titulaire du permis depuis plus de deux ans bénéficie du tarif
vert s'il n'est à l'origine d'aucun accident et du tarif orange pour un accident, du tarif rouge pour
deux accidents, et refusé au-delà

- De plus, pour encourager la fidélité des clients acceptés, la compagnie propose un contrat de la
couleur immédiatement la plus avantageuse s'il est entré dans la maison depuis plus d'un an.

*********************

" Rien d’autre que du courage, un jour vous y arriverez ! "


Club LMIO

© Mars 2015, Tous droits réservés. Club LMIO

You might also like