M. Yassine ELGHARBI 4 SI

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

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

4. Les structures de données statiques

Cours d Informatique

Chap III : Les tableaux

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

Représentation d un entier en base b

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

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

CORRECTION EXERCICES ALGORITHME 1

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

ALGORITHMIQUE ET PROGRAMMATION En C

Algorithmique et programmation : les bases (VBA) Corrigé

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

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96


Cours Informatique 1. Monsieur SADOUNI Salheddine

Algorithmique et Programmation

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

Bien lire l énoncé 2 fois avant de continuer - Méthodes et/ou Explications Réponses. Antécédents d un nombre par une fonction

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

Licence Sciences et Technologies Examen janvier 2010

Codage d information. Codage d information : -Définition-

Algorithmes récursifs

TP : Gestion d une image au format PGM

Algorithme. Table des matières

Algorithmique et Programmation, IMA

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

V- Manipulations de nombres en binaire

Corrigé des TD 1 à 5

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

Rappels d architecture

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

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

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

Par combien de zéros se termine N!?

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Informatique Générale

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

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

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

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

Adama MBODJI MBODJ.SYSTEM

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Représentation des Nombres

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

TP 2 : Chiffrement par blocs

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

Introduction à l algorithmique et à la programmation (Info 2)

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Structure d un programme

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Les bases de données Page 1 / 8

Logiciel de Base. I. Représentation des nombres

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

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

Guide rapide IDEP. Helpdesk

Les suites numériques

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

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

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

Date : Note /20 : EVALUATION Nom : Prénom : Classe : Traitement sur mots

FORMATION EXCEL NIVEAU 2

Programmation C. Apprendre à développer des programmes simples dans le langage C

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

Pour l épreuve d algèbre, les calculatrices sont interdites.

Les structures. Chapitre 3

Conversion d un entier. Méthode par soustraction

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

TP1. Outils Java Eléments de correction

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)

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

TP 1 : 1 Calculs en binaire, octal et hexadécimal

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

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

Travaux Dirigés n 1 : chaînes de caractères

Programmation Objet - Cours II

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

1.1 L EXPLORATEUR WINDOWS

Cours Informatique Master STEP

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Représentation d un nombre en machine, erreurs d arrondis

Études et expérimentations sur matériel Wi-Fi (802.11b et g)

CM2 L architecture MIPS32

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

SYSTÈME DE GESTION DE FICHIERS

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

Chapitre 1 I:\ Soyez courageux!

ÉPREUVE COMMUNE DE TIPE Partie D

Dérivation : cours. Dérivation dans R

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

Examen Médian - 1 heure 30

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Chapitre 7. Récurrences

Transcription:

