TP 6 Fonctions (calculette)

Documents pareils
Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

I00 Éléments d architecture

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

Utilisez Toucan portable pour vos sauvegardes

TP 1. Prise en main du langage Python

Le langage C. Séance n 4

La mémoire. Un ordinateur. L'octet. Le bit

Licence Sciences et Technologies Examen janvier 2010

STAGE IREM 0- Premiers pas en Python

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

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

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Tp 1 correction. Structures de données (IF2)

Logiciels de gestion FAC. Analyste AgExpert. Guide de démarrage rapide 2014

Maple: premiers calculs et premières applications

REALISATION d'un. ORDONNANCEUR à ECHEANCES

I. Introduction aux fonctions : les fonctions standards

EXERCICE N 9. Base Centrale de pilotage. Notions abordées : Création d objets personnels. Utilisation de fonctions numériques

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

Description pas à pas des différents processus d installation, configuration, saisie des résultats et export des données.

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

TP3 : Manipulation et implantation de systèmes de fichiers 1

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Notice d Utilisation du logiciel Finite Element Method Magnetics version 3.4 auteur: David Meeker

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

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

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


À propos de votre liseuse... 5

NOTICE SIMPLIFIEE ER-A280F. I Initialisation avec Remise à Zéro de la caisse : ENTER PASSWORD ER-A280V. Ver1.02

Rappels d architecture

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Présentation du langage et premières fonctions

Vous allez le voir au cours de ce premier chapitre, 1. Découvrir l ipad

Représentation des Nombres

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

L informatique en BCPST

À propos de votre liseuse... 4

Cours 1 : La compilation

1 Recherche en table par balayage

Chapitre 4 : Édition de fichiers texte - Vi

Introduction à l informatique en BCPST

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

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

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

1.1 L EXPLORATEUR WINDOWS

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

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

MANUEL D UTILISATION TERMINAL PHL 2700

hp 12c calculatrice financière

Premiers Pas avec OneNote 2013

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)

Manuel de démarrage rapide de la calculatrice financière

Initiation à la Programmation en Logique avec SISCtus Prolog

Comment créer une facture

Algorithmique, Structures de données et langage C

Manuel utilisateur Alarme GSM+RTC

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

ENVOI EN NOMBRE DE SMS

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

Découverte de Python

Plateforme PAYZEN. Définition de Web-services

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Algorithmique et Programmation, IMA

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

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

DOCM Solutions officielles = n 2 10.

NOTICE DE MISE A JOUR - ODYSSEY

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Guide d utilisation rapide. Machine à affranchir CourrierPRO

SHOPCAISSE NOTICE D UTILISATION. ShopCaisse est une solution d encaissement disponible sur ipad.

Découverte du tableur CellSheet

Projet Matlab : un logiciel de cryptage

Qu est-ce qu un outil de travail collaboratif Google Drive?

INSTALLATION DE CEGID BUSINESS VERSION 2008 Edition 4 (CD-Rom du 16/07/2009) SUR UN POSTE AUTONOME SOMMAIRE

1.6- Génération de nombres aléatoires

Instructions de mise à jour pour V

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.

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

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

Systèmes de communications Aastra Poste Aastra 5360ip. Guide de l utilisateur

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

COURS DE MS EXCEL 2010

MANUEL POUR L UTILISATION DE L APPLICATION EN LIGNE DU SYSTÈME DE NOTIFICATION DES ACCIDENTS INDUSTRIELS

ENVOI EN NOMBRE DE SMS

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

2 Comment fonctionne un ordinateur, dans les grandes lignes

Introduction à l algorithmique et à la programmation (Info 2)

Définition des Webservices Ordre de paiement par . Version 1.0

Utilisation de l outil lié à MBKSTR 9

Logiciel de facturation (ASP) pour les distributeurs de combustibles

alg - Classes, instances, objets [oo] Exercices résolus

Transcription:

Algorithmique et Programmation 1 L1 Mathématiques L1 Informatique 2015-2016 TP 6 Fonctions (calculette) Programmer une calculatrice simplifiée. Objectif 1 Caractéristiques et fonctionnement de la calculatrice On s intéresse ici à un type très simple de calculatrice à quatre opérations (addition, soustraction, multiplication et division) sur des nombres entiers (pour simplifier), possédant : Un écran permettant d afficher la valeur du résultat ; Un clavier permettant : d allumer/eteindre la calculatrice ; d entrer des nombres (0, 1, 2, 3, 4, 5, 6, 7, 8 et 9) ; d entrer des opérations (+, -, * et /) ; d afficher le résultat d une opération (=) ; Nous modéliserons l appui sur une touche du clavier de la calculatrice par la saisie d une chaine de caractères de longueur 1 (c est-à-dire un caractère suivi de return). La touche on/off est représentée par le caractère q. Pour simplifier, la division est la division entière et est appelée par le caractère d. Le fonctionnement général est le suivant : La calculatrice affiche le résultat courant après chaque saisie d un caractère (et donc d une touche return dans notre modélisation). À chaque pression de l utilisateur sur une touche, une action différente est accomplie selon la touche pressée : Touche chiffre (de 0 à 9) : le chiffre est ajouté à droite du nombre courant. Touche opération (+, -, * ou d) : l opération à effectuer est sauvegardée en mémoire. Touche égal (=) : l opération demandée est effectuée si une touche opération a déjà été pressée et ses deux opérandes saisis. 1

Touche on/off (q) : éteint la calculatrice. 2 Fonctionnement de la mémoire de la calculatrice Notre calculatrice possède une mémoire très limitée constituée de trois registres (X, Y et OP) et d un drapeau attente_nombre (un drapeau est un autre nom pour une valeur booléenne). Cela signifie qu elle n est capable d utiliser que quatre variables, notées X, Y, OP et attente_nombre : ÝÑ X et Y stockent les nombres composés par l utilisateur (dans un premier temps, des entiers) ; ÝÑ OP stocke un caractère décrivant la prochaine opération à effectuer sur X et Y. ÝÑ attente_nombre est une variable booléene indiquant si la prochaine entrée attendue de l utilisateur doit être le premier chiffre d un nouveau nombre. La mémoire de la calculatrice fonctionne selon les régles suivantes. À l état initial, OP et attente_nombre contiennent + et True, tandis que les registres X et Y sont nuls 1. Le nombre en cours de saisie ou le résultat d une opération est toujours stocké en mémoire dans le registre X, et affiché sur l écran. Lorsque l utilisateur commence à saisir un nouveau nombre, attente_nombre devient False et le contenu du registre X est copié dans le registre Y. Si l utilisateur saisit d autres chiffres, ceux-ci sont accumulés dans le registre X. Lorsque l utilisateur demande une opération, on commence par vérifier si l on n est pas déjà en train d attendre la saisie d un nouveau nombre. Si ce n est pas le cas, on calcule l opération précédemment saisie : le registre X prend la valeur Y OP X (en effet, Y contient la première opérande de l opération en cours et X contient la seconde). On positionne ensuite attente_nombre à True pour attendre le second opérande de la nouvelle opération. Dans tous les cas la prochaine opération à effectuer est stocké dans le registre OP. Lorsque l utilisateur demande un résultat, et si l on n attend pas la saisie d un nouveau nombre, le registre X prend comme précédemment la valeur Y OP X et attente_nombre est ensuite positionné à True. Ensuite, les registres Y et OP sont réinitialisés. 3 Exemples d utilisations et mémoires associées Voici quelques exemples d utilisation de notre calculatrice (à gauche), associée aux différents états de ses registres et drapeau (à droite entre parenthèses affichage non demandé). Exemple 1 : Effectuons l opération : 21 ˆ 12 252. 0 (X = 0, Y = 0, OP = +, attente_nombre = True) 2 (X = 2, Y = 0, OP = +, attente_nombre = False) 21 (X = 21, Y = 0, OP = +, attente_nombre = False) > * 21 (X = 21, Y = 0, OP = *, attente_nombre = True) 1 (X = 1, Y = 21, OP = *, attente_nombre = False) 1. En effet, lorsque l utilisateur demande une opération, l opération en mémoire est effectuée lorsque cela est possible. Il faut donc qu à la première demande, cette opération soit transparente. La seule possibilité est en fait une addition par zéro. 2

