DS. 1 : I.P.T solutions

Documents pareils
Initiation à la programmation en Python

STAGE IREM 0- Premiers pas en Python

1 Recherche en table par balayage

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)

TP 1. Prise en main du langage Python

Initiation à l algorithmique

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

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

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

Licence Sciences et Technologies Examen janvier 2010

Découverte de Python

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

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

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

Cours 7 : Utilisation de modules sous python

1 Lecture de fichiers

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

Claude Delannoy. 3 e édition C++

Cours d algorithmique pour la classe de 2nde

Algorithmique et Programmation, IMA

Recherche dans un tableau

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

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

Cours de Systèmes d Exploitation

Corrigé des TD 1 à 5

Utilisation d objets : String et ArrayList

Les arbres binaires de recherche

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Calcul Formel et Numérique, Partie I

Programmation avec Xcas ou Python

1. Structure d'un programme FORTRAN 95

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Solutions du chapitre 4


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

Le prototype de la fonction main()

Représentation d un entier en base b

La persistance des nombres

Java Licence Professionnelle CISII,

Chapitre 2 Devine mon nombre!

Exercices Types Algorithmique et simulation numérique Oral Mathématiques et Algorithmique Banque PT Propositions de réponses

I. Introduction aux fonctions : les fonctions standards

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

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

4. Groupement d objets

ACTIVITÉ DE PROGRAMMATION

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

L exclusion mutuelle distribuée

TRIGONOMETRIE Algorithme : mesure principale

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Projet de programmation (IK3) : TP n 1 Correction

TP, première séquence d exercices.

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

L ALGORITHMIQUE. Algorithme

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Groupe symétrique. Chapitre II. 1 Définitions et généralités

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

Limites finies en un point

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

V- Manipulations de nombres en binaire

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

PROJET 1 : BASE DE DONNÉES REPARTIES

Programme Compte bancaire (code)

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Examen Médian - 1 heure 30

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

Résolution de systèmes linéaires par des méthodes directes

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

INF 321 : mémento de la syntaxe de Java

Algorithmes récursifs

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

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

Cours 3 : Python, les conditions

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Programmation linéaire

Cours IV Mise en orbite

Les structures. Chapitre 3

Langage Java. Classe de première SI

Chp. 4. Minimisation d une fonction d une variable

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

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

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

Introduction au langage C

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

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

Probabilités sur un univers fini

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours.

TP Maple 4 Listes, tests, boucles et procédures

Transcription:

DS. 1 : I.P.T solutions 1) Faire un programme qui calcule la somme des entiers multiples de entre 1 et 140. # Méthode 1 for i in range(1,141): if i%==0: S=S+i # Méthode 2 for i in range(1,141//): S=S+*i # Méthode for i in range(,141,): # on indique le pas dans le troisième argument S=S+i 2) Ecrire une boucle qui répète l instruction a=input( Dis moi bonjour ) tant que l utilisateur ne répond pas bonjour. a=0 while a!="bonjour": a=input("dis moi bonjour ") ) Soit T=(1,2,,4). a) Que donne print(t[1:])? Réponse : (2,, 4) b) Que donne type(t)? Réponse : <class tuple > c) Que donne T[1]=0? Réponse : TypeError: tuple object does not support item assignment La modification d une entrée (item assignment) n est pas possible pour les tuples. d) Que fait L=list(T)? Réponse : Cette commande crée une liste L avec la valeur [1, 2,, 4]. e) Que donne L[1:]=[0] suivi de print(l)? Réponse : [1, 0, 4]. En effet, la commande L[1:]=[0] remplace la tranche [L[1],L[2]] de L par [0] 4) Ecrire une fonction EE (pour enlève-espaces ) qui prend en argument une chaîne de caractères S et qui retourne une chaîne de caractères,qu on notera T dans le code, indique à S sauf qu on enlève tous les caractères espace c est-à-dire. def EE(S): T=""#ini for caractere in S: if caractere!=" ": T=T+caractere return T 5) Fabriquer, avec la méthode de votre choix, une liste L formée des cos(i) pour i 1, 100. Indication : on n oubliera pas d écrire la ligne de commande nécessaire pour pouvoir utiliser la fonction cosinus. Deux méthodes : (M1) 1

from math import cos L=[0]*100 # préformatage for i in range(0,100): L[i]=cos(i+1) # attention au décalage car # on veut cos(1),..., cos(100). # L est fabriquée (M2) plus simple ici : L=[] for i in range(1,101): L.append(cos(i)) 6) Que renvoie le code suivant? def fonction(n): for i in range(n): print(fonction(17)) Réponse :La fonction retourne la valeur 0. Car au premier tour de boucle pour i égal à 0, le return fait sortir de la fonction et donc de la boucle. Donc le print(fonction(17)) affichera 0. 7) a) Ecrire une fonction PremierNeg(L) qui prend en argument une liste L dont les entrées sont supposées être des nombres, et renvoie l indice de la première entrée négative strictement. Par exemple si L=[2,2,45,-4,12,-5], PremierNeg(L) renverra car L[] vaut -4 et est la première entrée négative de L. Si toute les entrées sont positives, la fonction renverra None. def PremierNeg(L): i=0 while i<len(l) and L[i]>=0: # l ordre des deux conditions compte # nous y reviendrons i=i+1 if i<len(l): else: return None Ou bien avec une boucle for plus simple, grâce au fait que le return fait sortir de la fonction : def PNeg(L): if L[i]<0: return None # en fait cette ligne est inutile # une fonction sans return retourne en fait un None b) Ecrire une fonction MaxNeg(L) qui prend en argument une liste L dont les entrées sont supposées être des nombres et renvoie la valeur maximum des entrées négatives de L. Si L n a pas d entrée négative, la fonction ne renverra rien. Par exemple si L=[-2,4,-12,5,-5], MaxNeg(L) renverra -2. def MaxNeg(L): depart=premierneg(l) if depart==none: return None# sortie de la fct 2

