5) (Dans cette question on n'utilise pas le programme ci-dessus).



Documents pareils
TP 1. Prise en main du langage Python

STAGE IREM 0- Premiers pas en Python

Recherche dans un tableau

Initiation à la programmation en Python

1 Recherche en table par balayage

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

DM 1 : Montre Autoquartz ETA

Représentation d un entier en base b

Licence Sciences et Technologies Examen janvier 2010

Algorithmique et Programmation, IMA

TD : Codage des images

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

Découverte de Python

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

L informatique en BCPST

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

Cours d algorithmique pour la classe de 2nde

1. Structure d'un programme FORTRAN 95

Quelques algorithmes simples dont l analyse n est pas si simple

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

Utilisation d objets : String et ArrayList

Programme Compte bancaire (code)

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

Chapitre 2 Devine mon nombre!

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

ÉPREUVE COMMUNE DE TIPE Partie D

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

Initiation à l algorithmique

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Programmation avec Xcas ou Python

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

Introduction à MATLAB R

Programmation Web. Madalina Croitoru IUT Montpellier

Perl Orienté Objet BioPerl There is more than one way to do it


La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Cours Informatique Master STEP

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)

Transmission d informations sur le réseau électrique

TP, première séquence d exercices.

SPECIFICATIONS TECHNIQUES BANNIERES SITES PRISMA / TABLETTES / MOBILE

Formats d images. 1 Introduction

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Module d anonymisation

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

La programmation orientée objet et le langage C++

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

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

Conversion d un entier. Méthode par soustraction

Puissances d un nombre relatif

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

4. Groupement d objets

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

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

6. Les différents types de démonstrations

Cours 7 : Utilisation de modules sous python

Traduction des Langages : Le Compilateur Micro Java

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

ACTIVITÉ DE PROGRAMMATION

AWS avancé. Surveiller votre utilisation d EC2

1 Lecture de fichiers

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

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

Notions fondamentales du langage C# Version 1.0

DOCM Solutions officielles = n 2 10.

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Cours Bases de données 2ème année IUT

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

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

PHP. PHP et bases de données

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

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

Configurer la supervision pour une base MS SQL Server Viadéis Services

Fonctions homographiques

Objets Combinatoires élementaires

GOUTEYRON ALEXIS. SIO2 N candidat: UEpreuve E4. USituation professionnelle 2. serveurs de fichiers. Uen haute disponibilité

Corrigé des TD 1 à 5

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

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

SUJET ZÉRO Epreuve d'informatique et modélisation de systèmes physiques

Présentation du langage et premières fonctions

Suites numériques. Exercice 1 Pour chacune des suites suivantes, calculer u 1, u 2, u 3, u 10 et u 100 : Introduction : Intérêts simpleset composés.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

Projet Matlab : un logiciel de cryptage

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Compte-rendu de projet de Système de gestion de base de données

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Algorithmique des Systèmes Répartis Protocoles de Communications

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

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

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


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

Installation d'un TSE (Terminal Serveur Edition)

Transcription:

BCPST 1 B TD 4 : Informatique Entraînement au devoir du jeudi 4 décembre 2013 Pour cet entraînement vous pouvez évidemment utiliser les ordinateurs. (1 h 30 minutes) (Il est un peu long pour cette durée! ) Au cours de cette interrogation vous avez droit à vos notes de cours, correction de TD... Vous n'avez, en revanche, pas le droit à votre téléphone. Si au cours de l'épreuve un candidat repère ce qui lui semble être une erreur d'énoncé, il le signalera sur sa copie et poursuivra sa composition en expliquant les raisons des initiatives qu'il sera amené à prendre. La version de Python de référence pour cette interrogation est la version 3.4.1. Ce sujet comporte cinq pages. Vous ne devez pas rendre ce sujet. Exercice 1 1) On considère le programme suivant u,v=1,1 while u<10: u,v=v,u+v print(v) 2) Combien y a-t-il de variables dans ce programme et quel est leur type? 3) Donner l'évolution de ces variables tout au long du programme. 4) Quelle est la valeur achée à la n du programme? 5) (Dans cette question on n'utilise pas le programme ci-dessus). Soit (u n ) dénie par : u 0 = 1, u 1 = 2 et n N, u n+2 = 2u n+1 + 3u n + 4 Ecrire un programme répondant à la question suivante : "Déterminer quel est le premier entier n pour lequel u n 500 000." justier votre programme par une simulation de boucle. 1

