Première partie : (10 points)

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

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

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

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

Algorithmique et structures de données I

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Corrigé des TD 1 à 5

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

CORRECTION EXERCICES ALGORITHME 1

Correction TD algorithmique

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

Jean-Philippe Préaux

Arrêté Royal du 7 juillet 1994 fixant les normes de base en matière de prévention contre l incendie et l explosion : Notice explicative

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

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

Solutions du chapitre 4

Projet Matlab : un logiciel de cryptage

Réaliser un PUBLIPOSTAGE

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

Propagation sur réseau statique et dynamique

Fiches Méthodes pour les Boutiques en Ligne

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

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

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

Algorithmes de recherche

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ


Chapitre 5 : Flot maximal dans un graphe

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

Organigramme / Algorigramme Dossier élève 1 SI

TD de supervision. J.P. Chemla. Polytech Tours Département productique 2ème année

BACCALAUREAT GENERAL MATHÉMATIQUES

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

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Représentation d un entier en base b

Fonctions de plusieurs variables

4. Les structures de données statiques

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

Rappels sur les suites - Algorithme

Algorithmes récursifs

L exclusion mutuelle distribuée

Statistique : Résumé de cours et méthodes

TD: Cadran solaire. 1 Position du problème

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

Chp. 4. Minimisation d une fonction d une variable

Algorithmique et programmation : les bases (VBA) Corrigé

Sauvegarder automatiquement ses documents


TABLEAU CROISE DYNAMIQUE

Application de K-means à la définition du nombre de VM optimal dans un cloud

Résolution d équations non linéaires

Corrigé Exercice 1 : BRIDE HYDRAULIQUE AVEC HYPOTHÈSE PROBLÈME PLAN.

Créer une trace, obtenir son fichier gpx et sa carte Ou Afficher un fichier trace GPX

Salle de technologie

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Chap III : Les tableaux

Resolution limit in community detection

FOCUS Evolution. Lisez-Moi. Version FE 7.0.t

Caractéristiques des ondes

æ æffiæffiæ* -*-qesla ***-lgryia -r:gd e

(Third-Man Attack) PASCAL BONHEUR PASCAL 4/07/2001. Introduction. 1 Domain Name Server. 2 Commandes DNS. 3 Hacking des serveurs DNS


Application 1- VBA : Test de comportements d'investissements

PIROUETT! THE RHYTHMIC GYMNASTICS HELP DESK November 2013

Création d articles sur le site web du GSP

TRIGONOMETRIE Algorithme : mesure principale

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

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

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Correction du baccalauréat STMG Polynésie 17 juin 2014

Plan du cours Cours théoriques. 29 septembre 2014

Chapitre 2 Le problème de l unicité des solutions

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Elec II Le courant alternatif et la tension alternative

108y= 1 où x et y sont des entiers

Quelques algorithmes simples dont l analyse n est pas si simple

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

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

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

La classification automatique de données quantitatives

Examen Médian - 1 heure 30

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

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

TRAVAUX PRATIQUES SCIENTIFIQUES SUR SYSTÈME

alg - Classes, instances, objets [oo] Exercices résolus

Bases de données documentaires et distribuées Cours NFE04

Cours d Informatique

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

TP 3 diffusion à travers une membrane

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

LES REGLEMENTS AVEC SOCIEL.NET DERNIERE MISE A JOUR : le 14 juin 2010

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

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

Introduction à MATLAB R

EXCEL TUTORIEL 2012/2013

RESEAU TRES HAUT DEBIT EN FIBRE OPTIQUE - DOSSIER TECHNIQUE FTTH

Programmation Objet - Cours II

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

EPFL TP n 3 Essai oedomètrique. Moncef Radi Sehaqui Hamza - Nguyen Ha-Phong - Ilias Nafaï Weil Florian

Transcription:

