STAGE IREM 0- Premiers pas en Python



Documents pareils
Présentation du langage et premières fonctions

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

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)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP 1. Prise en main du langage Python

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

Découverte de Python

Algorithmique et Programmation, IMA

Initiation à la programmation en Python

Initiation à la Programmation en Logique avec SISCtus Prolog

Licence Sciences et Technologies Examen janvier 2010

Représentation d un entier en base b

Maple: premiers calculs et premières applications

EXCEL TUTORIEL 2012/2013

Initiation à l algorithmique

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


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

Cours 7 : Utilisation de modules sous python

Programmation avec Xcas ou Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithmes récursifs

Cours Informatique Master STEP

Corrigé des TD 1 à 5

Chapitre 2 Devine mon nombre!

DM 1 : Montre Autoquartz ETA

Algorithmique et programmation : les bases (VBA) Corrigé

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Calcul Formel et Numérique, Partie I

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

Introduction à MATLAB R

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

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

Cours d algorithmique pour la classe de 2nde

Initiation à LabView : Les exemples d applications :

Utilisation d objets : String et ArrayList

Cours de Systèmes d Exploitation

INF 321 : mémento de la syntaxe de Java

Conventions d écriture et outils de mise au point

TABLEAU CROISE DYNAMIQUE

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Glossaire des nombres

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

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

Programmation Web. Madalina Croitoru IUT Montpellier

Algorithmique avec Algobox

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

1 Recherche en table par balayage

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

1 Lecture de fichiers

Rappels sur les suites - Algorithme

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

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

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

V- Manipulations de nombres en binaire

Aide : publication de décisions VS

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Représentation des Nombres

Algorithmique et structures de données I

Conversion d un entier. Méthode par soustraction

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

OCL - Object Constraint Language

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Comment créer et utiliser une fonction

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

TD3: tableaux avancées, première classe et chaînes

2 Comment fonctionne un ordinateur, dans les grandes lignes

Initiation à Excel. Frédéric Gava (MCF)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction au langage C

Guide de formation avec cas pratiques. Programmation. Philippe Moreau Patrick Morié. Daniel-Jean David

Recherche dans un tableau

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

MIS 102 Initiation à l Informatique

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Cours d Algorithmique et de Langage C v 3.0

TP : Gestion d une image au format PGM

ACTIVITÉ DE PROGRAMMATION

Le langage C. Séance n 4

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

Compter à Babylone. L écriture des nombres

Les chaînes de caractères

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

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

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Java Licence Professionnelle CISII,

Solutions du chapitre 4

Créer un tableau avec LibreOffice / Calc

Note de cours. Introduction à Excel 2007

Chapitre 1 Qu est-ce qu une expression régulière?

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

2. Comprendre les définitions de classes

Débuter avec Excel. Excel

PROGRAMMER EN MQL4. Apprenez à automatiser vos stratégies sur MetaTrader 4

Présentation du PL/SQL

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

1. Structure d'un programme FORTRAN 95

