Vous êtes sur la page 1sur 48

ALGORITHME ET STRUCTURES DE DONNEES

LICENCE MATH-INFO
2022

Par Jeannet NOUO VOUDZA


Ingénieur Informaticien
Chargé de cours
PLAN DU COURS

Chapitre 1 : Les Généralités et Notions de Base


Chapitre 2 : Les Enregistrements et les Tableaux
Chapitre 3 : Les Fichiers
Chapitre 4 : Les Pointeurs
Chapitre 5 : Les Listes, Files et Piles
Chapitre 6 : Les Arbres
Chapitre 7 : Les Graphes
Chapitre 8: La Complexité Algorithmique

NVJ - LICENCE IG - 2021 2


DEROULE DU COURS
Début : 16 Juin 2022
Fin : Aout 2022
Chap. 1 : Les Généralités et Notions de Base (h)
Chap. 2 : Les Enregistrements et les Tableaux (h)
Chap. 3 : Les Fichiers (h)
Chap. 4 : Les Pointeurs (h)
Chap. 5 : Les Listes, Files et Piles (h)
Chap. 6 : Les Arbres (h)
Chap. 7 : Les Graphes (h)
Travaux Dirigés :
Travaux Pratiques :
Evaluation :
NVJ - LICENCE IG - 2021 3
PLAN DU COURS

Chap. 1 : Les Généralités et Notions de Base

I - Ordinateur, Programme et Langage


II - Variables et instruction d'affectation
III - Les structures de contrôle
IV- Les structures de répétition
V-Les Fonctions et Procédures

NVJ - LICENCE IG - 2021 4


I
Ordinateur, Programme et Langage

5
NVJ - LICENCE IG - 2021 5
I : Ordinateur, Programme et Langage

L’ordinateur

Il traite l’informations grâce à un programme qu’il mémorise. Il communique


et archive des informations:

 Mémoire centrale: Programme et infos temporaires


 Unité centrale: chargée de prélever une à une les instructions du
programme, il y a deux types d’instructions:
• Opérations internes (addition, soustraction, …)
• Opérations de communication (affichage, archivage, …)
 Périphériques: d’entrée, de sortie, d’entrée/sortie

6
NVJ - LICENCE IG - 2021 6
I : Ordinateur, Programme et Langage
L’ordinateur

1. Prélèvement d’une instruction

2. Exécution de l’instruction avec possibilité d’échange avec la MC

3. Exécution d’une instruction d’échange avec un périphérique


7
NVJ - LICENCE IG - 2021 7
I : Ordinateur, Programme et Langage
L’ordinateur

ORGANISATION DE LA MÉMOIRE CENTRALE

 C’est une ‘’grille’’ où chaque case peut prendre la valeur 0 ou 1 (bit);

 On ne manipule pas des cases mais des ensembles de case qu’on


appelle mots;

 Généralement un mot correspond à un octet (8 bits);

 Chaque mot a une adresse;

8
NVJ - LICENCE IG - 2021 8
I : Ordinateur, Programme et Langage
L’ordinateur
UNITE CENTRALE

 Sait exécuter des opérations très simples:

• Addition, soustraction, comparaison, …

 Chaque instruction du programme doit préciser

• La nature de l’opération (son code binaire)

• La ou les adresses sur lesquelles porte l’opération

 Les instructions sont exécutées l’une à la suite de l’autre

• Sauf si on rencontre une opération de branchement


9
NVJ - LICENCE IG - 2021 9
I : Ordinateur, Programme et Langage
L’ordinateur

NOTION DE SYSTÈME D’EXPLOITATION

 Logiciel de base d’un ordinateur (Windows, Unix, OS/400, Android,


IOS, Mac OS, etc…)

 Fait le lien entre les utilisateurs et les logiciels applicatifs

 Gère les différents accès aux ressources des logiciels

10
NVJ - LICENCE IG - 2021 10
I : Ordinateur, Programme et Langage
Programme

Lire les Ecrire les


Effectuer les
données en données en
calculs
entrée sortie

 L’ordinateur ne comprend que le binaire, est ce pour autant qu’on


doive écrire des programmes en binaire ?

 Il existe des langages de programmation dits « évolués » (proches


du langage courant, généralement de l’anglais)

 Pour chaque langage, il existe un programme « qui le traduit » en


