Vous êtes sur la page 1sur 92

CFPA Batna03

Chapitre 5 : Introduction à
l’algorithmique
Réalisé par Ouares Akila
Plan du chapitre
Introduction
Notion d’Algorithme et d’action primitive.
Structure d’un algorithme.
Différentes parties d’un algorithme
Les types standards et opérations appropriées.
Actions simples et structures de contrôle
Les types complexes (tableaux et
enregistrements).
Objectifs du cours

Ecrire un algorithme afin de résoudre un


problème donné et le préparer pour qu’il soit
traduit dans un langage de programmation.
Utiliser les structures de contrôle dans
l’élaboration d’un algorithme.
Utiliser les différents types de données dans
leur contexte avec les opérations adéquates.
Introduction
Dans notre vie courante, on dresse souvent une liste
d’actions à accomplir pour répondre à un problème
donné. Plus on donne de détails, mieux on exécute les
tâches de manière correcte.
Les tâches à exécuter doivent être respectées dans
l’ordre pour ne pas dévier de l’objectif attendu.
On doit tenir compte des capacités de celui qui
exécute les différentes tâches (connaissances dans le
domaine, savoir comprendre les tâches sinon les
expliquer avec plus de détails, …)
Introduction
Exemple: Recette de la mayonnaise
Ingrédients (4 personnes): 1 jaune d'oeuf, 25 cl
d'huile, 1 cuillère à café de moutarde, 1 trait de
vinaigre ou jus de citron, sel, poivre.
Préparation:
Mélanger le jaune d'oeuf , la moutarde, le sel et le
poivre.
Incorporer l'huile peu à peu en fouettant au fouet à
main sans s’arrêter.
Incorporer le vinaigre ou
le jus de citron à la fin.

Source: www.lesfoodies.com
Notion d’algorithme et d’action primitive
Un algorithme en informatique est un procédé de
calcul qui permet de résoudre un problème donné.
Ce procédé est une suite d’étapes à effectuer dans
un ordre donné afin d’aboutir au résultat attendu.
Une action est une étape de l'algorithme. C'est un
événement de durée finie qui modifie
l'environnement (changement des valeurs des
variables, résultat d’une expression, …).
Une action primitive est une action exécutée sans
aucune information complémentaire. Exemple:
A45
Notion d’algorithme et d’action primitive
Un algorithme est une suite d’actions
primitives, qui une fois exécutées réalisera un
travail bien précis.
Un algorithme doit tenir compte de tous les cas
possibles (le cas général et les cas particuliers).
Il contient toujours un nombre fini d'actions.
Il est souvent répétitif (il contient un
traitement qui se répète).
Il est indépendant des langages de
programmation et des matériels informatiques.
Notion d’algorithme et d’action primitive
Pourquoi un algorithme?
Un algorithme utilise un formalisme (ensemble de mots,
de structures, de règles) nommé LDA (Langage de
description d’algorithme). dont le but est de:
offrir un langage commun compris par tous ne
dépendant pas d’un langage de programmation 
Facilite la communication de la solution d’un
problème.
Assurer une meilleure conception d’une solution
avant son passage à la programmation qui nécessite
des ressources (machine, compilateur, …)
Préparer sa traduction dans un langage de
programmation (C, C++, java) car le passage d’un
Notion d’algorithme et d’action primitive
Démarche de résolution d’un problème
Pour obtenir les résultats attendus, on doit suivre les étapes:
Enoncé bien clair du problème posé.
Faire une analyse détaillée qui tient en compte des cas
particuliers.
Ecrire l’algorithme.

Traduire l’algorithme sous forme d’un programme.


Compiler le programme (correction des erreurs et
transformation en format exécutable par la machine).
Affichage et exploitation des résultats.
Notion d’algorithme et d’action primitive

Démarche de résolution d’un problème


Exemple
Enoncé du problème: résoudre une équation du premier
degré.
Analyse:
Une équation du premier degré s’écrit sous la forme:
ax+b=0
On doit introduire les valeurs de a et de b
Si a=0 et b=0  Solution indéfinie
Si a=0 et b<>0  Solution impossible (<> : différent )
Si a<>0  x= -b/a
Notion d’algorithme et d’action primitive
Démarche de résolution d’un problème
Algorithme correspondant
Algorithme équation
Var a,b: entier
Début
Lire (a,b)
Si a=0 alors si b=0 alors écrire (‘Solution
indéfinie’)
sinon écrire (‘Solution impossible)
Fsi
Sinon écrire (‘La solution est:’, -b/a)
Fsi
Fin
Démarche de résolution d’un problème
Programme correspondant en langage C
#include <stdio.h>
main()
{ /* Résolution d'une équation du premier degré */
int A, B;
printf("Calcul de la solution d'une équation du premier degré \n");
printf("Introduisez les valeurs de a, b");
scanf("%i %i", &A, &B);
if (A==0 && B==0) printf("Solution indéfinie.\n");
else if (A==0 && B!=0) printf("Solution impossible.\n");
else {
printf("La solution est :\n");
printf(" x = %.2f\n", (double)-B/A);
}
return 0;
}
Structure d’un algorithme
Différentes parties d’un algorithme