Transcription:

Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer des expressions (arithmétiques ou booléennes, par exemple). Il faut pour cela respecter la syntaxe du langage. On peut sauvegarder des valeurs dans des variables. Chaque variable a un nom. Par exemple, pour sauvegarder la valeur 123 45 dans une variable qui s appelle x, on tape l instruction x = 123 * 45 On peut ensuite réutiliser x, et sauvegarder la valeur de x 2 dans la variable de nom y en tapant l instruction y = x * x. Contrairement à sa signification mathématique, le symbole = signifie «calculer la valeur à droite du signe = et mémoriser le résultat dans la variable dont le nom est à gauche du signe =», il y a donc deux étapes bien distinctes : calculer d abord, et stocker le résultat ensuite. Exercice 0.1 Que contiennent les variables x, y, z après les instructions suivantes? x = 6 y = x + 3 x = 3 z = 2 * y - 7 Exercice 0.2 L instruction i = i + 1 a-t-elle un sens ; si oui lequel? Et i + 1 = i? Exercice 0.3 Que contiennent les variables x, y, z après les instructions suivantes? x = 6 y = 7 z = x z = z + y Exercice 0.4 Quel est le résultat de l instruction x = 2 * x? Si la valeur initiale de x est 1, donner les valeurs successives de x après une, deux, trois, etc. exécutions de cette instruction. Exercice 0.5 Écrire une suite d instructions permettant d échanger le contenu de deux variables a et b (sans utiliser le raccourci python a, b = b, a). Exercice 0.6 Écrire une instruction qui affecte à la variable m le résultat du calcul de la moyenne de deux réels a et b pondérés par les coefficients respectifs coef1 et coef2. Expressions booléennes Une expression booléenne est une expression qui n a que deux valeurs possibles, True (vrai) ou False (faux) ; les tests x == y (égalité), x!= y (inégalité), x < y, x <= y, etc. sont des expressions booléennes. On peut combiner des expressions booléennes avec les opérateurs and, or et not. Exercice 0.7 Écrire une expression qui vaut True si x appartient à [0, 5[ et False dans le cas contraire. Écrire une suite d instructions permettant d évaluer cette expression. Divisions entières En termes simples, la division entière est une division arrondie «par défaut», c est-à-dire que l on ne conserve pas les chiffres après la virgule dans le résultat (le quotient) : 17/5 = 3, 4 mais on ne conserve que 3. Il y a alors un reste : 17 5 3 = 2

Plus formellement, le quotient entier q de deux entiers a et b positifs, et le reste r de la division sont définis par : a = bq + r avec 0 r < b Par exemple le quotient et le reste de la division de 17 par 5 sont 3 et 2 car 17 = 5 3 + 2. En python le quotient entier de a par b est noté a//b, et le reste a%b (aussi appelé modulo). Exercice 0.8 Écrire une expression qui vaut True si l entier n est pair et False dans le cas contraire. Écrire une suite d instructions permettant d évaluer cette expression. Exercice 0.9 Taper les instructions suivantes et prenez le temps d expliquer précisément l évolution des variables pendant l exécution pas à pas de ces instructions. x = 11 * 34 x = 13.4-6 # ceci est un commentaire y = 13 / 4 # division avec virgule y = 13 // 4 # division entiere z = 13 % 2 z = 14 % 3 i = 5 i = i + 4 j = 0 b = i < j b = i!= 9 b = i == 9 Fonctions Exemple de définition de fonction : def f(x): return x*x + x + 1 Ne pas oublier les deux points à la fin de la première ligne. Les lignes suivantes (dans ce premier exemple il y en a une seule) contiennent des instructions qui constituent le corps de la définition ; ces instructions seront exécutées chaque fois que l on utilisera la fonction, et doivent être indentées, c est-à-dire décalées pour indiquer à python qu elles font partie de la définition de la fonction. Ne pas oublier d appuyer deux fois sur entrée à la fin pour insérer une ligne vide (non indentée, donc) pour que python puisse savoir quand la définition est finie. La plupart des fonctions servent, comme en mathématiques, à calculer (et retourner) un résultat, indiqué dans l instruction return. Ne pas confondre définir et utiliser une fonction : en jargon informatique on distingue définition, que l on effectue en générale une seule fois, pour fournir le corps de la fonction, et appel de fonction, que l on fait autant de fois que l on veut. De même ne pas confondre les paramètres dans la définition (ici il y en a un seul, nommé x), et les arguments fournis lors de l appel. Le premier exercice ci-dessous illustre ces notions. Exercice 0.10 Après avoir défini la fonction f comme ci-dessus, taper les instructions suivantes qui appellent cette fonction en lui passant différents arguments et prenez le temps d expliquer en détail les résultats obtenus. y = f(2) t = 4 y = f(t) x = (3*t + 1) / 2 y = f(x) x = (3*t + 1) // 2 2

y = f(x) z = f(x - t) t = f(t) Comme pour l instruction d affectation, l appel d une fonction se fait donc en plusieurs étapes bien distinctes : les valeurs des arguments passés à la fonction sont d abord calculées. La fonction est alors appelée avec le résultat de ces calculs. Le contenu de la définition de la fonction est alors exécuté, les paramètres contenant alors les résultats des calculs des arguments. La fonction retourne (à l aide de return) une valeur. L exécution revient alors à l endroit où l on a effectué l appel à la fonction, et c est la valeur retournée par la fonction qui y est utilisée. Exercice 0.11 Écrire une fonction moyenne(a,b) qui retourne la moyenne de deux nombres a et b. Testez-la. Exercice 0.12 Écrire une fonction pair(n) qui teste si n est pair ; la valeur calculée doit être booléenne, c est-à-dire égale à True ou False. Testez-la. Conditionnelles La syntaxe if... else... permet de tester des conditions pour exécuter ou non certaines instructions. Exemple : if age <= 18: if age <= 18: Ne pas oublier les deux points à la fin des lignes if, else. Les instructions à exécuter dans chacun des cas doivent être indentées et rigoureusement alignées verticalement (ici il y a quatre blancs au début de chaque instruction indentée) en fait l utilisateur est aidé dans cette tâche par le logiciel de programmation, qui insère les blancs à sa place. La partie else n est pas obligatoire : son absence indique simplement qu il n y a rien à faire dans ce cas. La syntaxe if... else... peut être imbriquée, par exemple : if age <= 5: prix = 0 if age <= 18: Cela permet ici de distinguer trois cas : age 5, 5 < age 18 et age > 18. On peut utiliser la syntaxe if... elif... else... pour l écrire de manière plus simple. elif peut être répété autant de fois que voulu. Sur cet exemple : if age <= 5: prix = 0 elif age <= 18: Exercice 0.13 Donner les valeurs des variables h et y après exécution de l exemple suivant pour x valant 1, puis pour x valant 8. 3

h = 0 Même question pour chacun des codes suivants : h = 0 Code A h = 0 Code B h = 0 Code C Exercice 0.14 Écrire et tester une fonction compare(a,b) qui retourne 1 si a < b, 0 si a = b, et 1 si a > b. Exercice 0.15 Écrire une fonction max2(x,y) qui calcule le maximum de deux nombres x et y. Attention : bien appeler cette fonction max2, car la fonction max est prédéfinie en python. Exercice 0.16 Écrire une fonction max3(x,y,z) qui calcule le maximum de trois nombres x, y, z. Donner plusieurs versions de cette fonction dont une utilise la fonction max2. Exercice 0.17 Écrire une fonction uneminuteenplus qui calcule l heure une minute après celle passée en paramètre sous forme de deux entiers que l on suppose cohérents. Exemples : uneminuteenplus(14,32) vaut (14, 33). uneminuteenplus(14,59) vaut (15, 0). Ne pas oublier le cas de minuit. Exercice 0.18 Le service de reprographie propose les photocopies avec le tarif suivant : les 10 premières coûtent 20 centimes l unité, les 20 suivantes coûtent 15 centimes l unité et au-delà de 30 le coût est de 10 centimes. Écrire une fonction coutphotocopies(n) qui calcule le prix à payer pour n photocopies. Listes et boucles for python permet de manipuler les listes d éléments, par exemple [2,8,5] est une liste d entiers. La fonction len (abréviation de length) retourne la longueur d une liste (on dit aussi sa taille), par exemple len([2,8,5]) vaut 3. La boucle for permet de parcourir les éléments d une liste ; ne pas oublier les deux points à la fin de la ligne, et les lignes suivantes doivent être indentées (décalées). La fonction range permet de construire une liste d entiers consécutifs. Exercice 0.19 Entrer l instruction suivante et analyser ce qui est affiché : for i in [2, 8, 5]: print(i, i * i) Même question pour : 4

u = [2, 8, 5] for i in u: print(i, i * i) Entrer les deux instructions suivantes et analyser les réponses de python : x = range ( 10) u = list(range (10)) Continuer de même avec les instructions suivantes : for j in range ( 10): print(j, j * j) v = list(range (3, 8)) for k in range (3, 8): print(k, 2 * k + 1) print (2 ** k) Les variables i, j, k sont-elles définies après exécution de ces instructions? Si oui, quelles sont leurs valeurs? Exercice 0.20 Tester chacun des groupes d instructions suivantes et analyser les résultats comme dans l exercice précédent : u = list(range (1, 10)) v = list(range (2, 20, 3)) for a in ["a","b","c"]: for i in [1,2,3]: print(a, i) u = [2,6,1,10,6] v = [2,5,6,4] for x in u: for y in v: print (x, y, x + y, x == y) La syntaxe complète de range est donc : range(debut,fin,pas) Où pas est optionnel, par défaut il vaut 1, et debut est optionnel également, par défaut il vaut 0. Exercice 0.21 On considère la définition suivante : def somme(n): return s Quelles sont les valeurs de somme(3), de somme(5) et de somme(n)? Connaissez-vous une formule qui permet de calculer le même résultat? L instruction return arrête l exécution de la fonction qui la contient. Que calcule la fonction somme si par malheur on indente trop la dernière ligne, comme ci-dessous? 5

def somme(n): return s # gros bug! On considère maintenant la fonction suivante : def isommesup(n,smin): if s > smin: return i return 0 Que retourne isommesup(100,20)? isommesup(10,20)? isommesup(5,20)? D une manière générale, que calcule la fonction isommesup? Pourquoi la version suivant ne produit par le bon résultat? def isommesup2(n,smin ): if s > smin: return i return 0 Exercice 0.22 Écrire une fonction sommecarres(n) qui calcule n i 2. Exercice 0.23 La fonction factorielle peut être définie de la manière suivante : { 0! = 1, n! = 1 2 n pour n 1. Écrire une fonction factorielle(n) qui utilise cette définition pour calculer n!. Tester en affichant les factorielles des nombres de 0 à 16. Écrire une fonction minfact(n,f) qui retourne le plus petit entier k n tel que k! f, s il existe (c est-à-dire si n! f). i=1 6