Exercice 1 : On vous demande dans cet exercice de proposer une solution récursive sur la manipulation de matrice Ecrire un programme qui permet de réaliser les tâches suivantes : - Saisir la taille de la matrice n. avec 2 n 10. - Initialiser la première ligne et la première colonne de la matrice à la valeur 1. - Remplir le reste de la matrice par la formule suivante : M i*m + j*m - Calculer et afficher la somme des valeurs de la matrice M. Questions : 1 ) Montrer que le remplissage de la matrice est un traitement récurrent, déterminer son ordre? 2 ) Proposer une décomposition adéquate de ce problème. 3 ) Donner les algorithmes du programme principal ainsi que chaque module utilisé. Solution itérative : Programme principal 0) Debut Exercice1 1) Procedure saisie(n) 2) Procedure remplir(n,m) 3) Procedure Afficher(n,m) 4) Fin exercice1 de la procédure saisie 0) DEF Proc saisie (var n :octet) 1) Repeter Ecrire( saisir la taille de la matrice ) Lire(n) Jusqu à (n Dans [2..10]) 2) Fin saisie de la procédure initialiser 0) DEF Proc initialiser (n:octet ; var m:matrice) 1) Pour i de 1 à n faire M[i,1] 1 M[1,i] 1 2) Fin initialiser de la procédure Remplir 0) DEF Proc Remplir (n :octet ; var m :matrice) 1) Proc initialiser(n,m) 2) Pour i de 2 à n faire Pour j de 2 à n faire M[i,j] i*m[i-1,j]+j*m[i,j-1] 3) Fin Remplir de la procédure Afficher 0) DEF Proc Afficher (n :octet ; m :matrice) 1) Ecrire( Pour la matrice : ) 2) S0 3) Pour i de 1 à n faire Pour j de 1 à n faire Ecrire(M[i,j]) Ss+M[i,j] Solution récursive : Programme principal 0) Debut Exercice1 1) Procedure saisie(n) 2) Procedure remplir(n,m) 3) Procedure Afficher(n,m) 4) Fin exercice1 de la procédure saisie 0) DEF Proc saisie (Var n :octet) 1) Ecrire( saisir la taille de la matrice ) 2) Lire(n) 3) Si ( Non (n Dans [2..10]) ) alors Proc saisie(n ) 4) Fin saisie de la procédure Remplir 0) DEF Proc Remplir (n,i,j :octet ; var m :matrice) 1) Si ( i n ) alors Si ( j n ) alors Si ( i=1 ) ou ( j=1 ) alors M[i,j] 1 M[i,j] i*m[i-1,j]+j*m[i,j-1] Proc remplir(n,i,j+1,m) Proc remplir(n,i+1,1,m) 2) Fin Remplir de la procédure Affich 3) DEF Proc Affich (n,i,j :octet ; m :matrice) 4) Si ( i n ) alors Si ( j n ) alors Ecrire(m[i,j]) Proc Affich (n,i,j+1,m) Proc Affich (n,i+1,1,m) Algorithmique et Programmation en Pascal 1

{retour à la ligne} 4) Ecrire ( La somme est égale à, s) 5) Fin Afficher 5) Fin Affich de la fonction S_Mat 0) DEF Fn S_Mat (n,i,j :octet ; m :matrice) 1) Si ( i n ) alors Si ( j n ) alors S_matM[i,j]+Fn S_Mat(n,i,j+1,m) S_mats_mat+Fn S_Mat(n,i+1,1,m) S_mat0 2) Fin S_Mat de la procédure Afficher 0) DEF Proc Afficher (n,i,j :octet ; m :matrice) 1) Ecrire( Pour la matrice : ) 2) Proc Affich (n,i,j,m) 3) Ecrire ( La somme est égale à, Fn S_Mat(n,i,j,m) ) 4) Fin Afficher Exercice 2 : Soient les deux suites «Un» et «Vn» définis par : U0 = 1 Un+1 =2*Un + 1 V0 = 2 Vn+1 =3*Un*Vn Questions : 1 ) Montrer que les deux suites sont récurrentes. Quel est l ordre de récurrence? 2 ) Afficher les «n» premiers nombres de deux suites U et V ; n : entier positif donnée. 3 ) Ecrire un module qui permet de vérifier l assertion suivante : Un < Vn Solution itérative : Solution récursive : Exercice 3 : Ecrire une analyse et un algorithme d'un programme intitulé "Conversion" qui permet de créer un fichier texte intitulé "FB.txt" le remplir par des chaînes binaires. L entrée d une chaîne vide arrête la saisie. Une chaîne binaire est une chaîne non vide qui contient seulement "0" et "1". Réaliser la conversion du contenu du fichier texte "FB.txt" de la base binaire vars la base hexadécimale dans un deuxième fichier texte intitulé "FH.txt". (R) On veut réaliser un tri sur le fichier texte "FH.txt" en suivant la méthode suivante : - Charger le contenu du fichier "FH.txt" dans un tableau d enregistrements "TE" à deux champs (le contenu de chaque ligne du fichier est stocké dans le premier champ de chaque case du tableau) (R) - Remplir le deuxième champ du "TE" par la conversion, du premier champ, de la base hexadécimale vers la base décimale. - Réaliser un tri suivant le deuxième champ du "TE" par la méthode de tri Shell. - Transférer le contenu du premier champ du "TE" dans le fichier "FH.txt". (R) - Afficher finalement le fichier texte "FH.txt". (R) Questions : 1 ) Définir les structures de données à utiliser pour résoudre ce problème. 2 ) Donner une décomposition adéquate du problème. Algorithmique et Programmation en Pascal 2

