Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 10h30
DUREE : 1 h – COEFFICIENT : 0.5
Sujet : Programmation Pascal
Important : 1) Une solution modulaire au problème est exigée.
2) Enregistrez au fur et à mesure votre programme dans le dossier Bac2009 se trouvant sur la racine C:\ en lui
donnant comme nom votre numéro d’inscription.
On se propose d’écrire un programme Pascal permettant de déterminer et d'afficher un code à
partir d'un entier N strictement positif et supérieur à 100, selon le principe suivant :
1. Calculer la somme S des chiffres qui composent le nombre N
2. Recommencer le calcul de la somme des chiffres de la somme obtenue S tant que celle-ci
n'est pas comprise entre 1 et 9.
3. Le code sera le nombre formé par N auquel on place à sa gauche la dernière somme
obtenue.
Exemple:
Pour N= 9867, le programme affichera : le code est : 39867
En effet:
Pour N= 9867 :
La 1ère
somme S vaut 30 (car 9+8+6+7= 30)
La 2ème
somme S vaut 3 (car 3+0 = 3)
Etant donné que la dernière somme S, qui vaut 3, est comprise entre 1 et 9, le code sera
39867
Grille d’évaluation : Questions Nombre de points
Décomposition en modules utiles à la solution (déclaration+appel) 5
Si exécution et tests réussis Alors
Sinon
Compilation
Structures de données adéquates au problème posé
Traitements avec structures de contrôle adéquates
15
4
4
7
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 10h30
DUREE : 1 h – COEFFICIENT : 0.5
Program P22Mai2008_10h30;
Uses WinCrt;
Var
N:LongInt;
{**= Procedure De Saisie de N ==**}
Procedure SaisieDe_N(Var N : LongInt);
Begin
Repeat
Write('Saisir N: ');
Readln(N);
Until (N>100);
End;
{**=FN Qui Calcule la somme des chiffres d'un nombre=**}
Function SommeChiffres(NBR:LongInt):Integer;
Var
Ch:String;
S,i,e,X:Integer;
Begin
S:=0;
STR(NBR,CH);
For i:=1 To Length(Ch) Do
Begin
Val(Ch[i],X,e);
S:=S+X;
End;
SommeChiffres:=S;
End;
{******=== Fonction Code ==*******}
Function Code(N:LongInt):LongInt;
Var
Res,Aux:LongInt;
e:Integer;
Ch, Gauche:String;
Begin
Aux:=N;
Repeat
Aux:= SommeChiffres(Aux);
Until Aux<=10;
Str(N,Ch);
Str(Aux,Gauche);
Val(Gauche+Ch, Res, e);
Code:=Res;
End;
Begin{******=== Programme Principal ===*******}
SaisieDe_N(N);
Write('Le Code = ',Code(N));
End.
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 9h
DUREE : 1 h – COEFFICIENT : 0.5
Sujet : Programmation Pascal
Important : 1) Une solution modulaire au problème est exigée.
2) Enregistrez au fur et à mesure votre programme dans le dossier Bac2009 se trouvant sur la racine C:\ en lui
donnant comme nom votre numéro d’inscription.
On se propose d'écrire un programme Pascal permettant de déterminer et d’afficher si un entier
N saisi (N > 9) est divisible par 9 ou non, en appliquant la méthode suivante:
1. On fait la somme du 1er et du 2
ème chiffre de N
2. Si la somme obtenue est supérieure ou égale à 9, on lui soustrait 9
3. On ajoute ensuite à cette somme et on lui applique la règle 2 (on lui retranche 9 si elle est
supérieure à 9) et ainsi de suite jusqu'au dernier chiffre de N.
4. Si le résultat final est nul, le nombre N est alors divisible par 9.
Exemple:
Pour N = 65493 le programme effectuera les opérations suivantes :
6 + 5 = 11 (11 est supérieur ou égal à 9, on lui soustrait 9, on obtient 2)
2 + 4 = 6 (6 est strictement inférieur à 9)
6 + 9 = 15 (15 est supérieur ou égal à 9, on lui soustrait 9, on obtient 6)
6 + 3 = 9 (9 est supérieur ou égal à 9, on lui so11strait 9, on obtient 0)
Le résultat est nul et tous les chiffres de N ont été traités, donc le nombre 65493 est
divisible par 9. En effet, 65493 = 9 x 7277
Grille d’évaluation : Questions Nombre de points
Décomposition en modules utiles à la solution (déclaration+appel) 5
Si exécution et tests réussis Alors
Sinon
Compilation
Structures de données adéquates au problème posé
Traitements avec structures de contrôle adéquates
15
4
4
7
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 9h
DUREE : 1 h – COEFFICIENT : 0.5
Program P22Mai2008_9h;
Uses WinCrt;
Type
Vecteur=Array[1..10] of Integer;
{Selon l'énoncé et l'exemple: N est de type LongInt
--> au max contient 10 chiffres (2 Milliards w chwaya sarf)
}
Var
T: Vecteur;
TailleT:Integer;
N:LongInt;
{******=== Procedure De Saisie de N ===*******}
Procedure SaisieDe_N(Var N : LongInt);
Begin
Repeat
Write('Saisir N: ');
Readln(N);
Until (N>9);
End;
{**== Procedure Qui Met tous les chiffre de N dans T ==**}
Procedure Chiffres_De_N_Dans_T(Var T:Vecteur;
Var TailleT: Integer; N:LongInt);
Begin
TailleT:=0;
Repeat
TailleT:=TailleT+1;
T[TailleT]:=N MOD 10;
N:=N DIV 10;
Until (N=0);
End;
{******=== Fonction Verif ==*******}
Function Verif(T:Vecteur;TailleT: Integer):Boolean;
Var
i,S:Integer;
Begin
S:=T[TailleT];
For i:=TailleT-1 DownTo 1 Do
Begin
S:=S+T[i];
IF S>=9 THEN S:=S-9;
End;
Verif:=(S=0);
End;
Begin {******=== Programme Principal ===*******}
SaisieDe_N(N);
Chiffres_De_N_Dans_T(T, TailleT,N);
IF Verif(T, TailleT) THEN
Write('Le Nombre [',N, '] est Divisible par 9')
ELSE Write('Le Nombre [',N, '] n''est pas Divisible par 9');
End.
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 9h
DUREE : 1 h – COEFFICIENT : 0.5
Sujet : Programmation Pascal
Important : 1) Une solution modulaire au problème est exigée.
2) Enregistrez au fur et à mesure votre programme dans le dossier Bac2009 se trouvant sur la racine C:\ en lui
donnant comme nom votre numéro d’inscription.
Ecrire un programme Pascal qui permet de :
Remplir un tableau T, d'une façon automatique et aléatoire, par n entiers strictement
positifs, inférieurs ou égaux à 1000, avec (5≤ n ≤ 30).
Vérifier pour l'élément de T d'indice p donné, s'il est égal à la somme d'un certain nombre
d'éléments consécutifs de T qui le précèdent immédiatement. Dans ce cas, le programme
affiche ces éléments, sinon il affiche "Condition non vérifiée".
Exemple1:
Pour le tableau T suivant, avec n=7 et p=5 :
T 3 2 4 6 12 18 20
1 2 3 4 5 6 7
Le programme affiche : 6, 4, 2
Exemple2:
Pour le tableau T suivant, avec n=7 et p=3 :
T 3 2 4 6 12 18 20
1 2 3 4 5 6 7
Le programme affiche "Condition non vérifiée".
Grille d’évaluation : Questions Nombre de points
Décomposition en modules utiles à la solution (déclaration+appel) 5
Si exécution et tests réussis Alors
Sinon
Compilation
Structures de données adéquates au problème posé
Traitements avec structures de contrôle adéquates
15
4
4
7
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
REPUBLIQUE TUNISIENNE
MINISTERE DE L’EDUCATION
ET DE LA FORMATION
***
Sections: Math. + Tech. + Sc.Exp.
EPREUVE PRATIQUE D’INFORMATIQUE
EXAMEN DU BACCALAUREAT
SESSION 2008
DATE : 22 mai 2008 14h
DUREE : 1 h – COEFFICIENT : 0.5
Program P22Mai2008_14h;
Uses WinCrt;
Type
Vecteur=Array[1..30] of integer;
Var
T:Vecteur;
N, P:Integer;
{******=== Procedure De Saisie de N ===*******}
Procedure SaisieDe_N(Var N : Integer);
Begin
Repeat
Write('Saisir N: ');
Readln(N);
Until (N>=5) And (N<=30);
End;
{******=== Procedure De Saisie de P ===*******}
Procedure SaisieDe_P(Var P : Integer; N:Integer);
Begin
Repeat
Write('Saisir P: ');
Readln(P);
Until (P>=2) And (P<=N);
End;
{******=== Procedure De Remplissage de T ===*******}
Procedure Remplissage_De_T(Var T:Vecteur; N: Integer);
Var
i:Integer;
Begin
Randomize; {initialise le générateur aléatoire}
For i:=1 To N Do
Begin
T[i]:=Random(1000)+1;
{Random(1000) génère un nombre aléatoire entre 0 et 999}
End;
End;
Année Scolaire : 2011-2012 4 SC
Lycée Attarine Ariana 2012
{******=== Procedure Affichage de la liste ===*******}
Procedure AfficherListe(T:Vecteur; N,P: Integer);
Var
S, i:Integer;
Begin
S:=0;
i:=P;
Repeat
i:=i-1;
S:=S+T[i];
Write(T[i],', ');
Until S=T[P];
End;
{**=FN Qui Calcule la somme =**}
Function Somme(T:Vecteur; N,P:Integer):Integer;
Var
S,i:Integer;
Begin
S:=0;
i:=P;
Repeat
i:=i-1;
S:=S+T[i];
Until (S>=T[P]) OR (i=1);
Somme:=S;
End;
{******=== Programme Principal ===*******}
Begin
SaisieDe_N(N);
Remplissage_De_T(T, N);
SaisieDe_P(P,N);
IF Somme(T,N,P)=T[P] THEN AfficherListe(T,N,P)
ELSE Write('Condition non vérifiée');
End.
Top Related