Algorithme nom_algorithme
Const nom_constante= valeur /*Déclaration des
Entête

Constantes*/
Type nom_type… /*Déclaration de nouveaux types */
Var var1,var2:type1, var3:type2 /*Déclaration des
variables */
Procedure ou fonction …/* Déclaration des sous-algorithmes
Des commentaires sont insérés pour donner une
*/
explication textuelle à certaines actions dont on
Corps

peut oublier le sens au fil du temps (A mettre


Début entre /* */).
Action 1
Action 2
Différentes parties d’un algorithme
Nom de Déclaration de
l’algorithme deux variables a et
b
Algorithme équationIntroduction des
Var a,b: entier Étudier les
deux valeurs de a et
Début différents cas
b
Lire (a,b) selon a et b
Si a=0 alors si b=0 alors écrire (‘Solution
indéfinie’)
Début de
l’algorithme sinon écrire (‘Solution impossible)
fsi
Sinon écrire (‘La solution est:’, -b/a)
Fsi Affichage de la
Fin solution attendue
Fin de l’algorithme
Structure d’un algorithme
Différentes parties d’un algorithme

La partie entête contient les éléments suivants:


La définition des types non standards tels que
les enregistrements...
La définition des procédures et des fonctions
(sous-algorithmes).
La déclaration des constantes.
La déclaration des variables (simples ou
composés comme les tableaux et les matrices).
Structure d’un algorithme

Différentes parties d’un algorithme


Déclaration des constantes
Une constante est une zone mémoire qui ne
possède qu’une seule valeur manipulée par le
programme et ne change pas son état en cours
de traitement.
Elle est utilisée pour ne pas reproduire une
valeur à plusieurs reprises dans l’algorithme.
Exemple:
Const TVA=0.07, Pi=3.141592
Structure d’un algorithme
Exemple d’algorithme qui manipule des constantes

Algorithme rattrapage
Const note_elimin=7 /* note éliminatoire fixée à
7*/
Var moyenne:reel
Début
Lire (moyenne)
Si moyenne <note_elimin
Alors écrire (‘l.etudiant refait le module’)
Fsi
Fin algorithme
Structure d’un algorithme
Déclaration des variables
Les variables sont des zones mémoires contenant les
données manipulées par un programme ayant des adresses
mémoire pour pouvoir les atteindre. Le contenu d’une
variable peut changer une à plusieurs fois.
Les variables sont nommées afin d’être utilisées dans un
algorithme et doivent être définies ainsi que leurs types
dans la partie déclaration.
Exemple:
Var A,B: entier, V: booleen, Quotient: reel
Ici nous avons déclaré pour les besoins de notre algorithme: 4
variables (deux de type entier, une de type booléen et une
de type réel).
Structure d’un algorithme
Différentes parties d’un algorithme
Déclaration des variables
Un nom d’une variable (identifiant) doit être:
Porteur de sens pour pouvoir comprendre facilement
l’algorithme en cours de sa lecture ou de son déroulement
(notamment pour les algorithmes compliqués et longs).
Il doit toujours être présent dans la partie déclaration des
variables (avant de l’utiliser).
Il ne doit pas commencer par un chiffre.
Il ne doit pas contenir un symbole sauf la caractère
souligné (_).
Il doit être différent des mots réservés utilisés dans la
structure d’un algorithme (si, sinon, pour, tant que, var,
const, type, entier, booleen,…)
Structure d’un algorithme
Les types standards et opérations appropriées.
Le type de variable définit les valeurs qu’elle peut contenir.
Les types standards sont:

Le type explication Exemple


entier Positif ou négatif (100, -548, …) Var a,b: entier

réel Nombre à virgule (1.75, 2.4586,…) Var result:reel

caractère Lettres (‘A’,..’Z’,’a’…’z’), symboles Var c: caractère


