Programmation impérative (Info 111)#
Nicolas Thiéry
https://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!
.
C’est quoi l’informatique en fait?#
Une petite analogie :
M. Einstein, vous qui êtes un excellent physicien, vous devez savoir changer la roue de ma voiture, non?
M. Alonso, vous qui êtes un excellent conducteur de F1, vous devez savoir réparer le carburateur de ma voiture, non?
Et pourtant, loin d’être Einstein ou Alonso, …
M. 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 la science
Et 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
La technologie?
Qui sait programmer? Configurer un réseau?
La science?
Ma petite expérience :
Fac : apprendre la science a chamboulé ma programmation
2023 : après 33 ans et 300000 lignes de code, j’apprends encore …
La science informatique?#
Definition 50
L” informatique est la Science du calcul et de l’information
Thème fondamental : étude des systèmes en évolution
État du système avant
Étape de calcul
État du système après
Grands thèmes de l’informatique#
Calculabilité : Que peut, ou ne peut pas faire, un ordinateur?
Modèles de calcul
Indépendamment du langage
Indépendamment du matériel
Miracle : tous les langages sont équivalents!
Complexité : Combien faut-il de ressources pour résoudre un problème?
Indépendamment du langage
Indépendamment du matériel
Indépendamment de l’algorithme?
Grands thèmes de l’informatique (suite)#
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
Problématiques de passage à l’échelle
Stratégies d”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)#
Comment mieux s’exprimer pour que l’ordinateur résolve nos problèmes?
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
…
Au delà des langages: modélisation, …
Grands thèmes de l’informatique (suite)#
Interactions Humain Machine
Bases de données
Modèles et structures de données
Architecture des ordinateurs, parallélisme
Réseaux, transmission de données
Sureté et sécurité du logiciel :
spécification, test, preuveSureté et sécurité des données :
codage, cryptographieLangages formels, automates, compilation
Mathé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
Des briques de bases, des règles de compositions
Les constructions usuelles
Les problèmes déjà résolus, les erreurs les plus courantes
Indication
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
Indication
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
Important
É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
Fraude et plagiat#
Indication
S’entraider (explications, aide au débogage, …) C’est super!
Attention
Récupérer du code de quelqu’un d’autre (dont IA générationnelles comme chat-GPT) À ce stade, c’est contre-productif
Danger
Sans le dire C’est de la fraude
Important
Vous êtes de futurs scientifiques
L’intégrité est une valeur essentielle en science
Nous vous faisons confiance
Avertissement
Mais, au cas où, nous avons quelques outils :-)
Infrastructure du cours#
Suivez le guide!
Espace eCampus
Pour interagir avec les enseignants
Page web
Pour trouver toutes les informations
Mot clés: «Info111» ou «Nicolas Thiéry»
Infrastructure du cours, suite#
Salles de TP
Pour programmer
Salle de TP physique à la fac au 336 (SIF / PGIP)
Salle de TP virtuelle JupyterHub@Paris-Saclay
Ou directement sur votre machine personnelle
Exercices en ligne PLaTon
Forge logicielle GitLab
Pour héberger vos devoirs
Gestion des devoirs avec GitLab et travo
Une innovation pédagogique Orsay / Montréal!
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
Fiable? Est-ce qu’il fait ce que l’on veut?
Très très rapide
2GHz : 2 milliards d’opérations par seconde
sans faire d’erreur
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, …
Definition 51 (Programme)
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 : https://fr.wikipedia.org/wiki/Programme_informatique
Premiers programmes#
Example 41
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?
Entrée? Sortie?
Entrée? Sortie?
Example 44
Entrée? Sortie?
Example 45 (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;
}
Démo : Compilation en ligne de commande, exécution
Un peu lourd? Pas de panique!
Le cœur du programme C++#
// Entrée
int x = 5;
// Traitement
int xCarre = x * x;
int xPuissanceQuatre = xCarre * xCarre;
// Sortie
xPuissanceQuatre
Jupyter + Cling : une super calculatrice programmable#
Jupyter
Un environnement de calcul interactif multi-langage
Cling
Un interpréteur C++
Résumé#
À propos d’Info 111
Qu’est-ce que l’informatique (Usage, Technologie, Science!)
Objectifs du cours
Infrastructure du cours: eCampus, page web, salles de TP (virtuelles), forge GitLab
Un aperçu de premiers éléments de programmation
Ordinateur
Programmes
On reviendra dessus!
Environnement Jupyter+Cling
.
Comment travailler l’informatique?#
Parcourir le cours (poly ou page web) avant l’amphi
15 min perso / semaine
Participer activement en amphi : questions, prise de notes
Travailler le poly et vos notes; apprendre les définitions
15 min perso / semaine ?
Commencer les exercices de TD avant la séance
Participer activement en TD
«Finir» pour la semaine suivante
1h perso / semaine?
Participer activement en TP
«Finir» les exercices de TP pour la semaine suivante
2h / semaine?
Projet de fin de semestre
30h
Il vous faut un ordinateur ou tablette avec un navigateur web!
Variante: salle informatique en libre service