12 (X = 12, Y = 21, OP = *, attente_nombre = False) 252 (X = 252, Y = 21, OP = +, attente_nombre = False) > q Exemple 2 : Effectuons les opérations 123 ` 21 puis 144 { 5. 0 (X = 0, Y = 0, OP = +, attente_nombre = True) 1 (X = 1, Y = 0, OP = +, attente_nombre = False) 12 (X = 12, Y = 0, OP = +, attente_nombre = False) > 3 123 (X = 123, Y = 0, OP = +, attente_nombre = False) > + 123 (X = 123, Y = 0, OP = +, attente_nombre = True) 2 (X = 2, Y = 123, OP = +, attente_nombre = False) 21 (X = 21, Y = 123, OP = +, attente_nombre = False) 144 (X = 144, Y = 123, OP = +, attente_nombre = True) > d 144 (X = 144, Y = 123, OP = d, attente_nombre = True) > 5 5 (X = 5, Y = 144, OP = d, attente_nombre = False) 28 (X = 28, Y = 144, OP = d, attente_nombre = True) > 4 Implémentation de la calculette Exercice 1 : Calculatrice quatre opérations. 0. Téléchargez le fichier calculatrice.py afin de pouvoir le compléter. 1. Complétez le corps de la fonction est_chiffre, qui accepte en paramètre une chaîne de caractères et renvoie True si son argument est un caractère représentant un entier compris entre 0 et 9, False sinon. Par exemple, est_chiffre( 3 ) doit renvoyer True. 2. Complétez le corps de la fonction est_operateur, qui accepte en paramètre une chaîne de caractères et renvoie True si son argument est +, -, * ou d, et False sinon. Par exemple, est_operateur( # ) doit renvoyer False. 3. Complétez le corps de la fonction complete_entier, qui accepte deux paramètres, un entier n et un chiffre c et renvoie l entier obtenue en concaténant des chiffres de n avec c. Par exemple, complete_entier(10, 3 ) doit renvoyer l entier 103. 4. Complétez le corps de la fonction calcule, qui accepte trois paramètres, un entier a, un caractère op représentant un opérateur et un second entier b et renvoie le résultat de l opération a op b. Par exemple, calcule(10, d, 3) doit renvoyer l entier 3. (On rappelle que l on souhaite que la division soit la division entière.) 5. Complétez le corps de la fonction calculette, afin de simuler le comportement décrit précédemment. Exercice 2 : Gestion de la division par 0. 3

Pour le moment, nous n avons pas fait attention aux problèmes causés par une division par 0. Nous allons donc rajouter la possibilité d afficher ERROR si une telle opération est effectuée. 1. Modifiez la fonction calcule pour qu elle renvoie la chaine ERROR si l un de ses parametres effectifs contient ERROR et effectue le calcul comme précédemment sinon. 2. Modifiez la fonction complete_nombre pour n effectuer le calcul que si premier paramètre effectif ne contient pas la chaine de caractères ERROR 3. Que doit-on faire pour pouvoir continuer à utiliser notre calculatrice si l on a généré une erreur? Exercice 3 : Chaînes de documentation. Vous avez pu constater que le code à trous proposé pour la fonction est_chiffre était : def est_chiffre(chaine): """Renvoie True si chaine est un chiffre, False sinon. exemple : ąąą est_chiffre( * ) False ąąą est_chiffre( 3 ) True """ pass Ce qui se trouve entre triple guillemets est une chaîne de caractères faisant office de documentation de la fonction (docstring). Elle doit apparaître en première position dans le corps de la fonction et permet au programmeur relisant votre code (vous dans six mois, par exemple) d avoir une description précise : des arguments de la fonction ; de ce qu elle fait ; de sa valeur de retour ; d exemples d utilisation ; de cas d erreurs. Si votre fonction est insérée dans un module (comme random ou turtle), cette chaîne de caractères est accessible de l interpréteur Python grâce à l appel : help(nom_du_module.nom_de_la_fonction). Nous reparlerons de l utilisation des modules en cours. Si la fonction est définie directement dans l espace de nom global, on peut taper plus simplement help(nom_de_la_fonction). Écrivez des chaînes de doumentation pour chacune des fonctions de votre programme, et consultez-les par la fonction help. Exercice 4 : Ajout de nouvelles fonctionnalités. Ajoutez de nouvelles fonctionnalités à votre calculatrice. Par exemple : Touche C : réinitialise la calculatrice, c est à dire rétablit la valeur d origine de tous les registres. Touche m : change le signe du registre courant. Touche g : calcule le plus grand diviseur commun à X et Y (g pour greatest common divisor). 4

Touche l : calcule le plus petit multiple commun à X et Y (l pour least common multiple). Touche r : calcule le plus grand entier inférieur ou égal à la racine carrée de X (c est-à-dire la partie entière de la racine carrée). N oubliez pas de gérer une erreur lorsque l opération n est pas autorisée. Imaginez tout ce qui vous amuse! Exercice 5 : Calcul sur les nombres flottants. On souhaite désormais que la calculatrice puisse gérer les nombres flottants et la division de ces nombres. Cela signifie que le caractère. (séparateur décimal) devra être accepté par la calculatrice pour indiquer que le nombre courant passe du statut d entier à celui de flottant. 0. Effectuez une copie de votre programme dans un nouveau fichier afin de pouvoir le modifier sans perdre quoi que ce soit. 1. Modifiez le code (notamment la fonction complete_nombre) pour pouvoir simuler la touche.. Si l utilisateur presse une seconde fois cette touche dans un même nombre, le second appui n a pas d effet. Pour plus de simplicité, les registres X et Y contiendront maintenant des chaînes de caractères. Vous pouvez si vous le souhaitez ajouter une nouvelle variable booléenne. 2. Modifiez votre code pour pouvoir simpuler la division des flottants en plus de la division entière. 5