Séance 2b: Séance 2b.

Documents pareils
Initiation à l algorithmique

Corrigé des TD 1 à 5

1 Recherche en table par balayage

STAGE IREM 0- Premiers pas en Python

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

Initiation à la programmation en Python

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

TP, première séquence d exercices.

Algorithmes récursifs

Algorithmique et structures de données I


Découverte de Python

Quelques algorithmes simples dont l analyse n est pas si simple

Cours 1 : Qu est-ce que la programmation?

Examen Médian - 1 heure 30

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)

Exercices sur le chapitre «Probabilités»

La persistance des nombres

Rappels sur les suites - Algorithme

Probabilités Loi binomiale Exercices corrigés

CORRECTION EXERCICES ALGORITHME 1

Cours 1 : La compilation

Algorithme. Table des matières

Probabilités. Une urne contient 3 billes vertes et 5 billes rouges toutes indiscernables au toucher.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Cours 7 : Utilisation de modules sous python

Rallye Mathématiques de liaison 3 ème /2 nde et 3 ème /2 nde pro Epreuve finale Jeudi 21 mai 2015 Durée : 1h45

Algorithmique avec Algobox

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

LES DECIMALES DE π BERNARD EGGER

Maple: premiers calculs et premières applications

Enseignement secondaire technique

Nouveau Barème W.B.F. de points de victoire 4 à 48 donnes

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

Les fonction affines

Licence Sciences et Technologies Examen janvier 2010

Certification Conseiller Clientèle bancaire

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

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

Par combien de zéros se termine N!?

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

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

b) Fiche élève - Qu est-ce qu une narration de recherche 2?

Partie 1. Fonctions plus complexes dans Excel. Fonctions Si(), Et(), Ou() et fonctions imbriquées. Opérateurs logiques. I.1.

Les nombres entiers. Durée suggérée: 3 semaines

LES GENERATEURS DE NOMBRES ALEATOIRES

Probabilités conditionnelles Loi binomiale

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Mathématiques financières

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

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

ASR1 TD7 : Un microprocesseur RISC 16 bits

Algorithmique et Programmation, IMA

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

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

Objets Combinatoires élementaires

Chapitre 2 Devine mon nombre!

DOCM Solutions officielles = n 2 10.

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

Optimisation Combinatoire (Méthodes approchées) II. Recherche Locale simple (Les bases)

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

eduscol Ressources pour la voie professionnelle Français Ressources pour les classes préparatoires au baccalauréat professionnel

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

MIS 102 Initiation à l Informatique

PG208, Projet n 3 : Serveur HTTP évolué

POKER ET PROBABILITÉ

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

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

Le langage SQL Rappels

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

Probabilités stationnaires d une chaîne de Markov sur TI-nspire Louis Parent, ing., MBA École de technologie supérieure, Montréal, Québec 1

HAPPY PIGS! RÈGLES DU JEU

Rappels d architecture

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

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

Cours d Informatique

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

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

1 Description générale de VISFIELD

Fiche pédagogique : ma famille et moi

OLYMPIADES ACADÉMIQUES DE MATHÉMATIQUES

Représentation d un entier en base b

Spécialité auxiliaire en prothèse dentaire du brevet d études professionnelles. ANNEXE IIb DEFINITION DES EPREUVES

Chapitre 4 Pierre, papier, ciseaux

Mesures et incertitudes

Cours d algorithmique pour la classe de 2nde

Etude comparative de différents motifs utilisés pour le lancé de rayon

I00 Éléments d architecture

Probabilités. I Petits rappels sur le vocabulaire des ensembles 2 I.1 Définitions... 2 I.2 Propriétés... 2

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Activité 4. Tour de cartes Détection et correction des erreurs. Résumé. Liens pédagogiques. Compétences. Âge. Matériels

EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG

Initiation à LabView : Les exemples d applications :

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

TD n o 8 - Domain Name System (DNS)

Les devoirs en Première STMG

Transcription:

Introduction à la Programmation Travaux Pratiques Séance b: Séance b. Université Paris-Diderot Objectifs: S exercer à écrire du Python. Effectuer des calculs arithmétiques dépendant de l indice d une boucle. Dans cette séance, vous allez tout d abord apprendre à traduire du code décrit informellement en français en du code Python. Ensuite, vous allez progressivement concevoir des programmes qui (i) font des calculs arithmétiques (avec ou sans variables), (ii) définissent et utilisent des fonctions et (iii) utilisent des boucles de type for pour répéter des actions ou bien accumuler des résultats partiels dans des variables. Rappel : Tous les fichiers que vous sauvegarderez ou créerez pour ce TP devront être mis dans le répertoire TPb sous-répertoire du répertoire IP-Python. Du français au Python Dans la série d exercices qui suit, vous allez améliorer votre connaissance de la syntaxe de Python. Ce que doit faire le code Python à produire est écrit en français. (Il n y a normalement rien à deviner.) On appelle boucle interactive un programme qui répète à l infini les actions suivantes :. Lit une entrée de l utilisateur.. Évalue cette entrée. 3. Affiche le résultat de cette évaluation. Lorsque le programme python est invoqué sans argument, la boucle interactive de Python s exécute. Exercice (Expressions arithmétiques, ). Utilisez la boucle interactive de Python pour évaluer une expression qui calcule : le double de ; la division entière par 3 de 05 ; la division entière par 8 de la somme de 000 et de 4 ; la division entière par 3 du produit de 77 et de 80085.. Écrivez un programme qui affiche les résultats des calculs de la question précédente. Exercice (Expressions arithmétiques avec variable, ) Écrivez une séquence d instructions qui :. affecte une variable x avec la valeur d une expression arithmétique qui calcule le triple de 73 ;

