Informatique (INFO-F-206) Exemple de questionnaire d examen



Documents pareils
STAGE IREM 0- Premiers pas en Python

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

Initiation à l algorithmique

1 Recherche en table par balayage

Introduction à MATLAB R

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

DM 1 : Montre Autoquartz ETA

Découverte de Python

Licence Sciences et Technologies Examen janvier 2010

DOCM Solutions officielles = n 2 10.

Chapitre 2 Devine mon nombre!

Cours d initiation à la programmation en C++ Johann Cuenin

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Présentation du langage et premières fonctions

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

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

Algorithmes récursifs

chapitre 4 Nombres de Catalan

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

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Représentation d un entier en base b

Recherche dans un tableau

Cours Informatique Master STEP

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

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

Architecture des Systèmes d Information Architecture des Systèmes d Information

Feuille d exercices 2 : Espaces probabilisés

Cours 3 : Python, les conditions

Programmation Web. Madalina Croitoru IUT Montpellier

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

Utilisation d objets : String et ArrayList

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

Formats d images. 1 Introduction

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

Solutions du chapitre 4

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

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

Algorithme. Table des matières

Petit lexique de calcul à l usage des élèves de sixième et de cinquième par M. PARCABE, professeur au collège Alain FOURNIER de BORDEAUX, mars 2007

Date : Tangram en carré page

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

Objets Combinatoires élementaires

Fibonacci et les paquerettes

Ch.G3 : Distances et tangentes

Cours 7 : Utilisation de modules sous python

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Les problèmes de la finale du 21éme RMT

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)

Programmation linéaire

Logiciel SCRATCH FICHE 02

Algorithmique et Programmation, IMA

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

Adama MBODJI MBODJ.SYSTEM

Problèmes de dénombrement.

Les arbres binaires de recherche

Compter à Babylone. L écriture des nombres

LES DECIMALES DE π BERNARD EGGER

COMPTE-RENDU «MATHS EN JEANS» LYCEE OZENNE Groupe 1 : Comment faire une carte juste de la Terre?

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Initiation à la programmation OEF pour Wims (exercices).

Algorithmique et programmation : les bases (VBA) Corrigé

Leçons et exemples de programmation en Logo

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

Chapitre 7. Récurrences

Deux disques dans un carré

Diviser un nombre décimal par 10 ; 100 ; 1 000

MIS 102 Initiation à l Informatique

COMMENT REDIGER UN RAPPORT TECHNIQUE?

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

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

Mathématiques et petites voitures

C f tracée ci- contre est la représentation graphique d une

Le langage SQL Rappels

Représentation géométrique d un nombre complexe

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

TD3 - Facturation avec archivage automatisé

Utiliser un tableau à double entrée «Les véhicules»

BONUS MALUS. Voici, la façon de calculer la prime : Le montant de la prime à acquitter est égale à : P = PB. C où : P

avec des nombres entiers

Introduction à la théorie des graphes. Solutions des exercices

1. Structure d'un programme FORTRAN 95

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

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

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

2. Comprendre les définitions de classes

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

Module 16 : Les fonctions de recherche et de référence

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

TP, première séquence d exercices.

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

Numbers en EPS UN TUTORIEL POUR LA! NOUVELLE VERSION DE NUMBERS EST! DISPONIBLE SUR TICEPS.FREE.FR. ticeps.free.fr

MODE D EMPLOI

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.

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

Les structures de données. Rajae El Ouazzani

Transcription:

Informatique (INFO-F-206) Exemple de questionnaire d examen Jean Cardinal Année académique 2010 2011 Consignes : 1. Les réponses doivent figurer sur des feuilles distinctes, indiquant le numéro de la question, ainsi que vos nom et prénom. 2. On demande pour chaque question, outre le code Python, des explications claires et concises en français. 3. La consultation du syllabus (transparents) est autorisée. 4. L examen dure quatre heures. Question 1 Que fait la fonction suivante? (On suppose que le paramètre n est entier.) Donner la valeur de f(4). def f(n): res = 0 y = n for i in range(y): res = res + n n = n * y return res Question 2 Ecrire un petit programme qui effectue les opérations suivantes : demander à l utilisateur un nom de fichier contenant une liste de mots, ouvrir le fichier, afficher les mots du fichier qui possèdent au moins deux lettres consécutives identiques. Les mots bee, attention et book, par exemple, seraient affichés (double e, t, o, respectivement), tandis que les mots word, testify et cambridge ne le seraient pas. On supposera que le fichier dont le nom est introduit par l utilisateur existe, et qu il ne contient qu un seul mot par ligne (comme le fichier words.txt utilisé en cours). 1

