---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
kernelspec:
  display_name: C++17
  language: C++17
  name: xcpp17
rise:
  auto_select: first
  autolaunch: false
  centered: false
  controls: false
  enable_chalkboard: true
  height: 100%
  margin: 0
  maxScale: 1
  minScale: 1
  scroll: true
  slideNumber: true
  start_slideshow_at: selected
  transition: none
  width: 90%
---

+++ {"slideshow": {"slide_type": "slide"}}

# Conclusion

+++ {"slideshow": {"slide_type": "fragment"}}

## Résumé de la séance

:::{admonition} Programmes et compilation
-   Algorithme, programme, sources, binaire, assembleur
-   Interpréteur, compilateur
-   Cycle de vie d'un programme
:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Compilation séparée pour la modularité
-   Découper un programme non seulement en fonctions, mais en fichiers
-   Définir des bibliothèque de fonctions réutilisables entre programmes :
    -   fichier d'entêtes : `max.hpp`
    -   fichier source : `max.cpp`
    -   fichier de tests : `maxTest.cpp`
:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Digressions
-   Surcharge : un nom, plusieurs fonctions
-   Templates : une fonction, plusieurs types
-   Espaces de noms : pour éviter les conflits de noms
:::

+++ {"slideshow": {"slide_type": "slide"}}

## Résumé des bonnes pratiques vues ce semestre (méthodologie de développement)

+++ {"slideshow": {"slide_type": "fragment"}}

:::{hint} Bonne pratique : développement incrémental
-   Toujours être «proche de quelque chose qui marche»
-   Gestion de version (`git`, `mercurial`, ...)
:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Bonnes pratiques : spécifications et tests

-   Spécification : définir précisément la sémantique des fonctions :  
    qu'est-ce qu'elles doivent faire?
-   Test : vérifier que la sémantique est respectée sur des exemples
-   Analogie Programmer↔Démontrer : Documentation↔Énoncé, Test↔Exemple, Code↔Démonstration

+++ {"slideshow": {"slide_type": "fragment"}}

:::{hint} Bonne pratique : modularité
-   Découpage d'un programme en fonctions : [**cours 4**](../Semaine4/cours.md)
-   Découpage d'un programme en modules : **aujourd'hui !**
-   Découpage d'un programme en espaces de noms : **plus tard**
:::

+++ {"slideshow": {"slide_type": "slide"}}

### Conclusion : qu'avons nous vu ce semestre?

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Les bases de la programmation
-   Contrôle du flot d'exécution : instructions conditionnelles et itératives, fonctions
-   Gestion des données : variables, tableaux, collections, entrées et sorties, fichiers
:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Méthodologie de développement
- Développement incrémental
- Spécifications et tests
- Modularité
:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Une esquisse de quelques thèmes de l'informatique
-   Programmation modulaire (S2)
-   Algorithmes et structures de données, complexité (S2)
-   Science des données (S2)
-   Web, graphisme, architecture, réseau, ...
:::

+++ {"slideshow": {"slide_type": "fragment"}}

<div class="alert alert-success">

**Ce n'est que le début de l'aventure !**

</div>