. affecte une variable y avec la valeur d une expression arithmétique qui calcule les deux tiers de x ; 3. affiche la division entière par 5 de la somme de x et de y. Exercice 3 (Définition et usage de fonctions, ). Écrivez une fonction div0 qui attend un entier x et retourne le résultat de la division entière de 0 par x.. Évaluez la fonction div0 pour x valant 0, et 0. Que se passe-t-il dans ce dernier cas? 3. À l aide d une unique expression Python, déterminez la somme des évaluations de la fonction div0 pour x valant, 3, 5 et 7. 4. Écrivez une fonction sumproduct qui attend trois entiers x, y et z et qui renvoie la somme du produit de x et de y, du produit de x et de z et du produit de y et de z. 5. Évaluez la fonction sumproduct pour x valant, y valant «+» et z valant «div0 ()». 6. Quelles sont les erreurs produites par les expressions Python suivantes? div0 () div0 (33, 37) div0 ("Dark Vador") Exercice 4 (Instructions conditionnelles, ). Écrivez une fonction absolute qui attend un entier x et qui renvoie x si x > 0 et qui renvoie -x sinon.. Que valent «absolute (73)» et «absolute (-37)»? 3. Écrivez une procédure solve qui attend trois entiers x, y et z et qui affiche : La chaîne «x + y = z» si x + y = z. La chaîne «x - y = z» si x - y = z. La chaîne «- x - y = z» si - x - y = z. La chaîne «- x + y = z» si - x + y = z. La chaîne «Rien du tout!» sinon. 4. Testez la fonction précédente pour solliciter tous les cas possibles d évaluation. Exercice 5 (Boucles qui répètent la même chose plusieurs fois, ) Traduisez les descriptions informelles de programme suivantes en Python :. Affiche 00 fois la ligne «May the force be with you.». Définis une fonction yoda qui attend un entier n et affiche «May the force be with you.» n fois. Évalue «yoda (00)». 3. Que fait le programme : for i in range (0, 4) : yoda (00)? Recopiez le code de la fonction yoda à la place de son appel en substituant correctement son paramètre n par la valeur passée en argument. Pourquoi dit-on que l instruction obtenue est une boucle imbriquée? Exercice 6 (Boucles dont chaque étape dépend de l indice d itération, ) Traduisez les descriptions informelles de programme suivantes en Python :

. Pour i allant de 0 à 99, affiche i.. Définis une fonction count_to qui attend un entier n et qui pour i allant de 0 à n, affiche i. Évalue count_to (00). 3. Définis une procédure filter_even qui attend un entier n et qui affiche n si «n % == 0» et affiche la chaîne «...» sinon. Pour i allant de 0 à 65535, appelle filter_even pour n valant i. À partir de ce point du sujet, vous commencez à savoir écrire des programmes Python. Il faut maintenant passer à l étape suivante :concevoir des programmes Python. Cela signifie que vous allez devoir chercher les programmes qui répondent au problème posé. Pour cela, on vous propose d utiliser la méthodologie suivante :. Lisez attentivement le sujet. Si le sujet demande d écrire une fonction, imaginez des exemples d entrées pour cette fonction et les sorties que l on devrait obtenir pour chacun de ces exemples.. Écrivez en français, la description la plus précise d un programme qui répond au problème posé. 3. Traduisez en Python le programme obtenu à l étape précédente. 4. Testez votre programme sur suffisamment d exemples pour vous convaincre que votre programme est correct : il faut au moins que chaque instruction de votre programme ait été exécutée par au moins un exemple. Définir des fonctions utilisant les opérations arithmétiques Exercice 7 (Moyenne, ) Ecrivez une fonction moyenne qui reçoit 5 paramètres et affiche leur somme et leur moyenne entière. moyenne(0,,8,9,9) affichera : 58 Exercice 8 (Coup de chaud, ) Ecrivez une fahrenheit qui reçoit une température en degrés Celsius et affiche la température en degrés Fahrenheit correspondante. On rappelle la formule : f = 9c 5 + 3 où c est la température en degrés Celsius et f la température en degrés Fahrenheit. Exercice 9 (Ô temps!, ) Ecrivez une fonction secondes qui prend un nombre entier s en entrée et l affiche en heures, minutes, secondes. secondes(375) affichera : 5 Exercice 0 (Alea jacta est., ) La fonction randint(n,m) du module random permet de tirer un nombre entier a pseudo-aléatoire avec n a m. On rappelle que pour utiliser le module random, on doit écrire import random. Ensuite, on appelle la fonction randint grâce à random.randint(n,m). 3

