Algorithmique et Structures de Donnes - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

Algorithmique et Structures de Donnes

Description:

Affectation. i 25 - - i re oit la valeur 25. c i' - - la variable c prend la valeur i' Comparaison. a = b - - le contenu de a est-il le m me que celui de b ? ... – PowerPoint PPT presentation

Number of Views:320
Avg rating:3.0/5.0
Slides: 42
Provided by: ligimbtime
Category:

less

Transcript and Presenter's Notes

Title: Algorithmique et Structures de Donnes


1
Algorithmique et Structures de Données
  • Akkouche Samir
  • E-mail samir.akkouche_at_liris.cnrs.fr
  • http//www710.univ-lyon1.fr/sakkouch/Mias31

2
Objectifs du cours
  • Programmation avancée
  • Structures de données dynamiques
  • Programmation Orientée Objets (POO)

Langage C/C Environnement Unix
3
Norme algorithmique
  • Utilisation dun pseudo langage pour décrire les
    algorithmes
  • On utilisera la norme algorithmique vue en
    première année

4
Norme algorithmique
  • Types primitifs entier, réel, booléen, caractère
  • Déclaration de variables
  • i entier,
  • c caractère
  • tab 1..45 de réels
  • Affectation
  • i ? 25 - - i reçoit la valeur 25
  • c ? i - - la variable c prend la valeur i
  • Comparaison
  • a b - - le contenu de a est-il le même que
    celui de b ?

5
Norme algorithmique
  • Types composés
  • type Mot tableau 1..30 de réels
  • type Date enregistrement
  • jour entier
  • mois entier
  • annee entier
  • fin Date
  • Exemple
  • nom Mot, // la variable nom est de
    type Mot
  • nom1 ? s

6
  • Structures de contrôle

7
Actions de choix
  • si condition alors - -si condition est vraie
    alors
  • Actions
  • finsi

delta,a,b,c reel x1,x2 reel delta ? bb
4ac si delta gt 0 alors x1 ? (-b
sqrt(delta))/2a x2 ? (-b - sqrt())/2a finsi
8
Actions de choix
  • si condition alors
  • Actions1
  • sinon
  • Actions2
  • finsi

delta,a,b,c reel x1,x2 reel delta ? bb
4ac si delta gt 0 alors x1 ? (-b
sqrt(delta))/2a x2 ? (-b -
sqrt(deta))/2a sinon Afficher(pas de
solution) finsi
9
Actions de choix
cas x vaut 1 y ? 2 3
y ? 7 5 y ? 1 autre y ?0 fincas
cas expression vaut constante1
action1 constante2 action2 - - - - - - - -
- - - - - - - constanten actionn autre
action fincas
10
Actions itératives
  • Boucle pour boucle inconditionnelle
  • pour i dans 1..n
  • Actions
  • FinPour

pour i dans 1..20 Afficher( ti) finPour
11
Actions itératives
  • Boucle tant que boucle conditionnelle
  • tant que condition
  • Actions
  • fintantque

i ? 0 tant que i lt 10 i ? i 1
afficher(i) fintantque
Attention une instruction au moins doit
modifier la condition
12
Actions itératives
  • Boucle répéter boucle conditionnelle
  • répéter
  • Actions
  • jusquà condition

répéter Actions tant que condition
i ? 0 répéter i ? i 1 afficher(i)
tantque ilt10
i ? 0 répéter i ? i 1 afficher(i)
jusquà igt10
13
  • Les fonctions
  • Une fonction est une séquence dactions qui
    produit une valeur de retour à partir de
    paramètres dentrée.

type fonction nom (liste_de paramètres)
séquence dactions finnom
reel fonction moyenne (E x réel, y réel)
c réel c ? (xy)/2 retourne c finmoyenne
14
  • Les fonctions
  • Appel de fonction
  • x,y,mréel
  • - - - - - - -
  • m ? moyenne(x,y)

15
Chaîne de production dun programme
16
Programme C/C
Quest-ce quun programme?
  • Un programme C/C est un ensemble de fonctions.
  • Une fonction et une seule porte le nom
  • main() Point dentrée dans le programme