3 ) Donner une analyse et l algorithme du programme principal ainsi que pour chaque module utilisé. Solution itérative : Programme principal 0) DEF Exercice3 1) Procedure Creation ( F2, F16 ) 2) Procedure Remplir(F2) 3) Procedure transfert(f2,f16) 4) Procedure Exporter(F16,TE,n) 5) Procedure Convertir( TE, n ) 6) Procedure Trier(TE,n) 7) Procedure Importer(TE,n,F16) 8) Procedure Afficher(F16) 9) Fin exercice3 de la procédure Remplir 0) DEF Proc Remplir (var F2 :text) 1) ReCreer( F2 ) 2) Repeter Ecrire("saisir une chaine binaire") Lire(ch) Test FN Verifier(ch) Si (Test) alors Ecrire_nl( F2, Ch ) Jusqu à ( non(test) ou ch="" ) 3) Fermer (F2) 4) Fin Remplir de la Fonction Verifier 0) DEF FN Verifier (ch:chaine) :booleen 1) i1 2) Tant que ( ch[i] dans ["0","1"] ET i long(ch) ) FAIRE ii+1 fin tant que Si ( i=long(ch)+1 ) Alors Verifier Vrai Verifier Faux 3) Fin Verifier de la procédure Transfert 0) DEF Proc transfert( VAR F2,F16 :text ) 1) ReCréer( F16 ) 2) Ouvrir( F2 ) 3) Tant que (Non (Fin_fichier(F2) ) ) Faire Lire_nl( F2,ch ) Ch FN Convb2_b16( ch ) Ecrire_nl( F16.H,ch ) Fin Tantque 4) Fermer(F2) 5) Femer(F16) 6) Fin transfert Solution récursive : de la Fonction Verifier 0) DEF FN Verifier (ch:chaine; i:octet):booleen 1) Si ( i long(ch) ) Alors Si ( ch[i] dans ["0","1"] ) Alors Verifier Vrai * Fn Verifier ( ch,i+1 ) Verifier Faux 2) Fin Verifier Algorithmique et Programmation en Pascal 3

de la Fonction Convb2_b16 0) DEF FN Convb2_b16 (ch :chaine) :chaine 1) Tant que ( Long(ch) MOD 4 0 )Faire Ch"0"+Ch 2) Rch"" 3) Tant que (ch "" ) Faire s-chsous-chaine( ch, 1, 4 ) nb Convb2_b10( s-ch) Si ( nb < 10 ) Alors ConvchConvch( nb, chnb) Chnbchr( ord("a")+ nb ) Efface( ch, 1, 4 ) RchRch + Chnb Fin Tant que 4) Convb2_b16 Rch 5) Fin Convb2_b16 de la Fonction Convb2_b10 0) DEF FN Convb2_b10 (ch :chaine) :entier 1) Tant que (ch "" ) Faire Val( ch[1], n2, e ) n n + n2 * Fn Puiss( 2, long(ch) -1 ) Efface( ch, 1, 1 ) Fin Tant que 2) Convb2_b10 n 3) Fin Convb2_b10 de la Fonction Puiss 0) DEF FN puiss (b:octet ;a :entier) :entier 1) R1 2) Tant que (a 0 ) Faire R r * b Aa - 1 Fin Tant que 3) puiss r 4) Fin puiss de la procédure Exporter 0) DEF Proc Exporter(Var F16 :text ;Var TE :tab ;n:octet) 1) Ouvrir( F16 ) 2) i0 3) Tant que (Non (Fin_fichier(F16) ) ) Faire Lire_nl( F16, Ch ) i i + 1 TE[i].H Ch Fin Tantque 4) Fermer( f16) 5) Fin Exporter de la procédure Convertir de la Fonction Convb2_b16 0) DEF FN Convb2_b16 (ch :chaine) :chaine 1) Si ( Long(ch) MOD 4 0 ) Alors Ch"0"+Ch 2) Si (ch "" ) Alors s-chsous-chaine( ch, 1, 4 ) nb Convb2_b10( s-ch) Si ( nb < 10 ) Alors ConvchConvch( nb, chnb) Chnbchr( ord("a")+ nb ) Efface( ch, 1, 4 ) Convb2_b16Chnb+Fn Convb2_b16(ch) Convb2_b16 "" 3) Fin Convb2_b16 de la Fonction Convb2_b10 0) DEF FN Convb2_b10 (ch :chaine) :entier 1) Si (ch "" ) Alors Val( ch[1], n2, e ) Efface( ch, 1, 1 ) Convb2_b10 Convb2_b10( Ch ) + n2 * Fn Puiss( 2, long(ch) ) Convb2_b10 0 2) Fin Convb2_b10 de la Fonction Puiss 0) DEF FN puiss (b:octet ;a :entier) :entier 1) Si (a 0 ) Alors Puiss b * Fn Puiss( b, a-1 ) Puiss 1 2) Fin puiss de la procédure Convertir Algorithmique et Programmation en Pascal 4

