• Aucun résultat trouvé

Note : ……. / 20

N/A
N/A
Protected

Academic year: 2022

Partager "Note : ……. / 20"

Copied!
5
0
0

Texte intégral

(1)

Lycée Pilote de Sousse

Devoir de Synthèse N° 2

Année scolaire : 2011/2012

Matière : Informatique Durée : 1H30Min

Mr. Med Abdallah Mani Classe : 4 Tech

Nom & Prénom : ……….

Note : ……. / 20

Exercice 1. (4.5 pts)

Critiquez le choix de la structure itérative à chaque cas, proposez une boucle plus convenable et développez votre solution

Cas Proposition

Saisie d’un entier n positif : N=[] Tantque (n<0) faire

N=donnée (’’Donner un entier positif :’’) Fin Tantque

Critiques :

Pas de valeur pour N pour la comparaison

Structure itératives proposées :

Répéter jusqu’à

Développement de la boucle :

N=[]Répéter

N=Donnée(’’Donner un entier positif :’’) Jusqu’à (N>0)

Effacement des chiffres dans une chaine : Ch=[] Pour i de 1 à long(ch) faire

[] Si ch[i] dans [‘’0’’..’’9’’] alors Efface (ch,i,1)

FinSi FinPour

Critiques :

Ne supprime pas les chiffres successifs

Structure itératives proposées :

Répéter jusqu’à

Développement de la boucle :

i:=1;

repeat

if ch[i] in ['0'..'9'] then begin

delete(ch,i,1) ; i:=i-1;

end;

i:=i+1;

until(i>length(ch));

Calcul du maximum dans un tableau : Max=[i1, maxt[1]]Répéter

[] Si t[i]>max alors Max t[i]

FinSI ii+1 jusqu'à (i=n)

Critiques :

Ne vérifie pas la dernière case du tableau

Structure itératives proposées :

Répéter jusqu’à ou Pour

Développement de la boucle :

Max=[i1, maxt[1]]Répéter

[] Si t[i]>max alors Max t[i]

FinSI ii+1 jusqu'à (i=n)

(2)

Exercice 2. (1.5pts)

Rôle Déclaration Pascal (TYPE, CONST,

VAR) Un type Mois contenant tous les numéros des

mois

Type

Mois=1..12 ;

Un type Voy contenant les six voyelles de l’alphabet

Type

Voy=(a,e,i,o,y,u) ;

Un objet Newton contenant la constante de newton de valeur 9.8

Const

Newton=9.8 ;

Un Variable contenant une chaine de 10 caractères

Var

Ch :string[10] ;

Un type Tab tableau contenant des entiers ayant pour indices les caractères de l’alphabet

Type

Tab=array[‘A’..’Z’] of integer ;

Un objet contenant le texte PASCAL

Const

Chc=’PASCAL’ ; Problème. (3 pts)

Cryptage de Hauffman

Le chiffrement, aussi appelé cryptage, est le procédé grâce auquel on souhaite rendre la compréhension d'un document impossible à toute personne qui n'a pas la clé de chiffrement.

Le principe de l’algorithme de cryptage selon la clé de chiffrement de Hauffman est le suivant :

1. L’utilisateur saisie une chaine contenant que des caractères alphabétiques (minuscules et majuscules) et des espaces.

2. Sauvegarder les positions des espaces pour pouvoir les insérer après le cryptage.

3. Convertir chaque caractère en sa représentation binaire sur 8 bits

4. Sur chaque représentation binaire de chaque caractère effectuer K rotation à gauche (le nombre de rotation K représente le nombre de 1 dans la représentation binaire du caractère).

5. Convertir le nouveau chiffre binaire en caractère

6. Réinsérer les espaces dans la chaine 7. Afficher la nouvelle chaine cryptée.

Exemple :

Le caractère ‘’z’’ minuscule a la représentation binaire suivante :01111010

12 2

2

(3)

Le code binaire se lit de bas en haut

Le nombre de rotation k à faire est 5

Après rotation le code binaire devient : 01001111

Pour convertir en code ASCII = 26+23+22+21+20=79

0 1 0 0 1 1 1 1

27 26 25 24 23 22 21 20