binaire
11
NVJ - LICENCE IG - 2021 11
I : Ordinateur, Programme et Langage
Programme

Il existe essentiellement deux modes de traduction :

 Compilation: la traduction se fait une fois pour toute

 Interprétation: a chaque fois qu’on veut exécuter le programme,


l’interprète traduit une instruction à la fois. Une fois que celle-ci est
exécutée, il passe à l’instruction suivante

12
NVJ - LICENCE IG - 2021 12
I : Ordinateur, Programme et Langage
Langage

 A priori, écriture de programmes dans un langage de programmation (C,


Java, Pascal, Visual Basic, Fortran, Python, Perl, …)

 Or, il y a plusieurs langages, est ce que cela veut dire qu’il existe
plusieurs sortes de programmation?

 En réalité, la plupart des langages utilisent les mêmes concepts


dans le cours, on utilisera une notation particulière: Notation
algorithmique

13
NVJ - LICENCE IG - 2021 13
I : Ordinateur, Programme et Langage
Programmation

Elle s’effectue en 2 étapes:

 Analyse du problème et recherche du moyen d’aboutir au résultat


à partir des données dont on dispose, écriture d’un algorithme,

 Traduction de l’algorithme dans un langage de programmation.

14
NVJ - LICENCE IG - 2021 14
I : Ordinateur, Programme et Langage
Algorithme

 Une description des différentes étapes permettant de résoudre un


problème quelconque
 Ex: Résolution d’une équation du 2nd degré
1. Connaître les valeurs de a, b et c
2. Calculer le discriminant D=b2 –4ac
3. Si D < 0 alors pas de solution
Sinon Si D = 0 alors solution double = b/2a
Sinon (donc D > 0) alors deux solutions

15
NVJ - LICENCE IG - 2021 15
Conclusion
Étapes de conception d'un programme informatique

1 – Identifier le problème : quelle(s) donnée(s), quel(s) résultat(s) ?


2 – Organiser les actions : écrire l'algorithme (pseudo-code, organigramme)
- Réfléchir aux informations à manipuler
- Analyser le problème et le décomposer éventuellement en sous-
problèmes
- Rendre l'algorithme compréhensible et efficace
- Penser à l'utilisateur
3 – Traduire cet algorithme en langage de programmation
4 – Compiler le programme pour qu'il puisse être exécutable

16
NVJ - LICENCE IG - 2021 16
II
Variables et instruction d'affectation

17
NVJ - LICENCE IG - 2021 17
II : Variables et instruction d'affectation
Notion de Variable
 Les variables servent à « nommer » des emplacements ou adresses de
la mémoire;
 Une variable est un espace mémoire nommé de taille fixe, prenant au
cours du déroulement de l’algorithme un nombre indéfini de valeurs
différentes;
 Permettent de manipuler des valeurs sans connaître leurs emplacements
exactes;
Coté machine Coté Programmeur

001 A
010 B
011 Montant

18
Mémoire Centrale 18
II : Variables et instruction d'affectation
Type d’une Variable
 Le type d’une variable permet
– De savoir quel est l’espace mémoire occupé par une variable
– Quelles sont les opérations autorisées sur la variable
 Les types de base:
- Entiers
Une variable de type entier peut prendre comme valeur
l'ensemble des nombres entiers signés. Les opérations associées sont
les opérations usuelles +,-,*,/.
- Réels
Une variable de type réél peut prendre comme valeur
l'ensemble des nombres réels. Les opérations associées sont les
opérations usuelles +,-,*,/.

19
NVJ - LICENCE IG - 2021 19
II : Variables et instruction d'affectation
Type d’une Variable
- Caractères
Une variable de type car peut prendre comme valeur l'ensemble des
caractères imprimables.
On notera les valeurs entre guillemets. On considère souvent que les
caractères sont ordonnés dans l'ordre alphabétique.
Les valeurs :
o "1" qui est un caractère,
o 1 qui est un entier,
o 1. qui est un réel
sont différentes et ne seront pas codés de la même manière dans la mémoire
de la machine.

- Booléens
Une variable de type booléen prend comme valeur VRAI ou FAUX.
Les opérations usuelles sont ET, OU et NON qui sont données dans les
tables qui suivent.
20
NVJ - LICENCE IG - 2021 20
II : Variables et instruction d'affectation
Déclaration d’une Variable
 Déclaration d’une variable dans un algorithme obéit à la syntaxe :