float minimum(float a, float b) /
/ float maximum(float a, float
b) // void main()
float u,v ----------------------- x
minimum(u,v) y maximum(u,v)
17
Programme C/C
Quest-ce que le prototype dune fonction?
  • Prototype dune fonction est caractérisé par
  • Le nom de la fonction
  • Le nombre de paramètres
  • Le type des paramètres
  • Le type de la valeur de retour
  • Le prototype sexprime sous forme de déclaration
    dun
  • en-tête (header)

float minimum(float , float ) float
maximum(float , float )
18
Programme C/C
Quest-ce quun fichier den-tête ou fichier
header ?
  • fichier contenant les prototypes des fonctions
    dun programme
  • Lusage veut que lextension soit .h

minmax.h
float minimum(float , float ) float
maximum(float , float )
  • Exemples ltstdio.hgt, ltstring.hgt,

19
Quest-ce que le passage par valeur? Quest-ce
que le passage par référence?
  • Passage par valeur

float minimum(float a, float b) if(altb)
return a else return b void main()
float x,y,u,v scanf(f f ,u,v) x
minimum(u,v)
//a et b sont des paramètres formels
Passage par valeur
minimum
a
b
main()
x
y
u
v
Mémoire
//u et v sont les paramètres réels
20
  • Passage par référence

il ny a pas création de variables locales a et
b
Se caractérise par la présence dun entre le
type et le nom de la variable
float minimum(float a, float b) if(altb)
return a else return b void main()
float x,y,u,v scanf(f f ,u,v) x
minimum(u,v)
minimum
main()
x
y
u
v
Mémoire
21
Chaîne de production dun programme
Quest-ce quune chaîne de production?
  • Ecrire un ensemble dinstructions dans un langage
    de haut niveau
  • C, C, Fortran, Pascal, ADA, Scheme
  • Programme source
  • Traduire en langage machine Exécutable

?
Exécutable
Programme source
22
Chaîne de production dun programme
  • Programme C/C

f1.c
f2.c
f3.c
fn.c
  • Compilation
  • Edition des liens

Exécutable
Programme source 1 ou plusieurs fichiers
Remarque un seul de ces fichiers contient la
fonction main()
23
Compilation
Quest-ce quune compilation?
  • Vérification syntaxique
  • Production dun fichier binaire

f1.c
f2.c
f3.c
fn.c
f1.o
f2.o
f3.o
fn.o
Compilateur
Programme source 1 ou plusieurs fichiers
Fichiers objets
Remarque On peut compiler séparément chacun des
fichiers
24
minmax.h
principal.c
float minimum(float , float ) float
maximum(float , float )
include ltstdio.hgt include minmax.h void
main() float x,y,u,u scanf(f f
,u,v) x minimum(u,v) y
maximum(u,v) printf(le min vaut f , x)

minmax.c
float minimum(float a, float b) if(altb)
return a else return b /
/ float maximum(float a, float b)
if(agtb) return a else return b
25
Quest-ce quune édition des liens?
  • Edition des liens

minmax.o
exécutable
principal.o
machin

librairies
26
Structures dynamiques
  • Problème La mémoire dun ordinateur est limitée
    en taille.
  • Ne réserver de la mémoire quen cas de nécessité.
  • Libérer cette mémoire une fois le traitement
    terminé.
  • Cette place libérée est ainsi disponible pour une
    autre utilisation dans le même programme.

27
Structures dynamiques
  • Exemple

Tant quil y a un fichier en attente Récupérer
le contenu du fichier Effectuer le traitement
Afficher les résultats Fin
Traitement
Résultats
Fichier 1
Fichier 2
Fichier 3
Fichier n
28
Structures dynamiques
  • réel fonction P()
  • I entier
  • existe Booléen
  • T tableau1..25 de reels
  • finP

TAS
existe
I
PILE (Stack)
Zone de données de P
T1..25
Mémoire
29
Structures dynamiques
  • Pour manipuler des structures dynamiques il faut
    utiliser des variables de type pointeurs

