BAC 2008/2009
4 participants
Page 1 sur 1
BAC 2008/2009
Bonne chance à tous dans ce forum et j'espère que tout va bien pour nous
Mohamedh hafedh bellil- Messages : 7
Date d'inscription : 24/10/2008
4 SI Algo & Programmation
Pour reussir il faut travailler, travailler et encore une fois travailler. Bonne chance pour tous les bacheliers de notre lycée
Voici un exercice interessant avec les fichiers typés.
Pour un certain modèle de poste radio, une station radio est caractérisée par :
- son nom qui ne dépasse pas 10 caractères.
- sa fréquence d’ondes qui se classe en trois catégories :
- sa longueur d’onde exprimée en mètre.
- son code :
L’utilisation de ce poste est gérée par un programme intitulé RADIO. Les données sont enregistrées dans une mémoire non volatile permettant selon le choix de l’utilisateur de faire les opérations ci-dessous :
1. avoir un espace d’enregistrement dont le chemin et le nom sont fixes.
2. capter (saisir) un certain nombre de stations.
3. vérifier l’existence d’une station par son nom.
4. supprimer une ou plusieurs stations existantes.
5. ajouter une ou plusieurs stations captées.
6. classer les stations par leurs codes en ordre croissant.
7. afficher une ou plusieurs stations par : nom, fréquence, longueur et code.
8. quitter le programme.
QUESTIONS
1. Proposez une structure de données adéquate pour les objets globaux à utiliser.
2. Donner une déclaration algorithmique de ces objets.
3. En utilisant l’analyse modulaire, proposer une analyse du programme principal ainsi que l’analyse de chaque module.
Essayez de le faire en attendant la correction
Voici un exercice interessant avec les fichiers typés.
Pour un certain modèle de poste radio, une station radio est caractérisée par :
- son nom qui ne dépasse pas 10 caractères.
- sa fréquence d’ondes qui se classe en trois catégories :
- Ondes Moyennes MW (Medium Wave) ayant des fréquences comprises entre 530 et 1600 khz.
Ondes Longues LW (Long Wave) ayant des fréquences comprises entre 150 et 280 khz.
Ondes Courtes SW (Short Wave) ayant des fréquences comprises entre 3200 et 12000 khz.
- sa longueur d’onde exprimée en mètre.
- son code :
- ‘’LW’’ pour les ondes longues (LW).
‘’MW’’ pour les ondes moyennes (MW).
‘’SW’’ pour les ondes courtes (SW).
L’utilisation de ce poste est gérée par un programme intitulé RADIO. Les données sont enregistrées dans une mémoire non volatile permettant selon le choix de l’utilisateur de faire les opérations ci-dessous :
1. avoir un espace d’enregistrement dont le chemin et le nom sont fixes.
2. capter (saisir) un certain nombre de stations.
3. vérifier l’existence d’une station par son nom.
4. supprimer une ou plusieurs stations existantes.
5. ajouter une ou plusieurs stations captées.
6. classer les stations par leurs codes en ordre croissant.
7. afficher une ou plusieurs stations par : nom, fréquence, longueur et code.
8. quitter le programme.
QUESTIONS
1. Proposez une structure de données adéquate pour les objets globaux à utiliser.
2. Donner une déclaration algorithmique de ces objets.
3. En utilisant l’analyse modulaire, proposer une analyse du programme principal ainsi que l’analyse de chaque module.
Essayez de le faire en attendant la correction
Hanafi- Messages : 106
Date d'inscription : 25/10/2008
Essai.
Bonjour,
j'ai essayer de résoudre le problème avec Rami essaafi,je veux savoir si la procédure vérifier est juste ou pas:
Procedure verifier ( var f: fiche );
var nm:string;
test:boolean;
begin
writeln ('donner nom');
readln(nm);
reset(f);
test:=false;
while (not eof(f))or(not test) do
begin
read (f,station);
test:= station.nom = nm;
end;
if test then
writeln('Station existante')
else
writeln('Station inexistante');
end;
Merci d'avance.
j'ai essayer de résoudre le problème avec Rami essaafi,je veux savoir si la procédure vérifier est juste ou pas:
Procedure verifier ( var f: fiche );
var nm:string;
test:boolean;
begin
writeln ('donner nom');
readln(nm);
reset(f);
test:=false;
while (not eof(f))or(not test) do
begin
read (f,station);
test:= station.nom = nm;
end;
if test then
writeln('Station existante')
else
writeln('Station inexistante');
end;
Merci d'avance.
Akram- Messages : 8
Date d'inscription : 25/10/2008
Radio
Voila Mme c'est mon Essai
program Radio;
uses wincrt;
type
enr=record
nom:string [10];
freq:integer;
long:integer;
code:integer;
end;
fiche = file of enr;
tab=array [1..100] of enr;
var
f:fiche;
station:enr;
re:char;
choix:integer;
procedure creation(var f:fiche);
var cond:boolean;
begin
clrscr;
writeln(' *** Création ***');
writeln;
writeln;
rewrite(f);
repeat
with station do
begin
write('Donner le nom du station : ');readln(nom);
repeat
write('Donner la fréquence du station : ');readln(freq);
cond:=((freq>530)and(freq<1600))or((freq>150)and(freq<280))or((freq>3200)and(freq<12000));
until cond;
write('Donner la longuer du station : ');readln(long);
write('Donner le code du station : ');readln(code);
end;
write(f,station);
repeat
write('Vouler vous continuer ? (O/N)');
readln(re);
re:=upcase(re);
until (re='O')or(re='N');
until re='N';
close(f);
end;
procedure affiche(var f:fiche);
begin
clrscr;
writeln(' *** Affichage ***');
writeln;
writeln;
reset(f);
while not eof(f) do
begin
read(f,station);
with station do
writeln('Nom: ',nom,' | Fréquence : ',freq,' | Longueur : ',long,' | Code : ',code);
end;
close(f);
readln;
end;
function position(var f:fiche;x:string):integer;
var test:boolean;
begin
reset(f);
test:=false;
while (not eof(f))and(not test)do
begin
read(f,station);
test:=((station.nom)=x);
end;
if test then
position:=filepos(f)-1
else
position:=-5;
end;
procedure verifier(var f:fiche);
var
x:string;
begin
clrscr;
writeln(' *** Verification ***');
writeln;
writeln;
write('Donner le nom du station a chercher : ');readln(x);
if position(f,x)<>-5 then
writeln('Chaine existante')
else
writeln('Chaine inexistante');
readln;
end;
procedure supprimer(var f:fiche);
var
x:string;
p:integer;
begin
clrscr;
writeln(' *** suppression ***');
writeln;
writeln;
write('Donner le nom du station a supprimerr : ');readln(x);
p:=position(f,x);
if (p<(filesize(f)+1))and(p>-1 )then
begin
if p<>filesize(f)-1 then
begin
p:=p+1;
seek(f,p);
while p<filesize(f) do
begin
seek(f,p);
read(f,station);
seek(f,p-1);
write(f,station);
p:=p+1
end;
end;
seek(f,filesize(f)-1);
end;
truncate(f);
end;
procedure ajout(var f:fiche);
var cond:boolean;
begin
clrscr;
writeln(' *** Ajout ***');
writeln;
writeln;
reset(f);
seek(f,filesize(f)-1);
repeat
with station do
begin
write('Donner le nom du station : ');readln(nom);
repeat
write('Donner la fréquence du station : ');readln(freq);
cond:=((freq>530)and(freq<1600))or((freq>150)and(freq<280))or((freq>3200)and(freq<12000));
until cond;
write('Donner la longuer du station : ');readln(long);
write('Donner le code du station : ');readln(code);
end;
write(f,station);
repeat
write('Vouler vous continuer ? (O/N)');
readln(re);
re:=upcase(re);
until (re='O')or(re='N');
until re='N';
close(f);
end;
procedure tri(var t:tab;n:integer);
var
i:integer;
test:boolean;
begin
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('tri des stations en cours ');
repeat
test:=true;
for i:=1 to n-1 do
if (t[i].code)>(t[i+1].code) then
begin
station:=t[i];
t[i]:=t[i+1];
t[i+1]:=station;
test:=false;
write('_');
end;
until test;
end;
procedure croissant(var f:fiche);
var
i,n:integer;
t:tab;
begin
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('lecture du fichier en cours.');
reset(f);
i:=0;
while not eof(f) do
begin
i:=i+1;
read(f,t[i]);
write('_');
end;
n:=i;
tri(t,n);
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('ecriture du fichier en cours.');
reset(f);
for i:=1 to n do
write(f,t[i]);
close(f);
end;
begin
assign(f,'c:\4SI\XXX');
repeat
clrscr;
writeln(' ******POSTE RADIO******');
writeln;writeln;writeln;
writeln('Appuyer sur -1- pour capter des stations.');
writeln('Appuyer sur -2- pour verifier l''existance d''une station.');
writeln('Appuyer sur -3- pour supprimer une station.');
writeln('Appuyer sur -4- pour ajouter une ou plusieur stations.');
writeln('Appuyer sur -5- pour trier les stations par leurs codes.');
writeln('Appuyer sur -6- pour afficher des stations.');
writeln('Appuyer sur -7- pour quitter la poste radio.');
writeln;
repeat
write('Quel est votre choix ? ');readln(choix);
until choix in[1..7];
case choix of
1:creation(f);
2:verifier(f);
3: supprimer(f);
4:ajout(f);
5:croissant(f);
6:affiche(f);
end;
until choix=7;
clrscr;
write(' POSTE RADIO fermé.');
end.
program Radio;
uses wincrt;
type
enr=record
nom:string [10];
freq:integer;
long:integer;
code:integer;
end;
fiche = file of enr;
tab=array [1..100] of enr;
var
f:fiche;
station:enr;
re:char;
choix:integer;
procedure creation(var f:fiche);
var cond:boolean;
begin
clrscr;
writeln(' *** Création ***');
writeln;
writeln;
rewrite(f);
repeat
with station do
begin
write('Donner le nom du station : ');readln(nom);
repeat
write('Donner la fréquence du station : ');readln(freq);
cond:=((freq>530)and(freq<1600))or((freq>150)and(freq<280))or((freq>3200)and(freq<12000));
until cond;
write('Donner la longuer du station : ');readln(long);
write('Donner le code du station : ');readln(code);
end;
write(f,station);
repeat
write('Vouler vous continuer ? (O/N)');
readln(re);
re:=upcase(re);
until (re='O')or(re='N');
until re='N';
close(f);
end;
procedure affiche(var f:fiche);
begin
clrscr;
writeln(' *** Affichage ***');
writeln;
writeln;
reset(f);
while not eof(f) do
begin
read(f,station);
with station do
writeln('Nom: ',nom,' | Fréquence : ',freq,' | Longueur : ',long,' | Code : ',code);
end;
close(f);
readln;
end;
function position(var f:fiche;x:string):integer;
var test:boolean;
begin
reset(f);
test:=false;
while (not eof(f))and(not test)do
begin
read(f,station);
test:=((station.nom)=x);
end;
if test then
position:=filepos(f)-1
else
position:=-5;
end;
procedure verifier(var f:fiche);
var
x:string;
begin
clrscr;
writeln(' *** Verification ***');
writeln;
writeln;
write('Donner le nom du station a chercher : ');readln(x);
if position(f,x)<>-5 then
writeln('Chaine existante')
else
writeln('Chaine inexistante');
readln;
end;
procedure supprimer(var f:fiche);
var
x:string;
p:integer;
begin
clrscr;
writeln(' *** suppression ***');
writeln;
writeln;
write('Donner le nom du station a supprimerr : ');readln(x);
p:=position(f,x);
if (p<(filesize(f)+1))and(p>-1 )then
begin
if p<>filesize(f)-1 then
begin
p:=p+1;
seek(f,p);
while p<filesize(f) do
begin
seek(f,p);
read(f,station);
seek(f,p-1);
write(f,station);
p:=p+1
end;
end;
seek(f,filesize(f)-1);
end;
truncate(f);
end;
procedure ajout(var f:fiche);
var cond:boolean;
begin
clrscr;
writeln(' *** Ajout ***');
writeln;
writeln;
reset(f);
seek(f,filesize(f)-1);
repeat
with station do
begin
write('Donner le nom du station : ');readln(nom);
repeat
write('Donner la fréquence du station : ');readln(freq);
cond:=((freq>530)and(freq<1600))or((freq>150)and(freq<280))or((freq>3200)and(freq<12000));
until cond;
write('Donner la longuer du station : ');readln(long);
write('Donner le code du station : ');readln(code);
end;
write(f,station);
repeat
write('Vouler vous continuer ? (O/N)');
readln(re);
re:=upcase(re);
until (re='O')or(re='N');
until re='N';
close(f);
end;
procedure tri(var t:tab;n:integer);
var
i:integer;
test:boolean;
begin
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('tri des stations en cours ');
repeat
test:=true;
for i:=1 to n-1 do
if (t[i].code)>(t[i+1].code) then
begin
station:=t[i];
t[i]:=t[i+1];
t[i+1]:=station;
test:=false;
write('_');
end;
until test;
end;
procedure croissant(var f:fiche);
var
i,n:integer;
t:tab;
begin
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('lecture du fichier en cours.');
reset(f);
i:=0;
while not eof(f) do
begin
i:=i+1;
read(f,t[i]);
write('_');
end;
n:=i;
tri(t,n);
clrscr;
writeln(' *** Tri ***');
writeln;
writeln;
write('ecriture du fichier en cours.');
reset(f);
for i:=1 to n do
write(f,t[i]);
close(f);
end;
begin
assign(f,'c:\4SI\XXX');
repeat
clrscr;
writeln(' ******POSTE RADIO******');
writeln;writeln;writeln;
writeln('Appuyer sur -1- pour capter des stations.');
writeln('Appuyer sur -2- pour verifier l''existance d''une station.');
writeln('Appuyer sur -3- pour supprimer une station.');
writeln('Appuyer sur -4- pour ajouter une ou plusieur stations.');
writeln('Appuyer sur -5- pour trier les stations par leurs codes.');
writeln('Appuyer sur -6- pour afficher des stations.');
writeln('Appuyer sur -7- pour quitter la poste radio.');
writeln;
repeat
write('Quel est votre choix ? ');readln(choix);
until choix in[1..7];
case choix of
1:creation(f);
2:verifier(f);
3: supprimer(f);
4:ajout(f);
5:croissant(f);
6:affiche(f);
end;
until choix=7;
clrscr;
write(' POSTE RADIO fermé.');
end.
Exercice radio
Bravo, Rami !!! Très bien ! Continue comme ça et BAC fi jibik Une petite remarque concernant la saisie du code - plus juste vont être d'affecter par les valeurs "LW" ou "MW" ou "LW" en fonction de fréquence ( avec SI (frequence>=150) ET (frequence<=280) Alors
Code <--'LW' etc...)
Voici les liens vers la correction - analyse : http://www.usaupload.net/d/blhxkpf2bjw et pour un programme en Pascal : http://www.usaupload.net/d/voi5yz5o06j Bonne continuation, Rami et tous les élèves de 4SI
Voila un document interessant pour la gestion des erreurs : http://img42.xooimage.com/files/c/4/8/annexe-1-7b32b9.pdf
Code <--'LW' etc...)
Voici les liens vers la correction - analyse : http://www.usaupload.net/d/blhxkpf2bjw et pour un programme en Pascal : http://www.usaupload.net/d/voi5yz5o06j Bonne continuation, Rami et tous les élèves de 4SI
Voila un document interessant pour la gestion des erreurs : http://img42.xooimage.com/files/c/4/8/annexe-1-7b32b9.pdf
Hanafi- Messages : 106
Date d'inscription : 25/10/2008
Sujets similaires
» bac 2008/2009
» bac 2008 / 2009
» Exemple de DS3 - BAC BLANC 2008 (Sfax)
» Exercices HTML du 23/01/2009
» BAC BLANC 2009/2010
» bac 2008 / 2009
» Exemple de DS3 - BAC BLANC 2008 (Sfax)
» Exercices HTML du 23/01/2009
» BAC BLANC 2009/2010
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|