Académique Documents
Professionnel Documents
Culture Documents
Algorithmique
Programmation C
Abdelmajid Hajami
2010
Plan
• Algorithmique (6 séances)
• Programmation C (8 séances)
Algorithmique
Loi de Greer
Un programme Informatique ne fait jamais ce que vous
voudriez faire
voudriez faire,…
il fait seulement ce que vous lui dites de faire
Logiciel Matériel
Informatique
1
12/11/2010
Algorithmique
Préambule
Algorithmique
Définition
Algorithmique
Généralement : c’est la description des étapes à suivre pour réaliser un
travail
Exemple : pour aller à la poste, il faut prendre la première à droite, aller
tout droit jusqu’au feu, prendre à gauche, et c’est le 4ième bâtiment
après le supermarché.
Le savoir faire d’un informaticien se transmet par un algorithme; Qui
d
demande aussi un langage particulier
d i l ti li
Un programme est donc la description d’un algorithme dans un langage accepté par la
machine.
Un algorithme à l’inverse d’un programme, est indépendant du langage de
programmation (et donc de la machine)
2
12/11/2010
Algorithmique
Problème
Analyse
Algorithme
Programmation
Programme évolué
Compilation
Programme en langage
l
machine
Edition des liens
Programme exécutable
Tests
Correct ? Rapide ? …
Solution acceptée
Algorithmique
Définition d’un organigramme
C’est une représentation graphique de l’algorithme. Pour le construire, on
utilise des symboles normalisés.
Quelques symboles utilisés dans la construction d’un organigramme :
Algorithmique
Le langage de description d’algorithme
Ce langage utilise un ensemble de mots clés et de structures permettant de
décrire de manière complète, claire, l’ensemble des opérations à exécuter
sur des données pour obtenir des résultats ; on n’hésitera donc pas à
agrémenter l’algorithme de nombreux commentaires.
L’avantage d’un tel langage est de pouvoir être facilement transcrit dans un
langage de programmation structuré ( Pascal, C…)
3
12/11/2010
Structure d’un algorithme Algorithmique
Représentation
1. L’en‐tête
Il permet tout simplement
d’identifier un algorithme.
2. Les déclarations
C’est une liste exhaustive des
objets, grandeurs utilisés et
manipulés dans le corps de l ’
algorithme ; cette liste est placée
en début d’algorithme.
en début d algorithme.
3. Le corps
Dans cette partie de l’algorithme,
sont placées les tâches
(instructions,
opérations…) à exécuter.
4. Les commentaires :
Pour permettre une
interprétation aisée de
l’algorithme, l’utilisation de
commentaires est vivement
conseillée.
10
Algorithmique
Déclaration de constantes, de variables et de structures
a. Les constantes :
Elles représentent des chiffres, des nombres, des caractères, des chaînes de caractères,
… dont la valeur ne peut pas être modifiée au cours de l’exécution de l’algorithme.
Mot clé : const
b. Les variables :
Elles peuvent stocker des chiffres des nombres, des caractères, des chaînes de
caractères,… dont la valeur peut être modifiée au cours de l’exécution de l’algorithme.
Mot clé : var
Les constantes et les variables sont définies dans la partie déclarative par deux
caractéristiques essentielles, à savoir :
• L’ identificateur : c’est le nom de la variable ou de la constante. Il est composé
de lettres et de chiffres
• Le type : il détermine la nature de la variable ou de la constante (entier, réel,
booléen, chaîne de caractères…)
11
Algorithmique
Les opérations sur les variables
Tout au long d’un programme, une variable peut subir plusieurs changements
issu de certaines opérations ( Affectation , Incrémentation , Décrémentation ,
Arithmétique ) et delà un changement de sa valeur.
Affectation
Initialisation
Opérations
Opérations arithmétiques
Incrémentation / Décrémentation
12
4
12/11/2010
Algorithmique
Opérations sur les variables
Affectation
Pour pouvoir envisager des exemples d’utilisation, il faut introduire dès à présent
l’instruction d’affectation ; elle s’écrit de la façon suivante :
identificateur de variable ←valeur ;
← : symbole d’affectation (ou assignation)
y ( g )
L’affectation se fait toujours en deux temps :
1. évaluation de l’expression située à droite du symbole
2. affectation du résultat à l’identificateur de variable 1‐ Evaluation
2‐ Affectation
13
Algorithmique
Opérations sur les variables
Incrémentation / Décrémentation
Incrémenter une variable c’est le fait de lui ajouter une valeur à sa valeur initiale.
Décrémenter une variable c’est le fait de soustraire une valeur de sa valeur initiale.
Cette notion est souvent utilisée dans le cas ou on a besoin de créer un compteur.
Variable ← Variable + Val ;
Par exemple :
I ← I + 1 ;
J ← j – 2 ;
14
Algorithmique
Opérations sur les variables
Initialisation
C’est le fait de donner une valeur initiale à une variable avant de l’incrémenter ou de
la décrémenter. Cette notion est souvent employée lorsqu’on utilise un compteur.
Var ← Val1 ;
Par exemple :
I ← 0 ;
I ← I + 1 ;
15
5
12/11/2010
Algorithmique
Opérations sur les variables
Opérations arithmétiques
Les opérations arithmétiques courantes sont l’addition, soustraction, multiplication et
division. Ces opérations s’écrivent de la manière suivante :
Variable ← Val1 + Val2 ;
Variable ← Val1 ‐
Variable ← Val1 Val2 ;
Variable ← Val1 * Val2 ;
Variable ← Val1 / Val2 ;
On doit toujours affecter le résultat d’une opération dans une variable
Par exemple :
A ← 5 + 2 ;
B ← A – 1 ;
C ←(B / 2) – 1 + A ;
16
Algorithmique
Le dialogue avec l’utilisateur
Pour permettre au programme de dialoguer avec l’utilisateur, c’est‐à‐dire d’afficher un
résultat à l’écran et de lire une entrée au clavier, il faut au moins deux instructions une
pour lire et l’autre pour afficher à l’écran ou pour imprimer. Dans un organigramme,
elles sont représentées ainsi :
Formalisme d’une séquence d’instructions de dialogue avec l’utilisateur
Lire Variable Imprimer Variable
Afficher ’ ’Message ’ ’ Imprimer ’’Message ’’
Afficher Variable
17
Algorithmique
Le dialogue avec l’utilisateur
Dans le pseudo‐langage, elles s’écrivent ainsi :
Lire Variable ; Lit tous les caractères qui sont saisis au clavier,
Lire Variable1, Variable2,…. ; Lecture jusqu’à ce que l’utilisateur appuie sur la touche
entrée, et stocke le résultat dans la variable.
Afficher ’’Texte’’ ;
Afficher Variable ; affiche sur l’écran le ou les textes et la
Affichage
g
Affi h ’’Texte’’ , Variable
Afficher ’’T t ’’ V i bl ; valeur des variables
valeur des variables.
Imprimer ’’Texte’’ ;
Imprimer Variable ; imprime le ou les textes et la valeur des
Impression
Imprimer ’’Texte’’ , Variable ; variables
18
6
12/11/2010
Algorithmique
Le dialogue avec l’utilisateur : exemple
Dans le pseudo‐langage, elles s’écrivent ainsi :
19
Exercices
• Quel résultat produit le programme suivant ?
Variables val, double numériques;
Début
Val ← 231 ;
Val ← 231 ;
Double ← Val * 2 ;
Ecrire Val ;
Ecrire Double ;
On verra apparaître à l’écran 231,
puis 462 (qui vaut 231 * 2)
Fin
20
Exercices
Ecrire un programme qui lit le prix HT d’un
article, le nombre d’articles et le taux de TVA,
et qui fournit le prix total TTC correspondant.
Faire en sorte que des libellés apparaissent
Faire en sorte que des libellés apparaissent
clairement.
21
7
12/11/2010
Exercices
Variables nb, pht, ttva, pttc ;
Début
Ecrire "Entrez le prix hors taxes :";
Lire pht;
Ecrire "Entrez le nombre d’articles :";
Lire nb;
Ecrire "Entrez le taux de TVA :";
Lire ttva;
pttc ← nb * pht * (1 + ttva);
Ecrire "Le prix toutes taxes est : ", pttc;
Fin
On pourrait économiser une variable et une ligne en écrivant directement. :
Ecrire "Le prix toutes taxes est : ", nb * pht * (1 + ttva);
C'est plus rapide, plus léger en mémoire, mais un peu plus difficile à relire.
22
Exercices
Ecrire un programme qui lit deux nombres, puis il permute leurs valeurs.
Variables a, b, temp ;
Début
Ecrire "Entrez le premier nombre:";
Lire a;
Lire a;
Ecrire "Entrez le deuxième nombre:";
Lire b;
temp ← a;
a ← b;
b ← temp;
Ecrire "le premier nombre est :", a;
Ecrire "le deuxième nombre est:", b;
Fin
23
Notion de constante
Une constante prend la même valeur dans tout le programme.
Programme convertisseur;
Déclaration
constante taux = 11,6435;
= 11 6435;
Variables dh, euro ;
Début
Ecrire "Entrez la valeur en euro :";
Lire euro;
dh ← euro*taux ;
Ecrire " valeur en dirham :", dh;
Fin
24
8
12/11/2010
25
Les variables
• Type de variable
– entier pour manipuler des entiers
Les variables
27
9
12/11/2010
Exemple dans a + b :
a est l’opérande gauche
+ est l’opérateur
b est l’opérande droite
a + b est appelé une expression
Les opérateurs
• Un opérateur peut être unaire ou binaire :
– Unaire s’il n’admet qu’une seule opérande, par
exemple l’opérateur non
– Binaire s’il admet deux opérandes, par exemple
l’opérateur +
• U
Un opérateur
é est associé
ié à un type de
d donnée
d é et
ne peut être utilisé qu’avec des variables, des
constantes, ou des expressions de ce type
10
12/11/2010
Les opérateurs
• On ne peut pas additionner un entier et un
caractère
• Toutefois exceptionnellement dans certains cas on
accepte d’utiliser un opérateur avec deux opérandes
de types différents, c’est par exemple le cas avec les
types arithmétiques (2 + 3.5)
– Non
– Et
32
– Ou exclusif
33
11
12/11/2010
non non a = a
• Loi de Morgan
non (a ou b) = non a et non b
non (a et b) = non a ou non b
35
par exemple :
11 div 2 vaut 5
11 mod 2 vaut 1
36
12
12/11/2010
37
Instruction conditionnelle
La structure alternative
Il est souvent nécessaire lorsque l’on écrit un programme de distinguer entre plusieurs
cas conditionnant l’exécution de telles ou telles instructions. Pour ce faire, on utilise une
structure alternative (Conditionnelle) : Si on est dans tel cas on fait cela sinon on fait
ceci. Le formalisme de cette structure dans un organigramme sera comme suit :
Formalisme d’u ne Structure alternative
39
13
12/11/2010
Algorithmique
La structure alternative
La syntaxe de cette structure en pseudo‐langage est la suivante :
SI Condition ALORS Actions1 [ SINON Actions2 ] FINSI
NB : Les crochets signifient que la partie sinon est facultative
Les actions
Les actions qui suivent le Sinon ou le Alors
peuvent être :
Une simple instruction
Une suite d’instructions
Une autre structure alternative
Une autre structure répétitive
Les conditions
Pour exprimer les conditions on utilise les opérateurs conditionnels suivants :
= égal ; < Inférieur ; > Supérieur ; <= Inférieur ou égal ; >= Supérieur ou égal ;
<> différents ;
40
Algorithmique
La structure alternative
Les conditions (exemple) :
(A<1) (A<=B) ……..
On peut combiner des conditions à l'aide des opérateurs logiques suivant : Ou ; Et ;XOR;
Par exemple :
(A<>B) ET (A>=5)
((A<0) ET ((B=0) OU (C<>A)) XOR (D=1))
Lorsque l’on écrit de telles conditions, il est recommandé de mettre toutes les parenthèses
afin d’éviter les erreurs.
41
Algorithmique
La structure alternative
Par exemple : Programme permettant de calculer la valeur absolue d’un nombre :
Organigramme :
Ce qui donnera en pseudo‐langage :
Si (A<0) Alors ABS ← A* (‐1) Sinon ABS ← A FINSI
42
14
12/11/2010
Exercice 1
Écrire un algorithme permettent de lire une note et
d'afficher la mention selon la valeur saisie,
comme suit :
• note < 10 : mention médiocre
• 10<= note <12 : mention passable
• 12<= note <14 : mention assez bien
• 14<= note <16 : mention bien
• 16<= note <18 : mention très bien
• 18<= note <=20 : mention excellent
43
Exercice 2
Quel est, après exécution de la séquence
d’instructions suivante, la valeur de A
• A Å A + B
• B Å
BÅA A – B
• A ÅA – B
Permutation de A et B
44
Exercice 3
Ecrire l’algorithme de résolution d’une équation
du second ordre dans l’ensemble C:
aX2 + bX
b + c = 00
a, b et c sont lus à partir du clavier.
45
15
12/11/2010
La structure de choix
• Une structure de choix permet d'effectuer un choix
parmi plusieurs.
• Une structure de choix est privilégié à une imbrication
de tests «SI » lorsque les valeurs que peut prendre
de tests «SI » lorsque les valeurs que peut prendre
une variable sont discrètes (constantes).
• Elle permet une présentation plus claire d'un
ensemble d'alternatives imbriquées.
46
La structure de choix
• Syntaxe
Selon (variable ou expression) Faire
< valeur 1> : action 1
…
< valeur N> : action N
Sinon : action par défaut
Sinon : action par défaut
Fin Selon
• La variable (ou expression) est comparée aux différentes
constantes(valeur 1 à valeur N).
• Les actions exécutées dépendent de ces valeurs (les valeurs
peuvent être énumérée en les séparant par des virgules).
• L'action par défaut est exécutée lorsque la variable n'est égale
à aucune des constantes énumérées.
47
La structure de choix : exemple
Algorithme testchoix
Variable couleur : Chaîne de caractères
Début
Écrire (" saisir couleur de feu ")
Lire (couleur)
( )
Suivant (couleur) Faire
"Vert" : Écrire ("je passe")
"Orange" : Écrire ("je ralentis")
"Rouge" : Écrire ("je m'arrête")
Sinon : Écrire ("ceci n'est pas une couleur de feu")
Fin suivant
Fin
48
16
12/11/2010
L'instruction cas
• Autre syntaxe :
cas où v vaut
v1 : action1
v2 : action2
...
vn : actionn
autre : action autre
fincas
50
Les itérations
• Il arrive souvent dans un algorithme qu'une même action
soit répétée plusieurs fois, avec éventuellement quelques
variantes.
Il est alors fastidieux d'écrire un algorithme qui contient
de nombreuses fois la même instruction. De plus, ce
nombre peut dépendre du déroulement de l'algorithme.
Il est alors impossible de savoir à l'avance combien de
fois la même instruction doit être décrite
décrite.
Pour gérer ces cas, on fait appel à des instructions en
boucle qui ont pour effet de répéter plusieurs fois une
même instruction.
Deux formes existent : la première, si le nombre de
répétitions est connu avant l'exécution de l'instruction de
répétition, la seconde s'il n'est pas connu. L'exécution de
la liste des instructions se nomme itération.
51
17
12/11/2010
Répétitions inconditionnelles
• Il est fréquent que le nombre de répétitions soit
connu à l'avance, et que l'on ait besoin d'utiliser
le numéro de l'itération afin d'effectuer des
calculs ou des tests. Le mécanisme permettant
cela est la boucle Pour.
Répétitions inconditionnelles
• La variable dont on donne le nom va
prendre successivement toutes les valeurs
entières entre valeur initiale et valeur finale.
Pour chaque valeur prise par la variable, la
liste des instructions est exécutée.
Répétitions inconditionnelles
• Autre forme de la boucle Pour :
18
12/11/2010
si condition
alors liste d'instructions
si condition
alors liste d'instructions
si condition
alors liste d'instructions
...
56
• Exemple
Un utilisateur peut construire des rectangles de taille
quelconque, à condition que les largeurs qu'il saisit
soient supérieures à 1 pixel.
57
19
12/11/2010
début
écrire ("indiquez la largeur du rectangle :")
largeur Å lire()
tantque largeur < 1 faire
écrire ("erreur : indiquez une valeur strictement positive")
écrire ("indiquez la largeur du rectangle :")
largeur Å lire()
fintantque
fin
Lexique
- largeur : entier, largeur courante saisie 58
59
début
Répéter
écrire (("indiquez
indiquez la largeur du rectangle ::"))
largeur Å lire()
si largeur < 1 alors
écrire ("erreur : indiquez une valeur strictement positive")
fin_si
jusqu'à largeur >= 1
fin
Lexique
- largeur : entier, largeur courante saisie
60
20
12/11/2010
- la
l séquence
é d'i
d'instructions
i est exécuter
é sii la
l condition
di i est vraii
pour le Tant que et si la condition est fausse pour le Répéter
jusqu'à.
61
Exercices
• Écrire un algorithme qui détermine le factoriel
d’un entier N en utilisant les boucles du type :
Pour, Tant que et Répéter.
• Écrire un algorithme qui calcule la somme des
Écrire un algorithme qui calcule la somme des
nombres entrés par l'utilisateur tant que cette
somme est inférieure à mille.
62
Exercices
• Écrire un algorithme qui affiche les tables de
multiplication de 1 à N. Le nombre N est saisi au
clavier. Utilisez deux boucles POUR imbriquées: la
première parcourra les numéros des tables, et la
seconde effectuera les calculs pour une table
donnée. L’affichage sera de la forme:
Table de 1: 1 2 3 4 5 6 7 8 9 10
Table de 2: 2 4 6 8 10 12 14 16 18 20
……..
63
21
12/11/2010
Les tableaux
• Lorsque les données sont nombreuses et de même
type, afin d'éviter de multiplier le nombre des
variables, on les regroupe dans un tableau
• Syntaxe :
tableau type_des_éléments[borne_inf ... borne_sup]
Les tableaux
• Les tableaux à une dimension ou vecteurs
0 1 2 3 4 5 6 7 8 9
45 54 1 -56 22 134 49 12 90 -26
• Ce tableau est de longueur 10, car il contient 10
emplacements.
Les tableaux
• Les instructions de lecture, écriture et affectation
s'appliquent aux tableaux comme aux variables.
x ← Tab[0]
Tab[6] ← 43
22
12/11/2010
Les tableaux
• Parcours complet d'un tableau
Les tableaux
Dans l'exemple suivant, le programme initialise
un à un tous les éléments d'un tableau de n
éléments :
InitTableau
début
pour i de 0 à n-1 faire
[]←0
tab[i]
fpour
fin
Lexique :
- i : entier, indice d'itération
- n : entier, taille du tableau
- tab : tableau entier[0..n-1]
68
Les tableaux
• Les tableaux à deux dimensions ou matrices
Tab[1, 4] = 38
69
23
12/11/2010
Les tableaux
• La variable T[L, C] s'appelle l'élément
d'indice L et C du tableau T.
T[2 0]
T[2, T[2 1]
T[2, T[2 2]
T[2, T[2 3]
T[2, T[2 4]
T[2,
2. Décomposer
"...diviser chacune des difficultés que j’examinerai
en autant de parties qu’il se pourrait et qu’il serait
requis pour les mieux résoudre." Descartes
3. Combiner
Résoudre le problème par combinaison
d’abstractions
71
72
24
12/11/2010
n!=1x2x3x…xn
74
n ! = n x (n-1) !
25
12/11/2010
- en revanche,
h elle
ll est très
è dispendieuse
di di de
d ressources
machine. Car il faut créer autant de variable temporaires
que de " tours " de fonction en attente.
78
26
12/11/2010
• Le tri à bulle
C’est un des algorithmes
g le pplus connu. Bien qqu’il
soit rarement efficace en terme de temps de calcul,
il est néanmoins correcte.
79
81
27
12/11/2010
82
Ch
Chaque élé
élément t sera à moins
i ded P positions
iti d sa
de
position exacte.
84
28
12/11/2010
87
29
12/11/2010
• La recherche dichotomique
La recherche dichotomique recherche un élément
dans un tableau trié et retourne l’indice d’une
occurrence ded cet élément.
élé
On compare l’élément cherché à celui qui se trouve
au milieu du tableau. Si l’élément cherché est plus
petit, on continu la recherche dans la première
moitié du tableau, sinon dans la seconde moitié.
On recommence ce processus sur la moitié. On
s’arrête lorsque l’on a trouvé l’élément, ou lorsque
l’intervalle de recherche est nul.
88
30