0) DEF Proc Convertir( Var TE :tab ;n :octet) 1) Pour i de 1 à n faire Avec TE[i] Faire D Fn Convb16_b10 ( H ) Fin Avec 2) Fin Convertir de la fonction Convb16_b10 0) DEF Fn Convb16_b10 (Ch:chaine) : entier 1) N10 0 2) Pour i de 1 à Long (ch) Faire Si Ch[ i ] dans [ ''0''..''9'' ] Alors Val( ch[ i ], a, e ) a <-- Ord( ch[ i ] ) - Ord(''A'') + 10 N10<--n10 + a * Fn Puiss( 16, long(ch) i ) 3) Convb16_b10 <-- n10 4) Fin Convb16_b10 de la procédure Trier 0) DEF Proc Trier(Var TE : tab ; n :octet ) 1) pas FN Calcul_pas (N) 2) Répéter Pour i de pas+1 à N faire tmp TE[i] ji Tant que (j-pas >0) et (TE[j-pas].D >tmp.d ) faire TE[j] TE[j-pas] j j-pas TE[j] tmp Fin Pour Pas pas div 3 Jusqu à (pas<1) 3) Fin Trier de la fonction calcul_pas 0) DEF Fn Calcul_pas (N:entier) : entier 1) pas 1 2) Tant que ( 3*pas+1 < N ) faire pas pas * 3 + 1 3) calcul_pas pas 4) Fin calcul_pas 0) DEF Proc Convertir( Var TE :tab ;n :octet) 1) Si ( n 1 ) alors Avec TE[n] Faire D Fn Convb16_b10 ( H,1 ) Proc Convertir( TE,n-1 ) Fin Avec 2) Fin Convertir de la fonction Convb16_b10 0) DEF Fn Convb16_b10 (Ch:chaine,i :entier) : entier 1) si ( i long(ch) )alors Si ( ch[ i ] dans [''0''..''9''] ) alors Val( ch[ i ], a, e ) a<--ord( ch[ i ]) - Ord(''A'') + 10 Convb16_b10 <-- Fn Convb16_b10 ( ch, i+1 ) + c * Fn Puiss ( 16, long(ch) i ) 2) Fin Convb16_b10 de la procédure Trier 0) DEF Proc Trier( Var TE:tab; n:octet ) 1) P Fn Calcul( n ) 2) Proc Tri_Shell( TE, n, 1, p ) 3) Fin Trier de la procédure Tri_Shell 0) DEF Proc Tri_Shell ( var TE:tab; n,i,p:octet ) 1) Si(p>=1) alors si(i<=n) alors tmp<--te[i] j<--i tant que( (j>p) et (tmp.d<te[j-p].d)) faire TE[j] <--TE[j-p] j<--j-p tant que TE[j]<--tmp Tri_Shell (TE,n,i+1,p) p<--p DIV 3 i<--p+1 Tri_Shell (TE,n,i,p) fin si 2) Fin Trier de la fonction calcul_pas 0) DEF Fn Calcul_pas (N:entier) : entier 1) pas 1 2) Tant que ( pas < n ) Faire Pas3*pas +1 Tant que 3) Calcul_pas pas 4) Fin calcul_pas Algorithmique et Programmation en Pascal 5

