Programmation impérative (Info 111)
Contents
Programmation impérative (Info 111)#
Nicolas Thiéry
http://Nicolas.Thiery.name/Enseignement/Info111
Pourquoi enseigner l’informatique?
Évidence : l’ordinateur est partout!
Combien d’ordinateurs dans la salle?
Combien d’ordinateurs possédez vous?
Le mot «assisté par ordinateur» a disparu
Usage constant des ordinateurs, pour le travail comme le reste
Évidence : tous les jeunes connaissent déjà l’informatique!
Vraiment?
C’est quoi l’informatique?#
Une petite analogie :
Mr Einstein, vous qui êtes un excellent physicien, vous devez savoir changer la roue de ma voiture, non?
Mr Alonso, vous qui êtes un excellent conducteur de F1, vous devez savoir réparer le carburateur de ma voiture, non?
Conducteur \(\ne\) Garagiste \(\ne\) Physicien
Et pourtant, loin d’être Einstein ou Alonso, …
Mr Thiéry, vous qui êtes professeur en informatique, vous devez savoir réparer mon W…..s, non?
C’est quoi l’informatique en fait?
Suite de la petite analogie :
L’usage |
La technologie |
La science |
---|---|---|
Conduite |
Réparation, Conception |
Physique |
Consommation |
Cuisine |
Chimie, Biologie |
Utilisation |
Programmation, … |
Informatique |
Qu’est-ce qu’on apprend à l’école?
Principalement
Et il y a des raisons profondes pour cela
Et il y a des pressions pour que ce ne soit pas le cas …
Quelle école pour la société de l’information? :
Une conférence de François Élie
À lire ou écouter … et méditer …

