• Aucun résultat trouvé

Initiation à la programmation. Valérie Gillot

N/A
N/A
Protected

Academic year: 2022

Partager "Initiation à la programmation. Valérie Gillot"

Copied!
36
0
0

Texte intégral

(1)

Initiation à la programmation

(2)

Langage et programmation

(3)

L'informatique

Comme la programmation est basée sur quatre concepts fondamentaux

Algorithme

Machine

Langage

Information

(4)

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

(5)

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...

(6)

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.

(7)

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

(8)

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

(9)

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)

(10)

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

(11)

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

(12)

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)

(13)

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

(14)

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

(15)

Un langage impératif et procédural

(16)

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é

(17)

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

(18)

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

(19)

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

(20)

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é

(21)

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 e­10

bool: booléen constante True et False

(22)

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

(23)

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

(24)

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

(25)

Opérateurs

Sur les listes :

La concaténation notée +

La multiplication notée *

(26)

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

(27)

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

(28)

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)       # 

(29)

Sortie

Sortie : instruction pour afficher à l'écran

Print <expression>

>>> a, b= 1,2

>>> print"a=", a, "b=", b

>>>a= 1 b= 2

(30)

Structures de Contrôle

(31)

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

(32)

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"

(33)

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

(34)

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

(35)

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#

(36)

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

Références

Documents relatifs

Dans un second temps, nous proposons un syst`eme de typage plus souple permettant de manipuler des collections h´et´erog`enes, c’est ` a dire des collections contenant des valeurs

Spécier partiellement un programme Éviter de programmes absurdes ( 1 + true ) Éviter la violation de la mémoire. Ne pas écrire un programme ayant des comportements indénis Ne

[r]

Delia Kesner et Giovanni Bernardi IRIF, Université Paris-Diderot. Emails : kesner@irif.fr

Python étant un langage à typage dynamique fort, sans précision particulière il type les valeurs d’une façon qui n’est pas toujours l’attendu par l’utilisateur.. Pour plus

En fait c’est un cours sur la r´ ecursivit´ e, les r´ ef´ erences, et la preuve de programmes, revisit´ ees dans les langages fonctionnels!. C’est aussi l’occasion de voir

les messages sont des structures : le routeur n’accepte pas en entr´ee de messages.. tels que des entiers ou des chaˆınes de caract`eres. Notre dernier exemple reprend

En Python, les entiers sont aussi grands que l’on veut : si nécessaire, Python prend le nombre de mots nécessaires pour coder l’entier.. Typage : type plain integer, « int