S c ie n c e s d e l i n f o r m a t iq u e - A L G O R I T H M I Q U E E T P R O G R A M M A T I O N Correction Epreuve de contrôle - Session de juin 2011 Première partie : (10 points) Exercice n 1 : (3 points) 1- On rappelle que pour que la boucle tantque soit exécutée, la condition doit être vérifiée. Dans notre cas, la valeur de COMPTEUR doit être inférieure à 4. V 0 V 3 F 4 F 5 2- Pour que le traitement s exécute exactement 10 fois et compte tenu que l avancement dans le compteur se fait par un pas=1, la valeur de X est déterminée de la manière suivante : Nombre de répétitions = (Valeur finale valeur initiale) + 1 10 = 3 X + 1 X = 3 + 1 10 = -6 V -6 F -4 F 6 F 10 3- La trace du programme révèle les valeurs suivantes : Somme Compteur CA 0 0 0 0 1 10 10 2 20 30 3 30 60 4 F 0 F 30 F 40 V 60 Exercice n 2 : (3,5 points) Dans cet exercice il est demandé l algorithme d une fonction. D après la définition de la suite, on déduit qu elle est définie selon 2 cas : 1) Cas 1, n=0, le résultat (U) est égal à, puisque la valeur du résultat est fixée, il s agit d un cas d arrêt du traitement récursif. 2) Cas 2, n 1, le résultat (U) est égal à, puisque la valeur du résultat n est pas fixée et est définie en fonction de, il ne s agit pas d un cas d arrêt du traitement. De plus, comme le résultat est défini en fonction du terme précédent, on en déduit qu il s agit de la définition de l étape d avancement dans le traitement récursif On obtient alors l algorithme suivant pour la fonction Calc-Suite : 1. Calcul du n ième terme de U Solution récursive 0/ DEFFN Calc_Suite (n, m: entier) : réel Page n 1 / 8

1/ Si n = 0 Alors Calc_Suite 1 + 1/m Sinon Calc_Suite 1+ 1/ FN Calc_Suite(n-1,m) Finsi 2/ FIN Calc_Suite Solution itérative 0/ DEFFN Calc_Suite (n, m: entier) : réel 1/ s 1 + 1/m Pour i de 1 à n faire s 1 + 1/s 2/ Calc_Suite s 3/ FIN Calc_Suite 2. L ordre de récurrence de la fonction est égal à 1 car le terme U n est défini à partir du terme U n-1. Exercice n 3 : (3,5 points) Analyse de la fonction Nb_Lig_Sym permettant de déterminer le nombre de lignes symétriques de la matrice Mat : DEFFN Nb_Lig_Sym (Mat : matrice; m, n : entier) : entier Résultat = Nb_Lig_Sym nb nb = [nb 0] Pour L de 1 à m Faire Si FN Sym (Mat,L,n) Alors nb nb+1 FinSi Fin Nb_Lig_Sym TDO Locaux nb Entier Nombre de lignes symétriques L Entier Compteur Sym Fonction/Booléen Fonction permettant de vérifier la symétrie d une ligne DEFFN Sym (Mat : matrice ; lig, n : entier) : Booléen Résultat = Sym valid Valid = [i 1, valid (Mat[lig,i]=Mat[lig,n])] Tant que (i<=n Div 2) Et valid Faire i i+1 valid (Mat[lig,i]=Mat[lig,n-i+1]) Fin Sym TDO Locaux Objet Type/Nature i Entier valid Booléen/logique Page n 2 / 8

