1 Remarques et erreurs fréquentes

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

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

Compression Compression par dictionnaires

1 Recherche en table par balayage

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

UE Programmation Impérative Licence 2ème Année

Algorithmique I. Algorithmique I p.1/??

Recherche dans un tableau

Les arbres binaires de recherche

Application 1- VBA : Test de comportements d'investissements

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

Algorithmique et Programmation, IMA

Quelques algorithmes simples dont l analyse n est pas si simple

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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

Organigramme / Algorigramme Dossier élève 1 SI

Correction TD algorithmique

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

Algorithmique & programmation

TP3 : Manipulation et implantation de systèmes de fichiers 1

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

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

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

Poker. A rendre pour le 25 avril

Une brique dans le cartable. Du Plan à l Ouvrage

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

L informatique en BCPST

Généralités sur le Langage Java et éléments syntaxiques.

1. Structure d'un programme FORTRAN 95

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

1.6- Génération de nombres aléatoires

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

LES MOTEURS DE RECHERCHE SUR INTERNET

Algorithme. Table des matières

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

Guide utilisateur i-milo >> Décisionnel

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Rappels sur les suites - Algorithme

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

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

Cours d algorithmique pour la classe de 2nde

Licence Sciences et Technologies Examen janvier 2010

Architecture des ordinateurs

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

Traduction des Langages : Le Compilateur Micro Java

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

LES TOUT PREMIERS PAS

Découverte de Python

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Java Licence Professionnelle CISII,

S initier aux probabilités simples «Un jeu de cartes inédit»

Utilisation d objets : String et ArrayList

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

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Probabilités conditionnelles Loi binomiale

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Génie Logiciel avec Ada. 4 février 2013

Inscriptions en ligne

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

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

Jean-Philippe Préaux

Consigne : je remplis le tableau en tenant compte des informations de la ligne supérieure et de la colonne de gauche (droite pour les gauchers)

Notice d utilisation

Cours de Probabilités et de Statistique

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)

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

Initiation à Excel. Frédéric Gava (MCF)

B2i Brevet Informatique. Internet. Livret de l enseignant

Programmation linéaire

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.

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Meilleures pratiques de l authentification:

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

TP1 : Initiation à Java et Eclipse

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


1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

L2T SMS RESELLER MANUEL D UTILISATION ESPACE CLIENT AVERTISSEMENT

Indications pour une progression au CM1 et au CM2

Espace de stockage intermédiaire. Compte de Messagerie. Communication «Asynchrone» «Compte de Messagerie»

Introduction à MATLAB R

MANUEL DRIVELINK DRIVELINK

Cours Informatique Master STEP

Conventions d écriture et outils de mise au point

Algorithmique avec Algobox

Manuel de mise en page de l intérieur de votre ouvrage

STAGE IREM 0- Premiers pas en Python

DM 1 : Montre Autoquartz ETA

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

Transcription:

1 Remarques et erreurs fréquentes 1. Penser à utiliser les algorithmes des questions précédentes. Par exemple, pour voir si un mot m est français, écrire "Si estfrançais(m) ". 2. Beaucoup confondent "tant que" avec "si"... A la louche : si vous avez déjà mis une boucle "pour", il y a peu de chance pour qu il y ait aussi besoin d un "tant que", sauf pour un algo difficile. 3. Le manque d explication est particulièrement nocif lorsque l algorithme est faux : si vos explications montrent que vous aviez une stratégie valable, vous aurez une partie des points, sinon rien. 4. Pour vous aider à expliquer (et à comprendre vous-même) un algo, un bon point de départ est d expliquer quelle va être l utilité de chaque variable. 5. N utiliser que les instructions vues en cours, et pas les commandes python supplémentaires vues en TD ou que vous connaissez par ailleurs. Par exemple pour le calcul du max, return( max(t)) ne rapportera pas de point! 6. Quand on demande de renvoyer, ce n est pas afficher. De plus, à 2.3, on demande explicitement de renvoyer le résultat sous la forme (min, max) : pas de texte donc. Remarque: ainsi, pour récupérer le min d un tableau d entier, on pourra utiliser MinEtMax(T)[0], et le max sera obtenu par MinEtMax(T)[1]. 7. Une donnée d entrée n est pas une variable. Remarque: Python autorise de faire varier une donnée d entrée, ce n est pas le cas de Caml par exemple, et c est de toute façon une mauvaise habitude. 8. Calcul du max : ne pas initialiser la variable à 0! Imaginez que la liste ne contiennent que des négatifs! Prendre plutôt T[0] comme valeur de départ. Un tableau est a priori de dimension 1. i.e. les éléments s obtiennent par T[i], et pas par T[i][ j] (ça serait pour un tableau de tableaux). Rappelons que dans python, les tableaux et les listes sont implémentés par le même objet, appelé "list". Par contre, dans la théorie, un tableau a une longueur fixe, alors que dans une liste on peut rajouter ou enlever des éléments. 9. Dernière question : on demande un algo qui marche dans tous les cas, pas juste si n est impair. 10. Pour la présentation : vous pouvez prendre une ligne pour écrire un commentaire plutôt que de le tasser à droite de la ligne de code... Allez, pour une présentation parfaite, vous pouvez écrire les commentaires d une autre couleur (crayon ou noir). 11. [] est la liste vide. Pour la chaîne de caractère vide, c est "". 12. Les chaînes de caractère sont "immuables" ("non mutable" en anglais). Ceci signifie qu on ne peut pas les modifier en place. En particulier, pas de "append" ni de "pop", ni de m[i]=... 1