Exercice 2 (Suite de Syracuse) 1) On considère le programme suivant : u=2014 n,m=0,0 while u!=1: m=m+1 print(n,m) Voilà ce qu'ache Python à son exécution : Kernel process terminated for restart. (0) Python 3.4.1 Continuum Analytics, Inc. (default, May 19 2014, 13:02:30) on Windows (64 bits). This is the IEP interpreter with integrated event loop for PYSIDE. Type 'help' for help, type '?' for a list of *magic* commands. Running script: "D:\Python\2014-2015\Cours fonctions\test2.py" 62 32 >>> 2) Quel est le type des variables u, n et m? 3) Traduire la condition u%2==0. 4) Combien de "tours de boucle" fait la boucle while? 5) Simuler les six premiers tours de cette boucle while? tours de boucle variable u variable n variable m entrée 1er tour 2e tour 3e tour 4e tour 5e tour 6e tour Remarque : On appelle suite de Syracuse une suite d'entiers dénie par : Conjecture de Syracuse : u 0 un entier naturel non nul et la relation de récurrence : si u n est pair, u n+1 = 0,5 u n si u n est impair, u n+1 = 3u n + 1 Une telle suite va nécessairement prendre la valeur 1 quelle que soit la valeur de u 0. Vous pouvez essayer de le démontrer, mais ne perdez pas trop de temps, aucun mathématicien n'est venu à bout de ce problème! 2

Exercice 3 Des boucles dans des boucles. 1) Une boucle for dans une boucle for. S=0 S=0 S=0 for i in range(5): for i in range(1,6): for i in range(5): for j in range(6): for j in range(1,i+1): for j in range(i,5): S=i+2*j print(i,j) print(i,j) print(s) S=S+1 S=S+1 print(s) print(s) Programme1.py Programme2.py Programme3.py ➊ Décrire les achages de ces trois programmes. ➋ Que fait la fonction "mystère" suivante? def f(n): S=0 for i in range(n+1): for j in range(n+1): for k in range(n+1): if i+j+k==n: S=S+1 2) Une boucle for dans une boucle while. A quel problème répond le programme suivant? n=2 S=1 while S%11!=0: S=0 for j in range(2,n): S=S+int(n/j)**3 # int(n/j) = n//j print(s,n) 3) Une boucle while dans une boucle for. Suite de Syracuse. On considère le programme suivant : qui donne : for u in range(2,2101): v=u n=0 while u!=1: if n==94: print(v,end=' ') >>> 364 365 366 1986 1987 2014 2015 2075 3

➊ A quelle question sur les suites de syracuse répond ce programme? Ce programme serait plus simple avec la création d'une fonction : def longueur(u): n=0 while u<>1: return n ➋ Ecrire la spécication de la fonction longueur. ➌ Réécrire le programme précédent en utilisant cette fonction longueur(u). 4) Une boucle while dans une boucle while. ➊ On considère la suite (u n ) dénie par : u 0 = 2, u 1 = 5 et n N, u n+2 = 5u n+1 6u n Ecrire un programme Python qui ache les 20 premiers n pour lesquels u n est divisible par 11. On rappelle que la condition : x%11==0 signie : "x est divisible par 11" ➋ Que fait la fonction "mystère" suivante? def f(t): """str->list[int] T ne contient que les caractères 'a' et 'b'. mystère""" S=[] n=len(t) k=0 while k<n: x=t[k] j=0 while k+j<n and T[k+j]==x: j=j+1 S+=[j] k=k+j Exercice 4 Compression et décompression. Dans cet exercice, nous illustrons un problème de compression de chaînes de caractères selon l'approche run-length encoding (RLE). Le principe de la compression est simple : si la chaîne contient (strictement) plus d'une occurrence successive du même caractère, comme par exemple le caractère 'c' dans 'abcccd', alors on remplace les n occurrences par le nombre n suivi du caractère répété, par exemple 'ab3cd' (car c est répété 3 fois). On supposera bien sûr que les chaînes à compresser ne contiennent pas déjà des chires. Par exemple : >>> compression('abcccd') >>> compression('abcdefg') 'ab3cd' 'abcdefg' >>> compression('abcccddeeeefgh') 'ab3c2d4efgh' 4

La fonction suivante retourne la version compressée de la chaine T. def compression(t): """str->str T contient une chaine de caractères sans chiffre retourne T sous forme compressée suivant la méthode RLE""" n=len(t) k=0 S='' while k<n: x=t[k] j=1 while k+j<n and T[k+j]==x: j=j+1 if j>1: S=S+str(j) S=S+x k=k+j ➊ Quel est le type des variables T, j, S, k? ➋ Eectuer la simulation de boucle correspondant à l'évaluation : compression('aabbbbccaa') On prendra pour modèle le tableau suivant : tours de boucle variable j variable S variable k entrée 1er tour 2e tour Fonction de décompression. On s'intéresse ici à la fonction qui à partir d'un texte compressé par compression, permet de retrouver le texte original. On cherche donc la fonction réciproque de compression. >>> decompression('ab3cd') 'abcccd' >>> decompression('ab3c2d4efgh') 'abcccddeeeefgh' >>> decompression('abcdefg') 'abcdefg' Une fonction utile ici : est_chiffre permettant de reconnaître un caractère représentant un chire. def est_chiffre(c): """str -> bool Hypothèse : len(c) == 1 retourne True si, et seulement si, c est un chiffre.""" return ('0'<=c) and (c<='9') Par exemple : est_chiffre('4') renvoie True est_chiffre('a') renvoie False ➌ Donner une dénition de la fonction decompression. (Autrement dit : Ecrire une fonction Python qui réalise la décompression) On pourra commencer par considérer que les nombres de répétitions ne dépassent pas 9. 5