Le caractère ‘’z’’ après cryptage devient ‘’O’’

La Chaine ‘’Bac Tech’’ devient ‘’’’.

0 6

1 2

1 3

0 2

0 1

5 2

1 7 2

1 3 2

1 1 2

1 0

program devoir;

uses wincrt;

type

tab= array [1..256] of string[8];

tabs= array[1..256] of byte;

var

ch,chrr:string;

n,ne:integer;

e:tabs;

b:tab;

procedure saisie(var fch:string;var fn:integer);

var

test:boolean;

i:integer;

begin repeat

writeln('Donner une chaine :');

readln(fch);

test:=true;

for i:=1 to length(fch) do

if not (fch[i] in [' ','A'..'Z','a'..'z']) then test:=false;

until (test);

fn:=length(fch);

end;

procedure espace(var fch:string;var fe:tabs;var fne:integer);

var

i,j:integer;

begin j:=1;

for i:=1 to length(fch) do if(fch[i]=' ')then begin

fe[j]:=i;

j:=j+1;

end;

fne:=j-1;

while(pos(' ',fch)<>0) do

(4)

begin

delete(fch,pos(' ',fch),1);

end;

end;

procedure binair(fch:string;var fb:tab;var fn:integer);

var

di,i,j,asc:integer;

x,chx:string;

begin

for i:=1 to fn do begin

asc:=ord(fch[i]);

chx:='';

di:=asc;

repeat asc:=di;

di:=asc div 2;

str(asc mod 2,x);

chx:=x+chx;

until (di=0);

for j:=1 to 8-length(chx) do chx:='0'+chx;

fb[i]:=chx;

end;

end;

procedure rotation(var fb:tab;fn:integer);

var

j,i,k:integer;

chx,chxx:string[8];

begin

for i:=1 to fn do begin

chx:=fb[i];

k:=0;

for j:=1 to 8 do if chx[j]='1' then k:=k+1;

chxx:=copy(chx,1,k);

delete(chx,1,k);

chx:=chx+chxx;

fb[i]:=chx;

end;

end;

(5)

function exp(fx:byte):byte;

var

i,x:integer;

begin x:=1;

for i:=1 to fx do x:=x*2;

exp:=x;

end;

procedure asci(fb:tab;fn:integer;var fchrr:string);

var

c,i,j:integer;

chx:string[8];

begin fchrr:='';

for i:=1 to fn do begin

chx:=fb[i] ; c:=0;

for j:=1 to 8 do if chx[j]='1' then c:=c+exp(8-j);

fchrr:=fchrr+chr(c);

end;

end;

procedure inser(fe:tabs;fne:integer;var fchrr:string);

var

i:integer;

begin

for i:=1 to fne do insert(' ',fchrr,fe[i]);

end;

begin saisie(ch,n);

writeln('La chaine d''origine est :',ch);

espace(ch,e,ne);

n:=n-ne;

binair(ch,b,n);

rotation(b,n);

asci(b,n,chrr);

inser(e,ne,chrr);

writeln('La chaine cryptée est :',chrr);

end.

Références

Documents relatifs

Ayant aussi voyagé en Égypte, en Syrie, en Sicile, en Provence pour le compte de son père, et rencontré divers mathématiciens, Fibonacci en rapporta à Pise des

Par exemple un CNA convertit une tension analogique en binaire naturel décalé et envoie l'information à un microprocesseur qui pour faire les calculs passe en code complément à 2.

Relie chaque panier à la bonne étiquette nombre.. Relie chaque panier à la bonne

Pour chaque ensemble, écris le nombre d'objets.. Pour chaque ensemble, écris le nombre

[r]

Même chose pour des nombres très petits inférieurs au nombre le plus petit représentable sur 64 bits. Arrondi d’un

La largeur, c’est-à-dire le nombre de caractère maximal que peut recevoir une ligne, sera indiquée par un entier supposé plus grand que tous les mots du paragraphe.. Les exemples

On considère ici des arbres ternaires, c’est-à-dire des arbres dont chaque nœud possède soit 3 fils (on parle alors de nœud interne) soit aucun fils (on parle alors de feuille)..