0% ont trouvé ce document utile (0 vote)
18 vues6 pages

Corrige

Ce document présente un devoir de synthèse en informatique pour une classe de 4ème, comprenant des exercices sur des fonctions algorithmiques. Les exercices portent sur des concepts tels que la division, le calcul du PPCM, et l'attribution de points basés sur des critères spécifiques pour des identifiants. Les étudiants doivent écrire des modules pour résoudre des problèmes pratiques liés à ces concepts.

Transféré par

Chokri Samali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
18 vues6 pages

Corrige

Ce document présente un devoir de synthèse en informatique pour une classe de 4ème, comprenant des exercices sur des fonctions algorithmiques. Les exercices portent sur des concepts tels que la division, le calcul du PPCM, et l'attribution de points basés sur des critères spécifiques pour des identifiants. Les étudiants doivent écrire des modules pour résoudre des problèmes pratiques liés à ces concepts.

Transféré par

Chokri Samali
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

LYCÉE PILOTE DU DEVOIR DE SYNTHESE ENSEIGNANT : SAMAALI C

KEF N°1
Épreuve : INFORMATIQUE Classe : 4ème Sc
Durée : 1h :30
Nom et Prénom :---------------------------------------------------- Classe :………………………………n° :……….

Exercice 1 : (3.5 points)


Soit la fonction suivante :
Fonction diviser_par_2(x :entier):entier
début
nb 0
Répéter
x  x div 2
nbnb+1
jusqu'à(x = 1)
retourner (nb)
Fin

Question 1 : Quel type de valeur la fonction diviser_par_2 accepte en argument ?


entier
Question 2 : Quel est le rôle de la variable nb ?
Compter le nombre de division par 2
Question 3 : Que produit l'exécution de la fonction diviser_par_2(8) ?
3
Question 3 : Que produit l'exécution de la fonction diviser_par_2(1) ?
Boucle infinie
Question 4 : Que produit l'exécution de la fonction diviser_par_2(-1) ?
Boucle infinie
Question 5 : Comment modifieriez-vous le code pour garantir qu'il s'arrête correctement si la
valeur initiale de x est égale à 1 ?
Remplacer repeter…jusqu’à par Tant que … Faire
……………………………………………………………………………………………………………………………………………………

Question 6: En supposant que l'on modifie la condition d'arrêt dans la boucle pour x <= 1 au
lieu de x == 1, quel changement cela entraînerait-il dans le comportement du programme ?
Une itération en plus
…………………………………………………………………………………………………………………………………………………
Question 7 : Si x = 16, combien d'itérations la fonction devrait-elle effectuer avant
d'atteindre 1 ?
4 fois
Exercice 2 : (8 points)
Un village organise un festival avec plusieurs activités :
 Une activité sportive qui se répète tous les S jours.
 Une activité culturelle qui se répète tous les C jours.
 Une activité musicale qui se répète tous les M jours.
Pour résoudre les questions suivantes, vous pouvez utiliser le PPCM (Plus Petit Commun
Multiple) des périodes indiquées.

Indication : Vous n'avez pas besoin d'implémenter la fonction PPCM dans votre solution. On
suppose qu'elle existe déjà et qu'elle peut être utilisée directement. Sa signature est la suivante :
PPCM(a, b : entier) : entier

Question 1 :
Ecrire un module qui permet de trouver après combien de jours les trois activités auront lieu
ensemble (jour commun) pour la première fois.

Exemple : si S=15, C=20 Et M=60, Les trois activités auront lieu ensemble pour la première
fois au 60ᵉ jour qui est le PPCM(15,20,60).

Fonction jour_commun(x,y,z :entier):entier


debut
retourner PPCM(PPCM(x,y),z)
Fin

Question 2 :
Ecrire un module qui permet de calculer combien de fois chaque activité (sportive, culturelle,
musicale) sera organisée avant ce jour commun.

 Conseil : Divisez le jour commun obtenu à la question précédente par l'intervalle de


répétition de chaque activité.
Exemple :
Si S=15, C=20 Et M=60
1. Activité sportive : 60/15=4 fois.
2. Activité culturelle : 60/20=3 fois.
3. Activité musicale : 60/60=1 fois.
procédure activites_avant_jour_commun(s,c,m :entier)
debut
jour jour_commun (s,c,m)
Ecrire("Activité sportive : ", jour div s," fois")
Ecrire("Activité Culturelle: ", jour div c," fois")
Ecrire("Activité Musicale : ", jour div m," fois")
Fin

Question 3 :
Pour des raisons logistiques, le village décide de regrouper deux activités spécifiques
lorsqu'elles tombent le même jour. Écrire un module qui permet de trouver les jours où ces deux
activités coïncident parmi les 100 jours à venir.

 Conseil : Calculez le PPCM des intervalles des deux activités. Les jours communs seront
les multiples de ce PPCM.
Exemple :
 Activité sportive et culturelle (S=15 et C=20).
