Exemples d'exercices d'algorithmique corrigés avec l'analyse descendante via ps

Exemples d'exercices d'algorithmique corrigés avec l'analyse descendante via pseudo-code EX N°1 Soit la suite définie par : • Le premier terme U0 est un entier donné qui dépasse 1. • Le terme Un est égal à la somme des carrés des chiffres de Cette suite est soit périodique ou stationnaire (constante). Établir les analyses puis les algorithmes permettant d'afficher les termes de la suite si elle est constante ou les termes de la période si la suite est périodique. Solution Solution Analyse Résultat = Proc Affiche (P,N,T) (P,N,T)=[N0,T[0]U0] Répéter NN+1 T[N]Fn SCC(T[N-1]) PFn Recherche(T[N],0,N-1,T) Jusqu'à (T[N]=1) ou (P>=0) U0=[ ] Répéter U0=Donnée("Donner un entier >1 ") Jusqu'à U0>1 Le tableau de déclaration des nouveaux types Type Tab = Tableau de 21 Entiers {les cases sont numérotées à partir de 0} Le tableau de déclaration des objets globaux Objet Type/Natu re Rôle P Entier ……. N Entier ……. U0 Entier ……. 1 T Tab ……. SCC Fonction ……. Recherc he Fonction ……. Algorithme 0) Début Ex1 1) Répéter Écrire("Donner un entier >1 ") Lire(U0) Jusqu'à U0>1 2) N0, T[0]U0 Répéter NN+1 T[N]Fn SCC(T[N-1]) PFn Recherche(T[N],0,N-1,T) Jusqu'a (T[N]=1) ou (P>=0) 3) Proc Affiche(P,N,T) 4) Fin Ex1 • Analyse de la fonction SCC (Version itérative) Analyse Résultat= SCC SCCS S=[S0] Répéter SS+Carré(N mod 10) N N div 10 Jusqu'à N =0 Le tableau de déclaration des objets locaux Obj et Type/Natu re Rôle S Entier ……. Algorithme 0) Def Fn SCC(N:Entier):Entier 1) S0 Répéter SS+Carré(N mod 10) NN div 10 Jusqu'à N = 0 2 2) SCCS 3) Fin SCC • Analyse de la fonction SCC (Version Récursive) Analyse Résultat= [ ] Si N=0 Alors SCC0 Sinon SCCFn SCC(N div10)+ Carré(N mod 10) Fin Si Algorithme 0) Def Fn SCC(N:Entier):Entier 1) Si N=0 Alors SCC0 Sinon SCCFn SCC(N div 10)+ Carré(N mod 10) Fin Si 2) Fin SCC • Analyse de la fonction Recherche (Version Itérative) Analyse Résultat= Recherche Recherche=[ ] Si T[I]=X Alors Recherche I Sinon Recherche -1 Fin Si I= [ ID-1 ] Répéter I I+1 Jusqu'à (T[I]=X) ou(I=F) Le tableau de déclaration des objets locaux Obj et Type/Natu re Rôle I Entier ……. Algorithme 0) Def Fn Recherche(X,D,F:Entier; T:Tab)Entier 3 1) ID-1 Répéter II+1 Jusqu'à (T[I]=X) ou(I=F) 2) Si T[I]=X Alors Recherche I Sinon Recherche -1 Fin Si 3) Fin Recherche • Analyse de la fonction Recherche (Version Récursive) Analyse Résultat= [ ] Si T[D]=X Alors Recherche D Sinon Si D>F Alors Recherche -1 Sinon Recherche Fn Recherche(X,D+1,F,T) Fin Si Algorithme 0) Def Fn Recherche(X,D,F:Entier; T:Tab)Entier 1) Si T[D]=X Alors Recherche D Sinon Si D>F Alors Recherche -1 Sinon Recherche Fn Recherche(X,D+1,F,T) Fin Si 2) Fin Recherche • Analyse de la procédure Affiche Analyse Résultat= [ ] Si T[N]=1 Alors Pour I de 0 à N Faire Écrire(T[I]) Fin Pour Sinon Pour I de P à N faire Écrire(T[I]) Fin Pour 4 Fin si Le tableau de déclaration des objets locaux Obj et Type/Natu re Rôle I Entier ……. Algorithme 0) Def Proc Affiche(P,N:Entier; T:Tab) 1) Si T[N]=1 Alors Pour I de 0 à N Faire Écrire(T[I]) Fin Pour Sinon Pour I de P à N faire Écrire(T[I]) Fin Pour Fin si 2) Fin Affiche EX N°2 Établir les analyses et les algorithmes permettant de déterminer les deux entiers A et B qui représentent respectivement le numérateur et le dénominateur de la somme des N fractions d'entiers. Exemple: Solution Solution Analyse Résultat= Écrire("La somme est = ",A,"/",B) (A,B)=Proc Somme(N,Num,Den,A,B) N=[ ] Répéter N = donnée ("N = ") Jusqu'à N dans[1..50] (Num,Den)=Proc Lecture(N,Num,Den) Le tableau de déclaration des nouveaux types 5 Type Tab = Tableau de 50 Entiers Le tableau de déclaration des objets globaux Obje t Type/Nat ure Rôl e A Entier ……. B Entier ……. N Entier ……. Num Tab ……. Den Tab ……. Lectu re Procédure ……. Som me Procédure ……. Algorithme 0) Début Ex4 1) Répéter Écrire("N = "), Lire(N) Jusqu'à N dans [1..50] 2) Proc Lecture(N,Num,Den) 3) Proc somme(N,Num,Den,A,B) 4) Écrire("La somme est = ",A,"/",B) 5) Fin Ex4 • Analyse de la procédure Lecture Analyse Résultat= (Num,Den) (Num,Den) = [ ] Pour I de 1 à N faire Num[I]=Donnée ("Num[",I,"]=") Répéter Den[I]=Donnée ("Den[",I,"]=") Jusqu'à Den[I]<>0 XFn PGCD(Abs(Num[I]),Abs(Den[I])) Num[I]Num[I] div X Den[I]Den[I] div X Fin Pour 6 Le tableau de déclaration des objets locaux Obj et Type/Nat ure Rôl e I Entier ……. PGC D Fonction ……. Algorithme 0) Def Proc Lecture(N:Entier; Var Num,Den: Tab) 1) Pour I de 1 à N faire Écrire("Num[",I,"]="), Lire(Num[I]) Répéter Écrire("Den[",I,"]="), Lire(Den[I]) Jusqu'à Den[I]<>0 XFn PGCD(Abs(Num[I]),Abs(Den[I])) Num[I]Num[I] div X Den[I]Den[I] div X Fin Pour 2) Fin Lecture • Analyse de la procédure Somme Analyse Résultat= (A,B) (A,B) = [A0, B1 ] Pour I de 1 à N faire AA*Den[I]+B*Num[I] BB*Den[I] XFn PGCD(Abs(A),Abs(B)) AA div X BB div X Fin Pour Le tableau de déclaration des objets locaux Obj et Type/Nat ure Rôl e I Entier ……. PGC D Fonction ……. Algorithme 7 0) Def Proc Somme (N:Entier; Num,Den:Tab; Var A,B:Entier) 1) A0, B1 Pour I de 1 à N faire AA*Den[I]+B*Num[I] BB*Den[I] XFn PGCD(Abs(A),Abs(B)) AA div X BB div X Fin Pour 2)Fin Somme • Analyse de la procédure PGCD Analyse Résultat= [ ] Si B = 0 Alors PGCD  A Sinon PGCD Fn PGCD(B, A mod B) Fin Si Algorithme 0) Def Fn PGCD(A,B:Entier):Entier 1) Si B = 0 Alors PGCD  A Sinon PGCD Fn PGCD(B, A mod B) Fin Si 2) Fin PGCD EX N°3 Établir les analyses et les algorithmes permettant de convertir un nombre romain R vers son équivalent arabe A. Exemples: R A "MMMXXIX" 302 9 "DCCCLIV" 854 "MCMLXXVII I" 197 8 "MMX" 201 0 Solution Solution 8 Analyse Résultat=Écrire(A) AFn convar(R) R=Donnée("Saisir un nombre romain ") Le tableau de déclaration des objets globaux Obje t Type/Nat ure Rôl e A Entier ……. R Chaine ……. Conv ar Fonction ……. Algorithme 0) Début Ex6 1) Écrire("Saisir un nombre romain) Lire(R) 2) AFn convar(R) 3) Écrire(A) 4) Fin Ex6 • Analyse de la fonction Convar version Itérative Analyse Résultat = Convar ConvarS S=[SFn Chiffre(R[Long(R)]] Pour I de 1 à Long(R) -1 Faire Si Fn Chiffre(R[I])<Fn Chiffre(R[I+1]) Alors SS-Fn Chiffre(R[I]) sinon SS+Fn Chiffre(R[I]) Fin Si Fin Pour Le tableau de déclaration des objets locaux Obje t Type/Nat ure Rôl e I Entier ……. S Entier ……. 9 Chiffr e Fonction ……. Algorithme 0) Def Fn Convar(R:Chaine):Entier 1) SFn Chiffre(R[Long(R)] Pour I de 1 à Long(R) -1 Faire Si Fn Chiffre(R[I])<Fn Chiffre(R[I+1]) Alors SS-Fn Chiffre(R[I]) Sinon SS+Fn Chiffre(R[I]) Fin Si Fin Pour 2) ConvarS 3) Fin Convar • Analyse de la fonction Convar version Récursive Analyse Résultat = [ ] Si Long(R) =0 Alors Convar0 sinon Si Long(R) =1 Alors ConvarFn Chiffre(R[1]) Sinon Si Fn Chiffre(R[1])<Fn Chiffre(R[2]) Alors Convar Fn Convar(Souchaine(R,2, Long(R)-1)-Fn Chiffre(R[1]) Sinon Convar Fn Convar(Souchaine(R,2, Long(R)-1)+Fn Chiffre(R[1]) Fin Si Le tableau de déclaration des objets locaux Obje t Type/Nat ure Rôl e Chiffr e Fonction ……. Algorithme 0) Def Fn Convar(R:Chaine):Entier 1) Si Long(R) =0 Alors Convar0 sinon Si Long(R) =1 Alors ConvarFn Chiffre(R[1]) Sinon Si Fn Chiffre(R[1])<Fn Chiffre(R[2]) Alors Convar Fn Convar(Souchaine(R,2, Long(R)-1)-Fn Chiffre(R[1]) 10 Sinon Convar Fn Convar(Souchaine(R,2, Long(R)-1)+Fn Chiffre(R[1]) Fin Si 2) Fin Convar • Analyse de la fonction Chiffre Analyse Résultat = Chiffre ChiffreN N =[ ] Selon Majus(C) Faire "I": N1 "V":N5 "X":N10 "L":N50 "C":N100 "D":N500 "M":N1000 Fin Selon EX N°4 Soit une entreprise qui comporte un nombre fini d’employés ; Chaque employé est caractérisé par un code (Numérotation automatique), un nom, un salaire, une catégorie (1-2-3 ou 4), un sexe et une ancienneté. Établir un algorithme qui permet la création d’un fichier contenant les employés, la saisie des employés (cette saisie se termine par un salaire nul qui ne doit pas être tenu en compte), puis augmenter les salaire par un montant qui est égale au double de l’ancienneté enfin créer un fichier comportant les hommes dans l’ordre décroissant des catégories et afficher les résultats calculés. Solution Solution Analyse Résultat=Proc Affiche(Ff) Proc Affiche(H) Ff= Proc Augmenter(F) F=Proc Saisie(F) H=Proc Hommes(Ff,H) Le tableau de déclaration des nouveaux types Type 11 Employe=Enregistreme nt Code: Mot Cat, Anc: Octet Nom: chaine[30] Sal: Réel Sexe: Caractère Fin Employe Entreprise= Fichier d'employe Le tableau de déclaration des objets globaux Objet Type/Natu re Rôle F Entreprise ……. H Entreprise ……. Affiche Procédure ……. Augmentat ion Procédure ……. Saisie Procédure ……. Hommes Procédure ……. • Analyse de la procédure saisie Analyse Résultat=F F = [Associer(F,"c:\employes.dat"), recréer(f), I0] Répéter II+1 E.codeI E.Nom=donnée ("……….") Répéter E.Sal=donnée("………") Jusqu'à E.Sal>=0 Répéter E.cat=donnée("………") Jusqu'à E.Cat dans[1..4] Répéter E.sexe=donnée("………") Jusqu'à E.sexe dans["F","f","H","h"] Répéter 12 E.Anc=donnée("………") Jusqu'à E.Anc >=0 Si E.Sal>0 Alors Écrire(F,E) Fin Si Jusqu'à E.Sal=0 Le tableau de déclaration des objets locaux Obj et Type/Nat ure Rôl e E Employe ……. Algorithme 0) Def Proc saisie(var f:Entreprise) 1) Associer(F,"c:\employes.dat"), recréer(f), I0 Répéter II+1 E.codeI E.Nom=donnée ("……….") Répéter E.Sal=donnée("………") Jusqu'à E.Sal>=0 Répéter E.cat=donnée("………") Jusqu'à E.Cat dans[1..4] Répéter E.sexe=donnée("………") Jusqu'à E.sexet dans["F","f","H","h"] Répéter E.Anc=donnée("………") Jusqu'à E.Anc >=0 Si E.Sal>0 Alors Écrire(F,E) Fin Si Jusqu'à E.Sal=0 2) Fermer(f)1 3) Fin saisie • Analyse de la procédure Augmentation Analyse 1 Pour sécuriser les données uploads/Science et Technologie/ pseudo-code.pdf

  • 12
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager