Informatique. Programmation en Python.



Documents pareils
Découverte de Python

Présentation du langage et premières fonctions

STAGE IREM 0- Premiers pas en Python

Initiation à la programmation en Python

TP 1. Prise en main du langage Python


1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et programmation : les bases (VBA) Corrigé

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours d Algorithmique et de Langage C v 3.0

2 Comment fonctionne un ordinateur, dans les grandes lignes

Chapitre 2 Devine mon nombre!

Solutions du chapitre 4

1 Recherche en table par balayage

Corrigé des TD 1 à 5

Cours d algorithmique pour la classe de 2nde

L informatique en BCPST

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation à la Programmation en Logique avec SISCtus Prolog

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Utilisation d objets : String et ArrayList

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Algorithme. Table des matières

Algorithmique avec Algobox

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

INF 321 : mémento de la syntaxe de Java

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

LES TYPES DE DONNÉES DU LANGAGE PASCAL

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Initiation à LabView : Les exemples d applications :

Représentation d un entier en base b

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Bases de programmation. Cours 5. Structurer les données

Introduction à MATLAB R

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Initiation à l algorithmique

Programmation Web. Madalina Croitoru IUT Montpellier

Cours Informatique Master STEP

Notions fondamentales du langage C# Version 1.0

Programmer en JAVA. par Tama

Algorithmes récursifs

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Calcul Formel et Numérique, Partie I

Algorithmique avec Algobox

Rappels sur les suites - Algorithme

Introduction au langage C

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Chap III : Les tableaux

Définitions. Numéro à préciser. (Durée : )

ACTIVITÉ DE PROGRAMMATION

Probabilités Loi binomiale Exercices corrigés

Maple: premiers calculs et premières applications

Programmation Classique en langage C

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Les structures. Chapitre 3

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

4. Groupement d objets

Programmation C++ (débutant)/instructions for, while et do...while

ALGORITHMIQUE ET PROGRAMMATION En C

Les chaînes de caractères

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Cours d Informatique

TP Maple 4 Listes, tests, boucles et procédures

Chapitre 2. Eléments pour comprendre un énoncé

Plan du cours. Historique du langage Nouveautés de Java 7

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

1 Lecture de fichiers

DM 1 : Montre Autoquartz ETA

Introduction à l algorithmique et à la programmation M1102 CM n 3

CONFIGURATION DE L AUTOMATE SIEMENS

Recherche dans un tableau

V- Manipulations de nombres en binaire

TP, première séquence d exercices.

Représentation des Nombres

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

as Architecture des Systèmes d Information

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Coefficients binomiaux

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Programmes des classes préparatoires aux Grandes Ecoles

Feuille TD n 1 Exercices d algorithmique éléments de correction

Chapitre 10 Arithmétique réelle

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Langage Java. Classe de première SI

Résolution de systèmes linéaires par des méthodes directes

MESURES PHYSIQUES 1 è année Informatique Scientifique version 2.2. Python 3. Exercices corrigés

1 Description générale de VISFIELD

Adama MBODJI MBODJ.SYSTEM

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Transcription:

BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en classe vous devez compléter ce cours par toutes les remarques, exemples, démonstrations qui seront faites oralement et au tableau. Vous devez pour cela prendre des notes sur une autre feuille. Vous devez aussi reprendre sur cette feuille annexe toute la structure du cours. Par défaut, ce qui est présenté concerne Python 3.x. Nous verrons par moment les différences avec l autre version : Python 2.x. Il est important de savoir qu il y a deux versions. 1) Interfaces. L exécution d un programme Python peut se faire à l aide de plusieurs interfaces, nous utiliserons Pyzo qui est celle utilisée au concours. Nous utiliserons aussi une interface web très pratique : http ://www.pythontutor.com/ Cette interface permet d exécuter pas à pas de petits programmes Python. Elle permet aussi de voir l évolution des variables au cours de l exécution. L utilisation de cette interface est limitée aux petits programmes n utilisant pas trop de bibliothèques. Exemple de programme. n=1 while n<10: n=n+2 print(n) Vérifier, à travers cet exemple, que vous savez : Lancer les deux interfaces. Copier le programme dans chaque interface. Obtenir le résultat du programme dans chaque interface. 2) Les variables. Les variables en python sont des noms associés à des espaces mémoires. On peut y stocker une valeur, accéder à son contenu et parfois changer son contenu. A chaque affectation d une valeur à une variable on change l adresse mémoire sur laquelle pointe la variable. Nous verrons plus tard que pour certains types de variables (mutables comme les listes), on peut modifier la valeur d une variable sans changer l adresse mémoire. Les valeurs prises par ces variables peuvent être de différents types. Pour connaître le type d une valeur ou d une variable il suffit d utiliser la fonction type(). 1

a) Les types simples. Les entiers. Opérations sur les entiers. +,, *, //, % et ** Les règles de calculs sont les mêmes qu en mathématiques, on utilise des parenthèses pour indiquer l ordre des opérations. Il n y a pas de limitation de taille pour les entiers. Les flottants. Ce sont des nombres à virgule. On utilise le symbole. à la place de la virgule. Opérations sur les flottants : +,, *, /, ** Python affichera les flottants avec au maximum 17 chiffres significatifs et si nécessaire en notation scientifique. Dans un calcul mélangeant des entiers et des flottants il risque d y avoir des problèmes. Python transforme un entier en flottant si nécessaire. Remarque : Python 3.x transforme tout en flottant dès qu il y a un /. Attention : La représentation des nombres décimaux par des flottants n est pas exacte. Pour stocker le nombre 0.4 : on approche au mieux ce nombre en binaire : 0, 011001100110011001100110011001100110011001100110011010 qui est égale à : ce nombre vaut environ : 7205759403792794 18014398509481984 0, 400000000000000022204460492503 Les booléens. Il est souvent nécessaire de faire des tests, des branchements (Si... Faire) Les booléens peuvent prendre deux valeurs : True et False Nous les utiliserons dans les branchements et les boucles conditionnelles (if et while). Construction de booléen. ==, <, <=, >, >=,!= et in Les opérations sur les booléens sont : not : la négation (le Non logique) and : la conjonction (le et logique) or : le disjonction (le ou logique) On peut résumer dans ce tableau l action de ces opérations sur les différentes valeurs : A B not A A and B A or B True True True False False True False False Attention à la comparaison des flottants (Par exemple : 3 0.1 == 0.3 ) Faire des opérations avec des entiers, des flottants. Que font % et // sur les entiers? Utiliser les opérations and et or. Déterminer le type d une variable. (Par exemple : en définissant A=4/2, vérifier que A est bien un flottant. ) 2

b) Les chaînes de caractères : strings. Ce type permet de représenter des textes. Une chaîne caractère est une suite finie de caractères qu on note entre apostrophes... ou entre guillemets.... Accès à un caractère : Pour accéder aux caractères d une chaîne A on utilise l expression A[i] où i est la position (l indice) du caractère. Attention : En python, l indice du premier caractère est 0 et non 1. Sous-chaine : Pour extraire une partie d une chaîne on utilise l expression A[i:j] où i est l indice du premier caractère et j l indice du dernier caractère plus un. (On va de i compris à j exclu) Concaténation : Avec les opérateurs + et. Longueur : On utilise la fonction len Nous verrons plus tard des méthodes plus évoluées qui s appliquent à ce type d objet : Un exemple avec split et join : Base= Le-petit-chat-est-mort Mots=Base.split( - ) Texte=.join(Mots) print(texte) join, count, split... Conversion entre chaînes de caractères et types simples. (Transtypage) Exemple : A= 21 B=int(A) C=2*A D=2*B Que contient les différentes variables? Quel est leur type? Nous pouvons pas modifier une chaîne de caractère. Pour pouvoir modifier les caractères d une chaine on passe par une liste, type que nous verrons dans la suite du cours. créer une variable du type chaîne de caractère. extraire une partie d un texte. concatener deux textes. c) Affectation, initialisation, état et typage dynamique. Au début d un programme, il n y a rien en mémoire. On initialise des variables, on fait évoluer ce qu elles contiennent à l aide d instructions. La premières de ces instructions est l affectation. La première affectation est appelée initialisation. A chaque affectation, Python redéfinit le type de la variable (typage dynamique). Ci-dessous nous donnons une suite d instructions en Python, Déterminer à chaque ligne du tableau l état de la mémoire après l affectation indiquée, (on pourra aussi indiquer les initialisations). A=2 A=A+2 B=A*2+2 C=4 C=B-C C=C+A-B; A=B-C*A A=(B-A)*C B=(A+C)*C A B C 3

d) Les listes. C est le type de variable le plus utilisé en Python. C est la traduction informatique du produit cartésien d ensembles. Pour construire une liste, on écrit des valeurs (de tout type) entre crochets séparées par des virgules. Attention : En python, l indice de la première composante est 0 et non 1. Accès aux composantes : Pour accéder aux composantes de ce n-uplet on utilise l expression A[i] où i est le numéro (l indice) de la composante. On retrouve ainsi les mêmes fonctions et opérateurs que pour les chaines de caractères : +, len(), in. On peut aussi numéroter à partir de la fin : la dernière composante A[-1], l avant dernière A[-2], l antépénultième A[-3]... Nous verrons aussi de nombreuses méthodes qui agissent sur l objet list. sort, append, insert... créer une variable de type liste ou tuple. accéder à une des valeurs d une liste. accéder à une plage de valeurs d une liste (une sous-liste). ajouter une valeur à la fin ou au début d une liste. ajouter une valeur à une place quelconque d une liste (par exemple à la deuxième place). e) D autres types. Les tuples, les ensembles, les dictionnaires, les fichiers, les fonctions... Nous les reverrons plus tard. 3) Entrées/sorties. Pour afficher le contenu d une variable à l écran. print Pour entrer une valeur au clavier. input Exemple : a=input( Entrer une valeur ) Ce qui est entré par l utilisateur est de type string (chaine de caractères). Pour entrer d autres types de variables, il faut utiliser les fonctions de transtypage. Exemple: a=float(input( Entrer une valeur )) ou Exemple: a=int(input( Entrer une valeur )) afficher la valeur d une variable. entrer une valeur avec input. entrer avec input deux valeurs entières et afficher avec print la somme des deux nombres. Exercices : ➀ Ecrire un programme qui demande les coefficients d un trinôme et qui affiche son discriminant. ➁ Ecrire un programme qui demande un mot de 5 lettres et qui affiche le mot à l envers. ➂ Ecrire un programme qui demande un entier à trois chiffres et qui affiche la somme de ses chiffres. ➃ Ecrire un programme qui demande un entier à quatre chiffres et qui affiche le plus grand de ses chiffres. ➄ Ecrire un programme qui demande un entier et qui affiche le nombre de chiffre de cet entier. ➅ Donner la liste des nombres de trois chiffres égaux à la somme des cubes de leurs chiffres. 4

4) Instructions conditionnelles. Test simple. if En Python la syntaxe est : if condition : Le bloc d instructions est exécuté uniquement si la condition est vérifiée. Attention aux deux points et à l indentation. En Python, c est la fin de l indentation qui indique la fin du bloc il n y pas de FinSi. Test avec alternative. if else En Python la syntaxe est : if condition : si la condition est vérifiée else : si la condition n est pas vérifiée Avec plusieurs alternatives : if elif else if condition 1 : si la condition1 est vérifiée elif condition 2 : si la condition1 n est pas vérifiée et la condition2 est vérifiée else : si aucune condition n est vérifiée Un exemple : a=float(input( Entrer une valeur pour a : )) b=float(input( Entrer une valeur pour b : )) c=float(input( Entrer une valeur pour c : )) if b*b-4*a*c>0 : print( Le discriminant strictement positif ) print( le polynome a deux racines réelles distinctes ) elif b*b-4*a*c==0 : print( Le discriminant est nul ) print( le polynome a une racine double ) else : print( Le discriminant strictement négatif ) print( le polynome n a pas de racines réelles ) faire un petit programme avec un if faire un petit programme avec un if else faire un petit programme avec un if elif else 5) Boucle Pour Une boucle est une construction permettant de répéter un bloc d instructions. En Python la syntaxe pour une boucle for classique est : for k in range(n): Attention aux deux points et à l indentation. En Python, c est la fin de l indentation qui indique la fin du bloc il n y pas de FinPour. La variable k est appelée compteur de boucle. C est un entier qui prend successivement les valeurs 0, 1, 2... et (n 1). Le bloc d instructions est exécuté pour chaque valeur de k. Le bloc d instructions peut dépendre, ou non, de la valeur de k. 5

Deux exemples simples : for k in range(10): for k in range(10): print("bravo") Il est possible de changer les bornes 0 et n-1 respectivement en n0 et n1 for k in range(n0,n1+1): Exemples : for k in range(1,10): for k in range(8,12): On peut aussi changer le pas du compteur. Exemples : for k in range(2,10,2): for k in range(3,0,-1): C est une structure simple pour calculer une somme ou un produit. S=0 P=1 for k in range(1,11): for k in range(3,0,-1): S=S+k P=2*P print(s) print(p) Remarque : Il est possible d interrompre une boucle for avec la commande break. Il est préférable d éviter cette instruction. On utilisera plutôt une boucle conditionnelle (while). faire un petit programme avec un for calculer la somme de tous les entiers de 1 à 100 (inclus). (avec un programme utilisant for) calculer factorielle 8. (avec un programme utilisant un for ) La structure for permet aussi une construction efficace de listes. (Listes en compréhension) Exemples : L1=[k**2 for k in range(11)] L2=[k for k in range(100) if (k**3-k+1)%7==0] 6) Boucle Tant que En Python, on écrit une boucle conditionnelle ainsi : while condition : Attention aux deux points et à l indentation. En Python, c est la fin de l indentation qui indique la fin du bloc il n y pas de FinTantQue. Le bloc d instruction est exécuté tant que la condition est vérifiée. Un exemple simple : n=1 while n<10: print(n) 6

Suivant les situations, il se peut que le bloc ne soit jamais exécuté, ou que l on boucle indéfiniment. Exemples : n=110 n=110 while n<10: while n>10: print(n) print(n) Le seul moyen de sortir d une boucle infinie est d interrompre l exécution du programme (Voir Pyzo). On peut remplacer une boucle for par une boucle while : Les deux programmes suivants font la même chose : for k in range(n): k=0 while k<n: k=k+1 On utilise souvent un while pour vérifier l entrée d une valeur. En Python on peut en plus gérer les erreurs de saisie comme sur l exemple suivant. while True: try: x = int(input("veuillez entrer un nombre entier : ")) break except ValueError: print("ce n est pas un nombre valide. Essayez encore...") faire un petit programme avec un while calculer la somme de tous les entiers de 1 à 100 (inclus). (avec un programme utilisant while) calculer factorielle 8. (avec un programme utilisant un while ) déterminer la première valeur de l entier n pour laquelle 2 n > 10 20. (en utilisant while) 7) Simulations de boucles. Il est souvent nécessaire de bien étudier l évolution des différentes variables dans une boucle. Il peut être bon pour cela de décrire avec soin la valeur contenue dans chacune des variables. Exemple 1 : a=1 b=2 n=0 while n<4: c=a+2*b a=b b=c print(b) La simulation de cette boucle se présente : tour de boucle variable c variable a variable b variable n entrée 1 2 0 1er tour 5 2 5 1 2e tour 12 5 12 2 3e tour 29 12 29 3 4e tour(sortie) 70 29 70 4 On indique la valeur des variables avant la première boucle (entrée), puis à la fin de chaque tour de boucle. On classe les variables dans l ordre des affectations dans la boucle. 7

Exemple 2 : L=[1,1] for i in range(5): u=l[i]+l[i+1]+i L=L+[u] print(l) La simulation de cette boucle se présente : tour de boucle variable i variable u variable L entrée [1,1] 1er tour 0 2 [1,1,2] 2e tour 1 4 [1,1,2,4] 3e tour 2 8 [1,1,2,4,8] 4e tour 3 15 [1,1,2,4,8,15] 5e tour(sortie) 4 27 [1,1,2,4,8,15,27] On indique la valeur des variables avant la première boucle (entrée), puis à la fin de chaque tour de boucle. On indique la variable d itération en premier dans la simulation, car c est la première variable modifiée à chaque tour. Exemple 3 : Soit (u n ) la suite définie par : u 0 = u 1 = u 2 = 1 et pour tout n N,u n+3 = 2u n+2 u n+1 u n +n Le programme suivant permet de calculer u 100. a,b,c=1,1,1 n=0 while n<98: temp=2*c-b-a+n a=b b=c c=temp print(c) La simulation suivante permet de le démontrer. tour de boucle variable temp variable a variable b variable c variable n entrée u 0 u 1 u 2 0 1er tour u 3 u 1 u 2 u 3 1 2e tour u 4 u 2 u 3 u 4 2..... 98e tour(sortie) u 100 u 98 u 99 u 100 98 A la fin de cette boucle la valeur contenue dans la variable c est égale à u 100 8