Sujet 2014 principale Algorithmique & Programmation :
Page 1 sur 1
Sujet 2014 principale Algorithmique & Programmation :
Exercice 1 :
1- Après l’exécution du programme Jeux ci-dessus pour N=1, le message affiché sera :
F «Balle sous gobelet 1» V «Balle sous gobelet 2» F «Balle sous gobelet 3»
2- Soit f un fichier de booléens :
a- Pour remplir un champ de la variable g3, on peut utiliser l’instruction :
F Lire (g3.balle) V Lire (g3.couleur) V Lire (f,g3.balle)
b- Pour afficher le contenu de la variable g1, on peut utiliser l’instruction :
F Ecrire (g1) V Ecrire (g1.balle,g1.couleur) F Ecrire (f,g1.balle)
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Exercice 2 :
0) DEF FN suite (Un : entier) : entier
1) Si Un = 2 alors suite ← 0
Sinon si Un mod 2 = 0 alors suite ← 1 + suite (Un div 2)
Sinon suite ← 1 + suite (3*Un+1)
Fin si
2) Fin suite
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Exercice 3 :
Algorithme de la fonction PGCDn :
0) DEF FN PGCDn (m : mat ; n : entier) : entier
1) Pour li de 2 à n faire
Pour co de 1 à n – i + 1 faire
M[li,co] ← FN PGCD (m[li-1,co],m[li-1,co+1])
Fin pour
Fin pour
2) PGCDn ← m[n,1]
3) Fin PGCDn
Algorithme de la fonction PGCD :
0) DEF FN PGCD (a,b : entier) : entier
1) Tantque a <> b faire
Si a>b alors a← a – b
Sinon b ← b – a
Fin si
Fin tantque
2) PGCD ← a
[*]3) Fin PGCD
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Dernière édition par haiethem le Sam 14 Juin - 0:27, édité 2 fois
Re: Sujet 2014 principale Algorithmique & Programmation :
Salut,
F V F .. pour ex 1 quest1 .. nn ?
F V F .. pour ex 1 quest1 .. nn ?
Invité- Invité
Re: Sujet 2014 principale Algorithmique & Programmation :
La procedure jeu2 est sans effet ici
donc g2.balle devient vrai
et g1.balle devient faux
donc g2.balle devient vrai
et g1.balle devient faux
Re: Sujet 2014 principale Algorithmique & Programmation :
Salem,
oui le code est :
pour i de 1 à n faire
proc jeu1(g1,g2);
proc jeu1(g3,g1);
finpour
l'msg qui sera affiché est
ecrire (" balle sous gobelet ",n mod 3 + 1 ); je ne sais pas si ça est vrai ou pas .. mais cest ce que j'ai compris ...
oui le code est :
pour i de 1 à n faire
proc jeu1(g1,g2);
proc jeu1(g3,g1);
finpour
l'msg qui sera affiché est
ecrire (" balle sous gobelet ",n mod 3 + 1 ); je ne sais pas si ça est vrai ou pas .. mais cest ce que j'ai compris ...
Invité- Invité
Re: Sujet 2014 principale Algorithmique & Programmation :
Exercice 4 :
Résultat = PROC stocker (Res,Mol,Ato)
Mol = associer (Mol,"Molecules.txt")
Res = associer (Res,"Resultats.dat")
Ato = PROC remplir (Ato,N)
N = PROC saisir (N)
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC saisir (var n : entier)
Résultat = [ ] Répéter
Lire (N)
Jusqu'à n ≤ 50
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC remplir (var ato : f_ato ; n : entier)
Résultat = ato
Ato =[associer(ato,"atomes.dat",recréer(ato)]pour i de 1 à n faire
Répéter
Lire (ea.sy,ea.ma)
Jusqu'à FN verif (ea.sy) et (ea.ma>0)
Ecrire (ato,ea)
Fin pour
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN verif (ch : chaîne de caractères) : booléen
Résultat = [ ] si long (ch) = 1 alors verif ← ch[1]dans["A".."Z"]
Sinon si long (ch) = 2 alors
verif ← (ch[1]dans["A".."Z"]) et(ch[2]dans["a".."z"])
sinon verif ← faux
fin si
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC stocker (var Res : f_res; var Mol : texte; var Ato : f_ato)
Résultat = Res
Res =[ouvrir(mol),ouvrir(ato,recréer(res)] tantque non fin_fichier (mol) faire
Lire_nl(mol,ch)
Er.nom ← sous_chaîne (ch,1,pos("*",ch) – 1)
Efface (ch,1,pos("*",ch))
Ch ← FN init (ch)
Er.ma_mo ← FN calcul (ch)
Ecrire (res,er)
Fin tantque
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN calcul (ch : chaîne de caractères) : réel
Résultat = calcul ← m
M = [m←0] Répéter
No ← FN atom(ch)
Efface (ch,1,long(no))
Nb ← FN nombre(ch))
Efface (ch,1,long(nb))
Valeur (nb,nbr,e)
M ← m + nbr * FN A(no)
Jusqu'à ch =""
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN A (no : chaîne de caractères) : réel
Résultat = A ← ea.ma
Ea.ma =[ouvrir(ato)] répéter
Lire(ato,ea)
jusqu'à fin_fichier (ato) ou (ea.sy≠no)
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN init (ch : chaîne de caractères) : chaîne de caractères
Résultat = init ← ch
Ch = [ ] pour i de 1 à long(ch) – 1 faire
Si ch[i] dans ["a".."z"] et ch[i+1] dans["A".."Z"] alors insère ("1",ch,i+1)
Fin si
Fin pour
Si majus(ch[long(ch)]) dans["A".."Z"] alors insère("1",ch,long(ch)+1)
Fin si
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN atom (ch : chaîne de caractères) : chaîne de caractères
Résultat = atom ← sous_chaîne (ch,1,p – 1 )
P=[p←0] répéter
Inc(p)
Jusqu’à ch[p] dans ["0".. "9"]
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN nombre (ch : chaîne de caractères) : chaîne de caractères
Résultat = nombre ← sous_chaîne (ch,1,k – 1 )
K=[k←0] répéter
Inc(k)
Jusqu’à majus(ch[k]) dans ["A".. "Z"]
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Résultat = PROC stocker (Res,Mol,Ato)
Mol = associer (Mol,"Molecules.txt")
Res = associer (Res,"Resultats.dat")
Ato = PROC remplir (Ato,N)
N = PROC saisir (N)
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Type |
E_ato = enregistrement Sy : chaîne de 2 caractères Ma : réel Fin E_res = enregistrement Nom : chaîne de caractères Ma_mo : réel Fin F_ato = fichier de e_ato F_res = fichier de e_res |
Objet | Type / Nature | Rôle |
Stocker Res Mol Ato Remplir N Ea Er | Procédure F_res Texte F_ato Procédure Entier E_ato E_res | Stocker dans le fichier résultat "Resultats.dat" "Molecules.txt" "Atomes.dat" Remplir "Atomes.dat" par N Atomes Nombre d'atomes dans "Atomes.dat" Enregistrement atome Enregistrement résultat |
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC saisir (var n : entier)
Objet | Type / Nature | Rôle |
Lire (N)
Jusqu'à n ≤ 50
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC remplir (var ato : f_ato ; n : entier)
Résultat = ato
Ato =[associer(ato,"atomes.dat",recréer(ato)]pour i de 1 à n faire
Répéter
Lire (ea.sy,ea.ma)
Jusqu'à FN verif (ea.sy) et (ea.ma>0)
Objet | Type / Nature | Rôle |
I Verif | Entier Fonction | Compteur Vérifier le symbole |
Fin pour
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN verif (ch : chaîne de caractères) : booléen
Résultat = [ ] si long (ch) = 1 alors verif ← ch[1]dans["A".."Z"]
Sinon si long (ch) = 2 alors
verif ← (ch[1]dans["A".."Z"]) et(ch[2]dans["a".."z"])
Objet | Type / Nature | Rôle |
fin si
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF PROC stocker (var Res : f_res; var Mol : texte; var Ato : f_ato)
Résultat = Res
Res =[ouvrir(mol),ouvrir(ato,recréer(res)] tantque non fin_fichier (mol) faire
Lire_nl(mol,ch)
Er.nom ← sous_chaîne (ch,1,pos("*",ch) – 1)
Efface (ch,1,pos("*",ch))
Ch ← FN init (ch)
Er.ma_mo ← FN calcul (ch)
Objet | Type / Nature | Rôle |
Ch Init Calcul | Chaîne de caractères Fonction Fonction | Molécule Insérer des "1" dans la formule Calculer la masse molaire |
Fin tantque
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN calcul (ch : chaîne de caractères) : réel
Résultat = calcul ← m
M = [m←0] Répéter
No ← FN atom(ch)
Objet | Type / Nature | Rôle |
M I No Nb E A | Réel Entier Chaîne de caractères Entier Entier Fonction | Masse molaire Compteur Nom de la molécule Nombre d'apparitions Erreur Masse atomique |
Nb ← FN nombre(ch))
Efface (ch,1,long(nb))
Valeur (nb,nbr,e)
M ← m + nbr * FN A(no)
Jusqu'à ch =""
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN A (no : chaîne de caractères) : réel
Résultat = A ← ea.ma
Ea.ma =[ouvrir(ato)] répéter
Lire(ato,ea)
jusqu'à fin_fichier (ato) ou (ea.sy≠no)
Objet | Type / Nature | Rôle |
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN init (ch : chaîne de caractères) : chaîne de caractères
Résultat = init ← ch
Ch = [ ] pour i de 1 à long(ch) – 1 faire
Si ch[i] dans ["a".."z"] et ch[i+1] dans["A".."Z"] alors insère ("1",ch,i+1)
Fin si
Fin pour
Si majus(ch[long(ch)]) dans["A".."Z"] alors insère("1",ch,long(ch)+1)
Objet | Type / Nature | Rôle |
I | Entier | compteur |
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN atom (ch : chaîne de caractères) : chaîne de caractères
Résultat = atom ← sous_chaîne (ch,1,p – 1 )
P=[p←0] répéter
Inc(p)
Jusqu’à ch[p] dans ["0".. "9"]
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
DEF FN nombre (ch : chaîne de caractères) : chaîne de caractères
Résultat = nombre ← sous_chaîne (ch,1,k – 1 )
K=[k←0] répéter
Inc(k)
Jusqu’à majus(ch[k]) dans ["A".. "Z"]
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Re: Sujet 2014 principale Algorithmique & Programmation :
Voici un fichier contenant les masses molaires relatives aux principaux éléments chimiques.
Le format est un fichier d'enregistrement :
type
E_ato = record
Sy : string[ 2];
Ma : real;
end;
F_ato = file of e_ato;
Le format est un fichier d'enregistrement :
type
E_ato = record
Sy : string[ 2];
Ma : real;
end;
F_ato = file of e_ato;
- Fichiers joints
Re: Sujet 2014 principale Algorithmique & Programmation :
Barème détaillé :
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Exercice 1 :
0.25 * 9 = 2.25
Exercice 2 :
en tête : 0.5
condition d'arrêt : 0.5
affectation du module : 0.25
condition de continuité : 0.25
cas pair : 0.5
cas impair : 0.5
appels récursifs : 0.25
Exercice 3 :
en tête : 0.5
boucle des lignes (2 à n) : 0.5
boucle des colonnes (1 à n-i+1) : 0.5
affectation de la valeur de M[li,co] : 0.75
affectation du module : 0.5
Fonction PGCD de deux entiers : 1.25
Problème :
modularité : 0.75
cohérence (appels + conformité des paramètres) : 0.5 + 0.5
T.D.N.T. : 0.5
T.D.O.G. : 0.5
T.D.O.L. : 0.75
association + création + ouverture + fermeture : 0.5 * 4
saisie et contrôle de N : 0.5
remplissage de fichier "atomes.dat" :
- Parcours : 0.25
- Saisie et contrôle du symbole : 0.25 + 0.5
- Saisie de la masse atomique : 0.25
- Ecriture dans le fichier : 0.25
stockage dans le fichier "resultats.dat" :
- Parcours du fichier "molecules.txt" : 0.25
- Lecture d'une ligne : 0.25
- Extraction du nom de la molécule : 0.25
- Extraction de la formule de la molécule : 0.25
- Détermination de la masse molaire moléculaire :
* Parcours de la formule de la molécule : 0.5
* Détermination du nom de l'atome : 0.75
* Détermination du nombre d'occurrence d'un atome : 0.75
* Recherche de la masse atomique d'un atome : 1 (0.25 * 4)
* Calcul de la masse molaire moléculaire : 0.25
- Ecriture dans le fichier "resultats.dat" : 0.25
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
Exercice 1 :
0.25 * 9 = 2.25
Exercice 2 :
en tête : 0.5
condition d'arrêt : 0.5
affectation du module : 0.25
condition de continuité : 0.25
cas pair : 0.5
cas impair : 0.5
appels récursifs : 0.25
Exercice 3 :
en tête : 0.5
boucle des lignes (2 à n) : 0.5
boucle des colonnes (1 à n-i+1) : 0.5
affectation de la valeur de M[li,co] : 0.75
affectation du module : 0.5
Fonction PGCD de deux entiers : 1.25
Problème :
modularité : 0.75
cohérence (appels + conformité des paramètres) : 0.5 + 0.5
T.D.N.T. : 0.5
T.D.O.G. : 0.5
T.D.O.L. : 0.75
association + création + ouverture + fermeture : 0.5 * 4
saisie et contrôle de N : 0.5
remplissage de fichier "atomes.dat" :
- Parcours : 0.25
- Saisie et contrôle du symbole : 0.25 + 0.5
- Saisie de la masse atomique : 0.25
- Ecriture dans le fichier : 0.25
stockage dans le fichier "resultats.dat" :
- Parcours du fichier "molecules.txt" : 0.25
- Lecture d'une ligne : 0.25
- Extraction du nom de la molécule : 0.25
- Extraction de la formule de la molécule : 0.25
- Détermination de la masse molaire moléculaire :
* Parcours de la formule de la molécule : 0.5
* Détermination du nom de l'atome : 0.75
* Détermination du nombre d'occurrence d'un atome : 0.75
* Recherche de la masse atomique d'un atome : 1 (0.25 * 4)
* Calcul de la masse molaire moléculaire : 0.25
- Ecriture dans le fichier "resultats.dat" : 0.25
Sujets similaires
» Sujet Algorithmique 2013
» Bac TP algorihmique & programmation 2012
» Bac 2014 Principale
» Bac pratique 2014
» Bac pratique 22-05-2014 10h
» Bac TP algorihmique & programmation 2012
» Bac 2014 Principale
» Bac pratique 2014
» Bac pratique 22-05-2014 10h
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|