max=l[depart] for j in range(depart,len(l)): if L[j]<0 and L[j]>max: max=l[j] return max 8) Expliquer ce que fait le code suivant : l argument n de la fonction est supposé être un entier naturel def NB2(n): N=0 acc=1# accumulateur while acc<n: acc=acc*2 N=N+1 return N Au départ N et acc sont initialisés comme indiqué. Ensuite en numérotant les tours de boucle while, en appelant zéro le premier tour de boucle, au début de ce tour 0, acc a la valeur 1 et à la fin de ce tour 0, N=1 et acc=2. Par récurrence, on montre qu au tour numéro i, au début de ce tour acc vaut 2 i et en fin de boucle N prend la valeur i + 1 et acc vaut 2 i+1. Ainsi le dernier tour de boucle disons numéroté f, correspond au plus grand entier f tel que 2 f < n. Ainsi à la fin de ce tour N prend la valeur f + 1. Donc la fonction renvoie N qui est le plus petit entier tel que 2 N n. 9) Soit L=[2,21,45] a) Que donne le code suivant (justifier votre réponse) : M=L L[0]=12 print(m) Réponse :[12,21,45] Autrement dit M est modifié comme L. La raison est que la commande L[0]=12 est une modification de L pas une réaffectation du nom L. La liste L reste à la même adresse, qui est celle vers laquelle pointe le nom M. b) Soit L=[2,21,45] que donne le code suivant (justifier votre réponse) : M=L[:] L[2]=66 print(m) Réponse :[2,21,45]. La commande M=L[:] crée une liste M dans laquelle on met le contenu de L mais à une adresse mémoire différente. Ainsi la modification L[2]=66 n affecte pas M. 10) On considère la fonction ci-dessous, qui prend comme argument une liste L de nombres def mystere(l): n=len(l) L[i]=L[i]+1 On considère le code suivant : L=[1,2,] M=mystere(L) Après exécution de ce code, que vaut M et que vaut L? Réponse :La fonction mystère modifie la liste L qui lui est passée en argument car les commandes L[i]= sont des commandes de modification. En revanche, la fonction n a pas de return donc elle ne renvoie pas de valeur (elle renvoie un None). Donc après M=mystere(L), on aura : L=[2,,4] et M=None.

11) Ecrire une fonction ListeDecalee(L) qui prend en argument une liste L, qui ne modifie pas cette liste L mais qui retourne une liste dont les valeurs sont celles des entrées de L avec un décalage d indice de 1 et cela de manière cyclique, ce qui veut dire la chose suivante : si par exemple L=[a,b,c,d] alors on veut que la liste renvoyée soit [b,c,d,a]. def ListeDecalee(L): M=[] n=len(l) for i in range(1,n): M.append(L[i]) M.append(L[0]) return M Une version plus élégante (Baptiste) : def ListeDecalee(L): M=[] indice=(i+1)%len(l) M.append(L[indice]) return M Grâce aux spécificités pythonesques L[-1] étant la dernière entrée, encore une autre possibilité (Mathieu P.) : def LD(L): T=L[:] T[i-1]=L[i] # pour i=0 on aura T[-1]=L[0] return T 12) Question plus difficile et un peu vague : une première idée (qui ne marche pas telle quelle) serait de choisir à chaque étape l entrée la plus grosse parmi les deux choix possibles. Cela ne donne pas forcément une somme maximum comme on peut le voir dans l exemple suivant donné par Odile où le parcours en gras est celui qui suit le meilleur choix à chaque étape : 2 1 Ce parcours ne donne pas la somme maximum qui est obtenue en suivant la ligne 1 2 9 1 2 1 9 de droite + 1 + 9 + 9. une amélioration de cette idée, qui est un exemple du concept de programmation dynamique. Au triangle T donné, on va associer un nouveau triangle S de même format mais avec dans chaque case S[i][j] la valeur de la plus grande somme de tous les chemins partant de T[0][0] arrivant à la case T[i][j] dans le premier triangle T. Pour le triangle de l énoncé T qui était 7 4 2 4 6 8 5 9 ce nouveau triangle S sera : Ce triangle S se construit bien sûr ligne par ligne à partir du triangle T donné : def sommemax(t): S=[[T[0][0]]]# initialisation for ligne in T[1:]:# on commence à la deuxieme ligne largeur=len(ligne) S.append([0]*largeur) for i in range(largeur): if i==0: S[-1][i]=ligne[i]+S[-2][i] 10 7 12 14 1 20 19 2 16 4

elif i==largeur-1: S[-1][i]=ligne[i]+S[-2][i-1] else: # sinon on prend le max des deux parents S[-1][i]=ligne[i]+max(S[-2][i-1],S[-2][i]) # on renvoie le max de la derniere ligne return max(s[-1]) # exemple L=[[],[7,4],[2,4,6],[8,5,9,]] print(sommemax(l)) 5