Quest-ce quun pointeur ?
30
Notion de pointeur
  • Un pointeur est une variable qui contient une
    valeur.
  • Cette valeur est interprétée comme étant
    ladresse dun autre objet.
  • Ce nest pas la valeur du pointeur qui nous
    intéresse, ce sont les informations contenues
    dans lobjet sur lequel il pointe
  • Exemple
  • X entier X?122 Toto Ref
    entier Toto ? X
  • X case N 22005 Toto Ref entier
    Toto ? X

122
?
22005
125
31
Point sur la norme
  • Déclaration dun pointeur Y Ref reel
  • Ladresse dun objet X X (adresse de
    X)
  • Accès à lobjet pointé Y
  • Exemple Y ? 12.64
  • Y
  • case N 31500

31500
12.64
32
Allocation-libération
TAS
  • Déclaration Y Ref TYPE (ex Y Ref entier )

PILE (Stack)
Y
?
  • Allocation Y ? reserve TYPE

Mémoire
Si TYPE est un tableau de 4 éléments Alors Il
y a réservation de 4 éléments dans le tas.
Ladresse du premier élément est renvoyée dans
le pointeur Y
TAS
12000
PILE (Stack)
  • libération libère Y

Y
12000
Mémoire
33
Traduction en C/C
  • Déclaration dun pointeur sur un type donné
  • toto Ref entier ? int toto
  • toto est un pointeur sur un entier (zone
    représentant un entier)
  • Interprétation
  • toto est une variable statique dont le contenu
    représente une adresse
  • x Ref Type ? Type x
  • x est un pointeur sur un Type (zone représentant
    un Type)

34
Traduction en C/C
  • Exemple Définition dun type utilisateur Boite
  • struct Boite
  • int taillenom
  • int tailleadresse
  • char nom50
  • char adresse150
  • x Ref Boite ? Boite x
  • x NULL ? x ne pointe sur aucune Boite

35
Traduction en C/C
  • Allocation dune Boite référencée(pointée) par x
  • x ? reserve Boite ? x new Boite
  • Rappel struct Boite
  • int taillenom // 2 octets
  • int tailleadresse // 2 octets
  • char nom50 // 50 octets
  • char adresse150 // 150 octets
  • ? il y a réservation de 204 octets contigus dans
    le TAS

36
Traduction en C/C
  • Allocation dune Boite référencée(pointée) par x
  • x ? reserve Boite ? x new Boite
  • 2 actions - Réservation dans le TAS de 204
    octets
  • - Stockage dans la variable x de ladresse
    du premier octet

204 octets
13120
TAS
PILE (Stack)
13120
x
37
Traduction en C/C
  • Accès à linformation x représente lobjet
    pointé par x
  • (x).taillenom 12
  • (x).tailleadresse 20
  • strcpy( (x).nom, machin bidul)
  • strcpy( (x).adrese, 24 rue de limpasse)
  • Autre syntaxe plus simple
  • x -gttaillenom 12 // x flèche taillenom
  • x -gttailleadresse 20 // x flèche
    tailleadresse
  • etc

38
Traduction en C/C
  • Libération
  • libère x ? delete x
  • La place allouée dans le TAS est maintenant
    considérée comme disponible
  • Attention x contient toujours ladresse 13120

39
Un exemple dutilisation
  • Allocation dynamique des chaînes de caractères
  • Déclaration de la chaîne char nom
  • Quand la taille N de la chaîne est connue à
    lavance alors
  • nom new charN1 // réservation de N1
    caractères
  • nom est maintenant considéré comme un tableau de
    taille N1
  • Le dernier caractère est spécial \0
  • Exemple N 12 nom new charN1
  • strcpy(nom, machin bidul)

40
Un exemple dutilisation
  • struct Boite
  • int taillenom // 2 octets
  • int tailleadresse // 2 octets
  • char nom50 // 50 octets
  • char adresse150 // 150 octets
  • struct Boite
  • char nom char
    adresse

41
Un exemple dutilisation
  • Boite a
  • a.nom new charN11 //N1 taille connue
    de nom
  • a.adresse new charN21 //N2 taille
    connue de adresse
  • Après utilisation on libère la place réservée
    pour nom et adresse
  • delete a.nom delete a.adrese
  • a.nom NULL a.adresse NULL
Write a Comment
User Comments (0)
About PowerShow.com