Lycée Pilote de Sousse
Devoir de Synthèse N° 1
Année scolaire : 2013/2014
Matière : Informatique Durée : 1H 30 Min
Mr. Med Abdallah Mani Classe : 4 Math 1
Nom & Prénom : ……….
Note : ……. / 20
Exercice 1. (6 Pts) Program ANAGRAMME;
Uses WinCrt;
Var MOT1,MOT2:string;
…PROCEDURE.. lire(var c1,c2:string);
Begin Repeat
Writeln('Tapez votre premier mot');
Readln(c1);
Writeln('Tapez votre deuxième mot');
Readln(c2);
Until ((c1 <> '') and (c2 <> '') and (c1 <>
c2));
…END;.
Function verifier (ch2,ch1 : string):…
BOOLEAN..;
Var ok:boolean; i,l,p:…INTEGER..; ch3:
…… STRING …;
Begin
l :=length(ch2); ok:= true;
If l <> length (ch1) then ok:= false Else
Begin
For i:=1 to l Do
ch3:= ch3 + upcase(ch1[i]);
i:= 1;
Repeat
p:= pos(upcase(ch2[i]),ch3);
If p = 0 then ok:= false
Else Begin i:= i + 1; ch3[p] := '*'; End;
Until ((not ok) or (i > l));
End;
…VERIFIER := ok;
End;
Begin
lire (MOT1,MOT2);
If verifier(MOT2,MOT1) then
Writeln(MOT2,' est une anagramme de ',MOT1)
Else
Writeln(MOT2,' n"est pas une anagramme de ',MOT1);
End.
1. Compléter les pointillés 2. Remplir le tableau suivant
Objets globaux MOT1,MOT2
Objets locaux Ok, i, l,p, ch3
Paramètres effectifs MOT1, MOT2
Paramètres formels c1, c2, ch2, ch1 Paramètres passés par variable C1
Paramètres passés par valeur C2, ch2, ch1
3. Quel est le résultat du programme pour MOT1=’’chien’’ et MOT2=’’niche’’
...niche est une anagramme de de chien...
4. Quel est le rôle de la fonction Verifier en expliquant l’anagramme.
...Permet de verifier si le mot2 est une anagramme du mot1, une
anagramme est un mot qui contient les meme letters que le premier mot et de même longueur..
5.Transformer l’entête de la fonction verifier en une procédure ...procedure verifier (ch2,ch1 : string; var ok:BOOLEAN);...
Problème. (14 pts)
Le programme Cryptage permet de remplir un tableau par N chaines de caractères alphabétiques majuscules non vides de taille max 15 (sachant que N entre 5 et 20). Après le remplissage, le programme doit afficher le tableau, crypter les chaines (selon la méthode suivante : permuter le premier et le dernier caractère de la chaine puis remplacer le caractère de milieu par son caractère complémentaire) et enfin afficher le tableau (après cryptage).
Pour cela vous devez :
1. Ecrire l’analyse du programme principal en utilisant la procédure Remplir, la procédure Affiche et la fonction Crypte.
2. Ecrire l’algorithme principal
3. Ecrire l’analyse des trois sous programmes 4. Ecrire l’algorithme de la fonction Crypte Exemple :
Pour N = 6
Soit le tableau T :
BONJOUR AMIN INFORMATIQUE FOULEN PASCAL IMEN
1 2 3 4 5 6
Méthode de Cryptage : T[i]=’’BONJOUR’’
Permutation premier et dernier caractère : T[i]=’’RONJOUB’’
Remplacement du caractère de milieu par son caractère complémentaire : Le caractère de milieu est ‘’J’’, son code ASCII est 74 le code complémentaire est 255-74=181 et le caractère complémentaire est µ d’où la chaine devient T[i]=’’
RONµOUB’’
Résultat final
Traduction Pascal
Program cryptage;
uses wincrt;
type
tab=array[1..20] of string [15];
var t:tab;
i,n:integer;
procedure Remplir(var t:tab;var n:integer);
var
i,j:integer;
ch:string;
verif:boolean;
begin repeat
writeln('Donner N entre 5 et 20 :');
readln(n);
until n in [5..20];
for i:=1 to n do repeat
writeln('Donner T[',i,'] =');
readln(t[i]);
ch:=t[i];
verif:=true;
j:=0;
repeat j:=j+1;
if not(ch[j] in ['A'..'Z']) then verif:=false;
until (verif=false) or (j=length(ch));
until (length(t[i]) in [1..15]) and (verif=true);
end;
procedure Affiche (t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do write(' ',t[i],' |');
writeln;
end;
Function Crypte (ch:string):string;
var
i,l,mil:integer;
x:char;
begin
l:=length(ch);
x:=ch[1];
ch[1]:=ch[l];
ch[l]:=x;
if l mod 2 = 1 then mil:=l div 2 + 1 else
mil:=l div 2;
ch[mil]:=chr(255-ord(ch[mil]));
crypte:=ch;
end;
begin
remplir(t,n);
affiche(t,n);
for i:=1 to n do t[i]:=crypte(t[i]);
affiche(t,n);
end.
Analyse du programme principal Résultat = Proc Affiche(t,n)
T=[]pour i de 1 à N faire T [i]FN crypte(t[i]) Fin Pour
Proc Affiche(t,n) T,n=Proc Remplir(t,n) Fin Devoir
Algorithme du programme principal 1) Debut Devoir
2) Proc Remplir(t,n) 3) Proc Affiche(t,n) 4) Pour i de 1 à N faire
T [i]FN crypte(t[i]) Fin Pour
5) Proc Affiche(t,n) 6) Fin Devoir
Analyse de la procedure Remplir
Def Proc Remplir(var t :tab ;var n :entier) Resultat = t,n
T=[]pour i de 1 à n Faire []répéter
T[i]=donnée(‘’T[‘’,i,’’]=’’) [verifvrai,j0]répéter Jj+1
Si NON(t[i][j] dans [‘’A’’..’’Z’’]) alors Verif faux
FinSI
Jusqu’à verif=faux ou j=long(t[i])
Jusqu’à verif ET long(ch)>0 ET long(ch)<=15 FinPour
N=[]répéter
N=Donnée(‘’Donner n entre 5 et 20’’) Jusqu’à n dans [5..20]
Fin Remplir
Abalyse de la procédure Affiche Def PROC Affiche(t :tab ; n :entier) Résultat =Af
Af=[]Pour i de 1 à N faire Ecrire(‘’ ‘’,t[i],’’ |’’) FinPour
Analyse de la fonction Crypte Def FN crypte(ch :chaine) :chaine Résultat =crypte
Crypte ch
Ch [mil]chr(255-ord(ch[mil])) Mil=[]si l mod 2 =1 alors
Mill div 2 + 1 Sinon
Mil l div 2 FinSI
Xch[1]
ch[1]ch[l]
ch[l]x llong(ch) Fin CRYPTE
Algorithme de la fonction Crypte 1) Def FN crypte(ch :chaine) :chaine 2) llong(ch)
3) Xch[1]
4) ch[1]ch[l]
5) ch[l]x
6) si l mod 2 =1 alors Mill div 2 + 1 Sinon
Mil l div 2 FinSI
7) Ch [mil]chr(255-ord(ch[mil])) 8) Crypte ch
9) Fin CRYPTE