de la procédure Importer 0) DEF Proc Importer(TE : tab ; n :octet ;var F16 : text) 1) ReCreer( F16 ) 2) Pour i de 1 à n faire Ecrire( F16, TE[i].h ) 3) Fermer( f16) 4) Fin Importer de la procédure Afficher 0) DEF Proc Afficher(Var F16 :text) 1) Ouvrir( F16 ) 2) Tant que (Non (Fin_fichier (F16) ) ) Faire Lire_nl( F16,Enr) {Enr :enregistrement} Ecrire( E.H ) 3) Fermer( f16) 4) Fin Afficher Exercice 4 : 1) Proposez un algorithme qui lit un nombre binaire positif N et le convertit dans la base 10. 2) A partir de cette question, le nombre N est exprimé dans la base 10. On cherche à déterminer si un entier N saisi (N>9) est divisible par 9 ou non en appliquant la méthode suivante : (i) On fait la somme du premier et du second chiffre de N. (ii) Si la somme obtenue est supérieure ou égale à 9, on lui soustrait 9. (iii) On ajoute ensuite à cette somme le chiffre suivant et on lui applique la règle (ii) et ainsi de suite jusqu au dernier chiffre de N. (iv) Si le résultat final est nul alors le nombre est divisible par 9. Exemple : pour N = 65493, l algorithme effectuera les opérations suivantes : 6 + 5 = 11 (11 > 9, on lui soustrait 9, on obtient 2) 2 + 4 = 6 (6 < 9) 6 + 9 = 15 (15 > 9, on lui soustrait 9, on obtient 6) 6 + 3 = 9 (9 = 9, on lui soustrait 9, on obtient 0) Le résultat est nul et tous les chiffres de N ont été traités ; donc le nombre 65493 est divisible par 9. de la procédure Dev9 0) DEF FN Dev9 ( N : entierlong ) :booleen 1) S0 2) Convch( N, chn ) 3) Pour i de 1 à long( chn ) faire Val( chn[i], c, e ) S s + c Si ( s 9 ) alors S s 9 4) Dev9 S = 0 5) Fin Dev9 Exercice 5 : de la procédure Dev9 0) DEF FN Dev9 ( N : entierlong ) :booleen Algorithmique et Programmation en Pascal 6

un nombre est dit super premier et si, en supprimant des chiffres à partir de sa droite,le nombre restant est aussi premier. EXEMPLE: le nombre 59399 est super premier car les nombre 59399,5939,593,59 et 5 sont tous premier. Ecrire un programme pascale qui permet de : *saisir un entier tel que 40000<n>100000. *cherche tous les nombres premiers inférieur ou égaux à n, les afficher à raison d'un nombre par ligne en mentionnant devant chaque nombre super premier la note "super premier" et de faire la même chose dans un fichier texte super_p.txt. de la fonction Premier 0) DEF FN Premier ( N : entierlong ) :booleen 1) S0 2) Pour i de 1 à N DIV 2 faire Si ( N MOD i = 0 ) alors S s + i 3) Premier S = 1 4) Fin Premier de la fonction Sup_Premier 0) DEF FN Sup_Premier( N : entierlong) :booleen 1) exit faux 2) repeter Si ( FN Premier(N) ) alors N N DIV 10 Exit vrai Jusqu à ( exit ) OU ( N=0 ) 3) Sup_Premier N = 0 4) Fin Sup_Premier de la procédure recherche 0) DEF Proc recherche ( N : entierlong ; Var Sup :text ) 1) ReCreer( sup) 2) Pour i de 1 à N faire Si (Sup_Premier(i) ) alors Convch( i, ch ) Ch ch+" super premier" Ecrire(ch) {retour à la ligne} Ecrire_nl(sup,ch) 3) Fermer (Sup) 4) Fin recherche Algorithmique et Programmation en Pascal 7