Académique Documents
Professionnel Documents
Culture Documents
Informatique
Cédric BÉRÉ 1
1
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Algorithmique et programmation
Cédric BERE
Enseignant d’Informatique à
l’Université Ouaga 1 Pr Joseph
Ki-ZERBO
@cedric.bere
"Don't just buy a new video game --- make one! ” Barack Obama
2
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Algorithmique et programmation
Objectifs:
Comprendre les bases de l’algorithmique
Ecrire un algorithme
Programmer en langage C
Plan
INTRODUCTION
PROGRAMMATION EN LANGAGE C
Chapitre 1
INTRODUCTION
Informatique ?
Information + automatique
néologisme proposé par en 1962 par Philippe
Dreyfus pour caractériser le traitement automatique
de l’information
Informatique ?
Jeux vidéo
Prévision météorologique
Système d’exploitation
Système d’exploitation
Le Processeur
Le processeur effectue des opérations (par exemple des opérations
arithmétiques comme des additions ou des multiplications).
Le Processeur
Sur les architectures récentes, la puce contient plusieurs cores,
chaque core étant l’équivalent d’un processeur et les cores
communiquant entre eux très rapidement par des bus de
données.
Exemple : core 2, quadcore, …
La mémoire centrale
La mémoire centrale
Le processeur pourra accéder plus tard au contenu de cette variable
pour effectuer d’autres calculs ou produire un résultat en sortie.
La quantité de mémoire RAM est mesurée en octets (ou en
mégaoctets ou gigaoctets).
Les périphériques
Le programme reçoit des données des périphériques en entrée, et
communique ses résultats en sortie à des périphériques. Une
liste (non exhaustive) de périphériques usuels est :
Les périphériques
Le programme reçoit des données des périphériques en entrée, et
communique ses résultats en sortie à des périphériques. Une
liste (non exhaustive) de périphériques usuels est :
Par exemple, pour utiliser une calculatrice, on doit lui donner des
nombres et lui dire quelles opérations effectuer.
Algorithme et programme
Le travail d’un programmeur consiste à créer des programmes
informatiques pour résoudre un problème.
Exemple d’algorithme
– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous
– Merci. 27
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Généralités | Notion d’algorithme
Algorithme du tracé de la
spirale
1. Exercice :
Algorithme du tracé de la
spirale rectangulaire
1. avance de 2 pas,
2. tourne à gauche de 90 ,
3. avance de 3 pas,
4. tourne à gauche de 90 ,
5. avance de 4 pas,
6. tourne à gauche de 90 ,
7. avance de 5 pas,
29
8. tourne à gauche de 90 ,Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Caractéristique d’algorithme
langage de programmation
L’algorithmique permet ainsi de passer d’un problème à résoudre à un
algorithme qui décrit la démarche de résolution du problème. La
programmation a alors pour rôle de traduire cet algorithme dans un
langage « compréhensible » par l’ordinateur afin qu’il puisse exécuter
l’algorithme automatiquement.
La programmation d’un ordinateur consiste à lui « expliquer » en détail ce
qu’il doit faire, en sachant qu’il ne « comprend » pas le langage
humain, mais qu’il peut seulement effectuer un traitement automatique
sur des séquences de 0 et de 1
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 31
Bases d’algorithmique | langage de programmation
langage de programmation
compilation/interprétation
Un compilateur est un programme informatique qui traduit un langage, le
langage source, en un autre, appelé le langage cible.
Langage de programmation
On appellera langage de programmation un ensemble de mots-clés (choisis
arbitrairement) associé à un ensemble de règles très précises indiquant
comment on peut assembler ces mots pour former des « phrases » que
l’interpréteur ou le compilateur puisse traduire en langage machine
(binaire).
Langage de programmation
Un langage de programmation est un langage informatique, permettant à un
humain d’écrire un code source qui sera analysé par un ordinateur.
Le code source subit ensuite une transformation ou une évaluation dans une
forme exploitable par la machine, ce qui permet d’obtenir un programme.
Les langages permettent souvent de faire abstraction des mécanismes bas
niveaux de la machine, de sorte que le code source représentant une solution
puisse être rédigé et compris par un humain.
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 38
Bases d’algorithmique | Langage de programmation
Langage de programmation
Chapitre 2
BASES DE L’ALGORITHME
Notion d’algorithme
Un algorithme est une suite finie et non ambiguë
d’opérations ou d'instructions permettant de résoudre un
problème ou d'obtenir un résultat.
Notion d’algorithme
Un algorithme est une suite ordonnée d’instructions qui indique la
Algorithme d’Euclide de
calcul du PGCD
L’algorithme le plus célèbre
est l'algorithme d'Euclide (vers
300 avant J.-C.) permettant
de calculer le PGCD de deux
nombres dont on ne connait
pas la factorisation
L’algorithmique est la science
des algorithmes.
Algorithmique
L’algorithmique s’intéresse à l’art de construire des
algorithmes ainsi qu’à caractériser leur validité, leur
robustesse, leur réutilisabilité, leur complexité ou leur
efficacité.
Exemple d’algorithme
– Oui bien sûr : vous allez tout droit jusqu’au prochain carrefour, vous
– Merci. 45
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Algorithmique
Algorithmique
La robustesse d’un algorithme est son aptitude à se protéger
de conditions anormales d’utilisation.
Dans l’exemple précédent, la question de la robustesse de
l’algorithme se pose par exemple si le chemin proposé a été
pensé pour un piéton, alors que le « touriste égaré » est en
voiture et que la « troisième à droite » est en sens interdit.
Algorithmique
Algorithmique
PSEUDO CODE
une recette de cuisine, une notice de montage peuvent être considérées comme des
algorithmes.
Exemple :
PSEUDO CODE
Les instructions doivent être formulées dans un langage
compréhensible par l’exécutant.
PSEUDO CODE
L’avantage du pseudo-code est qu’il permet de rester proche d’un
langage informatique sans qu’il soit nécessaire de connaître toutes
les règles et spécificités d’un langage particulier.
trouve ensuite un délimiteur de début puis les différentes actions composant l'algorithme
VARIABLE
Un algorithme (ou un programme informatique), agit sur des
données.
VARIABLE
Le contenant étant le récipient ou la boîte qui contient le
contenu (la valeur).
Le contenu correspond à la valeur de la variable.
Une variable est constitué d'un nom et d'un contenu, ce contenu étant
VARIABLE
- Dans un programme informatique, on va avoir en
permanence besoin de stocker des valeurs de types
différents : utilisation de variables.
VARIABLE
Numérique Alphanumériques Booléen
Types
Entier Réel Caractères Chaîne de
caractères
-345 -123,56 ‘A’ ‘@‘ toto’ ‘Aly’ VRAI
variables
x : nombre
y : texte
a, b, c : entiers
x←5
Exemple d’affectation
Toto←24
Tutu←Toto Riri← "Loulou"
Tutu←Toto + 4 Fifi←"Riri"
Tutu←Tutu + 1 Riri←Fifi
Nous allons maintenant préciser les variables utilisées par l'algorithme et leurs
Début
... actions
Fin 63
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Patron d’algorithme
Exemple d’affectation
Algorithme testAlgorithme
variables
x : entier
Erreur!!!
Début
x ←"bonjour"
Fin
Exemple d’algorithme
Algorithme testAlgorithme
variables
x, y, z : entiers
Début Donnez la valeur de chacune des
x←5 variables
y←x
z ← x+y+1
Fin
Exemple d’algorithme
Quelles seront les valeurs de variables A et B après exécution des instructions suivantes
Algorithme MesVariablesAetB
variables
A, B : entiers
Début
A←1
B←A+3
A←3
Fin Wend-Panga Cédric BERE - Cours Algorithmique et programmation 66
Bases d’algorithmique | Patron d’algorithme
Exemple d’algorithme
Quelles seront les valeurs de variables A, B et C après exécution des instructions suivantes
Algorithme testValeurs
variables
A, B, C : entiers
Début
A←5
B←3
C ←A+ B
A←2
C←B-A 67
Fin
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Bases d’algorithmique | Patron d’algorithme
Exemple d’algorithme
Quelles seront les valeurs de variables A, B après exécution des instructions suivantes
variables
A, B : entiers
Début
A←5
B←A+4
A←A+1
B←A-4
Fin Wend-Panga Cédric BERE - Cours Algorithmique et programmation 68
Bases d’algorithmique | Patron d’algorithme
Exemple d’algorithme
Quelles seront les valeurs de variables A, B et C après exécution des instructions suivantes
variables
A, B, C : entiers
Début
A←3
B ← 10
C ←A+B
B←A+B
A←C Wend-Panga Cédric BERE - Cours Algorithmique et programmation 69
Bases d’algorithmique | Patron d’algorithme
Exemple d’algorithme
Quelles seront les valeurs de variables A, B après exécution des instructions suivantes
variables
A, B : entiers
Début
A←5
B←2
A←B
B←A
Fin
permettent-elles d’échanger les deux valeurs de B et A? Si l’on inverse les deux dernières instruction
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 70
Bases d’algorithmique | Patron d’algorithme
Exemple d’algorithme
algorithme permettant d’échanger les valeurs de deux variables A et B et ce quelque soit leur conten
variables
A, B, tmp: entiers
Début
A←5
B←2
tmp ← A
A←B
B ← tmp
Fin
On est obligé de passer par une variable dite temporaire ou variable tampon (la variable tmp)
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 71
Bases d’algorithmique | Patron d’algorithme
Exemple d’affectation
Algorithme TheoremePythagore
Variables
a, b, c : nombres entiers
Début
afficher("Entrer la longueur du premier côté de l'angle droit ») ;
lire(a);
Exemple d’affectation
Ecrire l’algorithme qui permet de calculer le carré d’un nombre
ALGORITHME CarreDeX
VARIABLES
x : entier
y : entier
DEBUT
AFFICHER ("Entrer un nombre entier")
LIRE (x)
y ← x*x
AFFICHER ("Le carré est : ", y)
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 73
Bases d’algorithmique | Patron d’algorithme
Exemple d’affectation
Ecrire l’algorithme qui permet de calculer le carré d’un nombre
ALGORITHME CarreDeX
VARIABLES
x : entier
y : entier
DEBUT
AFFICHER ("Entrer un nombre entier")
LIRE (x)
y ← x*x
AFFICHER ("Le carré est : ", y)
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 74
Bases d’algorithmique | Patron d’algorithme
Exemple d’affectation
Ecrire un algorithme qui calcule puis affiche l’âge qu’aura une personne
en 2100 :
CORRIGE
Ecrire un algorithme qui calcule puis affiche l’âge qu’aura une personne
en 2100 :
ALGORITHME CalculAge2100
VARIABLES
annee, age, age_en_2100 : entiers
DEBUT
afficher("Entrer l'année actuelle")
lire(annee)
afficher ("Entrer votre âge")
lire(age)
age_en_2100 ← age + 2100 - annee
afficher ("En 2100, vous aurez ", age_en_2100, " ans.")
FIN
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 76
Bases d’algorithmique | Organigramme
Organigramme
DEBUT
afficher("Entrer l'année actuelle")
lire(annee)
afficher ("Entrer votre âge")
lire(age)
age_en_2100 ← age + 2100 - année
afficher ("En 2100, vous aurez ", age_en_2100, "
ans.")
FIN
Organigramme
Traitement
Début et Fin
Lecture et écriture
Test
Exemple d’organigramme
Début
S ←A+ B
Fin
Chapitre 3
Structures de contrôle
et
Structures de données statiques
Flux d’exécution
• la séquence
• la sélection,
81
• la répétition Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de contrôles | structure séquentielle
La Séquence
DEBUT
afficher("Entrer l'année actuelle")
lire(annee)
afficher ("Entrer votre âge")
lire(age)
age_en_2100 ← age + 2100 - année
afficher ("En 2100, vous aurez ", age_en_2100, "
ans.")
FIN 82
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de contrôles | structure sélective
La Sélection
Si Condition Alors
instructions;
Finsi
Si Condition Alors
Exemple avec Si
instructions;
ALGORITHME ValeurAbsolue
VARIABLES Finsi
x : entier
DEBUT
AFFICHER ("Entrer un nombre" :)
LIRE (x)
Si (x<0) Alors
x ← -x;
Finsi
AFFICHER(x)
FIN
Exemple avec Si
Si Condition Alors
traitement 1;
sinon
traitement 2;
Finsi
Imbrication de Si
Indication :
SYNTAXE : SYNTAXE :
Structure répétitive
Boucle Pour
instructions
Exemple :
Pour i allant de 1 à 20, i←i+2, Faire
instructions
FinPour
FinPour
Le pas désigne l’incrémentation ou la
décrémentation
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 98
Structures de contrôles | structure répétitive
Structure répétitive
Boucle Pour
Exercice : Ecrire un algorithme qui affiche
la table de multiplication par 5 avec une
boucle Pour
Structure répétitive
CORRIGÉ
Exercice : Ecrire un algorithme qui affiche la table de multiplication par 5 avec une boucle
Pour
ALGORITHME MultiplicationPar5
VARIABLES
res, X : entier
compteur : entier
DEBUT
X←5;
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 10
0
Structures de contrôles | structure répétitive
Structure répétitive
CORRIGÉ
Exercice : Ecrire un algorithme qui affiche la table de multiplication par 5 avec une boucle
Pour
Pour compteur allant de 0 à 10 faire
res←X*compteur
afficher (res)
FinPour
FIN
Structure répétitive
Boucle Pour
Exercice : Ecrire un algorithme qui affiche la table de multiplication d’un nombre entré au
Structure répétitive
instructions
FinTantQue
Il faut s’assurer ici que la condition sera modifiée à un moment donné par le bloc d’instruction
Structure répétitive
Boucle : Repeter
Type caractère
Il s'agit du domaine constitué des caractères alphabétiques et numériques .
Les opérations élémentaires réalisables sont les comparaisons : <, >, =, ...
Exemple :
Variable C : CARACTERE
C← ‘A'
clavier.
Type caractère
ALGORITHME CompareCaractere
VARIABLES
DEBUT
Afficher("Entrer les caractère")
Lire(caract1, caract2)
Si caract1 > caract2 ALORS
Afficher(« Le code ASCII de :", caract1
, "est plus grand que le code ASCII de ", caract2)
caractère d;
Structures de données | Caractères
PRED(c) : caractère précédent dans la table ASCII, correspond au code 64 de la table ASCII donc au
caractère b;
Exemple :
Opérations :
Longueur de la chaîne :
Opérations :
Longueur de la chaîne :
msg
msg
chaines de caractère
Algorithme BonjourLeMonde
Variables :
Début
msg1 ← "bonjour"
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 112
Structures de données | Chaîne de caractères
Variables :
Début
msg1 ← "bonjour"
FIN 113
Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de données | Chaîne de caractères
Algorithme SupprimeEspaceBlanc
Variables :
Début
nouvMsg ← ""
Algorithme SupprimeEspaceBlanc
Variables :
Début
nouvMsg ← ""
Finsi
FinPour
Afficher(nouvMsg) // « bonjourtoutlemonde,ilfaitchaud!"
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 115
FIN
Structures de données | Type énumérés
Type énumérés
Un type énuméré est un type permettant de représenter des objets pouvant prendre leur valeur
Exemple :
TYPE COULEUR=(rouge, vert, bleu)
Type intervalles
Type intervalles
Un type intervalle est un type dont les objets prennent leur valeur dans une portion de
Exemple : NBRE=0..99
OUVRABLE=lundi..vendredi
Type structuré
Une structure est un objet contenant un ensemble d'objets de types
différents, appelés champs. Un type doit donc décrire l'ensemble des champs contenus dans ses
objets.
Syntaxe :
STRUCTURE <NOM>
{ champ1 : type
champ2 : type
....
Type structuré
Exemple :
STRUCTURE ETUDIANT
{ NOM : CHAINE
NOTE : REEL
Classement :ENTIER
}FIN
Type structurés
La principale opération définie sur ce type STRUCTURE est l'accès aux champs qui le
compose.
VAR ETUD : ETUDIANT
DEBUT
ETUD.NOM ← "DIALLO"
ETUD.NOTE ← 19.5
ETUD.Classement ← 1
FIN
Nom: moyenne
Role: Affichage de la moyenne des notes d’une promo saisies par le prof
Entrée: -
Sortie: -
nbEleves, i : entier
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 121
Structures de données | Tableaux
Pourquoi les tableaux ?
Début
somme ← 0.0
écrire(Nombre d’élèves:)
lire(nbEleves)
lire(uneNote)
finpour
fin
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 123
Structures de données | Tableaux
Pourquoi les tableaux ?
des étudiants (pour par exemple faire d’autres calculs tels que
l’algorithme suivant
procédure moyenne ()
début
lire(note2) ;
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 125
Structures de données | Tableaux
Pourquoi les tableaux ?
précédemment) .
10 et un tableau d’entiers de
ple :
c : Tableau[’a’..’z’] d’Entier
suivante :
nom de la variable[indice]
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 133
Structures de données | Tableaux
Tableau à une dimension
Rôle: Affichage de la moyenne des notes d’une promo saisies par le prof
Algorithme moyenne
Entrée: -
Sortie: -
Déclaration:
répéter
lire(nbEleves)
lire(lesNotes[i])
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 136
Structures de données | Tableaux
Tableau à une dimension
finpour
fin
différent du nombre
d’accès constant)
façon suivante :
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 142
Structures de données | Tableaux
Tableau à deux dimensions
ème
On accède (en lecture ou en écriture) à la i ,j ème
Tableau[1..3][1..2] de
Wend-Panga Cédric BERE Réel ) et programmation
- Cours Algorithmique 143
Structures de données | Tableaux
Tableau à deux dimensions
du tableau
tab[1][1]←2.0;tab[2][1]←-1.2;tab[3][1]←3.4
matrices suivantes :
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 146
Structures de données | Tableaux
Tableau à n dimensions
Tableau à n dimensions
Par exemple :
leur utilisation :
// Soit
min : Entier
// Soit
i : Entier
// Soit
min ← t[1];
//
pour i de 2 à N
Exercice à faire :
valeur v
v : Entier
i, indice : Entier
trouve : Booleen;
trouve ← FAUX
indice ← -1
i←1
si t[i] = v alors
trouve ← VRAI
indice ← i
sinon
i ← i+1
finsi
153
fin tant que Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Structures de données | Algorithme sur les tableaux
Recherche du plus petit élément d’un tableau
sinon
i ← i+1
finsi
• Paramètres en sortie : l'entier s.
s ← 0;
pour i de 1 à N
s ← s + t[i]
fin pour
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 156
Structures de données | Algorithme sur les tableaux
Recherche du nombre d’occurrences
Exercice à faire :
nb ← 0
pour i de 1 à N
si t[i] = v alors
nb ← nb+1
finsi
fin pour
Chapitre 4
Base de la Programmation en C
Compilation/interprétation
Compilation/interprétation
Un compilateur
Un programme qui traduit le texte dans un langage qui
permettra son exécution, tel le langage machine, le bytecode ou le
langage assembleur.
Un interpréteur
Un programme qui exécute les instructions demandées. Il joue
le même rôle qu'une machine qui reconnaîtrait ce langage.
Compilation/interprétation
Compilation/interprétation
Compilation/interprétation
Compilation/interprétation
Compilation/interprétation
Compilation/interprétation
Compilation
La phase de compilation consiste généralement en la génération du
code assembleur.
l'optimisation de code ;
Assemblage
Cette étape consiste en la génération d'un fichier objet en
langage machine pour chaque fichier de code assembleur.
Les fichiers objet sont généralement d’extension .o sur Unix,
et .obj avec les outils de développement pour MS-DOS,
Microsoft Windows, VMS, CP/M…
Les différents fichiers objet sont alors réunis, ainsi que les
bibliothèques statiques, pour ne produire qu'un fichier
exécutable.
Premier programme en C
main()
{
printf("hello, world\n");
}
Premier programme en C
#include<stdio.h>
int main()
{
printf("hello, world\n");
return 0;
}
Premier programme en C
/*Ceci est
mon
premier
programme */
#include <stdio.h> // pour pouvoir lire et écrire
int main(void) // programme principal
{
printf("Bonjour !\n"); /* écriture à l’écran */
return 0;
}
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 182
Programmation en C | Aperçu de la syntaxe
Premier programme en C
• main est le nom de la fonction principale, aussi
appelée point d'entrée du programme.
Premier programme en C
• Les caractères " délimitent une chaîne de
caractères ; hello, world\n dans ce cas.
Directives du préprocesseur
Directives du préprocesseur
/*Ceci est
mon
premier
programme */
{
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 187
Programmation en C | Aperçu de la syntaxe
(nombre réel) */
valeur de x */
189
// affichage de x : Wend-Panga Cédric BERE - Cours Algorithmique et programmation
Programmation en C | Aperçu de la syntaxe
scanf("%f", &x);Wend-Panga
/* lecture au- Cours
Cédric BERE clavier de la
Algorithmique valeur de x */
et programmation 191
Programmation en C | Aperçu de la syntaxe
de x */
return 0;
sui- vante :
C ≃ 0.55556 × (F − 32)
sui- vante :
C ≃ 0.55556 × (F − 32)
int main(void) {
scanf("%f", &fahrenheit);
return 0; }
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 195
Programmation en C | Aperçu de la syntaxe
int main(void) {
scanf("%f", &celsius);
return 0; }
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 196
Programmation en C | Aperçu de la syntaxe
Calcul de remise
#include <stdio.h>
int main(void) {
}
Wend-Panga Cédric BERE - Cours Algorithmique et programmation 198
Programmation en C | Eléments du langage
Bibliothèque standard du C
<assert.h> : pour un diagnostic de conception lors de
l'exécution (assert)
<signal.h> :standard
Bibliothèque gestiondu
des
C signaux (signal et raise)
<time.h> : manipulation du
Wend-Panga Cédric BERE temps
- Cours Algorithmique(time, ctime)
et programmation 203
Programmation en C | Les bibliothèques externes
Autres bibliothèques
De nombreuses bibliothèques ont été créées pour être
utilisées avec le C.
Autres bibliothèques
De nombreuses bibliothèques ont été créées pour être
utilisées avec le C.
Exercice
Sachant que le premier avril 2004 était un jeudi, écrire
un programme qui détermine le jour de la semaine
correspondant au 4 mai de la même année. On pourra
représenter les jours de la semaine par des numéros
allant de 0 à 6.
Opération modulo
mm:
fait 0.003546.