(&,$, @,#,…) , les chiffres
(‘0’…’9’).
Chaine Texte (composé de plusieurs Var adresse:
caractères: ’ecole ‘, ‘exercice’) chaine
Booleen Vrai ou faux Var trouv:
Structure d’un algorithme
Les types standards et opérations
appropriées.
Les opérations utilisées sont des opérations
arithmétiques et logiques et des opérations de
comparaison.
Opérations arithmétiques: +, -, /, *, mod
(modulo), div (division entière), ** ou ^
(exponontiation)
Opération logiques: non, et, ou
Opérations de comparaison: =, <, <=,>, >=,
<> (non égal)
Structure d’un algorithme
Les types standards et opérations
appropriées.
Remarques:
• L’addition entre deux caractères ou deux
chaines de caractères donne une chaine de
caractère.
Exemple: CH A +B . Si A contient la valeur
‘pomme’ et B contient la valeur ‘de terre’ alors
CH contient la valeur ‘pomme de terre’.
• On peut comparer deux caractères ou chaines
de caractères . Exemple: Si A contient ‘p’ et B
Structure d’un algorithme
Les types standards et opérations appropriées.
Remarques:
• Le résultat d’une comparaison est de type logique
(booleen).
Exemple:
Si A<B alors minA Cond(A<B)
Si cond=vrai alors
Action1

Donc A<B est évalué, le résultat est soit 1 soit 0.


Structure d’un algorithme
Les types standards et opérations appropriées.
Priorités des opérations arithmétiques: Le calcul
d’une expression qui lie des variables par des
opérateurs s’effectue selon l’ordre de priorité
suivant
• Les termes entres parenthèses (parenthèses
internes puis parenthèses externes).
• L’exponenciation
• Multiplication et division
• Addition et soustraction
Pour les opérations de même niveau, l’évaluation se
Structure d’un algorithme
Les types standards et opérations appropriées.
Priorités des opérations arithmétiques:
• Exemple
Res(a+b)/(a*b**2)
On calcule a+b
On calcule b**2
On multiplie a par b**2
On fait la division de a+b par a*b**2
S’il y’a une comparaison, on doit d’abord calculer
les expressions avant de les comparer. Exemple:
a**2 <b*c
Structure d’un algorithme
Les types standards et opérations appropriées.
Priorités des opérations logiques: L’ordre suivant
doit être respectée.
• Calcul des expressions entre paranthèses
• Non logique
• Et logique
• Ou logique
Exemple
• a ou b et non(d)
On calcule [non(d)] puis [b et [non (d)]] puis [[(b et
[non(d)] ] ou a]
Structure d’un algorithme
Exercice: Corriger l’algorithme suivant et donnez les
résultats des différentes expressions
Algorithme exercice
Const S=7.466
Var A,B: entier, V:booleen
Début
Lire(A,B)
SA+B
RA*B/A+B**2
V(S<R)
Ecrire(S,R,V)
Fin algorithme
Structure d’un algorithme
Exercice: Corriger l’algorithme suivant et donnez les
résultats des différentes expressions (pour A=1 et B=1)
Algorithme exercice Il faut déclarer R
avant son utilisation
Const S=7.466
Var A,B: entier, V:booleen, R:reel
Cette action est à supprimer. S est
Début une constante, on ne doit pas lui
affecter une valeur
Lire(A,B)
Pour A=1 et B=1, le calcul donne
SA+B ((1*1)/1) + (1**2)  R=2
RA*B/A+B**2 Pour A=1 et B=1, S<R est fausse,
A>B est fausse d’où V est faux
V(S<R) ou (A>B) (0)
Ecrire(S,R,V) 7.466 2
Fin algorithme false
Structure d’un algorithme
Un algorithme est composé de deux types
d’éléments:
Les actions simples ou les actions de
traitement de l’information proprement dit.
Les structures de contrôle qui expriment
l’organisation logique du programme et
commandent le déroulement du programme
dans le temps. Ces structures sont:
l’enchaînement,
 la conditionnelle et l’alternative, et
la répétitive.
Actions simples et structures de contrôle
Les actions simples comprennent:
L’affectation
Les actions d’entrée/sortie ou lecture et écriture.
Les calculs élémentaires
Et les appels de sous programmes (procédures et
fonctions).
Exemples d’actions simples:
AB
Produit(A,B)
AB*C-E
Lire (A)
Ecrire (‘Bonjour le monde’)
Actions simples et structures de contrôle
L’affectation est l’opération qui permet de stocker un
contenu dans une variable (zone mémoire) à un instant
donné. On peut affecter à une variable une valeur simple, le
contenu d’une autre variable ou le contenu d’une expression.
Elle est noté ( ou =)

Exemples:
A5 (ou A=5) /*Affectation d’une valeur*/
AB /*Affectation du contenu d’une variable*/
A(B+C)/10 /*Affectation du résultat d’une expression*/

Ce qui est affecté à la variable doit être de même type que cette
dernière.
Si A est de type entier, A10.5 est considéré comme une erreur.
Actions simples et structures de contrôle
Une action de lecture permet de stocker une
valeur dans une variable. Cette valeur est
donnée par l’utilisateur en utilisant un organe
d’entrée. Si l’exécution est répétée , la valeur
peut être changée.
Exemple:
Lire (A,B)
CA+B
Si l’utilisateur a introduit 5 pour A puis 2 pour B
alors C aura 7 comme valeur.
Actions simples et structures de contrôle
Une action d’écriture permet d’afficher un message,
le contenu d’une variable, ou le contenu d’une
expression sur un organe de sortie (écran, imprimante,
… ).
Exemple:
Lire (A,B)
CA+B
Écrire (‘La somme de A et de B est:’, C)

Si l’utilisateur a introduit 5 puis 2 alors le message


affiché est comme suit: La somme de A et de B est: 7
Actions simples et structures de contrôle

Les structures de contrôle


On distingue:
L’enchaînement
Les structures conditionnelles et alternatives
Les structures répétitives
Remarque: On évoquera dans ce qui suit le
terme condition logique. Cela veut dire
expression logique qui peut être vraie ou faux.
Exemple: (A-2) >0, I<10, A=B+C, …
Structure d’un algorithme
L'enchaînement (séquencement) : Les actions
primitives sont exécutées dans l'ordre d'apparition
dans l'algorithme. Ces enchaînements peuvent se
trouver dans les autres structures de contrôle.

Action 1 Exemple:
Action 2 Lire (A)
..... B A**4
CB*100
Action n
Ecrire (A,B,C)
Actions simples et structures de contrôle

Les structures conditionnelles et alternatives


Elles permettent d’effectuer un traitement
conditionnel (un choix de décision). On
distingue:
La structure simple (choix unique) ou
conditionnelle
La structure à double choix ou alternative.
Le choix multiple (à plusieurs alternatives)
Actions simples et structures de contrôle
La structure Si condition logique
conditionnelle alors action A
La structure simple Fsi
(choix unique): ----------OU ---------
Dans ce cas une ou
Si condition logique
plusieurs actions
sont exécutées si alors
action A
une condition est
Action B
vraie. Action C
Exemple:
…..
Si A<B alors AB Fsi
Actions simples et structures de contrôle
Les structures Si condition logique
alternatives alors action A
La structure à double Sinon action B
choix: On exécute une Fsi
action dans le cas où la ----------OU ---------
condition est vraie. Si Si condition logique
alors action A
elle est fausse, on
action B
exécute une autre.
…..
Exemple: Si A<B Sinon action x
alors CB- action y
A ……
Fsi
sinon CA-
Actions simples et structures de contrôle
Les structures
alternatives Selon <expression ou variable>
Le choix multiple: valeur 1: Action 1
Plusieurs conditions quivaleur 2: Action 2
mènent chacune à une valeur 3: Action 3
ou plusieurs actions. …..
Exemple: Lire (choix) Fin selon
Selon choix
1: P’Rouge’ Remarque :
2: P ‘Vert’ Selon la condition, on peut
exécuter une ou plusieurs
3: P ‘Blanc’
actions.
Fin selon
Actions simples et structures de contrôle
Exercice sur l’alternative: Soit à afficher la
plus petite valeur entre deux nombres entiers
Algorithme plus_petit
Var A,B, Min:entier
Début
Écrire (‘Donnez deux valeurs entières à comparer’)
Lire(A,B)
Si A<B alors MinA
Sinon minB
Fsi /*Fsi n’est pas obligatoire s’il y’a une seule
action*/
Ecrire (‘la plus petite valeur entre:’, A, ‘et’,B, ‘est:’,
min)
Actions simples et structures de contrôle
Les Structures alternatives
Soient C1, C2 deux conditions, et A1, A2 deux
actions (ou groupe d’actions), Il est utile de
savoir que:
Si (C1 et C2) alors A1 Si C1 alors si C2 alors
A1

Si (A<0 et B<0) alors Si (A<0) alors si (B<0)


écrire (‘La somme de’, Exemple alors écrire (‘La somme
A, ‘et’,B, ‘est de’, A, ‘et’,B, ‘est
négative’) négative’)
Actions simples et structures de contrôle
Les Structures alternatives

Si (C1 ou C2) alors Si C1 alors A1


A1 sinon si C2 alors A1

Si (A<0 ou A>0) Si (A<0)


alors écrire (‘A est non Exemple alors écrire (‘A est non
nul’) nul’)
Sinon si (A>0)
alors écrire (‘A est non
nul’)
Cette forme est
plus optimisée en Cette forme est plus
terme d’écriture optimisée en terme de calcul
de l’expression
Actions simples et structures de contrôle
Les Structures alternatives
Si (C1 ou C2) alors Si (A<0 ou A>0) alors
A1 écrire (‘A est non nul’)
Sinon A2 Sinon écrire (‘A est nul’)

Exemple
Si C1 alors A1
sinon si C2
alors A1 Si A<0 alors écrire (‘A est non
Sinon A2 nul’)
sinon si A>0 alors écrire (‘A est non
nul’)
Sinon écrire (‘A est nul’)
A2 est exécutée si C1 et C2 sont toutes les deux non
vérifiées
Actions simples et structures de contrôle
Les Structures alternatives
Si (A<0 et B<0) alors écrire (‘somme est
Si (C1 et C2) alors A1 de signe négatif’)
Sinon A2 Sinon écrire(‘la somme dépend du signe de
la plus grande valeur absolue’)

m ple
E xe
Si A<0 alors
si B<0
Si C1 alors si C2 alors alors écrire (‘somme est de signe
A1 négatif’)
sinon écrire(‘la somme dépend du
sinon A2 signe de
Fsi la plus grande valeur
Sinon A2 absolue’)
Fsi
Fsi Sinon écrire(‘la somme dépend du signe de la
plus grande valeur absolue’)
Exercice
Afficher le résultat admis ou refait l’année selon la
moyenne
Algorithme passage
Var moy:reel
Début
Écrire (‘Donnez la moyenne de l’étudiant’)
Lire(moy)
Si moy>=10 alors Ecrire (‘L étudiant admis en année
suivante)
Sinon Ecrire (‘L Etudiant refait lannée en cours’)
Fsi
Fin Algorithme
Actions simples et structures de contrôle

Les boucles

Une boucle est une structure répétitive,


elle permet la répétition de l’exécution
d’une ou plusieurs instructions un
nombre fini de fois. Cette répétition
nécessite une condition d’arrêt. Il existe
trois types de boucles
La boucle pour
La boucle tant que
La boucle Répéter
Actions simples et structures de contrôle
La boucle « pour »
Cette boucle utilise un compteur qui
s’incrémente automatiquement et s’arrête à
la valeur maximale qu’on lui attribue.
Pour nom_variable de (valeur initiale) à
(valeur finale) faire
Début
Bloc d’instructions
Fin pour
Actions simples et structures de contrôle
La boucle « pour »(exemple)
Multiplier la variable 5 fois par lui même (a
** 5) Algorithme puiss5
Var a,i,p:entier
Début
Lire (a)
P1
Pour i de 1 à 5 faire pp*a
Fin pour
Ecrire (a, ‘puissance 5
est:’,p)
Actions simples et structures de contrôle
La boucle « pour »(exemple)
Déroulement de l’algorithme (Trace)

a i p
Entrée de la valeur de
2 1 1 a:
2 2 On suppose que c’est
3 4 2
Affichage sur écran:
4 8
a puissance 5 est 32
5 16
32
Actions simples et structures de contrôle
D’autres caractéristiques de la boucle « pour »
On peut définir un pas pour
l’incrémentation du compteur.
Exemple: somme de 2+4+6+8+ …+100
S0
Pour i de 2 à 100 pas 2 faire
Début
SS+i
Fin pour
Actions simples et structures de contrôle
D’autres caractéristiques de la boucle « pour »
La boucle « pour » peut être utilisée avec un
compteur qui se décrémente.
Exemple: somme de 1+2+3+4+ …+50
S0
Pour i de 50 à 1 pas -1 faire
Début
SS+i
Fin pour
Actions simples et structures de contrôle
La boucle tant que
La boucle tant que utilise une expression
booléenne comme condition d’arrêt de la
répétition.
La boucle tant que est plus générale que la boucle
Pour qui ne peut avoir de condition que sur le
nombre d’itérations spécifié par la valeur
maximale du compteur. (toute boucle « pour » peut
être écrite à l’aide de la boucle « tant que »).
S’il y’a un compteur, son incrémentation doit être
explicite (ii+1).
Actions simples et structures de contrôle
La boucle tant que

Tant que expression faire


début
Action1
Action2

Fin tantque
Actions simples et structures de contrôle
La boucle tant que (exemple1)
Algorithme qui affiche un message 5 fois
Algorithme fois5 Algorithme fois5
Var i:entier Var i:entier
Début Début
i1 Pour i de 1 à 5 faire
Tant que i<=5 faire écrire(‘Je suis bien
début concentré avec le cours ’)
écrire(‘Je suis bien Fin pour
concentré avec le cours ’) Fin algorithme
ii+1 Remarque: Dans le cas d’un
Fin tantque compteur, il est préférable d’utiliser
Fin algorithme la boucle Pour
Actions simples et structures de contrôle
La boucle tant que
Remarque: Qu’arrive t-il si la condition d’arrêt n’est jamais
vérifiée?
Algorithme fois5 Si l’instruction ii+1
Var i:entier n’existe pas donc i va
Début garder la valeur 1
i1 indéfiniment. Ceci
Tant que i<=5 faire engendre ce qu’on appelle
début une boucle infinie 
écrire(‘Je suis bien faire toujours un
concentré avec le cours ’)
déroulement de votre
ii+1
algorithme pour s’assurer
Fin tantque
que tout va bien!
Fin algorithme
La boucle tant que (exemple2)
Algorithme qui s’arrête quand l’utilisateur devine la valeur cachée
Algorithme devine
Const quoi=12
Var a:entier, trouv:booleen
Début
Trouvfaux
Tant que (trouv=faux) faire /* tant que Remarque:
non(trouv) */ Dans ce cas,
Début la boucle «
Écrire (‘introduire une valeur entre 1 et 20’) tant que » ne
Lire(a) peut être
Si a=quoi alors remplacée
écrire (‘BRAVO, vous avez gagné’) avec la boucle
trouvvrai « pour ».
Sinon écrire (‘Faux, donnez une autre valeur’)
Fsi
Fin tantque
Déroulement de l’algorithme (Trace)

quo trouv a Affichage sur écran


i
12 faux Introduire une valeur entre 1 et 20
(1) (2) (3)

1 Faux, donnez une autre valeur


(4) (5)

3 Faux, donnez une autre valeur


(6) (7)

10 Faux, donnez une autre valeur


(9)
(8)

Vrai 12 BRAVO, vous avez gagné


(11)
(12) (10)
Actions simples et structures de contrôle
La boucle tant que (exercice)
Compléter l’algorithme devine pour prendre en
considération les cas suivants:
- L’utilisateur peut faire erreur en introduisant les
valeurs hors intervalle souhaité. Il faut lui rappeler
qu’il doit respecter l’intervalle donné.
- L’utilisateur peut arrêter le jeu au moment qu’il
souhaite en lui rappelant cela avec un message.
- On suppose qu’il y’a une fonction random (x,y) qui
génère un nombre aléatoire entre les deux valeurs x
et y.
Actions simples et structures de contrôle

La boucle tant que (exemple3)


Vérifier si un entier est premier ou non.
Analyse:
- Un nombre premier n’est divisible que par 1 et
lui-même
- S’il a un diviseur, il doit impérativement en avoir
deux dont l’un est dans l’intervalle [2,n div 2]
- De ce fait, on minimise les calculs en ne
cherchant les diviseurs que dans l’intervalle cité
plus haut.
- Si aucun diviseur n’existe dans cet intervalle, le
Algorithme premier
Var n , d : entier
Début
Lire(n)
D2
Tant que (d <= n DIV 2) et ( n MOD d <> 0)
Faire
dd + 1
Fin tantque
Si n mod d <>0 alors écrire (n,’est premier’)
Sinon écrire (n, ‘n.est pas premier’)
Fin algorithme
Actions simples et structures de contrôle
La boucle répéter
La condition d’arrêt d’une boucle répéter
est placée à la fin du bloc à répéter. Cela
garantit l’exécution du bloc au moins une
fois sans tenir compte de la condition
d’arrêt.
Répéter
Action 1
Action 2
……
Jusqu’à (condition d’arrêt vérifiée)
Actions simples et structures de contrôle
La boucle répéter (exemple)
Algorithme qui affiche ‘Bonjour’ jusqu’à ce que
l’utilisateur ne le souhaite plus.
Algorithme Bonjour
Var rep:caractère
Début
Répéter
Écrire (‘Bonjour’)
Écrire (‘voulez –vous d’un autre bonjour : O/N’)
Lire(rep)
Jusqu’à (rep=‘N’)
Fin algorithme
Les Types complexes
Les tableaux
Supposons que nous ayons besoin de conserver les
notes de vingt étudiants de façon qu’on puisse faire
différents traitements sur ces notes et accessibles
simultanément.
Solution: Nous pouvons déclarer 20 variables N1,N2,
…,N20 pour conserver ces notes.
Inconvénient 1: Si le nombre d’étudiants est trop
élevé (exemple 100 ou plus), nous devrions déclarer
autant de variables que d’étudiants!!!
Inconvénient 2: Il n’existe pas un lien entre les
variables pour pouvoir faire tous les traitements
possibles tel que le tri qui est un traitement très
Les Types complexes
Les tableaux
La solution au problème précédent est de définir un
vecteur (tableau à une dimension) qui porte un seul
nom exemple « note » où les différentes notes sont
accessibles l’une après l’autre grâce à un indice.

Tableau « note » (de 10 éléments)


14.5 10.0 11.5 6.5 5.5 15 12 12 20 13

Les différents éléments sont accessibles via leurs


nom et leur position dans le tableau: note[1], note[2],
…,note[10]
Les Types complexes
Les tableaux
Avantages de l’utilisation d’un tableau:
Recherche aisée d’une valeur donnée
Tri (classement)
Opérations de mise à jour (modification, rajout de
valeurs, suppression de valeurs).
Exemple pour le tri croissant des valeurs d’un
tableau:
14.5 10.0 11.5 6.5 5.5 15.0 12.0 12.0 20.0 13.0

5.5 6.5 10.0 11.5 12.0 12.0 13.0 14.5 15.0 20.0
Les Types complexes
Les tableaux
Déclaration d’un tableau à une dimension

Type tab=tableau[1..100] d’entier;


Var T:tab
/* déclaration intéressante si on utilise des tableaux de
même type et de même taille */
…….
Ou directement
Var T= tableau[1..100] d’entier;
Les Types complexes
Les tableaux
Accès à un élément d’un tableau
Un élément est accessible via son indice dans le
tableau

VT[3]
T[4]X+1

Pour un traitement sur tout le tableau, les boucles


répondent à beaucoup de problèmes posés utilisant
les tableaux.
Les Types complexes
Les tableaux
Lecture des éléments d’un tableau
La lecture des éléments d’un tableau doit se faire à
l’aide d’une boucle. Exemple:

Pour i de 1 à 10 faire
Lire(T[i])
Fin pour
Les Types complexes
Les tableaux
Ecriture des éléments d’un tableau
Si l’on souhaite afficher le contenu des éléments d’un
tableau, on utilise également une boucle

Pour i de 1 à 10 faire
écrire(‘La valeur du’,i,’eme élément
est ,’T[i])
Fin pour
Les Types complexes
Les tableaux
Exemple: somme des éléments d’un tableau
Algorithme som_tab
Var T: tableau[1..10] d’entiers, S,i:entier
Début
Pour i de 1 à 10 faire
Lecture des
Lire(T[i]) éléments du tableau
Fin pour T
S0
Pour i de 1 à 10 faire On rajoute à S le
Début
contenu de chaque
SS+T[i]
élément de T
Fin pour
Écrire (‘La somme est: ‘,S)
Fin Algorithme
Les Types complexes
Les tableaux (Le tri d’un tableau)
Il existe plusieurs méthodes pour faire les tri des
valeurs d’un tableau selon l’ordre croissant ou
décroissant.
Le tri par sélection consiste à comparer le premier
élément aux éléments suivants. Si un élément
quelconque est inférieur au premier élément, les
valeurs sont permutées. A la fin la valeur minimale
est affectée à T[1].
L’opération sera répétée avec le 2eme élément en le
comparant aux autres valeurs sauf le premier et ainsi
de suite on compare le 3eme élément, le 4eme, …
jusqu'à l’avant dernier.
Les Types complexes
Les tableaux (Le tri d’un tableau)
Pour i de 1 à 10 faire
Lire(T[i])
Fin pour
Pour i de 1 à 9 faire
Pour j de i +1 à 10
Si T[i]>T[j] alors
CT[j]
T[j]T[i]
T[i]C
Fsi
Fin pour
Fin pour
Les Types complexes
Les tableaux (La recherche dans un tableau trié)
La recherche d’une valeur dans un tableau non trié
nécessite de parcourir tous ses éléments.
La recherche dans un tableau trié est optimisée, elle
s’appelle une recherche dichotomique.
La recherche dichotomique permet rechercher un
élément dans la moitié du tableau et de comparer la
valeur à la valeur du premier élément du dernier, s’il
est compris entre ses valeurs, on se suffit à la
première partie, sinon la recherche se fait dans la
deuxième partie.
Les Types complexes
Les tableaux (La recherche dans un tableau trié)
1 3 4 8 11 15 20 21 25 30

•Supposons que l’on recherche la valeur 4 dans le tableau


• on a deux parties [1 à 11] et [15 à 30] (5 éléments dans
chaque partie)
•On a 4>1 et 4<11, on subdivise encore la partie en deux
tableaux:[1 à 3] et [4 à 11], 4 est supérieur aux éléments de
la première partie donc s’il se trouve il est dans la
deuxième partie. Effectivement, il y’est dans la première
case de cette partie.
• Pour un tableau volumineux, la même démarche est
Recherche dichotomique (algorithme)
Algorithme recherche
Const n=100
Var gauche,droite, milieu,val: entier ; trouv:booléen
T:tableau[1..n] d’entiers
Début
gauche1
droiten
Trouvfaux
Lire (val)
Tant que (non trouv) et (gauche<droite) faire
Milieu(gauche+droite) div 2
Si t[milieu] = val alors trouv  vrai
Sinon Si val > t[milieu] Alors
gauche  milieu+1 Sinon droite  milieu-1
FSi
FSi
Fin tantque
Si trouv alors écrire(‘La valeur ", val , ‘est d.indice’,
milieu)
Sinon écrire(‘La valeur ‘, val , ‘ n.est pas dans le
tableau’)
Fsi
Les Types complexes
Les tableaux (à plusieurs dimensions)
Le choix de la borne inférieure à 1 est conseillée en
algorithmique mais cela n’empêche de déclarer un
tableau comme suit
VAR t=tableau[m..n] de type_tableau (avec m<n)
Exemple: var t=tableau[3..20] de réel
Un tableau de plusieurs dimensions est déclaré
comme suit:
Var t=tableau[m1..n1,m2..n2,…] de type_tableau
On utilise souvent les tableaux à deux dimensions
pour le calcul matricielle (matrice transposée,
inverse, produit,…)
Les Types complexes
Les tableaux (à plusieurs dimensions): exemple
(calcul de la somme des éléments d’une matrice)
Algorithme dimension2 S0
Var T: tableau[1..10,1..5] Pour i de 1 à 10 faire
d’entiers, S,i,j:entier début
Début Pour j de 1 à 5 faire
Pour i de 1 à 10 faire début
SS+(T[i,j])
début Fin pour
Pour j de 1 à 5 faire Fin pour
début
Lire(T[i,j])
Écrire (‘La somme est: ‘,S)
Fin pour
Fin pour Fin Algorithme
Les Types complexes
Les enregistrements
Un enregistrement est un type spécifique pour des variables
qui sont composés de plusieurs parties appelés « champs »
qui sont de type standard ou à leur tour de type
enregistrement.
L’objectif est d’avoir une variable à deux ou plusieurs
parties qui constituent des propriétés pour une entité donnée.

Exemple: chaque étudiant possède un matricule, un nom,


une moyenne. Ceci peut être décalré comme un type et
utilisé dans un algorithme.
Les Types complexes
Les enregistrements
Déclaration:
Type nom_enregistrement=enregistrement;
Début
champ1: type1

champn: typen
Fin
Exemple
Type etudiant=enregistrement Puis on déclare une
début variable de ce type
Matricule:chaine comme suit:
Nom:chaine Var e:etudiant
Moyenne:reel
Fin
Les Types complexes
Les enregistrements
Accès à un champ donné d’une variable:
Un champ est accessible en spécifiant tout d’abord le
nom de la variable suivi d’un point suivi du nom du
champ correspondant.
Variable_inom_variable.nom_champ

Exemple (si e est de type etudiant déclaré


précédemment)
Ne.nom
Me.moyenne
Les Types complexes
Les enregistrements
Lecture ou écriture d’un champ donné d’une
variable:
Un champ est lu ou écrit de la façon suivante
Lire(nom_variable.nom_champ)
Écrire(nom_variable.nom_champ)

Exemple (si e est de type etudiant déclaré


précédemment)
Lire(e.nom)
Lire(e.moyenne)
Exemple pour le type enregistrement
Soit à comparer l’âge de deux étudiants
Algorithme comparer
Type etudiant=enregistrement
Début
Nom:chaine
Age:entier
Fin
Var e1,e2:etudiant
Début
Lire(e1.nom,e1.age,e2.nom,e2.age)
Si e1.age<e2.age alors écrire (e1.nom,’ est plus jeune que: ‘,
e2.nom)
Sinon écrire (e2.nom,’ est plus jeune que: ‘, e1.nom)
Fsi
Fin algorithme
Les Types complexes
Les enregistrements
Types imbriqués: il se peut qu’un champ i soit de type complexe,
dans ce cas, il est déclaré avant le type où il est utilisé
Type type_i=enregistrement
Début
Schamp1:type1

Schampm:typem
Fin
Type nom_enregistrement=enregistrement;
Début
champ1: type1

Champi:type_i

champn: typen
Fin
Les Types complexes
Les enregistrements
Types imbriqués (exemple)
Type date=enregistrement
Début
jour:entier
Mois:entier
annee:entier
Fin
Type etudiant=enregistrement;
début
Matricule:chaine
Nom:chaine
D_naiss:date
Moyenne:reel
Fin
Les Types complexes
Les enregistrements
Types imbriqués (exemple)

Exemple d’une variable de type etudiant (4 champs


dont l’un est composé à son tour de 3champs)

matricul nom jour mois annee moyenn


e e
Type date (type
complexe)
Les champs sont accessibles dans ce cas de cette façon:
je.date.jour
Me.date.mois
Ne.nom
Les Types complexes
Exercice (tableau, boucle et le type enregistrement)
Il s’agit d’écrire un algorithme qui affiche les noms des
étudiants dont la note est supérieure à la moyenne du
groupe composé de 40 étudiants.
Analyse
Lire les noms des étudiants et leurs notes respectives
Calculer la moyenne des notes: M=(somme des 40 notes
/40)
Il faut parcourir toutes les notes et chercher les notes T i
telque Ti>=M
Pour chaque Ti >=M afficher le nom de l’étudiant
correspondant.
Les Types complexes
Algorithme notes
Type etudiant=enregistrement
Début
Nom:chaine
Note:reel
Fin
Var T=tableau[1..40] de etudiant, M,S:reel
Début
S0
Pour i de 1 à 40 faire
Lire(T[i].nom, T[i].note)
SS+ T[i].note
Fin pour
MS/40
Pour i de 1 à 40 faire
Si T[i].note>=M alors écrire(T[i].nom)
Fin pour
Fin algorithme
Annexe1: Liste des mots réservés
Opérateurs logiques: ET, OU, NON
Opérateurs arithmétiques: DIV, MOD
Types: entier, réel, caractère, chaine, booleen
Début/fin: Début, fin, Fpour ou Fin pour, pas, FSI ou
Fin SI, Ftanque ou Fin tantque
Déclaration: const, var, tableau, type, enregistrement
Sous programmes: fonction, procédure, paramètres
Structures : SI, alors, sinon, pour, tant que, répéter,
jusqu’à, selon, faire, de, à
Entrée/sortie: écrire, lire

Remarque: ces mots réservés ne sont pas utilisables


comme noms de variables.
Annexe2: Organigramme
Un organigramme est la représentation schématique
d’un algorithme. On utilise des formes géométriques
pour exprimer une solution.
Annexe2: Organigramme

Source: El Sakaan Nadim, « Programmation en langage C », éditions


pages bleues
Annexe2: Organigramme (exemple)

Source: http://larp.marcolavoie.ca/fr/description/description.htm
Ressources bibliographiques

B. Meyer et C. Baudoin, « Méthodes de


programmation », Edition Eyrolles, 1978
Nadji Medjaoui, cours d’algorithmique, ESI
El Sakaan Nadim, « Programmation en
langage C », éditions pages bleues.

Vous aimerez peut-être aussi