le seul jour où les deux activités coïncident parmi les 100 jours à venir est le 60ᵉ jour.
Procédure coincide(a,b:entier)
Debut
p PPCM(a,b)
Pour i de 1 a 100 faire
Si i mod p =0 Alors
Ecrire(i)
Fin si
Fin pour
Fin

Question 4 :
Un villageois souhaite réserver 6 jours pour participer aux 6 premières activités organisées,
indépendamment de leur nature. Ecrire un module qui détermine quels sont ces 6 jours.

 Conseil : Sélectionnez les 6 premiers jours distincts où les différentes activités ont lieu en
fonction de leurs intervalles de répétition.

Procedure reservation(x,y,z :entier)


Debut
Nb 0
x1=x
y1=y
z1=z
Pour i de 1 à 6 faire
M min3(x,y,z)
Ecrire(M)
Si M =x1 Alors x1=x1+x fin si
Si M =y1 Alors y1=y1+y fin si
Si M =z1 Alors z1=z1+z fin si
Fin pour
Fin

Fonction min3(a,b,c :entier) :entier Fonction min2(a,b :entier) :entier


Debut Debut
Retourner(min2-min2(a,b),c) Si a>b Alors
Fin Retourner(b)
Sinon
Retourner(a)
Fin si
Fin
Problème : (8.5 points)
Une entreprise souhaite récompenser ses clients en attribuant des points bonus en fonction de
leur numéro d’identification (ID). Les points sont calculés selon des critères spécifiques :

1. Règles d’attribution des points :


o Si l’ID est un nombre premier (un nombre divisible uniquement par 1 et lui-
même), attribuer 200 points.
o Si l’ID est un nombre parfait (un nombre égal à la somme de ses diviseurs propres,
par exemple 28 = 1 + 2 + 4 + 7 + 14), attribuer 100 points.
o Si l’ID appartient à la suite de Fibonacci (une suite où chaque terme est la somme
des deux précédents, par exemple 0, 1, 1, 2, 3, 5, 8, ...), attribuer 50 points
supplémentaires.
2. Traitement des résultats :
o L’algorithme doit indiquer si l’ID est un nombre premier, parfait ou appartient à la
suite de Fibonacci, et afficher les résultats correspondants.
o Ensuite, il calcule le total des points attribués et les convertit en représentation
binaire.

Méthode de conversion en binaire :


Pour convertir un nombre en binaire :
1. Divisez successivement le nombre par 2 en notant le reste à chaque étape (0 ou 1).
2. Continuez jusqu’à ce que le quotient soit égal à 0.
3. Lisez les restes de bas en haut pour obtenir la représentation binaire.
Exemple de déroulement :
 ID saisi : 28
o Nombre premier : Non.
o Nombre parfait : Oui (+100 points).
o Appartient à Fibonacci : Non.
o Total des points : 100 points.
o Conversion en binaire :
 100÷2=50 (reste 0)
 50÷2=25 (reste 0)
 25÷2=12 (reste 1)
 12÷2=6 (reste 0)
 6÷2=3 (reste 0)
 3÷2=1 (reste 1)
 1÷2=0 (reste 1)
 En lisant les restes de bas en haut : 1100100.
o Résultat final : 100 points en décimal = 1100100 en binaire.

Travail demandé :
1) Ecrire un algorithme du programme principal, solution a ce problème en le décomposant en
modules
2) Ecrire un algorithme pour chaque module envisagé
Algorithme recompense
Debut
Lire (id)
Total 0
Si Premier(id) Alors
Ecrire(“Nombre Premier : Oui”)
Total  total + 200
Sinon
Ecrire(“ Nombre Premier : Non”)
Fin Si
Si Parfait(id) Alors
Ecrire(“Nombre Parfait : Oui”)
Total  total + 100
Sinon
Ecrire(“ Nombre Parfait : Non”)
Fin Si
Si Fibonacci(id) Alors
Ecrire(“Nombre Fibonacci : Oui”)
Total  total +50
Sinon
Ecrire(“ Nombre Fibonacci : Non”)
Fin Si
Ecrire(“Résultat final “, total, “=“, binaire(total))
Fin
Fonction Premier(x :entier) :booléen
Debut
Nb 0
Pour i de 1 a x Faire
Si x mod i=0 Alors
Nb Nb+1
Fin Si
Fin Pour
Retourner Nb=2
Fin

Fonction Parfait(x :entier) :booléen


Debut
Nb 0
Pour i de 1 a x-1 Faire
Si x mod i=0 Alors
Nb Nb+i
Fin Si
Fin Pour
Retourner Nb=x
Fin

Fonction Fibonacci(x :entier) :booléen


Debut
t=0
u00
u11
Tant que t< x Faire
t u0+u1
u0u1
u1 t
Fin Tant que
Retourner x=t
Fin

Fonction Binaire(x :entier) :Chaine


Debut
Ch=""
Tant que x>0 Faire
Ch  convch(x mod 2) +Ch
x  x div 2
Fin Pour
Retourner ch
Fin

Vous aimerez peut-être aussi