Prof : N.Riadh Correction série2 4Si Exercice 1
Transcription
Prof : N.Riadh Correction série2 4Si Exercice 1
Prof : N.Riadh Correction série2 4Si Exercice 1 : Analyse du PP Résultat = fc, fv Ecrire (‘’Nombre consone = ‘, Taille_fichier(fc)) Proc affiche (fc) Ecrire (‘’Nombre Voyelle = ‘, Taille_fichier(fv)) Proc affiche (fv) fv, fc =[Assigner(f, ‘’C:\voyelles.Dar’’), Assigner(f, ‘’C:\Consones.Dar’’)] proc eclater (f, fv, fc) F = [Assigner (f, ‘’C:\lettres.Dar’’)] Proc remplir(f) T.D.O.G TDNT Type Fcar = Fichier d’entier Analyse de la procédure remplir DEF PROC Remplir (var f : fcar) Résultat = f f = [recréer(f)] Répéter Répéter C = Donnée (‘'sasir une lettre : ‘') Jusqu’à (Majus(c) dans [‘'A’'..’'Z’','’#'’]) Si c <> '’#'’ alors Ecrire(f,c); Jusqu’à (c = ‘'#’') Fermer(f) Fin remplir Objet Type/Nature F, fv, fc Remplir Affiche eclatre Fcar Procédure Procédure Procédure T.D.O.L Objet Type/Nature c char Analyse de la procédure eclaer (var f, fv, fc : fcar) DEF PROC eclater (var f , fv, fc: fcar) Résultat = fv, fc fv, fc [recréer (fv), recréer (fc), ouvrir(f) ] Tant que non (Fin_fichier(f)) Faire Lire(f,c) si Majus(c) dans ['’A’', '’E’', '’I’', '’O'’, '’U’', '’Y’'] alors Ecrire (fv, c) sinon Ecrire (fc, c) Fin si Fin tant que Fermer(f) Fermer (fc) Fermer (fv) Fin eclater T.D.O.L Objet Type/Nature c char Prof : N.Riadh Correction série2 4Si Analyse de la procédure affiche (var f : fcar) DEF PROC affiche (var f : fcar) Résultat = f f= [ouvrir(f) ] Tant que non (Fin_fichier(f)) Faire Lire (f,c) Ecrire(c : 2) Fin tant que Fermer(f) Fin affiche T.D.O.L Objet Type/Nature c char Pascal : program cons_voy; uses wincrt; Type Fcar = File Of Char; Var f, fc, fv : Fcar; Procedure remplir(var f: Fcar); var c:char; begin rewrite(f); repeat repeat write('sasir une lettre : '); readln(c); until (upcase(c) in ['A'..'Z','#']); IF c <> '#' then write(f,c); until(c = '#'); End; Procedure Eclater(var f, fc, fv: Fcar); Var c:char; Begin Reset(f); rewrite(fv); rewrite(fc) ; While not (EOF(f)) Do Begin read(f,c); if upcase(c) in ['A', 'E', 'I', 'O', 'U', 'Y'] then write(fv,c) Else write(fc,c); end; end; Procedure affiche(Var f: Fcar); var c:char; Begin Reset(f); While not (EOF(f)) Do begin Read(f,c); Write(c:2); end; end; Begin Assign(f,'c:\Lettre.txt'); Assign(fv,'c:\Voyelle.txt'); Assign(fc,'c:\consonne.txt'); Remplir(f); Eclater(f,fc,fv); affiche(fv); writeln; writeln('nombre voyelles = ', Filesize(fv)); affiche(fc); writeln; writeln('nombre consonnes = ', Filesize(fc)); close(f); close(fv); close(fc); End. Prof : N.Riadh Correction série2 4Si Exercice 3 : Analyse du PP Résultat = fp fp= [ m = donnée(‘’entrer un matricule’’) ] si Fn Recherche(m) alors ecrire(‘’l’employer de matricule’’, m, ‘’existe’’) sinon ecrire(‘’l’employer de matricule’’, m, ‘’n’existe pas’’) Proc affiche(fp) Proc création(fp) TDNT T.D.O.G Type Emp = ………………………………………. Mat : entier Nom : chaine Grade : chaine Sal : réel Fin ……………………….. Fpers : fichier d’…………………………… Objet Type/Nature fp creation Affiche Recherche m ………………….. Procédure Procédure Fonction entier Analyse de la procédure creation DEF PROC cretaion (………………………………………..) Résultat = fp fp = [assigner(fp, ‘c:\salaire.dat’’), recréer(fp)] Répéter Répéter rep = Donnée (‘'voulez-vous ajouter un employer ‘') Jusqu’à (Majus(rep) dans [‘'O’’, ‘’N’’]) Si majus(rep) = ‘’O’’ alors Avec ………………………. faire Mat=Donnée (‘’Donner un matricule’’) Nom =Donnée (‘’Donner un nom’’) Grade= Donnée (‘’donner un grade’’) Sal= Donnée (‘’Donner un salaire’’) …………………………………. Fin Avec Fin si Jusqu’à (majus(rep) = ‘’N’’ ) Fermer(fp) Fin creation T.D.O.L Objet Type/Nature Prof : N.Riadh Correction série2 4Si Analyse de la procédure affiche DEF PROC affiche (var fp : fpers) Résultat = fp f= [……………………………………………… ] Tant que non (Fin_fichier(fp)) Faire ………………………………………… Si ……………………………………………………………………….. alors Ecrire (e.mat) Ecrire (e.nom) Ecrire (e.grade) Ecrire (e.sal) Fin si Fin tant que Fermer (fp) Fin affiche T.D.O.L Objet Type/Nature e emp Analyse de la fonction recherche DEF FN Rechercher ( n :entier) : booléen T.D.O.L Résultat = ………………………………………… Objet Type/Nature Trouve = [……………………………………………………………………] E trouve Emp booléen Tant que non (Fin_fichier(fp)) Faire ………………………………………………….. Si ……………………………………………….. alors Trouve vrai Fin si Fin Tant que Fermer (fp) Fin recherche Prof : N.Riadh Correction série2 Exercice 4 : program superflus; uses wincrt; var f: text; Procedure saisie (var ch: string); begin repeat write('sasir une phrase '); readln(ch); until (upcase(ch[1])in ['A'..'Z']) and (ch[length(ch)]='.'); end; procedure remplir (var f:text); var ch:string; n,i:Byte; begin repeat write('combien de phrase voulez vous saisir '); readln(n); until(n>0); For i:= 1 to n do Begin writeln('phrase n°', i); saisie(ch); writeln(f,ch); end; readln; end; procedure supp (var ch:string); begin while (pos(' ',ch) <>0) Do Delete(ch, pos(' ',ch), 1); end; Procedure transfert(var ft, f:text); var ch:string; Begin reset(f); rewrite(f); while not(EOF(ft)) Do Begin readln(ft,ch); writeln(f,ch); end; end; 4Si Procedure espace(var f:text); var ft:text; ch : string; begin Assign(ft, 'c:\Intermediaire.txt'); rewrite(ft); reset(f); while not (EOF(f) ) do begin readln(f, ch); supp(ch); writeln(ft,ch); end; transfert(ft, f); end; Procedure affiche (var f:text); var ch:string; begin while not(EOF(f)) Do begin readln(f,ch); writeln(ch); end; end; procedure longue(var f :text) ; var ch1,ch2 :string ; i,nb1,nb2 :integer ; begin reset(f) ; ch2 :='' ; nb2 :=0 ; while not(EOF(f)) Do Begin Readln(f,ch1) ; Nb1 :=0 ; For i := 1 to length (ch1) do If ch1[i]=' ' then nb1 :=nb1+1 ; If nb1>nb2 then Begin Nb2 :=nb1 ;ch2 :=ch1 ; End ; Write('la chaine la plus longue est', ch2) ; End ; end; Begin Assign(f,'c:\phrase.txt'); rewrite(f); remplir(f); affiche(f); longue(f); close(f); end. Prof : N.Riadh Correction série2 4Si Exercice 5 : program decompression; uses wincrt; type fe=file of integer; var f1,f2:fe; procedure creation(var f:fe); var np:string; begin write('donner un nom physique'); readln(np); assign(f,np); rewrite(f); end; procedure saisie(var f:fe); var rep:char;v:integer; Begin repeat readln(v); write(f,v); repeat write('voulez-vous continuez(O/N) ? '); readln(rep); until(upcase(rep) in ['O','N']); until(upcase(rep)='N'); end; procedure decomp(var f1,f2:fe); var j,i,n,x:integer; T:array[1..100]of integer; begin reset(f1); n:=filesize(f1); for i:=1 to n do read(f1,T[i]); i:=1; repeat x:=T[i]; For j:=1 to x do write(f2,T[i+1]); i:=i+2; until(i>n); end; procedure affiche(var f:fe); var v:integer; begin reset(f); while not(EOf(f)) do begin read(f,v); write(v:5); end; end; begin creation(f1); creation(f2); saisie(f1); writeln; affiche(f1); decomp(f1,f2); writeln; writeln; affiche(f2); close(f1); close(f2); end.