. Ecrire une fonction de qui ne prend pas de paramètre et renvoie le résultat du lancer d un dé cubique non pipé.. Ecrire une fonction yams qui simule le lancer de 5 dés cubiques et affiche leurs résultats dans l ordre croissant. 3 Utiliser des boucles pour répéter ou accumuler Exercice (Compte à rebours, ) Ecrire une fonction rebours qui reçoit un entier n et affiche un compte à rebours de n à 0. rebours(3) affichera : 3 0 Exercice (Somme des entiers, ) Écrire une fonction somme qui renvoie la somme des entiers jusqu à son paramètre. somme(n) = + + 3 + + n. Exercice 3 (Factorielle, ) Écrire une fonction factorielle qui renvoie le produit des entiers jusqu à l entier entré en paramètre. Ainsi, factorielle(5) = 3 4 5 = 0. On rappelle que par définition, factorielle(0) =. Exercice 4 (Fibonacci, ) En 0, le mathématicien Leonardo Fibonacci inventa l énigme suivante : Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un mur. Combien de couples obtient-on en un an si chaque couple engendre tous les mois un nouveau couple à compter du troisième mois de son existence?. Si l on connaît le nombre de lapins au mois n et au mois n+, comment connaître le nombre de lapins au mois n +?. Résoudre l énigme. 3. Plus généralement, écrire une fonction fibonacci qui calcule le nombre de lapins au bout d un nombre n de mois donné en argument. Exercice 5 (Il est pas pur, mon alliage?, ) En ces temps de crise, rappelons utilement que le carat des bijoutiers mesure la pureté d un alliage contenant un métal précieux : un carat représente un vingt-quatrième de la masse totale d un alliage, de sorte que 4 grammes d un alliage d or à 6 carats contiennent 6 grammes d or. Écrivez une fonction carat qui attend deux entiers alliage et metal représentant la masse d alliage et la masse de métal précieux qu elle contient (exprimées en tonnes) et qui affiche la pureté (en carats) de l alliage. Exercice 6 (Conjecture de Syracuse, ) On définit récursivement la suite de Syracuse d un entier a par u 0 (a) = a et u n+ (a) = 3u n (a) + si u n (a) est impair et u n+ (a) = un(a) si u n (a) est pair. 4

. Écrire une fonction syracuse qui attend deux entiers a et n en entrée et qui renvoie la valeur du terme u n (a).. Une conjecture ouverte affirme que quelque soit la valeur de l entier a, la suite finira toujours pas atteindre. Ecrire une fonction conjecture qui attend un entier en paramètre et renvoie le numéro du premier indice k tel que u k (a) =. 3. Vol en altitude : Écrire une fonction vol qui attend un entier a en paramètre, et qui renvoie le premier indice j tel que u j (a) <= a. 4. Altitude maximale : Écrire une fonction altitude qui renvoie la valeur maximale de la suite (u n (a)) n. Attention! Pour de petites valeurs de a, l altitude maximale peut-être atteinte après l indice k tel que u k (a) =. Par exemple, u 0 () = mais u () = 4. Exercice 7 (Scrutin de liste, ) On s intéresse au résultat d une élection dans un scrutin de liste dans lequel il y a n sièges à pourvoir et 3 listes candidates ayant obtenu v, v et v 3 voix. Pour cette élection, les règles sont les suivantes :. Une liste ayant moins de 5% des voix ne peut obtenir aucun siège. Les sièges sont alors répartis comme si ses électeurs s étaient abstenus.. Si n > 0, la liste arrivée en tête obtient un bonus de 0 sièges. Sinon, la liste arrivée en tête obtient tous les sièges. 3. Les n 0 sièges restants doivent être répartis proportionnellement au nombre de voix obtenues. 4. Les sièges restants sont répartis au hasard, la probabilité d attribution correspondant au taux de voix obtenues. Le but de cet exercice est de calculer le nombre de sièges obtenus par chaque liste. Nous allons avancer progressivement.. Écrivez une fonction proportionnelle qui prend quatre arguments siege, v, v, v3 et qui affiche le nombre de sièges attribués proportionnellement à chaque liste ainsi que le nombre de sièges sans attribution (dans le cas où la division ne tomberait pas juste).. Modifiez la fonction proportionnelle pour attribuer les sièges restant au hasard. Vous utiliserez la fonction random du module random qui tire un nombre dans l intervalle [0; [. Pensez à importer le module et à utiliser la notation random.random(). Indication. Une bonne manière de simuler un lancer avec probabilités p, p et p 3 est de tirer un nombre x dans [0; [ et de choisir le cas numéro si x < p, le cas numéro si x < p + p et le cas numéro 3 sinon. 3. À partir de la fonction proportionnelle, écrivez une fonction election qui ajoute 0 sièges à la liste arrivée en tête. 4. Modifiez la fonction election pour éliminer toute liste qui aurait réalisé un score inférieur à 5%. 5. N oubliez pas de tester votre fonction! 5