Programmation Impérative

publicité
Logistique
Intervenants
Programmation Impérative :
Introduction Globale
TP (mercredi 8h ou 15h45) : Valentina Zantedeschi, Rémi Emonet
Cours (jeudi 8h), TD (lundi 15h45) : Rémi Emonet
Autres intervenants principaux : VOUS
posez des questions,
interrompez en cas de problème,
proposez des directions etc.
Règles du jeu
Évaluation
travaillez
régulièrement
participez
questionnez
interrompez
note pratique : rendu TP + exam
examens intermédiaire et final
si vous savez (re)faire les TPs, vous aurez
une bonne note à l'examen
Références
Voir la page du cours (lien sur Claroline)
« poly », banque d'exercices, vidéos
5 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Programmation Impérative
Impérative = donner des ordres
ordres = instructions
mission = suite d'instructions = programme
Exemple : aller en cours
Qu'est ce que la programmation
impérative ?
se lever
se doucher
s'il pleut prendre le vélo
sinon prendre le bus
Dire à l'ordinateur ce qu'il doit faire
7 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
8 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Ordinateur = Grosse Calculatrice
Calculatrice
nombres
opérations : +, -, ×, ÷, …
mémoire : M+, MR, MC, …
Des ordinateurs partout
Qu'est ce qu'un ordinateur ?
9 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
calculatrice
téléphone
ordinateur portable
voiture
machine à laver
...
10 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Anatomie d'un Ordinateur
Tout Binaire
Périphériques
Processeur (CPU)
Programme
×
(ordres) ... R1
R2
=>
R1
R5
R6
=>
R2
Stockage binaire
1 bit : 0 ou 1
1 octet (ou byte) : 8 bits
1 ko (ou KB) : 1024 octets
…
+÷ -
+ × ÷
Encodage binaire (base 2)
save
R1
-
R2
R3
Entiers
1 → 00000001
2 → 00000010
3 → 00000011
18 → 00010010
load
R4 R5 R6
Registres
Opérations
...
...
Caractères
'A' → 01000001 (65) (0x41)
'B' → 01000010 (66) (0x42)
'a' → 01100010 (97) (0x62)
Mémoire (RAM)
Chaîne de caractères, exemple "bonjour"
0110001001101111011011100110101001101111011101010111001000000000
Flottant (nombre à virgule flottante) : …
11 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
12 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Un Programme vu de l'Ordinateur ?
Processeur (CPU)
Suite d'instructions
venant de la mémoire ou d'un fichier
chaque instruction a un code binaire
Calculs sur les registres
+ × ÷
R2
initialisation, ex : MOV 18,R1
opérations, ex : MUL R1,R2
R1
R2
=>
R1
R5
R6
=>
R2
+÷ -
save
R1
R3
Programme
×
(ordres)... -
-
R4 R5 R6
Registres
Opérations
load
...
Accès mémoire
mémoire → registres, ex : MOV 0x6014(R1),R2
registres → mémoire, ex : MOV R2,0x6014(R1)
Mémoire (RAM)
Qu'est ce qu'un langage
Accès périphérique
vu comme de la mémoire
Langage assembleur (MOV, MUL, ...)
correspondance directe avec le code binaire
très, très laborieux
13 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
14 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Qu'est ce qu'un langage
Un moyen de communiquer
Des règles de bases
quels sont les éléments de base (ponctuation, mots, ...)
quel est le sens de chaque élément ("chat", "stylo", "il", "ça", ...)
aussi appelée la sémantique
quelles structures peuvent être utilisées (phrase, ...) et leur sens
("sujet négation verbe complément", ...)
Langages de Programmation
16 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
17 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
696 Langages Notables
The aim of this list … is to include all notable
programming languages in existence, …, except
for dialects of BASIC and esoteric programming
languages.
https://en.wikipedia.org/wiki/List of programming languages
Pourquoi Tant de Langages ?
Assembleur : laborieux
Un bon programmeur est un curieux fainéant
⇒ Apprenez à programmer par fainéantise !
But des langages
faire plus, plus facilement
augmenter le niveau d'abstraction
Combien selon vous ?
18 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
19 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Différences Entre Langages
Compilation ou Interprétation
Langage compilé (C, C++, Ada, …)
Types
langages compilés
langages interprétés
langages mixtes
Paradigmes
programmation impérative
programmation déclarative
programmation fonctionnelle
programmation objet
https://fr.wikipedia.org/wiki/Paradigme_(programmation)
La plupart des langages sont à cheval entre ces appellations
écriture du programme dans un fichier
lancement du compilateur sur ce fichier
lecture du fichier
transformation vers du langage machine
sauvegarde dans un nouvel exécutable
lancement de l'exécutable créé
Langage interprété (Python, bash, PERL, …)
écriture du programme dans un fichier
lancement de l'interpréteur sur ce fichier
Machine virtuelle (Java, …)
écriture du programme dans un fichier
compilation vers un langage intermédiaire
lancement d'un interpréteur (machine virtuelle) du langage
intermédiaire
20 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
21 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Cours de Prog. Imp. : Objectifs
Premier Langage : bash
Résolution de problème
réflexion algorithmique
implantation sous forme d'un programme
Apprendre les bases de programmation
concepts de bases
bonnes pratiques
Apprendre ces concepts dans deux langages
Bash: spécialisé dans le lancement d'autres programmes
Python: langage tous usages (scientifique, scripts, serveur web, ...)
Spécialisé dans le lancement d'autres programmes
ordre (principal) = lancer un programme
outil de base sous Linux et Mac
facile à installer sous Windows
Plus efficace qu'un explorateur graphique
Exemple
appliquer un traitement sur un ensemble de fichiers
déplacer ou renommer des fichiers en masse
rechercher des fichiers ou du contenu
répéter une succession d'actions
Langage interprété
exécuté par un interpréteur (un exécutable) appelé "bash"
Souvent utilisé dans un "terminal"
Démonstration
31 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
32 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
>_
bash
Second Langage : Python (version 3)
Langage tous usages
ordre (principal) = manipuler des variables
simple à apprendre mais complet
disponible sur Linux, Mac, Windows
beaucoup de "bibliothèques"
Exemple
faire des calculs, des statistiques
interfaces graphiques
jeux
sites webs
Motivation Globale du Cours
Apprendre les bases de programmation
utile dans de nombreux domaines (surtout pour vous)
rester ouvert à tous les langages de programmation
Apprendre à formaliser les choses
mais différemment des maths
⇒ algorithmique
Apprendre à créer des programmes
exploiter les choses existantes
pour créer des choses nouvelles
Langage interprété
exécuté par un interpréteur (un exécutable) appelé "python"
Démonstration
33 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
34 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Au sujet de ce cours
Bien Apprendre (en général)
Programmer n'est pas facile
programmation, comme un nouveau langage
nouvelle culture / façon de penser
tout en anglais en plus...
N'importe qui peut apprendre en travaillant
Rythme du cours
selon les cas, au début, « perdus » ou « cours trop lent »
cette différence va disparaître assez vite
Participer, faire des retours
Travail régulier plutôt que d'un bloc
répéter les exercices
pratiquer (pas juste lire)
Travailler de manière concentrée
limiter les interruptions
se fixer une durée (blocs de 25 minutes)
… mais faire des vraies pauses
se dégourdir
faire du sport
bien dormir
37 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
38 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Bien Réussir ce Cours
Accepter de faire des choses “simple”, juste pour apprendre :
« solve it yourself first »
Amener des idées, questions ⇒ la motivation est le meilleur
facteur de succès
Chercher de l'information (moi, les autres, ...)
Pratiquer !
installation sur votre ordinateur pour travailler
faire les exercices automatiques
si vous savez (re)faire les TPs, vous aurez une bonne note à
l'examen
39 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Points Clés
Objectif global du cours
comprendre le pourquoi des langages de programmation
apprendre les bases de la programmation
appliquer ces principes en "bash" et "python"
comprendre qu'il est utile de savoir programmer
Ordinateur
machine qui exécute des ordres
langage = moyen de donner des ordres
Voir la page du cours (lien sur Claroline)
http://dossier.univ-st-etienne.fr/er49873h/www/2015progimp/
41 / 41 − Rémi Emonet − Programmation Impérative : Introduction Globale
Téléchargement