Série 2 Premiers programmes



Documents pareils
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 à la programmation en Python

Corrigé des TD 1 à 5

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

STAGE IREM 0- Premiers pas en Python

Correction TD algorithmique

TP 1. Prise en main du langage Python

Licence Sciences et Technologies Examen janvier 2010

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

Probabilités Loi binomiale Exercices corrigés


SOMMAIRE. 1. Préambule Le calendrier Trajectoire d un objet lancé Régression linéaire...9

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

Algorithmique et Programmation, IMA

Algorithmique et structures de données I

Introduction au langage C

1 Recherche en table par balayage

L informatique en BCPST

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

Cours d algorithmique pour la classe de 2nde

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

V- Manipulations de nombres en binaire

Introduction à MATLAB R

Algorithmique avec Algobox

Représentation d un entier en base b

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Algorithme. Table des matières

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

TP, première séquence d exercices.

Probabilités sur un univers fini

Auto-Entreprise : Activités : Eric SOTY - Siret n Formation Bureautique, continue d'adultes. Tél : Fax :

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Examen Médian - 1 heure 30

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Chapitre 2 Devine mon nombre!


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

Complément d information concernant la fiche de concordance

Présentation du langage et premières fonctions

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

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

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

Rappels sur les suites - Algorithme

Cours 1 : Qu est-ce que la programmation?

Conventions d écriture et outils de mise au point

Java Licence Professionnelle CISII,

Glossaire des nombres

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Chapitre 1 : Évolution COURS

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

Simulation d une économie monétaire (programmation impérative, sujet 3)

Le langage C. Séance n 4

LES GENERATEURS DE NOMBRES ALEATOIRES

Qu est-ce qu une probabilité?

avec des nombres entiers

ASR1 TD7 : Un microprocesseur RISC 16 bits

Cours 1 : La compilation

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Algorithmique et programmation : les bases (VBA) Corrigé

Les chaînes de caractères

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

La persistance des nombres

Représentation des Nombres

Solutions du chapitre 4

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Programmation linéaire

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

I. Introduction aux fonctions : les fonctions standards

Calcul Formel et Numérique, Partie I

1 Lecture de fichiers

Cryptographie et fonctions à sens unique

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

Plan. 5 Actualisation. 7 Investissement. 2 Calcul du taux d intérêt 3 Taux équivalent 4 Placement à versements fixes.

Probabilités sur un univers fini

Algorithmique avec Algobox

Informatique Générale

UE C avancé cours 1: introduction et révisions

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

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

Direction des Études et Synthèses Économiques Département des Comptes Nationaux Division des Comptes Trimestriels

Rappels Entrées -Sorties

PROBABILITÉS CONDITIONNELLES

DOCM Solutions officielles = n 2 10.

Actuariat I ACT2121. septième séance. Arthur Charpentier. Automne charpentier.arthur@uqam.ca. http ://freakonometrics.blog.free.

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

Cours 7 : Utilisation de modules sous python

S initier aux probabilités simples «Question de chance!»

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Découverte du tableur CellSheet

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

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Chapitre 5. Calculs financiers. 5.1 Introduction - notations

Probabilités conditionnelles Loi binomiale