Deuxième partie : (10 points) TD TR MC Col Lig Plus_long Nb_ligne Conv_Oct Conv_nbr_txt Remplir Analyse du programme principal DEBUT Cryptage Résultat = TR TR = Proc Conv_nbr_txt (TR, MC O, lig, Long_Max) MC O = Proc Conv_Oct (MC D, lig, Long_Max) MC D = Proc Remplir (TD, MC D, lig, Long_Max) TD = Assigner (TD, "C:\txtinit.txt") lig FN Nb_ligne (TD) Long_Max FN Plus_long (TD) Fin Cryptage Tableau de déclaration des nouveaux types Type Matrice = Matrice [1..50, 1..50] d entiers Tableau de déclaration des objets globaux Texte Texte Matrice Fonction Fonction Procédure Procédure Procédure Texte à crypter (supposé déjà saisi) Texte résultat (texte crypté) Matrice contenant les codes ascii des caractères de T, puis convertis de la base 10 vers la base 8 Nombre de colonnes de MCD (nombre de caractères dans la ligne la plus longue de T) Nombre de lignes de MCD (nombre de lignes dans T) Fonction qui retourne la valeur de Col Fonction qui retourne la valeur de Lig Procédure qui convertit les éléments de MCD en octal Procédure qui remplit le fichier texte TR à partir de MCD Procédure qui remplit la matrice MC à partir du fichier texte T Analyse de la procédure Remplir Rôle du module : Remplissage à partir du fichier texte TD de la matrice M, qui contiendra, soit le code ASCII du caractère à traiter M[L, c] Ord(ph[c]) soit un espace (M[L,c] Ord(" ")). DEFPROC Remplir (Var TD : Texte ; Var M : Matrice ; Lig, Long_Max : ) Résultat = M Traitement de toutes les lignes du fichier M = [ L 0, Ouvrir (TD)] Tant que (Non Fin_fichier(TD)) Faire L L + 1 Toutes les lignes ont la même longueur Long-Max Lire (TD, ph) Pour c De 1 à Long_Max Faire Si (c Long (ph) Alors M[L, c] Ord(ph[c]) Traitement des derniers caractères (si nécessaire) : Ajout des espaces pour obtenir des lignes de même longueur. Sinon M[L,c] Ord(" ") FinSi Traitement des premiers caractères c de chaque ligne L de TD. Astuce : on utilise les mêmes compteurs pour la matrice M. Page n 3 / 8

Fin Remplir Objet Type/Nat Rôle L c ph Compteur pour les lignes Compteur pour les colonnes Variable contenant chaque ligne lue du fichier Analyse de la procédure Conv_nbr_txt Rôle du module : Remplissage à partir de la matrice M, du fichier texte TR. DEFPROC Conv_nbr_txt ( Var TR : Texte ; MC : Matrice ; lig, Long_Max : ) Résultat = TR TR = [Assigner (TR, "C:/txtcryp.txt"), Recréer (TR)] Traitement de toutes les colonnes de la matrice M (parcours vertical de M) Pour c De 1 à Long_Max Faire Ph "" Pour L De 1 à lig Faire Convch (MC [L,c], ch) Ph ph + ch + " " Finpour Ecrire_nl (TR, ph) Finpour Fin Conv_nbr_txt L c ph ch Compteur pour les lignes Compteur pour les colonnes Variable contenant chaque ligne lue du fichier Variable contenant la conversion d un élément de la matrice en chaîne Analyse de la procédure Conv_Oct Rôle du module : Conversion (cryptage) du contenu de la matrice M. Le cryptage consiste à convertir en base 8 Conv10_8 (M[L,c]) chaque caractère de la matrice et le ranger dans la même case. DEFPROC Conv_Oct (Var M : Matrice ; Lig, Long_Max : ) Résultat = M M = [ ] Pour L De 1 à lig Faire Pour c De 1 à Long_Max Faire Traitement de toutes les lignes de la matrice M (parcours horizontal de M) Conversion de chaque élément de la matrice en caractère. Rangement de chaque résultat intermédiaire ch, dans la variable Ph et séparation des résultats intermédiaires par un espace. Traitement de toutes les lignes de la matrice M (parcours horizontal de M) Traitement de toutes les colonnes de la matrice (parcours vertical de M) M[L,c] FN Conv10_8 (M[L,c]) Conversion de chaque élément de la matrice en base 8. Fin Conv_Oct Page n 4 / 8

L c Conv10_8 Fonction Compteur pour les lignes Compteur pour les colonnes Fonction qui retourne la conversion d entier de la base 10 vers la base 8 Analyse de la fonction Conv10_8 Rôle du module : Conversion d un entier d en base 8 Def FN Conv10_8 (d : Entier) : Entier Résultat = Conv10_8 Res Res = Valeur (ch, Res, e) Ch = [Ch ] Répéter R d MOD 8 Convch (R, Ch1) d d div 8 Ch Ch1 + Ch Jusqu à (d = 0) Fin Conv10_8 R Res e Ch1 Ch Entier Entier Entier Variable pour stocker le reste de la division Variable pour stocker le résultat de la fonction Valeur de l erreur Variable pour stocker la conversion de R en chaîne résultat de la conversion Analyse de la fonction Plus_long Rôle du module : Parcours du fichier texte T et détermination de la ligne la plus longue (Max). DEFFN Plus_long (Var T : Texte) : Résultat = Plus_long Max Ouvrir( T ) Max = Lire( T, ph) Max Long( ph) Tant que (Non Fin_fichier (T)) Faire Lire (T, ph) Si (Long (ph) > Max ) Alors Max Long (ph) Finsi Fin plus_long Parcours de toutes les lignes du fichier texte T. Recherche de la longueur de phrase la plus longue et conservation de cette valeur dans la variable Max. Page n 5 / 8

Max Ph Variable temporaire pour stocker le résultat Variable pour stocker chaque ligne lue à partir du texte Analyse de la fonction Nb_ligne Rôle du module : Parcours du fichier texte TD et détermination de son nombre de lignes (N). DEFFN Nb_ligne (Var TD : Texte) : Résultat = Nb_ligne N N = [N 0, Ouvrir (TD)] Tant que (Non Fin_fichier (TD)) Faire Lire_nl (TD) Parcours de toutes les lignes du fichier texte TD. Détermination du nombre de lignes du fichier TD et conservation de cette valeur dans la variable N. N N + 1 Fin Nb_ligne N Variable temporaire pour stocker le résultat Algorithme du programme principal 0) Début cryptage 1) Assigner (T, "C:\txtinit.txt") 2) Lig FN Nb_ligne (T) 3) Col FN Plus_long (T) 4) Proc Remplir (T, MC, lig, col) Proc Conv_Oct (MC, lig, col) 5) Assigner (TR, "C:/txtcryp.txt"), Recréer (TR) Proc Conv_nbr_txt (TR, MC, col, lig) 6) Fermer (T), Fermer (TR) 7) Fin cryptage Algorithme de la procédure Remplir 0) DEFPROC Remplir (Var T : Texte ; Var M : Matrice ; Lig, Col : ) 1) L 0, Ouvrir (T) Tant que (Non Chercher_fin_fichier(T)) Faire L L + 1 Lire (T, ph) Pour c De 1 à col Faire Si (c Long (ph) Alors M[L,c] Ord(ph[c]) Sinon M[L,c] Ord(" ") FinSi Page n 6 / 8

2) Fin Remplir Algorithme de la procédure Conv_nbr_txt 0) DefProc Conv_nbr_txt (Var TR : Texte ; MC : Matrice ; col, lig : ) 1) Ajouter (TR) Pour L De 1 à lig Faire Ph "" Pour c De 1 à col Faire Convch (MC[L,c], ch) Ph ph + ch Finpour Ecrire_nl (TR, ph) Finpour 2) Fin Conv_nbr_txt Algorithme de la procédure Conv_Oct 0) DEFPROC Conv_Oct (Var M : Matrice ; Lig, Col : ) 1) Pour L De 1 à lig Faire Pour c De 1 à col Faire M[L,c] FN Conv10_8 (M[L,c]) 2) Fin Conv_Oct Algorithme de la fonction Conv10_8 0) Def FN Conv10_8 (d : Entier) : Entier 1) Ch Répéter R d MOD 8 Convch (R, Ch1) d d div 8 Ch Ch1 + Ch Jusqu à (d = 0) 2) Valeur (ch, Res, e) 3) Conv10_8 Res 4) Fin Conv10_8 Algorithme de la fonction Nb_ligne 0) Def FN Nb_ligne (Var T : Texte) : 1) N 0, Ouvrir (T) Tant que (Non Fin_fichier (T)) Faire Lire_nl (T) N N + 1 2) Nb_ligne N 3) Fin Nb_ligne Algorithme de la fonction plus_long 0) Def FN Plus_long (Var T : Texte) : 1) Ouvrir (T) Lire (T, ph) Page n 7 / 8

Max Long (ph) Tant que (Non Fin_fichier (T)) Faire Lire (T, ph) Si (Long (ph) > Max ) Alors Max Long (ph) Finsi 2) Plus_long Max 3) Fin plus_long Page n 8 / 8