Question 3 On considère des chaînes de caractères dans l alphabet {A, C, G, T }, représentant des séquences ADN. Une telle chaîne est dite complémentaire d une autre, si on obtient la deuxième en remplaçant chaque occurrence de la lettre A par T, T par A, G par C, et C par G dans la première. Par exemple, les séquences ACCGAT et T GGCT A sont complémentaires. Ecrire une fonction qui reçoit en paramètre une liste de telles chaînes, et renvoie une nouvelle liste dans laquelle les paires complémentaires sont éliminées. Pour chaque paire complémentaire présente dans la liste de départ, seule la seconde chaîne de la paire sera conservée dans la liste résultat. Par exemple, la liste suivante : [ ATCC, ACGG, TGCC, ACC, TAGG ] contient deux paires complémentaires : ACGG et TGCC d une part, et ATCC et TAGG d autre part. On doit éliminer la première chaîne (dans l ordre de la liste) de chaque paire. La liste renvoyée par la fonction sera donc : [ TGCC, ACC, TAGG ] On supposera que toutes les chaînes de la liste de départ sont distinctes. Question 4 La transposée d une matrice M de taille n n est une matrice M de taille n n telle que M ij = M ji, i, j = 1,..., n. Ecrire une fonction qui reçoit une matrice en paramètre (sous forme d une liste de listes, chacune représentant une ligne de la matrice) et la transpose. La fonction ne renverra aucune valeur, mais modifie la matrice passée en paramètre. Voici le résultat renvoyé par la fonction sur un petit exemple : >>> m = [[1,2,3],[4,5,6],[7,8,9]] >>> transpose(m) >>> m [[1,4,7],[2,5,8],[3,6,9]] Question 5 La célèbre courbe du flocon de Von Koch est construite récursivement de la manière suivante. Partant d un segment de longueur 3, on définit quatre segments de longueurs 1, formant une ligne polygonale ayant les mêmes extrémités que le segment de départ. Les deux segments du milieu forment un triangle équilatéral, tandis que le premier et le dernier sont horizontaux. On dessine récursivement la même courbe sur les quatre segments. La figure ci-dessous illustre les étapes successives de la construction. 2

Pour dessiner un flocon de longueur x récursivement, vous devez simplement : 1. dessiner un flocon de longueur x/3, 2. tourner à gauche de 60 degrés, 3. dessiner un flocon de longueur x/3, 4. tourner à droite de 120 degrés, 5. dessiner un flocon de longueur x/3, 6. tourner à gauche de 60 degrés, 7. dessiner un flocon de longueur x/3. La seule exception survient lorsque x est inférieur à 3. Dans ce cas, il suffit de dessiner un segment de droite de longueur x. Ecrire une fonction récursive qui dessine un flocon de Von Koch, en utilisant les fonctions suivantes de la librairie Swampy : lt(t, angle) effectue une rotation vers la gauche d angle angle de la tortue t, rt(t, angle) effectue une rotation vers la droite d angle angle, et fd(t, longueur) dessine un segment de longueur longueur. 3

Solutions Rédigées Question 1 La fonction calcule la somme suivante : n n i. i=1 Pour n = 4, la valeur renvoyée par f est 340 (= 4 + 16 + 64 + 256). Question 2 Le programme suivant effectue ces opérations. Pour plus de lisibilité et de modularité, on définit une fonction séparée qui teste le critère retenu, à savoir qu il existe deux lettres consécutives identiques dans le mot. Cette fonction booléenne est appelée sur chaque mot lu dans le fichier. def test_double(mot): """ cette fonction teste si un mot contient une lettre doublée """ res = False n = len(mot) for i in range(n-1): if mot[i] == mot[i+1]: res = True return res # ouverture du fichier nom = raw_input( introduire le nom du fichier ) fichier = open(nom) # on affiche les mots qui passent le test for mot in fichier: if test_double(mot): print mot Question 3 Comme dans la question précédente, il est utile de définir une fonction booléenne qui teste si deux chaînes sont complémentaires l une de l autre. Pour cela, on peut appliquer les subtitutions dans la première, et vérifier que le résultat est identique à la seconde. Voici cette fonction : def test_complement (c1, c2): trans = # transformation de c1 for x in c1: if x == A : trans = trans + T elif x == T : trans = trans + A 4

elif x == C : trans = trans + G elif x == G : trans = trans + C return trans == c2 # le résultat de la transformation est-il égal à c2? La fonction principale va parcourir la liste, et construire à la volée une seconde liste qui ne reprendra que les chaînes qui n ont pas leur complémentaire plus loin dans la liste. Pour tester cette condition, une seconde boucle imbriquée est nécessaire, qui parcourt tous les indices supérieurs à l indice courant i. Le booléen test est mis à faux dès que le complémentaire est rencontré. Ainsi, seule la seconde chaîne de chaque paire complémentaire sera retenue. Pour construire la nouvelle liste, on utilise la méthode append(x). def elimine_complementaire (liste): n = len(liste) res = [] for i in range(n): test = True for j in range(i+1, n): if test_complement (liste[i], liste[j]): test = False if test: res.append (liste[i]) return res Question 4 La fonction parcourt les cellules i, j de la matrice telles que j > i, et pour chacune d elle, échange les valeurs de M ij et M ji. Il s agit donc de deux boucles imbriquées : def transpose(m): n = len (M) for i in range (n): for j in range (i+1,n): tmp = M[i][j] M[i][j] = M[j][i] M[j][i] = tmp Question 5 On peut simplement transcrire les instructions données en utilisant les trois fonctions lt, rt, et fd. Les appels récursifs s écrivent naturellement, et le cas de base n < 3 stoppe la récursion. Celui-ci survient toujours finalement, puisque n diminue (est divisé par 3) à chaque appel récursif. def koch (t, n): if n < 3: fd (t, n) return m = n / 3.0 koch (t, m) lt (t, 60) 5

koch (t, m) rt (t, 120) koch (t, m) lt (t, 60) koch (t, m) 6