coursalgorithmique et structure de donnees ustm

Upload: georlain-mavega-kombila

Post on 05-Jul-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    1/232

    Algorithmique (objet)  et 

     

    Structure de données 

     Licence 2ème annéeFaculté des Sciences USTM 

    Dr. Bienvenu FASSINUT-MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    2/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    2 / 232

    Remerciements & Copyright Certains transparents sont basés sur des supports trouvés sur :

    WebEt d’autres trouvés dans des Livres et cours sur le sujet

    Copyright © 

    2009-2012 Bienvenu Fassinut-Mombot; all rights 

    reservedCe support de cours est soumis aux droits d’auteur et n’est donc pas dans ledomaine public. Sa reproduction est cependant autorisée à

     

    condition derespecter les conditions suivantes :

    Si ce document est reproduit pour les besoins personnels du reproducteur, touteforme de reproduction (totale ou partielle) est autorisée à 

    la condition de citerl’auteur.Si ce document est reproduit dans le but d’être distribué

     

    à 

    des tierces personnes,il devra être reproduit dans son intégralité

     

    sans aucune modification. Cette notice

    de copyright devra donc être présente. De plus, il ne devra pas être vendu.Cependant, dans le seul cas d’un enseignement gratuit, une participation aux fraisde reproduction pourra être demandée, mais elle ne pourra être supérieure auprix du papier et de l’encre composant le document.Toute reproduction sortant du cadre précisé

     

    ci-dessus est interdite sans accordpréalable écrit de l’auteur.

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    3/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    3 / 232

    ““Comment Organiser auComment Organiser au MieuxMieux 

    ll’’InformationInformation

    dansdans 

    un Programme ?un Programme ?””

    Un problème métaphysique ? 

    TableauxTableaux

    intint

    tab[10];tab[10];

    structstruct

    Data_tData_t

    {{

    intint index_;index_;char* value_;char* value_;

    }} Data_tData_t;;

    StructuresStructures Structures deStructures de

    donndonn

    éé

    eses

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    4/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    4 / 232

    Objectifs…Concevoir et réaliser un algorithme correct et efficace pour un

    problème donné.Sensibilisation aux problèmes algorithmiques et à 

    leur performance,que ce soit sous la forme de complexité

     

    asymptotique ou à 

    laperformance sur des machines d’aujourd’hui en tenant compte de laperformance du cache, et de la capacité

     

    multiprocesseur.Introduire des types abstraits, discuter leurs implémentationspossibles

    Connaître les structures de données séquentielles simples, complexes etarborescentes : tableaux, listes chaînées, piles, files, arbres et graphesFaire un choix argumenté

     

    sur l'utilisation de telle ou telle structure dedonnées ainsi que sur l'algorithme qui la manipule.

    Mettre en œuvre des structures de données et les algorithmesassociés dans des programmes écrits en langage C/C++ dont l’aspect

    orienté 

    objet sera réduit au minimumIl ne s'agit pas d'un cours de programmation pur et dur en C/C++ 

    !

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    5/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    5 / 232

    Contenu Notions de bases de l’algorithmique

    Algorithmique et ProgrammationProcédure de réalisation d’un programme

    Structures de donnéesStructures de données élémentairesTableauxTypes composés

     

    ou 

    structuresPreuve et complexité

     

    algorithmiqueNotion de complexité

     

    algorithmiqueNotion de Récursivité

    Structures de données linéaires ou séquentielles

    ListesPiles et FilesStructures de données non-linéaires ou arborescentes

    ArbresGraphes

    ProgrammationNotion de base du langage C/C++Environnement de programmation

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    6/232

    Notions de bases de l’algorithmique 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    7/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    7 / 232

    Algorithmique et Programmation Qu’est-ce qu’un algorithme ?

    Vous avez déjà 

    ouvert un livre de recettes de cuisine?Avez-vous déjà 

    déchiffré 

    un mode d’emploi traduit de l’anglais pour fairefonctionner un magnétoscope, un réveil, digicode…?Si oui?

    • 

    Sans le savoir vous avez déjà 

    exécuté 

    des algorithmes.Encore plus fort :

    Avez-vous indiqué 

    un chemin à 

    un individu égaré?Avez-vous fait chercher un objet à

     

    quelqu’un par téléphone?Si oui?

    • 

    Vous avez déjà 

    fabriqué 

    et fait exécuter - 

    des algorithmesDéfinition (selon l’Encyclopédia

     

    Universalis) améliorée : 

    Un algorithmeest la spécification d’un schéma de calcul, sous forme d’une suite [finie]d’opérations élémentaires [décrites dans un langage universel] obéissant à un

    enchaînement déterminé [représentant les calculs nécessaires à la productionde la valeur d’une certaine fonction générale utilisant certaines données].

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    8/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    8 / 232

    Algorithmique et Programmation 

    Exemple : Algorithme de résolution d’une équation

    Un algorithme de résolution de l'équation ax+b = 0 

    données : a et b entiers 

    Algorithme : 

    ecrire ("Résolution de l’équation : ax+b=0") lire( a  ) , lire( b  ) 

    Si a est non nul Alors,

    on obtient la solution : x = -b/a 

    Sinon Si b est non nul Alors,

    l'équation est insoluble 

    Sinon tout réel est solution

    Résultat : la solution de l’équation ax+b=0; si elle existe 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    9/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    9 / 232

    Algorithmique et Programmation Qu’est-ce qu’un programme ?

    Un programme 

    est la description (traduction) d’un algorithmedans un langage de programmation obéissant à 

    des règles trèsprécises.Un langage de programmation

     

    est un langage commun entremachine et programmeur qui implante et réalise un algorithme. 

    Exemple: le langage C/C++ #include #include int main (void) {int a, b;

     puts( "Résol ut i on de l ’ équat i on:

    ax+b=0\ n" ) ; printf( "a? \n" ) ; scanf( "%d" , &a) ;

     printf( "b? \n" ) ; scanf( "%d" , &b) ;

    if( a ≠

     

    0) printf( "x=%f \ n" , - b/ a) ;

    else if ( b ≠

     

    0) puts( " l ’ équat i on

    est i nsol ubl e\ n") ;else puts( "t out r éel estsol ut i on\ n") ;

    return EXIT_SUCCESS;}

     ALGORITHME:ecr i r e( "Résol ut i on de l ’ équat i on: ax+b=0")l i r e( a) , l i r e( b)Si a est non nul Al or s,

    on obt i ent l a sol ut i on : x = - b/ aSi non Si b est non nul Al or s,l ' équat i on est i nsol ubl e

    Si non t out r éel est sol ut i on

    Structure de contrôle

    conditionnelle

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    10/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    10 / 232

    Algorithmique et Programmation Quelle est la différence ?

    En utilisant des images :• 

    Si un programme était une construction, l’algorithme serait le plan•

     

    Si un programme était une toile de peinture, l’algorithme seraitl’esquisse

    Algorithme :

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    11/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    11 / 232

    Algorithmique et Programmation Quelle est la différence ?

    En utilisant des images :• 

    Si un programme était une construction, l’algorithme serait le plan•

     

    Si un programme était une toile de peinture, l’algorithme seraitl’esquisse

    Programme :

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    12/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    12 / 232

    Un Langage Algorithmique : Comment faire? décrire l’algorithme dans une forme telle que la passage au

    programme ne pose plus aucun problème, pour que cette opération decodage devienne une simple mécanique de traduction du LangageAlgorithmique vers le langage cibleHistoriquement, plusieurs types de notations ont été

     

    utilisées pourreprésenter des algorithmes

    Descriptions littérairesOrganigrammesPseudo-codes

    Les pseudo-codesDéfinition : 

    un pseudo-code 

    est une série de conventions qui ressemble àun langage de programmation authentique dont on aurait évacué

     

    la plupartdes problèmes de syntaxe.Remarque :

     

    un pseudo-code est susceptible de varier d’une référence à

    une autre. En effet, un pseudo-code est purement conventionnel. Aucunemachine n’est censée le reconnaître.

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    13/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    13 / 232

    Squelette d’un algorithme

    Spécifications

    de l’algorithme

    Déclaration des

    constantes et des

    variables

    Corps de l’algorithme(traitements)

    / / BUT : cet al gor i t hme ef f ect ue . . ./ / ENTREE : une l i st e de M noms/ / SORTI E : une l i st e t r i ée par or dr e al phabét i que

    / / CONSTANTES : l es const ant es/ / l ’ i ni t i al i sat i on est obligatoireobligatoire/ / au moment de l eur décl ar at i onCONST : pi

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    14/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    14 / 232

    Notion d’instruction Une instruction est un ordre élémentaire -

     

    au sens

    algorithmique, que peut exécuter un programme.Les données manipulées par les instructions sont:des variables proprement ditesdes variables constantes

    des valeurs littérales ("bonjour", 45, VRAI)des expressions complexes (combinaisons de variables, constanteset valeurs littérales avec des opérateurs)

    L’opérateur

     

    d’AFFECTATION, une

     

    "mise

     

    en mémoire" :L’opérateur

     

    d’affectation 

    permet 

    de donner 

    (ou 

    d’affecter) unevaleur 

    à 

    une 

    variable•

     

    Sa syntaxe 

    est 

    la suivante 

    :nom_de_l a_var i abl e

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    15/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    15 / 232

    Notion d’instruction 

    Opérateurs 

    d'entrée/sortieClavier et écran

    • 

    LIRE(x) : données 

    du problème 

    (usercomputer)permet

     

    de lire au clavier la valeur 

    de la variable x

    • 

    ECRIRE(x) : affichage 

    à 

    l'écran 

    (computer

    user)permet 

    d’afficher 

    la valeur 

    de la variable xFichiers

     

    texte•

     

    Le type FICHIER permet 

    de lire et d’écrire 

    dans 

    un fichier

    • 

    lireF(x,file) : met dans 

    x la première valeur 

    lue 

    dans 

    le fichier• 

    ecrireF(x,file) : permet 

    d’écrire 

    la valeur 

    de x dans 

    le fichier

     VAR : f i l e : FI CHI ERFi l e

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    16/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    16 / 232

    Notion de séquence 

    DEBUT

    FIN

     ACTION 1 :

    LIRE(valeur)

    Une séquence est une suite d'opérations

    élémentaires (ou ACTIONS) dont l'exécution est

    séquentielle.

     ACTION 2 :

     produit

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    17/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    17 / 232

    Notion de rupture de séquence 

    DEBUT

    FIN

     ACTION 1 :

    LIRE(valeur)

    L'exécution des opérations élémentaires (ou

     ACTIONS 2a et 2b) n'est pas systématique.

    Elle dépend d'une "condition".

    La lecture d’une rupture de séquence s'effectue

    en fonction des éléments transmis "à titre decondition".

     ACTION 2a :

    ECRIRE("choix a")

    RUPTURE

    de

    SEQUENCE

     ACTION 2b :

    ECRIRE("choix b")

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    18/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    18 / 232

    Structure algorithmique La structure algorithmique

     

    concerne

     

    la concaténation

     

    et

    les imbrications de séquences  et ruptures de séquences.Ruptures de séquences 

    ou 

    structures de contrôle 

    :Rupture conditionnelle

     

    (et non répétitive) d’instructions•

     

    SI…ALORS...FINSI

    • 

    SI...ALORS…SINON...FINSI•

     

    CAS...PARMI...FINCASPARMI

     

    CAS…PARMI…PARDEFAUT...FINCASPARMI

    Rupture répétitive 

    (itérations 

    et boucles) d’instructions 

    :• 

    TANTQUE…FAIRE…FINTANTQUE

    • 

    REPETER…JUSQU'A...

    • 

    REPETER…TANTQUE...

    • 

    POUR…FAIRE...FINPOUR

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    19/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    19 / 232

    Rupture conditionnelle (et non répétitive) SI…ALORS…FINSI

     ALGORITHME: val eur _absol ue/ / BUT : cal cul e l a val . abs. d’ un ent i er sai si par l ’ ut i l ./ / ENTREE : un ent i er r el at i f sai si par l ’ ut i l i sat eur/ / SORTI E : l a val eur absol ue de l ’ ent i er sai si

     VAR:x :ENTIER DEBUT

    LI RE( x ) / / af f ect at i on d’ une val eur par l ’ ut i l .SI( x < 0 ) / / si cet t e val eur est négat i ve

     ALORS / / al or s cet t e condi t i on est vr ai ex

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    20/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    20 / 232

    Rupture conditionnelle (et non répétitive) SI..ALORS..SINON..FINSI

     ALGORITHME: max_deux_nombr es/ / BUT : cher che l a val eur max. par mi 2 val eur s sai si es/ / ENTREE : deux r éel s sai si s par l ’ ut i l i sat eur/ / SORTI E : l e maxi mum des deux val eur s

     VAR:a, b, max :REELDEBUT

    LI RE( a, b)SI( a >= b )  ALORS

    max

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    21/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    21 / 232

    Rupture conditionnelle (et non répétitive) CAS..PARMI..FINCASPARMI

     ALGORITHME: nom_moi s/ / BUT : af f i che l e nom du moi s en f onct i on du numér o/ / ENTREE : un ent i er sai si par l ’ ut i l i sat eur/ / SORTI E : l e nom du moi s cor r espondant au chi f f r e sai si

     VAR:moi s :ENTIER DEBUT

    LI RE( moi s )CAS( moi s ) PARMI:

    CAS1: 1 ECRI RE( " J anvi er " )CAS2: 2 ECRI RE( " Févr i er " ). . .CAS12: 12 ECRI RE( " Décembre" )

    FINCASPARMIFIN

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    22/232

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    23/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    23 / 232

    Rupture répétitive (et conditionnelle) TANTQUE..FAIRE..FINTANTQUE

     ALGORITHME: compt eur _r ebour s/ / BUT : af f i che l a val eur d' un compt eur à r ebour s/ / ENTREE : un ent i er sai si par l ’ ut i l i sat eur/ / SORTI E : l a val eur du compt eur à r ebour s

     VAR:nombr e :ENTIER DEBUT

    LI RE( nombr e )TANTQUE( nombr e > 0 )FAIRE

    ECRI RE( "Val eur du compt eur à r ebour s: " , nombr e )nombre

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    24/232

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    25/232

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    26/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    26 / 232

    Rupture répétitive (et inconditionnelle) POUR..FAIRE..FINPOUR

     ALGORITHME: compt eur _r ebour s4/ / BUT : af f i che l a val eur d' un compt eur à r ebour s/ / ENTREE : un ent i er sai si par l ’ ut i l i sat eur/ / SORTI E : l a val eur du compt eur à r ebour s

     VAR:nombr e :ENTIER 

    DEBUTLI RE( nombr e )

    POUR ( compt eur

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    27/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    27 / 232

    Notion de variable 

    La notion de variable est très importante en

    programmationDans un programme informatique, on a, en permanence,besoin de stocker

     provisoirement des valeurs :•

     

    données issues du disque dur ;•

     

    données fournies par l'utilisateur (frappées au clavier) ;

    • 

    résultats (intermédiaires ou définitifs) obtenus par leprogramme.

    Al i h i S d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    28/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    28 / 232

    Notion de variable Du point de vue sémantique, une variable est une entité

    qui possède trois caractéristiques :Une variable possède un nom, on parle d’identifiantUne variable possède une valeur

     

    qui évolue au cours de l’exécutiondu programme

    Une variable possède un type 

    qui caractérise l’ensemble desvaleurs qu’elle peut prendreDu point de vue pratique, une variable est une manièremnémotechnique pour désigner un emplacement mémoirerepérée par une adresse

     

    (numéro de la case ou cellulemémoire que la variable occupe au sein de l’ordinateur)

    Il n’est pas possible de choisir l’adresse d’une variable, cette

    adresse est attribuée automatiquement par l’ordinateurToute variable possède une et une seule adresse

    Al i h i S d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    29/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    29 / 232

    Notion de variable Le type d’une variable indique au compilateur la manière de stocker lavariable en mémoireEn employant une image

    Une variable 

    est un récipient, que l'ordinateur va repérer par uneétiquette

     

    (un nom). Pour avoir accès au contenu du récipient, il suffit dele désigner par son étiquette.

    Il existe plusieurs type de récipients!

    De la même manière, il existe plusieurs type de variable…

    Al i h i S d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    30/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    30 / 232

    Notion de variable 

    Lorsqu'on déclare une variable, il ne suffit pas de créer

    un récipient 

    (réserver un emplacement mémoire).Il faut encore préciser ce que l'on voudra mettre dedans, car decela dépendent la taille

     

    et la nature 

    du récipient.

    Il est important de connaître comment sont stockées lesvariablescar C/C++ propose de nombreuses manipulations au niveau bit.

    La mémoire est une suite de bit structurée en octets (8bits) puis en mots (4 octets, 32 bits).Exemple :

     

    L’adresse 1084 doit se lire comme “le 1084eme octet de la mémoire”

    Al i h i S d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    31/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    31 / 232

    Notion de variable globale/locale Lors de la déclaration des données qui seront utilisées par leprogramme, il y a réservation de

    l'espace mémoire pour les variables dédiées au fonctionnement duprogramme principal ou à

     

    chacun des sous programmes.Mais il est possible, aussi, d'effectuer une réservation, non dédiée, devariables dites : GLOBALES.

    Les variables globales ont la possibilité 

    d'être exploiter parl'ensemble du programme et les modules appelés, (c'est-à-dire enlecture et en écriture),

    on parle de portée des données

     

    et d'accessibilité.

    Chaque programme et sous-programme a son propre espace devariables, inaccessibles par les autres, ces variables sont dites :LOCALES.

    L'accès aux valeurs enregistrées peut se faire via adressage (utilisation

    d'un pointeur), ce qui permet le limiter ou non ces accès à 

    tous lesconstituants du programme.

    Al ith i t St t d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    32/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    32 / 232

    Notion de Pointeur Le pointeur est une variable de type "adresse d’une autre

    variable":La déclaration s'effectue sous la forme : VAR: * VAR: *Pnom_de_variablePnom_de_variable : TYPE_POINT: TYPE_POINTÉÉ

    //le contenu de//le contenu de Pnom_de_variablePnom_de_variable est de type TYPEest de type TYPE _POINT _POINTÉÉ

    • 

    Exemple : VAR: *Pnombr e_ent i er : POI NTEUR_SUR_ENTI ERL’utilisation s'effectue à

     

    l'aide de l'opérateur &, et permet d’obtenirl’adresse de la variable pointée :&&nom_de_variablenom_de_variable //adresse de//adresse de nom_de_variablenom_de_variable

    • 

    Exemple : Pnombr e_ent i er

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    33/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    33 / 232

    Notion de Pointeur Nom Adresse

    04DFF5C004DFF5C2

    04DFF5C4

    04DFF5C6

    04DFF5C8

    Contenu

    5720

    04DFF5C2

    nombre_entier

    Pnombre_entier

    04DFF5CA 

    04DFF5CC

    04DFF5CE

    04DFF5D0

    La valeur de lavariablenombre_entier

     

    (5720)se trouve à

     

    l’adresse04DFF5C2Pnombre_entier

     contient l’adresse(04DFF5C2) de lavariablenombre_entier, et se

    trouve à 

    l’adresse04DFF5C8La valeur denombre_entier

     

    (5720)

    est accessible à 

    l'aidede *Pnombre_entier

    Al ith i t St t d d é

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    34/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    34 / 232

    Notion de Pointeur Allocation dynamique de la mémoire ou réservation

    mémoireLa commande se nomme RESERVER( ) et permet d’allouer un espacemémoire pour stocker le contenu qui sera pointé

     

    par le pointeurqui est fourni à

     

    la commande selon la syntaxe suivante :

    RESERVER(pointeur)RESERVER(pointeur)

    • 

    Exemple : VAR: *Pnombr e_ent i er : POI NTEUR_SUR_ENTI ERRESERVER( Pnombr e_ent i er )

    Lorsque la place en mémoire n’est plus utile, il suffit de lalibérer en utilisant la commande suivante :

    LIBERER(pointeur)LIBERER(pointeur)

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    35/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    35 / 232

    Structure des programmes Organisation

     

    (ou 

    découpage) en modules

    les traitements doivent être scindés en plusieurs modules (sous- 

    programmes) et la structure algorithmique principale doit être regroupédans le programme principal en intégrant les appels éventuels aux sous-programmes.Un module peut appelé

     

    un autre module, si ce module appelle le module

    appelant, cette spécificité 

    se nomme : la récursivité 

    croisée.Un module peut s'appeler lui-même (la récursivité).Un (et un seul) programme principal par programme modulaire

    A l'intérieur de ce programme principal, se trouvent des appels aux

    modules appartenant au programme.Le programme Principal, peut faire appel à 

    des procédures ou fonctionsdiverses (se sont les deux sortes de modules ou sous-programmesexistant en algorithmique), ce qui a pour effet de structurer le

     

    programme, de réduire sa place en mémoire ainsi que son écriture, etsurtout, de faciliter sa maintenance.

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    36/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    36 / 232

    Structure du programme principal // zone de déclaration des constantes et variables// globales accessibles par le programme principal ainsi

    // que ses modules (ou sous-programmes)CONSTGLOBALE: // ou CONST: puisque placé en tête

    ... // données constantes globales VARGLOBALE: // ou VAR:

    ... // données variables globales du programme

    // nom du programme principalPROGRAMME: nom_du_pr ogr amme// déclaration des constantes et variables localesCONST:

    ... // données constantes locales du programme

     VAR:... // données variables locales du programme

    DEBUT... // corps du programme principal

    FIN

    // fin du programme principal

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    37/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    37 / 232

    Notion de Procédure et Fonction Une

     

    procédure 

    ou 

    une 

    fonction 

    est 

    un sous-programme 

    qui a pourobjectif

     

    de réaliser 

    une 

    tâche 

    particulière 

    (et une 

    seule) qui lui 

    estpropre.Points communs

     

    entre une 

    procédure 

    et une 

    fonction 

    :Les sous-programmes

     

    disposent 

    d'une 

    zone propre 

    de réservation 

    et destockage

     

    des données, en fonction 

    du nombre 

    et du type de celles-ci.Afin

     

    de faire communiquer 

    le programme 

    et le sous-programme, il 

    estpossible (mais

     

    facultatif) de transmettre 

    un ou 

    plusieurs 

    paramètres aumodule appelé

     

    (c'est 

    à 

    dire, la valeur 

    de certaines 

    variables utiles 

    aumodule).

    Différences 

    fondamentales 

    entre une 

    procédure 

    et une 

    fonction 

    :Une procédure ne peut pas transmettre, en retour 

    (en fin d'appel) devaleur

     

    issue de l'objectif du module, au programme (ou sous-programme)appelant.

    Une fonction peut transmettre 

    (facultativement), au terme de sonappel, une et une seule donnée 

    au programme appelant.

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    38/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    38 / 232

    Programme principal et Procédure PROCEDURE: nom_pr ocedur e( ) // nom de la procédure// zone de déclaration des constantes de la procédureCONST: // suite de déclaration de données constantes// zone de déclaration des variables de la procédure VAR: // suite de déclaration de données variablesDEBUTPROCEDURE // début effectif de la procédure

    ... // zone de la procédureFINPROCEDURE // fin de la procédure//-------------------------------------------------------------// nom du programmePROGRAMME: nom_du_pr ogr amme// zone de déclaration des constantes du programme principalCONST: // suite de déclaration de données constantes// zone de déclaration des variables du programme principal VAR: // suite de déclaration de données variablesDEBUT // début effectif du programme principal

    ... // zone du programme principal

    nom_pr ocedur e( ) // appel de la procedureFIN // fin du programme principal

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    39/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    39 / 232

    Programme principal et Fonction FONCTION: nom_f onct i on( ) :ENTIER // nom et type de la fonction// zone de déclaration des constantes de la fonctionCONST: // suite de déclaration de données constantes// zone de déclaration des variables de la fonction VAR: r esul t at :ENTIER DEBUTFONCTION // début effectif de la fonction

    ... // zone de la fonctionRETOURNER: r esul t at //un seul pour une meilleure lisibilitéFINFONCTION // fin de la fonction//-------------------------------------------------------------// nom du programmePROGRAMME: nom_du_pr ogr amme// zone de déclaration des constantes du programme principalCONST: // suite de déclaration de données constantes// zone de déclaration des variables du programme principal VAR: var _ent i er e :ENTIER DEBUT // début effectif du programme principal

    ... // zone du programme principalvar _ent i er e

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    40/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    40 / 232

    Notion de paramètre formel / réel On appelle "paramètre(s)", les noms des variables placés dans ladéfinition d'une procédure ou d’une fonction, lors de la déclaration oudans l'écriture de son appel.Ce sont des variables locales à

     

    la procédure ou à 

    la fonction, et à 

    cetitre, ils sont déclarés dans l'en-tête du sous programme, entreparenthèses : ce sont les paramparamèètres formelstres formels.

    Ils n’ont pas de valeur particulière dans la définition du sous-programmeLes paramètres, inscrits lors de l'appel au module, servent à

     

    communiquer avec le sous-programme prédéfini : ce sont lesparamparamèètres rtres rééelsels

     

    (ou effectifs)effectifs) 

    appelés aussi argumentsarguments.Lorsque les paramètres sont de type "donnée" (et non un adressage àl'aide d'un pointeur sur la donnée), ils contiennent effectivement lesvaleurs avec lesquelles sera effectué

     

    le traitement du sous-programme.Lors de l'appel, leur valeur est recopiée dans les paramètres formels

    correspondants à 

    l'emplacement prédéfini (l'ordre est conservé).

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    41/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    41 / 232

    Variables Locales et Paramètres : passage par valeur 

    PROCEDURE: i ncr ement e( val eur :ENTIER )

    DEBUTPROCEDUREval eur

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    42/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    42 / 232

    Variables Locales et Paramètres : passage par pointeur 

    PROCEDURE: i ncr ement e( Pval eur

    :POINTEUR_SUR_ENTIER )DEBUTPROCEDURE

    *Pval eur

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    43/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    43 / 232

    Pause-réflexion sur cette partie

     Avez-vous des questions ?

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    44/232

    Structures de données 

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    45/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    45 / 232

    Structure de données : Introduction Structures de données ?

    Définition : 

    une structure de donnée 

    est un moyen de coder etde structurer les données manipulées.Exemple :

    Données

    Algorithme

    Résultats

    Structures

    de

    données

     Programme = Algorithme + Structures de données

     Type suite = t abl eau [ 1. . N] d’ ent i er s

    etudiant = st r uct ur enom, pr énom : chaî ne de car act èr es

    âge : ent i er posi t i f  

    sexe : car act èr e

    . . .

    f i n st r uct ur e

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    46/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    46 / 232

    Structure de données élémentaires 

    Opérateurs et Symboles

    Type

    ENTIER

    (4 octets

    ou

    32 bits)

    Opérations

    possibles

     AdditionSoustraction

    Multiplication

    DivisionExposant

    Modulo

    Comparaisons

    Opérateurs associés, symboles,

    mot clés correspondants

    +-

    *

    DIV (Pour la division entière)^

    MOD (Pour le reste d’une division)

    < >= =

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    47/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    47 / 232

    Structure de données élémentaires 

    Opérateurs et Symboles

    Type

    REEL

    (8 octets

    ou

    64 bits)

    Opérations

    possibles

     Addition

    Soustraction

    Multiplication

    Division

    Exposant

    Comparaisons

    Opérateurs associés, symboles,

    mot clés correspondants

    +

    -

    *

    /

    ^

    < >= =

    Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    48/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    48 / 232

    Structure de données élémentaires 

    Opérateurs et Symboles

    Type

    CARACTERE

    (1 octet

    ou

    8 bits)

    Opérations

    possibles

    Comparaison

    Extraction

    Opérateurs associés, symboles,

    mot clés correspondants

    < >= =

    CARACTERE

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    49/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    49 / 232

    Structure de données élémentaires 

    Opérateurs et Symboles

    Type

    CHAINE

    Opérations

    possibles

    Concaténation

    Longueur 

    Extraction

    Opérateurs associés, symboles,

    mot clés correspondants

    CHAINE

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    50/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

    50 / 232

    Structure de données élémentaires 

    Opérateurs et Symboles

    Type

    BOOLEEN

    (1 octet

    ou

    8 bits)

    Opérations

    possibles

    Comparaison

    Négation

    Conjonction

    Disjonction

    Opérateurs associés, symboles,

    mot clés correspondants

    =

    NON (il se note aussi ¬)

    ET

    OU

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    51/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    51 / 232

    Structure de données élémentaires 

    Opérations élémentaires : Déclaration

    nom_de_la_donnee :ENTIER

    nom de la donnée

    type élémentaire

    Nom attribué à la

    donnée déclarée.

    Le type est toujours

    précédé du signe :

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    52/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    52 / 232

    Structure de données élémentaires Opérations élémentaires : Initialisation (avec

    déclaration)

    nom_de_la_donnee

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    53/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    53 / 232

    Structure de données élémentaires Opérations élémentaires : Affectation (hors

    déclaration)

    nom_de_la_donnee

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    54/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    54 / 232

    Structure de données élémentaires 

    Opérations élémentaires : Utilisation

    autre_donnee

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    55/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    55 / 232

    Structure de données élémentaires 

    Opérations élémentaires : Ré-affectation

    nom_de_la_donnee

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    56/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    56 / 232

    Les tableaux : spécificités et contraintesLes tableaux permettent de manipuler de nombreusesvariables représentant des valeurs distinctes de mêmenature (type), d’une manière très compacteLors de la déclaration, un type de donnée élémentaireest affecté

     

    au tableau.

    L'accès aux données d'un tableau se fait par le biaisd'un indice dans une dimension propre.La principale caractéristique des tableaux est d'avoir lapossibilité

     

    de représenter un domaine à

     

    une, deux, voire

    trois dimensions.En algorithmique, il est même possible de dépasser cette 3èmedimension, toujours dans un but de simplification de l'écriturealgorithmique.

    En revanche, dans certains langages, cette limite est parfoissituée à 

    deux ou trois.

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    57/232

    g q Dr. Bienvenu FASSINUT-MOMBOT 

    57 / 232

    Les tableaux : Représentation graphique 

    Tableaux

    Deux dimensions

    Une dimension

    Trois dimensions

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    58/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    58 / 232

    Les tableaux : Opérations élémentaires 

    nom_du_tableau [ indice_min . . indice_max ] :TYPE

    nom du tableau

    indice minimum

    Nom attribué au tableau

    déclaré.

    L'indice minimum correspond

    à l'indice du premier élément

    du tableau (la première casemémoire).

    Déclaration

    indice maximum

    L'indice maximum correspond à l'indice dudernier élément du tableau (la dernière case

    mémoire). L'indice minimum et l'indice maximum

    sont toujours séparés par 2 points " . . "

    type élémentaire

    Le type élémentaire (ENTIER,

    REEL, CARACTERE, CHAINE,

    BOOLEEN), est toujours précédédu signe :

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    59/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    59 / 232

    Les tableaux : Opérations élémentaires 

    nom du tableau

    Nom attribué au tableau

    déclaré.

    Initialisation globale (avec déclaration)

    indice maximum

    Les indices minimum et maximumcorrespondent aux indices du premier et du

    dernier (respectivement) élément du tableau.

    nom_du_tableau [ indice_min . . indice_max ]

    { élément1 , élément2 , élément3 , … } :TYPE

    valeurs affectées initialement

    Les valeurs affectées init ialement sont

    notées entre accolades et séparéespar une virgule. Le signe d'affectation

    est inscrit avant la première accolade.

    type élémentaire

    Le type élémentaire (ENTIER,

    REEL, CARACTERE, CHAINE,BOOLEEN), est noté après les

    valeurs affectées.

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    60/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    60 / 232

    Les tableaux : Opérations élémentaires 

    nom du tableau

    Nom attribué au tableau

    déclaré.

     Affectation unitaire (hors déclaration)

    nom_du_tableau [ indice_courant ] valeur 

    indice courant

    valeur 

    L'indice courant est une valeur entière permettant d'adresser la case mémoire pour

    y insérer une valeur. L'indice courant peut être sous la forme d'un chiffre compris

    entre les indices min et max, une variable entière, une opération arithmétiquecomprenant une ou plusieurs variables et/ou des valeurs entières.

    Valeur affectée dans le tableau à l'indice

    courant. L'affectation est indiquée grâce au

    symbole situé à la gauche de la valeur.

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    61/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    61 / 232

    L'indice courant est une valeur entière permettant

    d'adresser la case mémoire pour y l ire la valeur

    affectée. L'indice courant peut être sous la forme

    d'un chiffre compris entre les indices min et max,

    une variable entière, une opération arithmétique

    comprenant une ou plusieurs variables et/ou des

    valeurs entières.

    Les tableaux : Opérations élémentaires 

    nom de la donnée

    Nom d'une donnée de même

    type que la valeur affectée

    issue du tableau.

    Utilisation unitaire

    autre_donnee nom_du_tableau [ indice_courant ]

    nom du tableau

    indice courant

    Nom du tableau dont est extraite la valeur affectée à

    l'autre donnée, grâce à l'adressage de la case

    mémoire obtenue à l'aide de l'indice courant.

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    62/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    62 / 232

    Les tableaux : Opérations élémentaires 

    nom du tableau

    Nom du tableau dont la valeur adressée à

    l'aide de l'indice courant est ré-affectée.

    Ré-affectation unitaire

    nom_du_tableau [ indice_courant ]

    nom_du_tableau [ indice_courant ] + 1

    nom du tableau indice courant

    Nom du tableau

    contenant la valeur

    d'affectation.

    L'indice courant du tableau dont la

    valeur est extraite peut être différent

    de celui de la ré-affectation.

    opération

    Opération lors

    de l'affectation

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    63/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    63 / 232

    Les tableaux : Opérations élémentaires 

    nom_du_tableau [ indice_min1d . . indice_max1d ]

    [ indice_min2d . . indice_max2d ] :TYPE

    nom du tableau

    Nom attribué au tableau

    déclaré.

    Déclaration

    indices première dimension

    Les indices minimum et maximum

    correspondent ici à la première dimension du

    tableau. L'indice minimum et l'indice maximum

    sont toujours séparés par 2 points " . . "

    indices seconde dimension

    Les indices minimum et maximum

    correspondent ici à la secondedimension du tableau.

    type élémentaire

    Le type élémentaire (ENTIER, REEL,

    CARACTERE, CHAINE, BOOLEEN), esttoujours précédé du signe :

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    64/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    64 / 232

    Les tableaux : Opérations élémentaires 

    nom du tableau

    Nom attribué au tableau

    déclaré.

    Initialisation globale (avec déclaration)

    nom_du_tableau [ indice_min1d . . indice_max1d ]

    [ indice_min2d . . indice_max2d ]

    { {élément1 , élément2 , … },{…},…} :TYPE

    indices minimum et maximum

    Les indices minimum et maximum

    correspondent ici à la première dimension du

    tableau pour les premiers crochets, à la

    seconde pour les suivants.

    ouverture première dimensionLa première accolade signif ie l'ouverture de la

    première dimension. Il y a autant d'ouverture

    d'accolades pour la seconde dimension que

    indice_max1d.

    seconde dimensionLes éléments sont ordonnés dans la

    seconde dimension, entre

    accolades.

     Algorithmique et Structure de données

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    65/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    65 / 232

    Les tableaux : Opérations élémentaires 

    nom du tableau

    Nom attribué au tableau

    déclaré.

     Affectation unitaire (hors déclaration)

    nom_du_tableau [ indice_courant1d ]

    [ indice_courant2d ] valeur 

    indice courant première dimension

    L'indice courant est ici l 'indice de la première

    dimension.

    indice courant seconde dimension

    L'indice courant est ic i l 'indice de la seconde dimension.

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    66/232

     Algorithmique et Structure de donnéesD Bi FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    67/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    67 / 232

    Les tableaux : Opérations élémentaires 

    nom_du_tableau [ indice_min1d . . indice_max1d ]

    [ indice_min2d . . indice_max2d ]

    [ indice_min3d . . indice_max3d ] :TYPE

    nom du tableau

    Nom attribué au tableau

    déclaré.

    Déclaration

    indices

    indices troisième dimensionLes indices minimum et maximum

    correspondent ici à la troisièmedimension du tableau.

    type élémentaireLe type élémentaire (ENTIER, REEL,

    CARACTERE, CHAINE, BOOLEEN), esttoujours précédé du signe :

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    68/232

     Algorithmique et Structure de donnéesD Bi FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    69/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    69 / 232

    Les tableaux : Exemple 2 Tableau à deux dimension

    calendrier [ 1..12 ] [ 1..31 ] :CHAINE

    1 2 3 4 5 6 7 8 9 10 11 12

    1

    2

    3

    4

    30

    31

    … …

    première dimension

      s

      e  c  o  n   d  e   d   i  m  e  n  s   i  o  n

     Algorithmique et Structure de donnéesD Bi FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    70/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    70 / 232

    Les tableaux : Exemple 3 calendrier [ 1..12 ] [ 1..31 ] [ 1..5 ] :CHAINE

    première dimension

      s

      e  c  o  n   d  e

       d   i  m  e  n  s   i  o  n

    t r o i s i è m e  d i m e n s i o n 

     Algorithmique et Structure de donnéesDr Bienvenu FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    71/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    71 / 232

    Les types composés ou structures Création de types par le programmeur

    À 

    l’instar des tableaux permettant de regrouper des variables demême type, il existe la possibilité

     

    de regrouper des variables detypes quelconques au sein de types créés par le programmeur enfonction de ses besoins.Exemple: l’objet «

     

    personne

     

    »

     

    du monde réel possède énormement

    de propriétésOn utilise la syntaxe suivante : par convention de nommage, unnom de type composé

     

    doit systématiquement commencer par ‘t _ ’STRUCTURESTRUCTURE t _nom_du_t ypet _nom_du_t ype

    nom_champ_1 : t ype_champ_1nom_champ_1 : t ype_champ_1

    ……nom_champ_nnom_champ_n :: t ype_champ_nt ype_champ_n

    Utilisation et Accès aux champsVARVAR nom_denom_de var i abl e :var i abl e : t _nom_du_t ypet _nom_du_t ype / / d/ / dééf i ni t i on de VARf i ni t i on de VARnom_de_var i abl enom_de_var i abl e.. nom_du_champnom_du_champ / /acc/ /accèèss àà un champun champ

     Algorithmique et Structure de donnéesDr Bienvenu FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    72/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    72 / 232

    Les types composés ou structures Création de types par le programmeur

    Opérateur d’affectation•

     

    C’est le seul opérateur que l’ordinateur peut appliquer auxstructures car il s’agit de recopier les champs d’une variable

    de type composé 

    dans les mêmes champs d’une autre variabledu même type.Structures contenant des tableaux

    • 

    Lorsqu’un champ est de type tableau, il est nécessaire de

    stocker sa taille utile dans un champ de la structureStructures définies à

     

    l’aide de structures•

     

    Un champ d’une structure peut être d’un type composé, c’est-

    à-dire une structure définie au préalable

     Algorithmique et Structure de donnéesDr Bienvenu FASSINUT MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    73/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    73 / 232

    Les types composés ou structures Pointeurs vers les structures

    Soit t_comun type composé 

    (une structure). Définir un pointeur ptrvers un contenu de type t_coms’écrit comme suite : VAR VAR **pt rptr :: t_comt_com

    Son initialisation est la suivanteSon initialisation est la suivanteRESERVER(RESERVER( pt rpt r ))

    Il est alors possible dIl est alors possible d’’accaccééderder àà 

    ses champsses champs àà 

    ll’’aide laide l’’une des deuxune des deuxnotationsnotations ééquivalentes ciquivalentes ci--dessousdessous( *( *pt rpt r ) .) . nom_du_champnom_du_champ nom_du_champnom_du_champ

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    74/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    74 / 232

    Pause-réflexion sur cette partie

     Avez-vous des questions ?

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    75/232

    Travaux Dirigés (TD) 

     Algorithmique et Structure de donnéesDr Bienvenu FASSINUT-MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    76/232

     Dr. Bienvenu FASSINUT-MOMBOT 

    76 / 232

    TD 1 : Structure de contrôle Exercice

     

    1 : SI..ALORS..FINSIEnoncé

     

    : Un élève

     

    entre la valeur

     

    d'une

     

    moyenne

     

    pour un examen, le

    programme 

    indique 

    la réussite 

    s'il 

    obtient 

    une 

    note supérieure 

    ou 

    égale à12.Exercice

     

    2 : SI..ALORS..SINON..FINSIEnoncé

     

    : En fonction du prix d'un produit HT et de la catégorie decelui-ci (luxe: TVA=19,6 % ; autre: TVA=5,5 %), le programme calcule savaleur TTC.Exercice

     

    3 : CAS..PARMI..PARDEFAUT..FINCASPARMIEnoncé

     

    : En fonction du numéro du mois choisi par l'utilisateur, leprogramme affiche le nombre de jours correspondant (les annéesbissextiles ne sont pas prises en compte).

    Exercice 

    4 : TANTQUE..FAIRE..; REPETER..TANTQUE/JUSQU’A..;Enoncé

     

    : Le programme affiche systématiquement chaque mot quel'utilisateur frappe jusqu'à

     

    ce que le mot "fin" soit saisi. Le programmes'arrête à

     

    ce moment-là, le mot “fin”

     

    étant le dernier à

     

    apparaître surl’écran.

     Algorithmique et Structure de donnéesDr Bienvenu FASSINUT-MOMBOT

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    77/232

     Dr. Bienvenu FASSINUT MOMBOT 

    77 / 232

    TD 1 : Structure de contrôle Exercice

     

    1 résolu

     

    : SI..ALORS..FINSIEnoncé

     

    : Un élève

     

    entre la valeur

     

    d'une

     

    moyenne

     

    pour un examen, le programme

    indique 

    la réussite 

    s'il 

    obtient 

    une 

    note supérieure 

    ou 

    égale 

    à 

    12. ALGORITHME: examen/ / BUT : dét er mi ne l ' obt ent i on d' un examen/ / ENTREE : un ent i er sai s i par l ’ ut i l i sat eur/ / SORTI E : l a val eur bool éenne i ndi quant l e r ésul t at

     VAR:moyenne :REELexamen = 12 ) / / si moyenne est sup. ou ég. à 12 ALORS / / al or s cet t e condi t i on est vr ai e

    examen

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    78/232

     Dr. Bienvenu FASSINUT MOMBOT 

    78 / 232

    TD 1 : Structure de contrôle Exercice

     

    2 résolu

     

    : SI..ALORS..SINON..FINSIEnoncé

     

    : En fonction du prix d'un produit HT et de la catégorie de celui-ci (luxe:

    TVA=19,6 % ; autre: TVA=5,5 %), le programme calcule sa valeur TTC. ALGORITHME: pr i x_t t cCONST:

    t va_l uxe

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    79/232

     Dr. Bienvenu FASSINUT MOMBOT 

    79 / 232

    TD 1 : Structure de contrôle Exercice

     

    3 résolu

     

    : CAS..PARMI..PARDEFAUT..FINCASPARMIEnoncé

     

    : En fonction du numéro du mois choisi par l'utilisateur, le programme

    affiche le nombre de jours correspondant (les années bissextiles ne sont pasprises en compte). ALGORITHME: nombr e_j our s VAR:

    moi s :CHAINE

    nbr e_j our s :ENTIER DEBUT

    LI RE( moi s )CAS( moi s ) PARMI:

    CAS1: "Févr i er " nbr e_j our s

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    80/232

     Dr. Bienvenu FASSINUT MOMBOT 

    80 / 232

    TD 1 : Structure de contrôle Exercice

     

    4 résolu

     

    : TANTQUE..FAIRE..; REPETER..TANTQUE/JUSQU’A..;Enoncé

     

    : Le programme affiche systématiquement chaque mot que l'utilisateur

    frappe jusqu'à 

    ce que le mot "fin" soit saisi. Le programme s'arrête à 

    ce moment-là, le mot “fin” 

    étant le dernier à 

    apparaître sur l’écran. ALGORITHME: mot s_t apes2/ / af f i chage du mot t apé dés l or s que cel ui - ci/ / n' est pas l e mot "f i n"

     VAR:mot :CHAINE

    DEBUTREPETER 

    LI RE( mot )ECRI RE( mot )

    TANTQUE( mot " f i n" )FIN

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    81/232

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    82/232

    Preuve et Complexité Algorithmique 

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    83/232

    83 / 232

    Notion de qualité d’un algorithme Il existe plusieurs algorithmes pour résoudre un mêmeproblème

    Certains sont plus faciles que d’autres à 

    programmer...Certains sont plus efficace que d’autres…

    Choix :

    du plus facile à 

    comprendre, à 

    coder et à 

    debuggerdu plus rapide et utilisant efficacement les ressources2 cas typiques qui nécessitent des algorithmes efficaces:

    taille du problème énorme

    code exécuter un grand nombre de foisRecherche d'algorithme plus efficace et si possiblesimple

    Analyse empirique d'un algorithme

    Analyse mathématique d'un algorithme

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    84/232

    84 / 232

    Notion de qualité d’un algorithme Analyse empirique d'un algorithme

    Soit 2 algorithmes réalisant la même tâche• 

    compare temps d'exécution sur des entrées typiques•

     

    3 s ou 30 s d'attente pour l'utilisateur feront une grandedifférence

    • 

    permet aussi de valider une analyse mathématiqueSi le temps d'exécution devient trop long, l'analyse

     

    mathématique s'impose

    • 

    attente pouvant être de l'ordre de l'heure ou du jourNécessite l'implémentation (écriture en langagemachine, exemple langage C/C++) d'une premièreversion de l'algorithme !!!

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    85/232

    85 / 232

    Notion de qualité d’un algorithme Analyse mathématique d'un algorithme

    L'analyse mathématique d'un algorithme peut-être complexeUne spécialité

     

    en informatiqueParamètres hors de portée du programmeur :

    • 

    temps d'exécution d'une instruction•

     

    ressources partagées

    • 

    dépendance des données en entrée• 

    certains algorithmes sont tout simplement complexes et il n'y a pasde résultat mathématique pour les décrire

    Néanmoins il est possible de prédire

    • 

    la performance d'un algorithme• 

    si un algorithme est meilleur qu'un autrePremières étapes:

    • 

    identifier les opérations abstraites de l'algorithmes–

     

    exemple de la triple boucle, le nombre d'exécutions de l'instruction :count++• Ne pas tenir compte du temps en milliseconde

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    86/232

    86 / 232

    Notion de complexité d’un algorithme La fonction de complexité

     

    d’un algorithme fait correspondre pourune taille donnée le nombre maximum d’instructions élémentaires qui

    lui est nécessaire pour résoudre une instance quelconque de cettetaille.Soit c(x) = Nombre d’instructions élémentaires de l’algorithme A surl’entrée x alors le nombre maximum d’instructions élémentaires s’écrit

    C(n) = max|x| de taille n c(x), où 

    |x| est la taille de x

    En d’autres termes:La complexité 

    d’un algorithme

     

    est une estimation du nombre d’opérationsde base

     

    ou d’opérations élémentaires 

    effectuées par l’algorithme enfonction de la taille des données en entrée de l’algorithme.

    On ne s’intéresse pas en général à 

    la complexité 

    exacte, mais à 

    sonordre de grandeur, c-à-d., on s’intéresse plutôt à 

    C(n) lorsque n est"grand".On parle d’ordre de grandeur asymptotique

     

    ou complexité 

    asymptotique.La complexité

     

    d’un algorithme est une mesure inhérente à 

    l’algorithme 

    (la méthode), elle ne dépend pas de la machine surlaquelle on l’implante.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    87/232

    87 / 232

    Notion de complexité : Type de complexité L’algorithme A a une complexité

     

    linéaire 

    si, lorsque n est grand, C(n)est proportionnelle à

     

    n.

    Mathématiquement, il faut qu’il existe une constante a  

    0 telle que :

    Terminologie

     

    (a, b sont des constantes, a > 0 et b > 1) :

    Pour une fonction f (n) telle que lim 

    supn∞ 

    C(n)/f(n)=a :f(n) type de complexité

    1 constante : instructions exécutées un nombre limité

     

    de fois;

    n linéairen2 quadratique : utilisable sur de petits problèmes;bn exponentielle

    logb

     

    n logarithmique : division du problème pour le résoudrenb polynomiale

    limsup ( ) /n

    C n n a

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    88/232

    88 / 232

    Notion de complexité : Type de complexité Différence entre complexité

     

    de l’ordre de 2n/2 

    et de n6

    La différence est énorme ! Si l’on suppose qu’un ordinateur peutexécuter une instruction élémentaire en 10-9 

    s (1 GHz), soit 1milliard d’instructions par seconde, alors :

    n (bits) temps pour 2n/2 temps pour n632 232/2

     

    x 10-9 

     

    65 μs 326 

    x 10-9 

     

    1 s

    64 264/2

     

    x 10-9

     

     

    4 s 646

     

    x 10-9

     

     

    1 mn 8 s

    128 2128/2 

    x 10-9 

    ≈ 

    584 ans 1286 

    x 10-9 

    ≈ 

    1h13256 2256/2

     

    x 10-9 

     

    1011 

    Mans 2566 

    x 10-9 

     

    3,5 jours512 2512/2

     

    x 10-9 

     

    1052 

    Mans 5126 

    x 10-9 

     

    6,8 mois

    1024 21024/2

     

    x 10-9

     

    ≈ 

    10128

     

    Mans 10246

     

    x 10-9

     

    ≈ 

    36 ans

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    89/232

    89 / 232

    Notion de complexité : Type de complexité Dans la pratique, on cherche bien sûr des algorithmes de complexitéla plus faible possible.

    Les complexités exponentielles sont donc à 

    éviter.Parfois, ce n’est pas possible ! Voici un problème de complexité 

    doublement exponentielle, où 

    tout algorithme a une complexité

    Données (entrée) : 

    un entier x (écrit en base 10).Résultats (sortie) :

     

    tous les entiers de x chiffres.

     y a 10x 

    entiers de x chiffres, donc la complexité 

    est au moins 10x 

    .Or, la taille de l’entrée est ici de n ≈

     

    log10 

    x. Autrement dit x ≈ 

    10n.La complexité 

    de ce problème est au moinsContrairement à

     

    ce qu’on pourrait croire, il existe des problèmes quine possèdent pas d’algorithme pour les résoudre, quelque soit leur

    complexité 

    !On parle de problème indécidable.

    10( ) 10n

    C n  

    1010 10n x

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    90/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    91/232

    91 / 232

    Notion de complexité : Notation en O() On dira d’une fonction f(n) qu’elle est en O(g(n)) s’il existe deuxconstantes c > 0 et n0

     

     

    0 telles que |f (n)| ≤

     

    c x |g(n)| pour toutes les

    valeurs de n ≥ 

    n0 

    , où 

    n est le nombre d'éléments à 

    traiter parl'algorithmesi n < n0

     

    on ne connaît pas le comportement de l'algorithmeCette notation permet de :

    limiter l'erreur quand on ignore les termes plus petits dans une 

    formulemathématiquelimiter l'erreur quand on ignore certaines parties du programme quiprennent peut de tempsclasser les algorithmes en fonction de leur comportement asymptotique

    (avec n grand)• 

    On parle d’ordre de grandeur 

    et de complexité 

    asymptotique.L’idée est qu’il ne sert à

     

    rien de calculer la complexité 

    d’unalgorithme à

     

    l’unité 

    près.Par exemple, sur une machine à

     

    1 GHz et pour n = 109, l’exécution de n ou

    n + 1 instructions élémentaires prendrons 1 s dans les deux cas, ladifférence étant en pratique indiscernable !

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    92/232

    92 / 232

    Notion de complexité : Notation en O() Exemple

    si la complexité 

    de l’algorithme A est CA 

    (n) = 3n - 

    2 et 

    celle de l’algorithme B est CB 

    (n) = 1/2n2 

    + √n - 

    1, alors on noteraCA

     

    (n) = O(n) et CB 

    (n) = O(n2).•

     

    C’est une façon de dire que la complexité 

    de A est linéaire et celle deB quadratique.

    Attention!C(n) = O(g(n)) est une notation!Si C1

     

    (n) = O(n) et C2 

    (n) = O(n), alors il est faux de dire que C1 

    (n) =

    C2 

    (n) ou encore que C1 

    (n) – 

    C2 

    (n) = 0 ! 

    En effet, peut-être que C1 

    (n) = 3n et C2 

    (n) = n + 2√n.Mais il est correct d’écrire : C1

     

    (n) + C2 

    (n) = O(n).En effet, C1

     

    (n) + C2 

    (n) = 4n + 2√n ≤

     

    5n pour tout n > 4

     (car 2√n ≤ 

    n 2 ≤ √n 4 ≤ 

    n) où 

    n0 

    = 4 c = 5 dans la définition dela notation grand O.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    93/232

    93 / 232

    Notion de complexité : principe de calcul Déterminer la complexité

     

    algorithmique c’est "compter" le nombred’instructions qui seront exécutées ;

    Pour une instruction élémentaire le coût est considéré 

    unitaire(constant)elle est indépendant de la taille de ses opérandes.

    Deux expressions sont supposées équivalentes du point de vue ducoût car proportionnelles.Pour une instruction conditionnelle, en l’absence d’informationscomplémentaires, on choisit le nombre maximum d’instructionsauquel s’ajoute l’évaluation de l’expression booléenne.

    Pour une instruction itérative, en l’absence d’informationscomplémentaires, on multiplie le nombre d’instructions internes à 

    laboucle au nombre de fois que cette boucle sera exécutée.Pour une instruction itérative conditionnelle, il faut évaluer

     le cas au pire.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    94/232

    94 / 232

    Notion de complexité Temps d’exécution

    Comme une instruction élémentaire prend un temps constant(disons en secondes), indépendant des opérandes et donc de lataille des entrées, la complexité

     

    peut donner une idée du tempsd’exécution du programme T qui s’exécuterait sur une entrée detaille n

    temps(T, n) ≤ 

    a · 

    C(n)

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    95/232

    95 / 232

    Notion de Récursivité : Définition La récursivité

    Concept fondamental :•

     

    en mathématique :–

     

    relation de récurrence :n! = n(n - 1)! pour n >= 1 avec 0! = 1 

    • 

    en informatique :– 

    fonctions récursives.Principe en algorithmique

    Qui s’appelle lui-même.

    Appels de plus en plus « 

    simples 

    ».• 

    Évité 

    les Récursivités croisées : Un sous-programme SP1 appelle unsous-programme SP2 qui rappelle le sous-programme SP1.

    Solution directe pour le dernier appel.Respect de la condition d’arrêt.

    • 

    Existence d’une condition de sortie de la boucle récursive.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    96/232

    96 / 232

    Notion de Récursivité : Exemple Instruction répétitive et récursivité

    Calcul non récursif (itérative) de la factorielle/ / ALGORI THME Cal cul non r ecur si f ( i t ér at i ve) de l a f act or i el l eFONCTION: f act _non_r ecur si f ( n : ENTI ER) : ENTI ER VAR:

    compt eur

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    97/232

    97 / 232

    Notion de Récursivité : Exemple Instruction répétitive et récursivité

    Calcul récursif de la factorielle/ / ALGORI THME Cal cul r ecur si f de l a f act or i el l eFONCTION: f act _r ecur si f ( n : ENTI ER) : ENTI ER VAR:

    r esul t at : ENTI ERDEBUTFONCTION

    SI ( n = 0 ) ALORS

    r esul t at

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    98/232

    98 / 232

    Notion de Récursivité : Intérêts Intérêts

    Technique efficace de simplification de l'écriture d'unalgorithme de résolution d'un problème.L'algorithme récursif est défini (et élaboré) en fonction de lui-même.

    Certaines structures de données peuvent contenir une mêmestructure en interne•

     

    un répertoire d'ordinateur est composé 

    de fichiers et de dossiers,ces dossiers peuvent contenir d'autres fichiers et dossiers,quasiment à

     

    l'infini….

    Un problème, dans certains cas, peut se ramener au mêmeproblème de taille inférieure et ainsi de suite jusqu'à 

    obtenir unproblème élémentaire. Le concept de récursivité

     

    estparfaitement adapté

     

    avec cette catégorie de problèmes.

    • 

    Par exemple, pour le calcul du factorielle de N : N !

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    99/232

    99 / 232

    Notion de Récursivité : Contraintes Contraintes

    S’assurer que la fonction est complètement définie sur tout sondomaine d’application.Etre certain que l’algorithme aboutira sur un cas connu :

     

    le cas d’arrêt de la récursivité.

    Contrôler que le contexte d'utilisation est parfaitement adaptéaux inconvénients de la récursivité 

    en informatique :•

     

    besoins en ressources systèmes (plus particulièrement en gestion del'espace mémoire) ;

    • 

    les variables temporaires du programme ou de la fonction quiprovoque l'appel sont sauvegardées temporairement dans unestructure de type "pile" (vérifier la taille de la pile et le type de lapile : allocation statique ou dynamique).

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    100/232

    100 / 232

    (fact(3)) Exemple, Calcul de la factorielle fact()appel

    2

    3

    2

    6

    1 1

    3

    2

    1

    0

    3 x fact(3-1)

    2 x fact(2-1)

    1 x fact(1-1)

    1

    nappelappelappel

    3 x 2

    fact(3)

    2 x 1

    fact(2)

    1 x 1

    fact(1)

    fact(0)

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    101/232

    101 / 232

    Exemple, Calcul de la factorielle (fact(3)) Gestion de la pile en récursivité

    Une pile d’exécution est utilisée lors des appels récursifs :

    EMPILER( 3 )

    EMPILER( 2 )EMPILER( 1 )

    DEPILER()DEPILER()DEPILER() 3

    2

    1

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    102/232

    102 / 232

    Et il y a aussi… Fibonacci Exemple :

     

    Un robot peut avancer par des pas de 1 ou 2

    mètres.Calculer le nombre de façons différentes

    Distance Suite de pas Nb depossibilités

    1 1 1

    2 1,1 ou 2 2

    3 1, 1, 1 ou 1, 2 ou 2, 1 3

    4 1,1,1,1 ou 1,1,2 ou 1,2,1 ou 2,1,1 ou 2,2 5

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    103/232

    103 / 232

    Et il y a aussi… Fibonacci Pas(n): Nombre depossibilités pourparcourir n mètres.Pas(1) = 1, Pas(2) = 2; Pour n>2:

    Si premier pas = 1 mètres,il reste n-1 mètres

     

    ->Pas(n-1) Si premier pas = 2 mètres,il reste n-2 mètres

     

    ->Pas(n-2) 

    Donc, Pas(n) =

    Pas(n-1)+Pas(n-2) 

    Entrée: n

    Sortie: Pas(n)Procédure Pas (n)

    Si n=1 ou n=2 alors

    Retourne n

    Retourne Pas(n-1) + Pas(n-2)

    Fin Pas

    Séquence de Fibonacci:

    f 1 = 1

    f 2 = 2

    f n = f n-1 + f n-2 pour n>2

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    104/232

    104 / 232

    "Dérécursiver" dérécursiver

     

    =transformer un algorithme récursif en algorithme itératif c-à-d.un algorithme équivalent ne contenant pas d’appels récursifsdiminuer la taille de la pile

    pour des raisons d'efficacité

     

    (économie de temps et de

    mémoire) « 

    on 

    » 

    peut être amené 

    à 

    "dérécursiver"certains algorithmes«

     

    on 

    » 

    : le plus souvent les compilateursméthodes générales pour supprimer :

    un appel récursif terminal 

    :•

     

    utilise une boucle tant queun appel récursif non terminal

     

    :

    • 

    utilise une pile

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    105/232

    105 / 232

    "Dérécursiver"Remarques

    Les programmes itératifs sont souvent plus efficaces,mais les programmes récursifs sont plus faciles à écrire.

    Les compilateurs savent, la plupart du temps,reconnaître les appels récursifs terminaux, et ceux-cin’engendrent pas de surcoût par rapport à

     

    la version

    itérative du même programme.Il est toujours possible de dérécursiver 

    un algorithmerécursif.

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    106/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    107/232

    107 / 232

    Récursivité : Bilan un algorithme récursif peut être transformé

     

    en algorithme itératif(ne le faire que si on voit que l'algorithme "patine" ou besoin

    impérieux)un programme itératif n'est pas toujours plus efficace qu'unprogramme récursifla récursivité

     

    est centraleen informatique dite théorique pour distinguer les problèmes (problèmescalculables) qu'une machine peut résoudre en temps finien programmation pour traiter de manière simple de nombreuxproblèmes sur les arbres binaires (recherche, tri etc.)

    Un algorithme itératif n’est pas forcément plus rapide qu’unalgorithme récursifCertains algorithmes sont mieux traités par des algorithmesitératifs

    D’autres sont mieux traités par des algorithmes récursifs

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    108/232

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    109/232

    109 / 232

    Pause-réflexion sur cette partie

     Avez-vous des questions ?

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    110/232

    Travaux Dirigés (TD) 

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    111/232

    111 / 232

    TD 2 : Complexité algorithmique Exercice

     

    1Enoncé

     

    : Écrire

     

    une fonction en langage algorithmique qui prend en paramètre un entier i et calcule la valeuru(i ) définie par récurrence par :

    Évaluer la complexité

     

    de l’algorithme proposéExercice 2

    Enoncé

     

    :

     

    soit la fonction

    a) Écrire une fonction en langage algorithmique qui prend en paramètre un entier x et calcule f(x) .b) Écrire une fonction en langage algorithmique qui prend en paramètre un entier n et calcule la somme :

    On arrêtera la somme lorsque la valeur f calculée est nulle.c) Écrire une fonction en langage algorithmique qui prend en paramètre un entier n et calcule la somme :

    Dans cette somme, les divisions sont des divisions euclidiennes. On arrêtera la somme lorsque la valeur fcalculée est nulle.d) Écrire une fonction en langage algorithmique qui prend en paramètre un entier n et calcule la somme :

    Dans cette somme, les divisions sont des divisions euclidiennes. On arrêtera la somme lorsque la valeur fcalculée est nulle.

    0 1

    1 1

    1; 2

    3 pour 1 j j j

    u u

    u u u j

    1 2 3 4nS f n f n f n f n f n

                    2 2 2 22 3 4 5n n n n nT f n f f f f  

      2 4 8 16

    nn n n nU f n f f f f  

    2

    3 1 si 1

      0 sinon

     x x x f x

       

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    112/232

    Structures de données séquentielles(ou linéaires) 

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    113/232

    113 / 232

    Structures de données linéaires 

    Voici les parties que nousallons aborder

    Les listes

    Les piles.

    Les files.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    114/232

    114 / 232

    Les listes : Présentation Définition

    Une liste est une structure de données linéaire correspondant à

     

    une

    suite d’éléments pour laquelle les opérations élémentaires ne sont paslimitées à 

    l’ajout et au retrait d'éléments.Les éléments ne sont pas indexés dans la liste, mais pour chaque élément(sauf le dernier) on sait où

     

    se trouve l’élément suivant

    Spécificités et contraintes d'utilisationOn ne peut accéder à 

    un élément de la liste qu’en passant par le premierélément et en parcourant tous les éléments de la liste jusqu’à

     

    ce qu’onatteigne l’élément recherché.La notion de liste se distingue des autres structures linéaires par le faitque ce n'est ni un indice, ni un pointeur unique qui permet d'accéder auxdonnées, mais autant de pointeurs que de données, voire le double.Le concept fondamental qui permet d'utiliser les listes de cette

     

    façonest un concept de chaînage des données, concept de gestion dynamique

    très courant en informatique.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    115/232

    115 / 232

    Les listes simplement chaînées Spécificités

    Chaque

     

    case mémoire

     

    est

     

    composée

     

    de deux

     

    champs. Le premier, à

     gauche, reçoit 

    la donnée 

    (appelé 

    "clé") et le second, à 

    droite, correspondau pointeur 

    vers 

    la prochaine 

    case mémoire. Le pointeur 

    peut 

    être 

    NULLsi

     

    la case mémoire 

    n'existe 

    pas (fin de la chaîne).Rôle d’une liste simplement chaînée

    Le chaînage simple est une structure simple à 

    accès séquentiel et orienté(à 

    cause de la gestion des "pointeurs vers…" ).La capacité

     

    mémoire est réduite au minimum. La grande flexibilité 

    obtenue à 

    l'aide des pointeurs permet d'intervenir sur la liste aisément.En revanche, la recherche nécessite un balayage de tous les éléments dela liste à

     

    partir du premier, ce qui représente un processus relativementlong lorsque la liste l'est aussi.

    L I S T E

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    116/232

    116 / 232

    Les listes doublement chaînées Spécificités

    Chaque

     

    case mémoire

     

    est

     

    composée

     

    de trois

     

    champs. Le champ central

    reçoit 

    la donnée 

    (appelé 

    "clé"). Le premier, à 

    gauche, correspond à 

    unpointeur 

    vers 

    la case mémoire 

    précédente 

    et le troisième, à 

    droite 

    reçoitle pointeur

     

    vers 

    la prochaine 

    case mémoire. Le pointeur 

    peut 

    être 

    NULLsi

     

    la case mémoire 

    n'existe 

    pas (début ou 

    fin de la chaîne).Rôle d’une liste doublement chaînée

    Malgré 

    un besoin, en capacité 

    mémoire, supérieur à 

    un chaînage simple,(deux fois plus de pointeurs), la recherche, (comme les déplacementssont possibles dans les deux sens), est donc plus rapide.Dans le cas d'une rupture de lien, la chaîne peut être éventuellementreconstituée, alors que pour un chaînage simple, la réparation est plus

    difficile.On obtient ainsi, au détriment d'une optimisation de la mémoire, uneoptimisation de la gestion du contenu de la liste et une sécurité

     

    accrue.

    L I S T E

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    117/232

    117 / 232

    Les listes : Opérations élémentaires Trois opérations élémentaires ont la possibilité

     

    de

    modifier la structure de la liste : l’ajout, l'insertion et leretrait :AJOUTER : opération d’ajout en queue de liste le nouvel élémentINSERER : opération d'insertion à

     

    la position courante et décalel'ancien élément pointé

     

    comme élément suivantRETIRER : opération de retrait de l'élément courant

    D'autres

     

    opérations

     

    évoluées

     

    permettent

     

    d'effectuer

     des opérations 

    sur 

    la liste.

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    118/232

    118 / 232

    Les listes : Primitives associées Déclaration :LISTE: nom_liste : TYPE_ELEMENT_DE_LA_LISTE

    Fonctions élémentaires : AJOUTER(nom_liste,element) //ajout en queue

    INSERER(nom_liste,element) //insertion courante

    element

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    119/232

    119 / 232

    Les listes : Exemple (1/2) Gestion d'une course (quinté) avec une liste

    L’utilisation d’une liste est parfaitement adaptée dans le

    traitement d'informations sujettes à 

    modification, mise en ordre,suppression, …

    AJOUTER (l_quinte,"1")AJOUTER (l_quinte,"4")AJOUTER (l_quinte,"5")AJOUTER (l_quinte,"7")

    AJOUTER (l_quinte,"10")AJOUTER (l_quinte,"15")AJOUTER (l_quinte,"23")AJOUTER (l_quinte,"25")

    1

    4

    7

    23 25

    5

    10

    15

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    120/232

    120 / 232

    Les listes : Exemple (1/2) Gestion d'une course (quinté) avec une liste

    Les chevaux arrivés au-delà 

    de la 5ème place sont retirés de laliste, …

    RECHERCHER(l_quinte,"10")

    RETIRER(l_quinte)RECHERCHER(l_quinte,"4")RETIRER(l_quinte)

    RECHERCHER(l_quinte,"25")RETIRER(l_quinte)

    1

    4

    7

    23 25

    5

    10

    15

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    121/232

    121 / 232

    Les listes : Exemple (1/2) Gestion d'une course (quinté) avec une liste

    Les chevaux sont arrivés dans l'ordre suivant, un

    algorithme prend en chargela réorganisation de la liste,en mémoire, cela n'a d'incidenceque sur le second champs

    "pointeur vers …".premier : ("23")second : ("1")

    troisième : ("7")quatrième : ("15")cinquième : ("5")

    1

    7

    23

    5

    15

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    122/232

    122 / 232

    Les listes : Exemple (1/2) Gestion d'une course (quinté) avec une liste

    Les chevaux sont arrivés dans l'ordre suivant, un

    algorithme prend en chargela réorganisation de la liste,en mémoire, cela n'a d'incidenceque sur le second champs

    "pointeur vers …".premier : ("23")second : ("1")

    troisième : ("7")quatrième : ("15")cinquième : ("5")APPLICATION

    1

    7

    23

    5

    15

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    123/232

    123 / 232

    Les listes : Exemple (2/2) Gestion d'une course (quinté) avec une liste doublement

    chaînée, implémentée à  l'aide de tableaux :Liste des chevaux : "1", "4", "5", "7", "10", "15", "23", "25".Retrait des chevaux arrivés au-delà

     

    de la 5ème place.L'ordre d'arrivée est le suivant : "23", "1", "7", "15", "5".

    suivant [1..8]

    chevaux [1..8]

    precedent [1..8]

    4

    1

    7

    4

    /

    5

    6

    6

    7

    1

    10

    3

    15

    4

    1

    23

    /

    25

     Algorithmique et Structure de données Dr. Bienvenu FASSINUT-MOMBOT 

  • 8/16/2019 COURSAlgorithmique Et Structure de Donnees USTM

    124/232

    124 / 232

    Les listes : Mise en œuvre Réaliser la structure de données LISTE consiste à

    1. 

    définir le type de données (que l’on nomme ici ELEMENT) quipeut être soit•

     

    un objet (stockage direct)•