– Variable nom_de_variable : Type
– Ex:
• Variable Note: Réel
• Variable Coefficient: Entier

L’instruction d’affectation
 L’Affectation est une opération qui consiste à attribuer une valeur à une
variable. Elle est notée ← ,
Ex: Note ←14;.

Note: Tout instruction se termine par un point virgule(;).

21
NVJ - LICENCE IG - 2021 21
II : Variables et instruction d'affectation
Structure d’un algorithme
Algorithme Carre;
Constante
Type
Var a,b,c, D: Réel;
Début
Instructions;
Fin.

 Convention de fonctions:
 Lire(a); ou Saisir(a): Lit une donnée à une entrée et
l’affecte à la variable a;
 Ecrire(a) ou Afficher(a) : Affiche/Ecrit sur sortie la valeur
contenue dans la variable a. 22
NVJ - LICENCE IG - 2021 22
III
Les structures de contrôle

23
NVJ - LICENCE IG - 2021 23
III : Les structures de contrôle
Il y a trois structures principale de contrôle qui permettent de
construire des algorithmes
 Bloc d'instruction
Début
instruction1
instruction2
.............
Fin
Ex: Algorithme Carre;
Var a,b,c, D: Réel;
Début
a ←Lire(); // Est équivalent à Lire(a);
b ←Lire();
c ←Lire();
D←b*b-4*a*c;
Ecrire(‘’La valeur de D est :’’, D);
Fin.
24
NVJ - LICENCE IG - 2021 24
III : Les structures de contrôle
 Alternative
Alternative simple

Si ExpressionBooléenne alors
BlocInstruction1
Sinon
BlocInstruction2
Finsi;

Ex:
Si (D>0) alors
Ecrire(‘’ll y a deux solutions’’)
Sinon Si (D=0) alors
Ecrire(‘’ll y a une solution double’’)
Sinon
Ecrire(‘’ll n’y a pas de solution dans IR’’)
Finsi;

25
NVJ - LICENCE IG - 2021 25
III : Les structures de contrôle

Alternative multiple

Selon que D
cas cas1 : BlocInstruction1
cas cas2 : BlocInstruction2
.............
autrement : BlocInstruction
Finselonque

Ex:
Selon que abréviation
"M" : Ecrire(" Monsieur " );
"Mme" : Ecrire(" Madame " );
"Mlle" : Ecrire(" Mademoiselle " );
Autres : Ecrire(" Monsieur, Madame " );
FinSelonque

26
NVJ - LICENCE IG - 2021 26
IV
Les structures de répétition

27
NVJ - LICENCE IG - 2021 27
IV : Les structures de répétition

Une boucle permet d’effectuer un traitement à plusieurs reprises(Répétition).


Il existe plusieurs types de boucles :
- la boucle TANT QUE
- la boucle REPETER (ou boucle JUSQU’À CE QUE)
- la boucle POUR (extension de la boucle TANT QUE)

 Principe de la boucle TANT QUE

TANT QUE la condition est vraie :


- on effectue l’instruction (ou le bloc d’instructions)
- on revient au début de la boucle Lorsque la condition est fausse, on
passe à l’instruction suivante.

Tant que <condition> Faire


<instruction>
FinTantque
28
NVJ - LICENCE IG - 2021 28
IV : Les structures de répétition
 Principe de la boucle Répéter

• La condition doit finir par devenir vraie (on répète le traitement jusqu’à
ce que la condition soit vraie, i.e. tant que la condition est fausse)
• Le traitement est réalisé au moins une fois, car le test est effectué
après.
Répéter
<instruction>
Jusqu’à <condition>
 Principe de la boucle Pour
La boucle POUR permet d’effectuer un traitement à plusieurs reprises en
incrémentant ou décrémentant automatiquement une variable entière.

Pour <var> ← valInit à valfin [par <pas>] faire


traitement {suite d’instructions}
Finpour
29
NVJ - LICENCE IG - 2021 29
IV : Les structures de répétition
Pour cpt ← 1 à nbVal Faire
Afficher("Donnez une valeur :")
Saisir(valeur);
totalValeurs ← totalValeurs+ valeur;
Finpour

