Ancien syllabus du cours

download Ancien syllabus du cours

of 259

  • date post

    05-Jan-2017
  • Category

    Documents

  • view

    217
  • download

    2

Embed Size (px)

Transcript of Ancien syllabus du cours

  • Programmation

    Thierry Massart

    Nadjet Benseba Emmanuel DallOlio Martin De WulfGilles Geeraerts Joel Goossens Christophe Macq

    Olivier MarkowitchPatrick Meyer

    Universite Libre de BruxellesFacultes des Sciences et des Sciences Appliquees

    Premiere annee de Bachelier en InformatiquePremiere annee de Bachelier en Sciences de lingenieur

    Mai 2009

  • ii

  • iii

    Avant-propos

    Le but de ce cours et des exercices associes est de donner aux etudiants une connais-sance active de lalgorithmique de base et de la programmation structuree. Le for-malisme utilise pour decrire les programmes developpes dans ce cours est le langagede programmation C++.

    Notons que, bien quune certaine partie du langage C++ soit etudiee, ce cours nestpas simplement un manuel de programmation C++. De nombreuses parties de C++ny sont dailleurs pas etudiees.

    Les concepts de base C++ utilises dans le cadre de ce cours pour ecrire un algo-rithme ou un programme C++ resolvant un probleme algorithmique donne sont peunombreux.

    Le cours theorique sert a expliquer ces concepts.

    Il ne vous est pas seulement demande de comprendre ces notions de base, maisegalement de les assimiler et de pouvoir les utiliser pour concevoir et dans unemoindre mesure analyser, des programmes C++ resolvant les problemes poses.

    La resolution de nombreux exercices ainsi que les travaux a effectuer vous permet-tront darriver a une connaissance de lalgorithmique beaucoup plus profonde, requiseau terme de ce cours.

    Cette matiere doit donc etre pratiquee de facon constante a la fois pendant et endehors des seances dexercices sur papier et sur machine. Une etude entierementcomprise dans une courte periode de temps ne peut pas aboutir au but final requis.

    A propos des exercices A la fin de certains chapitres de ce syllabus, on trouverades exercices qui seront exploites lors des seances de travaux pratiques.

    Ces exercices ont pour but de familiariser les etudiants avec les concepts theoriquesetudies au cours. Ils ont egalement ete penses dans le but de permettre aux etudiantsdacquerir de bonnes pratiques de programmation ; de celles qui permettent decriredes programmes efficaces et clairs.

  • iv

    Tout au long du texte, certains exercices, auxquels les etudiants devraient accorderune importance toute particuliere, ont ete selectionnes. Ils sont signales par la miseen page suivante :

    ! b: 10 min. !

    Enonce de lexercice

    Ces exercices ont ete juges particulierement importants, car ils resument a eux seulstout un pan de matiere precedemment etudie. Leur niveau a egalement ete juge apeu pres egal a celui des examens ou interrogations.

    Nous conseillons donc fortement aux etudiants dessayer de resoudre ces exercices> : cela leur permettra de jauger aisement leur niveau.Le temps normalement necessaire a la resolution du probleme est egalement donnea titre indicatif (il est signale par b). Les etudiants devraient etre capable de re-soudre les problemes poses endeans ce laps de temps. Dans le cas contraire, nousleur conseillons fortement de se mettre a jour, de consulter un assistant, la guidance,le professeur. . .

  • v

  • vi

  • Table des matieres

    1 Introduction 1

    2 Concepts de base 3

    2.1 Notions fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.2 Variables et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.3 Lecture et ecriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2.4 Type des entites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.5 Les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3 Les instructions 23

    3.1 Structuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.2 Linstruction simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    3.3 Linstruction composee ou bloc . . . . . . . . . . . . . . . . . . . . . 24

    3.4 Les conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.5 Linstruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    3.6 Linstruction switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    3.7 Linstruction while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    vii

  • viii TABLE DES MATIERES

    3.8 Linstruction do . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.9 La boucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    3.10 Blocs et declaration dentites . . . . . . . . . . . . . . . . . . . . . . . 44

    3.11 Decomposition dun probleme . . . . . . . . . . . . . . . . . . . . . . 48

    3.12 Exercices : Instructions elementaires . . . . . . . . . . . . . . . . . . . 53

    3.13 Exercices : Structures iteratives . . . . . . . . . . . . . . . . . . . . . 58

    3.13.1 Boucles simples . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    3.13.2 Boucles imbriquees . . . . . . . . . . . . . . . . . . . . . . . . 65

    4 Les fonctions 67

    4.1 Les fonctions qui retournent une valeur . . . . . . . . . . . . . . . . . 68

    4.2 Les fonctions qui ne retournent pas une valeur . . . . . . . . . . . . . 71

    4.3 Execution du module appele . . . . . . . . . . . . . . . . . . . . . . . 72

    4.4 Exercices : Les Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . 82

    5 Definition de types 89

    5.1 Les types enumeres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

    5.2 Les pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

    5.3 Les references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

    5.4 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

    5.5 typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

    5.6 Definition generale des tableaux . . . . . . . . . . . . . . . . . . . . . 102

    6 Exemples dutilisation de tableaux 105

  • TABLE DES MATIERES ix

    6.1 La lecture et lecriture dun vecteur . . . . . . . . . . . . . . . . . . . 105

    6.2 La recherche du minimum . . . . . . . . . . . . . . . . . . . . . . . . 108

    6.3 Limage miroir dun vecteur . . . . . . . . . . . . . . . . . . . . . . . 109

    6.4 Le glissement circulaire gauche . . . . . . . . . . . . . . . . . . . . . . 112

    6.5 La recherche dun element . . . . . . . . . . . . . . . . . . . . . . . . 113

    6.6 Le produit de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 117

    6.7 Exercices : Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . 120

    6.7.1 Tableaux Simples . . . . . . . . . . . . . . . . . . . . . . . . . 120

    6.7.2 Tableaux a Deux Dimensions : les Matrices . . . . . . . . . . . 122

    6.8 Exercices : Manipulations de caracteres . . . . . . . . . . . . . . . . . 123

    7 Decoupe dun programme C++ 127

    7.1 Definitions et declarations . . . . . . . . . . . . . . . . . . . . . . . . 127

    7.2 Decoupe dun programme . . . . . . . . . . . . . . . . . . . . . . . . 129

    8 Efficacite dun algorithme 133

    8.1 Criteres de choix dun algorithme . . . . . . . . . . . . . . . . . . . . 133

    8.2 Exemple : la recherche du minimum . . . . . . . . . . . . . . . . . . . 135

    8.3 Autre exemple : la recherche dun element . . . . . . . . . . . . . . . 139

    8.4 Le grand O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    8.5 Calcul du grand O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    8.5.1 Classes de complexite . . . . . . . . . . . . . . . . . . . . . . . 144

    8.5.2 Regles de calcul . . . . . . . . . . . . . . . . . . . . . . . . . . 144

  • x TABLE DES MATIERES

    8.5.3 Application des regles de calcul . . . . . . . . . . . . . . . . . 146

    9 Exemples de complexite 149

    9.1 La recherche dichotomique . . . . . . . . . . . . . . . . . . . . . . . . 149

    9.2 La recherche dans un texte . . . . . . . . . . . . . . . . . . . . . . . . 152

    9.3 Exercices : Complexite . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    10 Les tris 161

    10.1 Le tri par selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    10.1.1 Complexite du tri par selection . . . . . . . . . . . . . . . . . 165

    10.2 Le tri par insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    10.2.1 Amelioration du tri par insertion . . . . . . . . . . . . . . . . 166

    10.3 Le tri par echange (Bulle) . . . . . . . . . . . . . . . . . . . . . . . . 167

    10.4 Le tri par enumeration (comptage) . . . . . . . . . . . . . . . . . . . 169

    10.5 Autres methodes de tri . . . . . . . . . . . . . . . . . . . . . . . . . . 172

    10.6 Exercices : Les tris de tableaux . . . . . . . . . . . . . . . . . . . . . 172

    10.6.1 Tris simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

    10.6.2 Tri par enumeration . . . . . . . . . . . . . . . . . . . . . . . 173

    10.6.3 Tri Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

    10.6.4 Tri Cocktail Shaker . . . . . . . . . . . . . . . . . . . . . . . . 175

    10.6.5 Tri par ventilation . . . . . . . . . . . . . . . . . . . . . . . . 176

    11 Verification dun algorithme 177

    11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

  • TABLE DES MATIERES xi

    11.2 Rappels de logique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    11.2.1 Le calcul des propositions . . . . . . . . . . . . . . . . . . . . 178

    11.2.2 La logique des predicats . . . . . . . . . . . . . . . . . . . . . 180

    11.3 Preuve partielle et totale . . . .