Transcription:

Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend la monnaie Écrivez un programme qui lit une somme exprimée en euros, sans centimes, et affiche le nombre minimal de billets et de pièces de 2 et 1 euros nécessaires pour la composer. Il s agit pour le moment de réaliser un script sans boucles ni instruction conditionnelle. Vous avez donc le droit de donner des réponses maladroites, pourvu qu elles soient justes. Exemple d exécution ( est l invite de ma machine) : python monnaie.py Somme? 1949 1949 = + 3 x 500 + 2 x 200 + 0 x 100 + 0 x 50 + 2 x 20 + 0 x 10 + 1 x 5 + 2 x 2 + 0 x 1 Indications. Si x et y sont des expressions entières (de type int ou long), alors x/y vaut le quotient entier (on dit aussi quotient «par défaut») et x%y le reste de la division de x par y. Programmes avec des instructions conditionnelles if Exo 2.2 Jour de la semaine d une date donnée Écrivez un programme qui calcule le jour de la semaine correspondant à une date donnée, supposée correcte, exprimée sous forme de trois nombres entiers j (jour), m (mois) et a (année). Exemple python joursemaine.py jour? 24 mois? 9 annee? 2009 le 24/9/2009 est un jeudi Utilisez les formules suivantes : { { m 2, si m 3 a, si m 3 m 1 =, a m + 10, sinon 1 = a 1, sinon, n s = le siècle compté à partir de 0 (c est-à-dire tel qu exprimé par les deux premiers chiffres de a 1 ), a s = l année dans le siècle (exprimée par les deux derniers chiffres de a 1 ), puis f = j + a s + a s 4 2 n s + n s 4 + 26 m 1 2 10 Dans ces conditions, le jour de la semaine est donné par le reste de la division de f par 7 (0 dimanche, 1 lundi,... 6 samedi). Ci-dessus, les barres de fraction indiquent des divisions entières (c est-à-dire des quotients par défaut). 1

Exo 2.3 Réapparition de la machine qui rend la monnaie Améliorez la solution précédemment donnée de ce problème, de manière à éviter les maladresses que nous avons constatées. On doit obtenir maintenant, par exemple : python monnaie.py Somme? 1949 1949 = 3 x 500 + 2 x 200 + 2 x 20 + 1 x 5 + 2 x 2 Exo 2.4 La date du lendemain Écrivez un programme qui acquiert au clavier une date, exprimée sous forme de trois nombres entiers j (jour), m (mois) et a (année) et qui affiche la date du lendemain. Exemple : python lendemain.py jour? 30 mois? 9 annee? 2009 aujourd hui: 30 9 2009 demain: 1 10 2009 Vous pouvez supposer que la date saisie est correcte. Suggestion. Vous aurez fait le plus gros du travail quand vous aurez écrit une expression logique, portant sur les nombres j, m et a, qui traduit exactement la proposition «(j, m, a) est le dernier jour du mois». Rappel. Les années bissextiles sont les années multiples de 4 qui ne sont pas multiples de 100, et les années multiples de 400. Programmes avec des boucles while Exo 2.5 Moyenne d une suite de nombres lus successivement Écrivez un programme qui lit au clavier une suite de nombres positifs ou nuls (tapés successivement, à raison d un par ligne) et en calcule la moyenne. On ne sait pas à l avance combien il y a de nombres, c est la frappe d une valeur négative qui indique la fin de la suite. Exemple python moyenne.py? 10? 12? 8? -1 moyenne: 10 Indication. Sous son air innocent, cet exercice est très important car il illustre une situation que vous rencontrerez souvent : traiter une suite de données dont on ne connaît pas à l avance le nombre, acquises successivement, jusqu à la rencontre d une donnée invalide qui indique la fin de la suite. Attachez-vous à écrire un programme obéissant au schéma universel et fiable suivant : acquérir une donnée x tant que x est valide : traiter x (cela dépend du problème particulier considéré) acquérir une donnée x 2

La plupart des langages actuels disposent d une instruction d abandon de boucle, comme break en Python. Un autre schéma universel et fiable est alors celui-ci : répéter indéfiniment : acquérir une donnée x si x est invalide : abandonner la boucle traiter x (cela dépend du problème particulier considéré) Exo 2.6 Tester la fonction random La fonction random() du module random (voyez http://docs.python.org/library/random. html) renvoie, chaque fois qu on l appelle, un nombre flottant x vérifiant 0 x < 1, la suite des nombres successivement produits étant pseudo-aléatoire 1. Pour tester (très succinctement) cette fonction, écrivez un programme qui fait un grand nombre d appels de cette fonction et qui calcule la moyenne et l écart-type des valeurs obtenues. Rappels. Étant donnée une suite de n nombres (x i) 0 i<n, sa moyenne est définie par x = 1 n et son écart-type par ρ = 1 n n 1 i=0 x 2 i x2. n 1 x i i=0 Note. Si la fonction random était parfaite et le nombre de tirages infini, la moyenne vaudrait 1 2 et 1 l écart-type 12 = 0, 28867513459481292 Exo 2.7 Facteurs premiers d un nombre 1. Écrivez un programme qui lit un nombre entier au clavier et en affiche les facteurs premiers. Première version, simple : python diviseurs.py n? 720 720 = 2 * 2 * 2 * 2 * 3 * 3 * 5 On implémentera le schéma assez maladroit, mais suffisant suivant : acquérir le nombre entier n dont on recherche les diviseurs pour chaque nombre entier d allant de 2 jusqu à n : tant que d divise n : afficher d remplacer n par n/d 2. Écrivez une deuxième version du programme produisant un affichage plus proche de la coutume mathématique : python diviseurs.py n? 720 720 = 2^4 * 3^2 * 5^1 1. En réalité on souhaite une suite aléatoire, c est-à-dire faite de nombres choisis au hasard, mais les ordinateurs ne savent pas faire des choses au hasard. On emploie donc des algorithmes mathématiques produisant des suites pseudoaléatoires, censées avoir une très grande période (on peut produire beaucoup de valeurs avant de retomber sur la séquence déjà produite) et des propriétés statistiques aussi proches que possible de celles d une suite aléatoire. 3

Exo 2.8 Deviner un nombre Écrivez un programme qui tire au hasard un nombre entier (secret) n vérifiant 0 n < 100 puis lit des nombres proposés par l utilisateur en répondant à chaque fois trop grand, trop petit ou gagné et en comptant le nombre d essais nécessaires à l utilisateur pour deviner le nombre secret. Exemple : python jeu.py? 50 trop grand? 25 trop petit? 37 trop petit? 42 trop grand? 40 bravo, vous avez gagné en 5 coups! Programmes avec des boucles for Exo 2.9 Calcul de la factorielle Écrivez un programme qui calcule itérativement (c est-à-dire selon un algorithme basé sur une boucle, ici une boucle for) la valeur de la factorielle d un nombre donné. Exemple : python factorielle.py n? 50 50! = 30414093201713378043612608166064768844377641568960512000000000000 Rappel. La factorielle d un nombre n vérifiant n 0 est le nombre n! = n (n 1) (n 2)... 3 2 1 Exo 2.10 Tabulation d une fonction Écrivez un programme qui affiche les valeurs du sinus des angles de 0 à 90 degrés par pas de 15 degrés. On souhaite un affichage respectant strictement la forme suivante : sin( 0) = 0.000000 sin( 15) = 0.258819 sin( 30) = 0.500000... sin( 90) = 1.000000 Exo 2.11 Encore la machine qui rend la monnaie Réécrivez une nouvelle version de ce programme en réduisant significativement le nombre de ses lignes par l utilisation d une une liste constante représentant les coupures disponibles et une instruction de boucle for. Exo 2.12 Remboursement d un crédit Écrivez un programme qui étant donnés un capital emprunté, un taux d intérêt et un nombre de mensualités, calcule et affiche 4

d une part, le montant des mensualités de remboursement, en supposant qu il s agit d un emprunt à taux fixe et mensualités constantes, d autre part, le plan de remboursement, c est-à-dire un tableau où chaque ligne montre l intérêt payé et le capital restant dû chaque mois. La formule pour calculer la mensualité est M = C t 1 1 (1+t) n où M est la mensualité, C le capital emprunté, n le nombre de mensualités et t le taux mensuel «pour 1», c est-à-dire le taux exprimé «normalement» (en pourcentage annuel) divisé par 100 et par 12. Exemple : python emprunt.py capital? 10000 intér^et (taux annuel)? 12 nombre de mensualités? 12 mensualité: 888.49 +-----+------------+------------+------------+------------+ capital capital mensualité intér^ets remboursé restant d^u +-----+------------+------------+------------+------------+ 10000.00 1 888.49 100.00 788.49 9211.51 2 888.49 92.12 796.37 8415.14 3 888.49 84.15 804.34 7610.80 4 888.49 76.11 812.38 6798.42 5 888.49 67.98 820.50 5977.92 6 888.49 59.78 828.71 5149.21 7 888.49 51.49 837.00 4312.21 8 888.49 43.12 845.37 3466.85 9 888.49 34.67 853.82 2613.03 10 888.49 26.13 862.36 1750.67 11 888.49 17.51 870.98 879.69 12 888.49 8.80 879.69 0.00 +-----+------------+------------+------------+------------+ Exo 2.13 Calculette élémentaire Écrivez un programme qu on lance avec trois arguments, deux nombres et un opérateur parmi +,, et /, et qui affiche le résultat de l opération indiquée. Exemples : python calc.py 2 / 3 2.0 / 3.0 = 0.666666666667 python calc.py 123000 + 456 123000 + 456 = 123456 python calc.py 2 % 3 operation inconnue: % Il fait prendre garde au fait qu en UNIX le caractère * dans une ligne de commande est toujours substitué par une liste de fichiers ; pour indiquer l opérateur de multiplication il faut donc le taper sous une des formes * ou \* : 5

python calc.py 2 * 3 2.0 * 3.0 = 6.0 Indication. Pour faire cet exercice vous devez savoir accéder aux arguments de la ligne de commande. Il faut savoir que lorsqu un script Python est lancé par une commande de la forme python nomduscript mot 1 mot 2... mot k alors il est possible d atteindre les éléments mot 1, mot 2, etc. appelés les arguments du script, depuis l intérieur de celui-ci. Cela se fait à l aide de la variable sys.argv (il faut donc importer le module sys) dont la valeur est la liste de chaînes de caractères : [ nomduscript mot 1 mot 2... mot k ] 6