L’instruction Pour:
• Initialise une variable de boucle (le compteur)
• Incrémente cette variable de la valeur de « pas »
• Vérifie que cette variable ne dépasse pas la borne supérieure
Attention :
• le traitement ne doit pas modifier la variable de boucle
Pour cpt ← 1 à MAX Faire
si (Condition) alors
cpt ← MAX;
Finpour 30
NVJ - LICENCE IG - 2021 30
IV : Les structures de répétition

 Comparaison des boucles POUR et TANT QUE


Pour cpt _1à nbVal Faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs_totalValeurs+ valeur {cumul}
Finpour

Est équivalent à

cpt ← 0;
Tant que cpt <nbVal Faire
Afficher("Donnez une valeur :");
Saisir(valeur);
totalValeurs ← totalValeurs+ valeur;
cpt ← cpt + 1;
FinTantQue

31
NVJ - LICENCE IG - 2021 31
IV : Les structures de répétition

 Implicitement, l’instruction Pour:


• initialise un compteur
• incrémente le compteur à chaque pas
• vérifie que le compteur ne dépasse pas la borne
Supérieure

 Explicitement, l’instruction Tant que doit :


• initialiser un compteur {amorçage}
• incrémenter le compteur à chaque pas {relance}
• vérifier que le compteur ne dépasse pas la borne
supérieure {test de boucle}
32
NVJ - LICENCE IG - 2021 32
IV : Les structures de répétition

 Quand choisir POUR ou TANT QUE?

 Si le nombre d’itération connu à l’avance : POUR


• Parcours de tableaux
• Test sur un nombre donné de valeurs
 Si la boucle s’arrête sur événement particulier : TANT QUE
• Itération avec arrêt décidé par saisie utilisateur

33
NVJ - LICENCE IG - 2021 33
IV : Les structures de répétition

 Comparaison des boucles Répéter et TANT QUE


Répéter
Afficher("Donnez une valeur positive paire :");
Saisir(valeur);
Jusqu’à (valeur < 0);

Est équivalent à

Afficher("Donnez une valeur positive paire :") ;


Saisir(valeur);
Tant que(valeur < 0) Faire
Afficher("Donnez une valeur positive paire:");
Saisir(valeur);
FinTantQue

34
NVJ - LICENCE IG - 2021 34
IV : Les structures de répétition

 Pour la boucle Tant que


• condition vérifiée avant chaque exécution du traitement
• le traitement peut donc ne pas être exécuté
• de plus : la condition porte surtout sur la saisie de nouvelles
variables (relance)

 Pour la boucle Répéter … Jusqu’à


• condition vérifiée après chaque exécution du traitement
=>le traitement est exécuté au moins une fois
• de plus: la condition porte surtout sur le résultat du traitement

35
NVJ - LICENCE IG - 2021 35
V
Les Fonctions et Procédures

36
NVJ - LICENCE IG - 2021 36
V: Les Fonctions et Procédures
 Les fonctions
Une fonction est une section d'algorithme qui a un objectif
bien défini et un nom. Elle possède des variables locales qui ne sont
pas visibles à l'extérieur de la fonction.
Une fonction retourne une valeur par l'instruction simple
retourne (Expression).
Syntaxe:
fonction NomDeFonction (ListeParamètres) : TypeRésultat;
//déclarations des variables ou fonctions locales
début
// partie instruction qui contient l'appel à retourne
finFonction
Exemple:
Fonction exemple(val n:entier;ref m: entier):Entier;
Var Tot:Entier;
début
Tot ← n*m;
Retourne(Tot);
finFonction 37
NVJ - LICENCE IG - 2021 37
V: Les Fonctions et Procédures
 Les Procédures
Une procédure est une section d'algorithme qui a un objectif
bien défini et un nom. Elle possède des variables locales qui ne sont
pas visibles à l'extérieur de la fonction.
A l’opposé de la fonction, elle ne retourne pas une valeur et
n’a pas de type de résultat.
Syntaxe:
Procedure NomDeFonction (ListeParamètres);
//déclarations des variables ou fonctions locales
début
// partie instruction
finProcedure
Exemple:
Procedure exemple(val n:entier;ref m: entier);
Var Tot:Entier;
début
Tot ← n*m;
m ← 23*Tot+n*Tot;
finProcedure
38
NVJ - LICENCE IG - 2021 38
V: Les Fonctions et Procédures

 Les variables globales


