#!/usr/bin/env python
# coding: utf-8
# # Paradigmes de programmation
#
#
# Il existe de nombreuses façons de programmer une machine, différents schéma de pensée qui sont apparus et ont évolués au cours du temps, ce sont les **[paradigmes de programmation](https://fr.wikipedia.org/wiki/Paradigme_(programmation))**.
#
#
# Les langages de programmation sont nombreux et variés.
# Il n’est pas inusuel qu’un langage appartienne à plusieurs de ces paradigmes, c’est par exemple le cas de Python.
#
# Certains de ces paradigmes sont mieux adaptés que d’autres pour traiter des problèmes spécifiques.
# On verra aussi ultérieurement qu’il est possible d’utiliser plusieurs paradigmes à l’intérieur d’un même programme.
#
# Les paradigmes principaux sont impératif, objet, fonctionnel...
# In[1]:
from IPython.display import HTML
HTML("""
""")
# > [Vidéo complémentaire à voir aussi](https://youtu.be/3S1iPJJ-lPA)
# ## Programmation impérative :
#
# Le paradigme sinon le plus ancien, tout au moins le plus traditionnel, est le **paradigme impératif**.
#
# Les premiers programmes ont été conçus sur ce principe :
#
# - Une suite d’instructions qui s’exécutent séquentiellement, les unes après les autres ;
#
# Ces instructions comportent :
# - Affectations
# - Boucles (pour.., tant que…, répéter…jusqu’à…)
# - Conditions (si…sinon)
# - Branchement/saut sans condition
#
#
# - La programmation impérative actuelle limite autant que possible les sauts sans condition. Ce sous-paradigme est appelé **programmation structurée** :
#
# Les sauts sont utilisés en assembleur (instructions BR adr, « branch vers adresse » ).
#
# En Python, on limite ainsi l’utilisation du `break` à certains cas particuliers.
#
# A l’inverse, une programmation utilisant de nombreux sauts est qualifié de « programmation spaghetti », pour la « clarté » toute relative avec laquelle on peut le dérouler. Certains langages conduisent facilement à ce style de code (BASIC, FORTRAN,…)
#
#
# - L’usage des fonctions comme vu en première est aussi une variante de la programmation impérative, appelée **programmation procédurale**.
# Elle permet de mieux suivre l’exécution d’un programme, de le rendre plus facile à concevoir et à maintenir, et aussi d’utiliser des bibliothèques.
# ## Rappels de programmation impérative structurée et procédurale en Python...
#
#
Activités de rappels à faire :
#
# ### Exercice : Série de notes
# Écrire un programme qui permet :
# - de demander à l’utilisateur combien de notes il souhaite saisir → [ n ]
# - de saisir les [ n ] notes comprise entre [ 0 ; 20 ]
# - d’afficher la note la plus faible et la note la plus élevée
# - de calculer la moyenne
#
# ****
# ## Références aux programmes :
#
#
#
#
Langages et programmation
#
#
#
Contenus
#
Capacités attendues
#
Commentaires
#
#
#
Paradigmes de
# programmation.
#
Distinguer sur des exemples les paradigmes impératif, fonctionnel et objet. Choisir le paradigme de programmation selon le champ d’application d’un programme.
#
Avec un même langage de programmation, on peut utiliser des paradigmes différents. Dans un même programme, on peut utiliser des paradigmes différents.