Initiation à la programmation
Langage et programmation
L'informatique
Comme la programmation est basée sur quatre concepts fondamentaux
● Algorithme
● Machine
● Langage
● Information
Dualité de l'informaticien
● Ingénieur :
● concoit des dispositifs,
● assemble des composants,
● évalue leurs performances
● Scientifique :
● observe des systèmes complexes
● Ébauche des hypothèses explicatives
La démarche du programmeur
● Résolution d'un problème en plusieurs étapes
● Conception (définition, analyse, solution)
● Algorithme
● Programmation
– Codage : traduction dans un langage de programmation
– Compilation / interprétation
– Exécution
– Vérification, recherche des erreurs et expérimentation
– Tests de performances...
Langage formel
● Un langage formel est un ensemble de mots
● Un mot est une suite de lettres
● L'ensemble des lettres forme l'alphabet du langage
● Exemples :
● Sur l'alphabet binaire A={0,1}, on peut contruire le langage des entiers naturels représentés en base 2.
● Sur l'aphabet décimal, on peut construire les entiers naturels représentés en base 10.
Langage de programmation
● L'alphabet est en général
● des lettres et des chiffres ;
● des mots-clés (combinaisons de lettres et parfois de chiffres) ;
● des caractères :
– correspondant à des opérateurs : par exemple « = », « <
», « & » ;
– Ou des caractères comme « { », « _ », …
● Les mots sont les programmes
Propriétés des langages
● Lexicales : ensemble des lexèmes qui sont dans le langage (dictionnaire)
● Syntaxiques : ensemble des règles de
grammaire qui fixent les rapports entres les mots,
● Sémantiques : établir la signification en utilisant le sens des éléments (mots) du texte
Exemple: expressions arithmétiques
A={0,...,9, +, -, /, *, (,)}
Règles de construction
exp ::= exp + exp | exp × exp | (exp) | num
num ::= chiffre num | chiffre
chiffre ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
● 12+& : lexicalement incorrecte
● 12+9- : syntaxiquement incorrecte
● sémantique de 3+ 4*5 ? (3+4)*5 ou 3+(4*5)
Niveaux des langages
● Langage de programmation de haut niveau : ne tient pas compte des spécificités de
fonctionnement de la machine
● Langage de programmation de bas niveau : se rapproche du langage machine
● Frontière assez floue
Transformation du code source
● Le compilateur traduit la totalité du code source en une fois et produit un code objet, le code
objet peut être exécuté.
● L' interprète traduit chaque ligne du ”script” en langage machine avant de l'exécuter
● Les deux
Historique de la programmation
● 1954 : Fortran (J. Backus)
● 1959 : Lisp (J. McCarthy)
● 1964 : Basic (JC Kemeny
& TE Kurtz)
● 1968 : Logo (S. Papert)
● 1971 : Pascal (N. Wirth)
● 1972 : C (D. Ritchie)
● 1972 : Prolog (A.
Colmerauer)
● 1983 : C++ (B. Stroustrup)
● 1985 : PostScript (J.
Warnock)
● 1985 : Caml (INRIA)
● 1988 : Octave
● 1995 : Java
(SunMicrosystems)
● 1995 : PHP (R. Lerdorf)
● 2009 : Go (K. Thomson, R.
Pike et R. Griesemer)
Paradigmes de programmation
● Paradigme : style de programmation qui modifie la formulation des solutions
● Impérative : décrit les opérations en termes de séquences d'instructions exécutées par
l'ordinateur pour modifier l'état du programme ; décrit la solution : le ”Comment”
● Orientée objet : le programme est une collection d’objets en intéraction
● Déclarative : décrit le problème, le ”Quoi”(par
Les langages impératifs et procéduraux
● Procédural : se décompose en sous-routine (procédure ou fonction)
● Le noyau commun aux langages impératifs
● Affectation
● Séquence d'instructions
● Sélection
● Itération
Un langage impératif et procédural
Caractéristiques de
● Portable sur tous les SE
● Typage dynamique
● Extensible (interfaçable avec d'autres bibliothèques)
● Sous licence libre: Python Software Foundation License (PSFL)
● Syntaxe très simple
● Multiparadigme : impératif et orienté objet
● Interprété et/ou pré-compilé puis interprété
Python, la petite histoire
● Python est né en 1990
● De Guido Van Rossum programmeur au
Centrum voor Wiskunde en Informatica (CWI) aux Pays-Bas : Fan de la série télévisée des Monty Python...
● Les langages dont il s'est inspirés :
– ABC : pour l'indentation comme syntaxe
– Modula-3 pour la gestion des exceptions
Données et Variables
● Les variables permettent le stockage de l'information (données)
● Suite finie de nombres binaires
● Une variable c'est :
● Un identificateur
● Une valeur
● Un type
● Une référence
Identificateur
● Syntaxe :
● Séquence de lettres (A à Z, a à z), de chiffres (0 à 9) et le caractère _ , qui commence par une lettre ou _
● Les caractères interdits :
– lettres accentuées, cédilles, espaces et
– caractères spéciaux ($, #, @, etc),
● Ne peut pas être parmi les mots réservés (and, while, if , etc)
● La casse est significative : Somme, somme et SOMME sont trois identificateurs différents
Type
● Typage statique : attribution d'un type à la variable au moment de la déclaration avant toute utilisation (langage compilé)
● Typage dynamique : pas de déclaration,
l'affectation d'une valeur à une variable lui fait correspondre le type le plus adapté
Types de données simples
● Numériques :
● int entier relatif, par défaut 32 bits
● long, entier relatif (>32 bits) pas de limite de taille à priori
● float , nombre en virgule flottante, contenant une virgule (notée .) ou une puissance de 10 par
exemple 3.14 ou 3.14 e10
● bool: booléen constante True et False
Types de données structurées
● Alphanumériques
● str : suite quelconque de caractères
(''exemple'' ou 'exemple') codage latin-1
● Accès au caractères individuels de la chaine par les crochets x= ''Bonjour !'' avec x[3]=j (ça
commence à 0!)
● unicode : codage utf-8
Types de données structurées list
● Les données composites : listes, tuples et dictionnaires.
● Liste : collection d'éléments hétérogènes séparés par des virgules, par exemple
jour=[1, ''lundi'', 2, ''Mardi'']
la variable jour est une liste, on accède aux éléments par les crochets
jour[1] c'est ''lundi''
● la fonction prédéfinie type() renvoie le type de la variable en paramètre.
● Listes des types
Opérateurs
● Arithmétiques
● + - * /
● ** exponentiation 2**10 == 1024
● % reste division entière 5%2==1
● / ou // quotient division entière 5/2==5//2==2, 5.0/2==2.5 et 5.0//2 ==2.0
● Priorité : ParenthèseExposantMultDivAddSous
● Comparaisons
< <= > >= != <> ==
● Logiques and or not
Opérateurs
● Sur les listes :
● La concaténation notée +
● La multiplication notée *
Affectation
● Instruction qui attribue une valeur à une variable
● Affection simple
variable = valeur
● Création et mémorisation de l'identificateur de la variable
● Attribution d'un type
● Créer et mémoriser la valeur
● Lien entre l'identificateur et l'emplacement mémoire
Affectations multiples
● Simultanées
affectation d'une valeur à plusieurs, par exemple x=y=2
● Parallèles
les affectations peuvent se faire en parallèle,
● par exemple x,y = 1,y+1 affecte 1 à x et incrémente y de 1
● Attention a,b = b,a échange les valeurs de a et b
Entrée
● affectation externe (via le clavier)
● input() renvoie un type déterminé par l'utilisateur
● raw_input() renvoie toujours une chaîne de caractères
>>> n=input() 3
>>> type(n)
<type 'int'>
>>> ch=input()
"Bonjour"
>>> type(ch)
<type 'str'>
>>> a = raw_input('Entrez une donnée : ')
Entrez une donnée : 52.37
>>> type(a)
<type 'str'>
>>> b = float(a) #
Sortie
● Sortie : instruction pour afficher à l'écran
● Print <expression>
– >>> a, b= 1,2
– >>> print"a=", a, "b=", b
– >>>a= 1 b= 2
Structures de Contrôle
Séquence et bloc
● Syntaxe
● Sémantique : les instructions s'exécutent les unes après les autres et dans l'ordre d'écriture
● Dans les instructions composées, une séquence d'instructions s'appelle un bloc d'instructions
Instruction 1 Instruction 2
…
Instruction n
Sélection
● Syntaxe
● Sémantique/exemple
if condition:
Bloc 1 else:
Bloc 2
if condition:
Bloc 1
elif condition:
Bloc 2 else : Bloc 3 If condition:
Bloc
if a > 10 :
print "a est plus grand que dix"
elif a == 10:
print "a est égal à dix"
if a > 10 :
print "a est plus grand que dix"
else:
print "a n'est pas plus grand que dix"
a = 11
if a > 10 :
print "a est plus grand que dix"
Itération
● Syntaxe
● Sémantique
while condition:
bloc
>>> a = 0
>>> while (a < 7): # (n'oubliez pas le double point !)
1. Evaluation condition 2. Si vrai alors
Exécution bloc
Recommencer en 1 3. sinon
Fin de boucle
Ecrire un script
● un programme en Python dans un fichier texte
● Exécution : déroulement linéaire ou gérée par une structure de contrôle (selection, itération)
● Commentaires
# Commenter une ligne du script
Adopter Python
● Installer Python sur les différentes plate-formes
● Un environnement de développement intégré (IDE) multi-plateforme pour Python : IDLE
● Installer IDLE :
● Documentation IDLE :
http://docs.python.org/library/idle.html#
Pour aller plus loin...
● http://fr.wikipedia.org/
● http://fr.wikibooks.org/wiki/Programmation_Python
● http://fr.wikibooks.org/wiki/Apprendre_
%C3%A0_programmer_avec_Python
http://fr.wikibooks.org/wiki/Apprendre_à_programmer_avec_Python
● Livres :
● Apprendre à programmer avec Python, Gérard Swinnen,
http://inforef.be/swi/python.htm
● Introduction à la science informatique : Pour les enseignants de la discipline en lycée.
● Tutoriel
● http://python.developpez.com/cours/TutoSwinnen/?page=sommaire