Une variable globale est accessible à l’ensemble des sous
programmes d’un programme.
 Les variables locales
Une variable locale n’est accessible que dans le sous programme dans
lequel elle est déclaré.

 Le passage de variables par adresse


Dans ce cas, les paramètres d’une fonction/procédure sont des
adresses mémoires modifiables dans le sous programmes.

 Le passage de variables par valeur


Dans ce cas, les paramètres d’une fonction/procédure conservent leurs
valeurs à la fin du sous programmes.

39
NVJ - LICENCE IG - 2021 39
TRAVAUX DIRIGES

40
NVJ - LICENCE IG - 2021 40
PLAN DU COURS

Chap. 2 : Les Enregistrements et les Tableaux

I – Les Enregistrements
II - Les Tableaux
III- Les Applications

NVJ - LICENCE IG - 2021 41


I: Les Enregistrements
 Définition
Un enregistrement est un type de données défini par
l'utilisateur et qui permet de grouper un nombre fini d'éléments (ou
champs) de types éventuellement différents(hétérogène).
 Déclaration
Nom_type = Enregistrement
champ 1 : Type 1
----
champ n : Type n
Fin Nom_Type

VAR identificateur_objet : Nom_type ;

 Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche 42
NVJ - LICENCE IG - 2021 42
I: Les Enregistrements
 Exemple (Ecriture)
Var Etudiant : Fiche ;

Etudiant.nom ← ‘’Charles’’ ;
Etudiant.prenom ← ‘’NGUEMA’’ ;
Etudiant.sexe ← ‘’M’’ ;
Etudiant.numero ← 25;
Etudiant.moyenne ← 14.25;
Autrement
Avec Etudiant Faire
nom ← ‘’Charles’’ ;
prenom ← ‘’NGUEMA’’ ;
sexe ← ‘’M’’ ;
numero ← 25;
moyenne ← 14.25;
Fin Avec
 Exemple (Lecture)
Var Moyenne : Entier non signé;

Moyenne ← Etudiant.moyenne; 43
NVJ - LICENCE IG - 2021 43
I: Les Enregistrements
 Exemple (Pascal)
Fiche = Record
nom, prenom : String;
sexe : Char;
numéro : Integer;
moyenne : Real;
Fin Fiche;

VAR Etudiant : Fiche ;

 Affectation des valeurs à cette variable :

Etudiant.nom := ‘’Charles’’ ;
Etudiant.prénom :=‘’NGUEMA’’ ;
Etudiant.sexe :=‘’M’’;
Etudiant.numéro := 25;
Etudiant.moyenne := 14.25;

44
NVJ - LICENCE IG - 2021 44
II: Les Tableaux
 Définition
Un tableau est un vecteur ou un regroupement d’éléments
de même type.
 Déclaration
Nom_type_tableau = Tableau de Nom_type ;

VAR identificateur_objet : Nom_type ;

 Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche

Var Liste_Etudiants: Tableau de Fiche;


Ou
Liste_des_notes: Tableau de Réels;
45
NVJ - LICENCE IG - 2021 45
II: Les Tableaux
 Exemple
Fiche = Enregistrement
nom, prénom : Chaîne;
sexe : Caractère;
numéro : Entier non signé;
moyenne : Réel;
Fin Fiche

Var Liste_Etudiants: Tableau [1…Max] de Fiche;

0 1 2 3 4 5 6 …. Max
Liste_Etudiants

nom := ‘’Charles’’ ; nom := ‘’André’’ ;


prénom :=‘’NGUEMA’’ ; prénom :=‘’’MOUSSAVOU’’ ;
sexe :=‘’M’’; sexe :=‘’M’’;
numéro := 25; numéro := 29;
moyenne := 14.25; moyenne := 10.25;

46
NVJ - LICENCE IG - 2021 46
REFERENCES
1. http://www.est-usmba.ac.ma/ALGORITHME/co/module_ALGORITHME_29.html

2. https://www.academia.edu/8529332/Cours_les_arbres

NVJ - LICENCE IG - 2021


MERCI ET A BIENTOT

NVJ - LICENCE IG - 2021

Vous aimerez peut-être aussi