Informatique : premier devoir surveillé Durée 2 heures. Le sujet comporte une page recto-verso. On prendra soin de bien présenter les algorithmes. Les commentaires pourront être indiqués par un #, comme en python. Dans chacun des deux exercices, les questions sont de difficulté grosso-modo progressive. 2 Correcteur orthographique On dispose d un tableau Dictionnaire contenant tous les mots de la langue française. Ce tableau est placé en variable "globale", ce qui signifie qu il sera accessible par n importe quel algorithme, sans qu il soit nécessaire de l indiquer parmi les entrées de l algorithme. 1. Vérification d un mot : Écrire un algorithme estfrançais qui prend en entrée un mot m et regarde si ce mot est dans Dictionnaire. On renverra un booléen. 2. Complétion automatique : (a) Écrire un algorithme préfixe prenant en entrée deux mots n et m, et renvoyant "vrai" si n est le de m, renvoyant "faux" sinon. Attention aux indices : ne pas dépasser d un mot ni de l autre! (b) Écrire un algorithme complétion prenant en entrée un mot n, et renvoyant la liste de tous les mots du dictionnaire qui commencent par n. 3. Vérification d un texte : On veut maintenant vérifier un texte entier. On prendra donc en entrée une chaîne de caractères t pouvant contenir des espaces. Le but est de séparer les mots entre ces espaces, et de vérifier si chacun de ces mots est bien dans Dictionnaire. Pour simplifier, on ne prendra pas en compte la ponctuation : on suppose que t ne contient que des mots (sans majuscule) et des espaces. On propose la stratégie suivante : on utilisera une variable m qui contiendra le mot en cours. On parcourt t, on ajoute chaque lettre lue à m, et à chaque fois qu on rencontre un espace c est que le mot en cours est i : on teste si m est dans Dictionnaire, et on réinitialise m à "" (le mot vide). Écrire l algorithme correspondant. 3 Min et max d une liste 1. Écrire un algorithme prenant en entrée un tableau d entiers T et calculant le maximum de ce tableau. 2. Soit T un tableau d entier, et n son nombre d éléments. Combien de comparaisons sont effectuées par votre algorithme pour trouver le maximum de T? Combien d affectations au maximum? Au minimum? On pourrait bien sûr écrire un algorithme similaire pour calculer le minimum de T. Alors le calcul du minimum et du maximum de T prendrait un nombre de comparaisons de l ordre de 2n. Voici une stratégie plus rapide pour calculer simultanément le maximum et le minimum de T : On utilise deux variables m et M qui contiendront respectivement le minimum et le maximum des éléments du tableau déjà vus. On va parcourir le tableau en avançant de deux cases en deux cases. À chaque étape, si T[i]<T[i+1] alors on compare T[i] avec m, et on met à jour m si besoin ; puis on compare T[i+1] avec M, et on met M à jour si besoin. Mais si T[i]>T[i+1], on fait de même en échangeant les rôles de T[i] et T[i+1]. 3. Dans cette question, on suppose pour simplifier que le nombre n d éléments de T sera pair. Compléter l algorithme ci-dessous pour mettre en œuvre la stratégie expliquée ci-dessus. Attention : il peut y avoir plusieurs lignes à écrire sur chaque " ". On expliquera en particulier soigneusement la valeur ale de i dans la boucle "pour". On se place du point de vue python sur le tableaux : le dernier élément de T est donc T[n 1]. 2

Min et max Entrée : T un tableau d entier Sortie : le minimum et le maximum de T, présentés sous la forme (min, max) pour i de 0 à, de 2 en 2 : si T[i] < T[i + 1] : sinon: renvoyer ( ) 4. Combien de comparaisons sont effectuées par ce nouvel algorithme? 5. Compléter l algorithme pour qu il fonctionne aussi si n est impair. Indication: Si n est impair, la dernière valeur prise par i dans la boucle "pour" de l algorithme précédent sera n 3. 3

Correction 1 Correcteur orthographique 1. 2. 3. On note que cette question était un peu imprécise : l énoncé ne précise pas ce que l algorithme doit renvoyer. On peut renvoyer un simple booléen indiquant si le texte est correct. Cependant, il semble plus pratique de renvoyer la liste des mots mal orthographiés (par exemple on voudra peut-être les souligne en rouge dans un second temps). Entrées : t une chaîne de caractères, contenant uniquement des lettres minuscules et des espaces Sorties : La liste des mots mal orthographiés dans t Variables : m : chaîne, L : liste de chaînes, i, l : entiers l longueur de t m pour i de 0 à l 1 : # on parcourt tout le texte si t[i]==" " : #dans ce cas, on vient de ir un mot si non(estfrançais(m)) : ajouter m dans L m #réinitialiser m sinon: m m + t[i] renvoyer (L) Algorithme 1 : Vérification d un texte 2 Min et Max Le calcul du maximum dans un tableau est un des algorithmes à connaître cités dans le programme officiel. On parcourt le tableau, et on utilise simplement une variable m qui contiendra au fur et à mesure le maximum des éléments déjà rencontrés. 4

Entrées : T un tableau d entier Sorties : le maximum de T Variables : m, i, l : entiers l longueur de T m T[0] pour i de 1 à l 1 : #T[0] est déjà dans m : on peut commencer à 1. si T[i] > m : m T[i] renvoyer (m) Algorithme 2 : Calcul du maximum d un tableau 5