Tous les jeunes connaissent déjà l’informatique?
L’usage?
Évidence : tous les jeunes savent utiliser un ordinateur
Vraiment? les-enfants-ne-savent-pas-se-servir-dun-ordinateur
La technologie?
Qui sait programmer? Configurer un réseau?
La science?
Ma petite expérience :
6ème : 3ème
Fac : apprendre la science a chamboulé ma programmation
2018 : après 30 ans et 300000 lignes de code, j’apprends encore …
La science informatique?#
Science du calcul et de l’information
Notion fondamentale : étude des systèmes en évolution
État du système avant
Étape de calcul
État du système après
Modèles de calcul
Grands thèmes de l’informatique#
Calculabilité : Que peut, ou ne peut pas faire, un ordinateur?
Indépendamment du langage
Indépendamment du matériel
Miracle : tous les langages sont équivalents!
Complexité : Combien de ressources pour résoudre un problème?
Indépendamment du langage
Indépendamment du matériel
Indépendamment de l’algorithme?
Grands problèmes de l’informatique#
Maîtriser les systèmes extrêmement complexes :
Internet avec des milliards d’ordinateurs
Programmes avec des millions de lignes
Données occupant des petaoctets (\(10^{15}\) octets!)
Services gérant des millions de clients
Passage à l’échelle
Abstraction :
Exemple : Couches OSI pour les réseaux
Difficulté :
Apprendre des outils conçus pour les programmes de 100000 lignes en travaillant sur des programmes de 10 lignes …
Grands thèmes de l’informatique (suite)#
Conceptions des langages de programmation :
Java, C++, Python, Ada, Pascal, Perl, Camel, Haskell, Go, Rust…
Un nouveau langage par semaine depuis 50 ans!
Heureusement les concepts sont presque toujours les mêmes :
Programmation impérative
Programmation objet
Programmation fonctionnelle
Programmation logique
Orchestration de flots de données
Apprentissage
Algorithmique et structures de données
Comment mieux s’exprimer pour que l’ordinateur résolve nos problèmes?
Autres grands thèmes de l’informatique#
Architecture des ordinateurs, parallélisme
Réseaux, transmission de données
Bases de données
Langages formels, automates
Modèles et structures de données
Sureté et sécurité du logiciel :
spécification, test, preuveSureté et sécurité des données :
codage, cryptographieMathématiques discrètes : graphes, combinatoire, …
À propos de ce cours#
Au programme :
Science : concepts de la programmation structurée
Technologie : programmation C++ (simple)
Usage : environnement de programmation, GNU/Linux
Ce que l’on va voir :
Les briques de bases, les règles de compositions
Les constructions usuelles
Les problèmes déjà résolus, les erreurs les plus courantes
Du TD? Pour quoi faire??
Bénéficier de l’expérience de plus de 50 ans de programmation
Intuition de ce qui est possible … ou pas
Intuition de comment résoudre un nouveau problème
Organisation du cours#
1h30 amphi, 1h30 TD, 2h TP
Du TD? pour quoi faire???
Apprendre la science informatique, en utilisant un ordinateur, pour programmer …
Comme apprendre la physique, au volant d’une voiture …
C’est pas facile …
Une difficulté : la forte hétérogénéité de niveau : Ce module s’adresse à tous, débutants comme expérimentés
Évaluation :
25% : Examen mi-semestre (dans l’axe des TD)
40% : Examen final (vision d’ensemble)
20% : Projet en fin de semestre
15% : Exercices en ligne, notes de TP
Ordinateurs et traitement automatique des informations#
Exemples d’ordinateurs :
Calculatrice (programmable)
Ordinateur personnel (PC, Mac, …)
Station de travail (Sun, DEC, HP, …)
Super-ordinateur (Cray, IBM-SP, …)
Clusters d’ordinateurs
Mais aussi :
Puce (programme fixe)
Tablettes
Téléphones portables, appareils photos, GPS, lecteurs MP3, …
Box, routeurs wifi, …
Téléviseurs, …
Arduino, Raspberry Pi, …
Caractéristiques principales d’un ordinateur#
Absolument stupide :
Il obéit strictement aux ordres reçus
Est-ce qu’il fait ce que l’on veut?
Très très rapide :
2GHz : 2 milliards d’opérations par seconde
Très très bonne mémoire :
Bible : Mo (million de caractères)
Mémoire : Go (milliards de caractères)
Disque : To (1000 milliards de caractères)
Data center : Po
À quoi sert un ordinateur?#
Stocker des informations :
Documents, musique, photos, agenda, …
Traiter automatiquement des informations :
Entrée: informations venant du clavier, de la souris, de capteurs, de la mémoire, d’autres ordinateurs, …
Traitement des informations en exécutant un programme
Sortie: informations envoyées vers l’écran, la mémoire, d’autres ordinateurs, …
Définition :
Informellement, un programme est une séquence d’instructions qui spécifie étape par étape les opérations à effectuer pour obtenir à partir des entrées un résultat (la sortie).
Voir aussi : http://fr.wikipedia.org/wiki/Programme_informatique
Premiers programmes#
Exemples de programmes
Ingrédients :
250g de chocolat, 125g de beurre, 6 œufs, 50 g de sucre, café
Étapes :
Faire fondre le chocolat avec 2 cuillères d’eau
Ajouter le beurre, laisser refroidir puis ajouter les jaunes
Ajouter le sucre et comme parfum un peu de café
Battre les blancs jusqu’à former une neige uniforme
Ajouter au mélange.
Entrée? Sortie?
Exemples de programmes
Entrée? Sortie?
Exemples de programmes
Entrée? Sortie?

Entrée? Sortie?
Un exemple de programme C++
#include <iostream>
using namespace std;
int main() {
int x, xCarre, xPuissanceQuatre;
cout << "Entrez un entier: ";
cin >> x;
xCarre = x * x;
xPuissanceQuatre = xCarre * xCarre;
cout << "La puissance quatrième de " << x
<< " est " << xPuissanceQuatre << endl;
return 0;
}
Compilation, exécution, … Un peu lourd? Pas de panique!
Le coeur du programme C++
// Entrée
int x = 5;
// Traitement
int xCarre = x * x;
int xPuissanceQuatre = xCarre * xCarre;
// Sortie
xPuissanceQuatre
Exécution dans Jupyter+Cling
Jupyter + Cling : une super calculatrice programmable
Jupyter :
Un environnement de calcul interactif multi-langage
Cling :
Un interpréteur C++
Démo
Résumé#
À propos d’Info 111
Qu’est-ce que l’informatique (Usage, Technologie, Science!)
Objectifs du cours
Un aperçu de premiers éléments de programmation :
Ordinateur
Programmes On reviendra dessus!
Environnement Jupyter+Cling
Infrastructure du cours