Vous êtes sur la page 1sur 8

Algorithmique

et programmation

Classe : 4ème Sciences de l’informatique

Devoir synthèse N° 3 (120 minutes)


Algo & prog

Exercice 1 10 min 1.5 Points


Soit l’algorithme de la fonction Génère suivante :

Fonction Genere (Nb : entier) : …………………..


Début
Mot""
Répéter
R Nb mod 3
Selon R
0 : Y  "Ma"
1 : Y  "Des"
2 : Y  "Son"
Fin selon
Mot  Y + Mot
Nb  Nb div 3
Jusqu’à(Nb=0)
Retourner (Mot)
Fin

Travail demandé :
1- Compléter le type de la fonction Genere
2- Donner le TDOL de la fonction

3- Quelle est la valeur retournée par la fonction Genere pour Nb= 41

1
Algo & prog

Exercice 2 20 min 3.5 Points


Afin de calculer le coût de la réalisation d’un lac artificiel, un paysagiste a besoin de déterminer
sa surface, qui est représentée par l’aire S délimité par les courbes de deux fonctions f et g qui
se croisent en deux points A et B, ayant respectivement les abscisses -1 et 2/3, comme le
montre la figure ci-dessous.

Les deux fonctions f et g sont définies par :


• f(x) = x2+2x+1
• g(x) = -5x2 + 5

Travail demandé :
Ecrire l’algorithme d’un module surface(N) permettant de déterminer et afficher une valeur
approchée de l’aire S délimitée par les deux courbes des deux fonctions f et g définies dans
l’intervalle [A,B] pour un nombre de subdivisions N ( N est déjà saisie au niveau du programme
appelant).

2
Algo & prog

Exercice 3 15 min 2 Points


Soit R un réel de l'intervalle 0, 1.
En binaire, R s'écrit sur n chiffres après la virgule comme suit : 0.C1C2C3C4C5…Cn-1Cn avec Ci est
un chiffre binaire (0 ou 1)
Pour déterminer les chiffres après la virgule de l'équivalent binaire du réel R, on suit le procédé
suivant :
1. Calculer C1 en multipliant R par 2
▪ Si 2 * R < 1, alors C1 est égal à zéro et on remplace R par 2 * R
▪ Si 2 * R ≥ 1, alors C1 est égal à 1 et on remplace R par 2 * R – 1
2. Répéter n fois l'étape 1 jusqu'à calculer Cn

Exemple 1 :
Pour R = 0.825 et n = 5, l'équivalent binaire de R est 0.C1C2C3C4C5 se calcule comme suit :
▪ 2 * 0.825 = 1.65 ≥ 1 d'où C1 = 1 et on remplace R par 0.65 = (2 * 0.825 – 1)
▪ 2 * 0.65 = 1.3 ≥ 1 d'où C2 = 1 et on remplace R par 0.3 = (2 * 0.65 – 1)
▪ 2 * 0.3 = 0.6 < 1 d'où C3 = 0 et on remplace R par 0.6 = (2 * 0.3)
▪ 2 * 0.6 = 1.2 ≥ 1 d'où C4 = 1 et on remplace R par 0.2 = (2 * 0.6 – 1)
▪ 2 * 0.2 = 0.4 < 1 d'où C5 = 0 et on remplace R par 0.4 = (2 * 0.2)
D'où l'équivalent binaire à 5 chiffres après la virgule de 0.825 est 0.11010

Exemple 2 :
Pour R = 0.625 et n = 4, l'équivalent binaire de R est 0.C1C2C3C4 se calcule comme suit :
▪ 2 * 0.625 = 1.25 ≥ 1 d'où C1 = 1 et on remplace R par 0.25 = (2 * 0.625 – 1)
▪ 2 * 0.25 = 0.5 < 1 d'où C2 = 0 et on remplace R par 0.5 = (2 * 0.25)
▪ 2 * 0.5 = 1.0 ≥ 1 d'où C3 = 1 et on remplace R par 0 = (2 * 0.5 – 1)
▪ 2 * 0 = 0 < 1 d'où C4 = 0 et on remplace R par 0 = (2 * 0)
D'où l'équivalent binaire à 4 chiffres après la virgule de 0.625 est 0.1010

Travail demandé
Écrire un algorithme d'une fonction de type chaîne, nommée RBin, qui dépend des deux
paramètres R, n et permet de retourner "0.C1C2C3C4C5…Cn-1Cn" : la représentation binaire, sur
n chiffres après la virgule, d'un réel R de l'intervalle 0, 1 en utilisant le procédé décrit ci-
dessus.

3
Algo & prog

Exercice 4 30 min 5 Points

𝒑
Etant donné n un entier strictement positif et 𝑪𝒏 définie
comme suit :

on se propose d’approcher la valeur de S définie par la formule suivante :

Travail demandé :
1- En utilisant la définition donnée ci-dessus, écrire un algorithme d’une fonction récursive
𝒑
nommée comb(n,p) permettant de calculer 𝑪𝒏
2- Utiliser la fonction comb(n,p) afin d’écrire l’algorithme d’un module calcul(eps) qui
permet de déterminer et afficher une valeur approchée de S à epsilon près (sachant que
epsilon est un réel déjà saisi au niveau du programme appelant).

4
Algo & prog

Exercice 5 30 min 5 Points


Dans une base B, un nombre est dit distinct s’il est composé par des chiffres distincts.
Exemple :
Dans la base B=2, il y a trois nombres distincts qui sont : 0, 1 et 10

1- Donner tous les nombres distincts dans la base 3.


2- On présente ci-dessous l’algorithme d’une procédure Nbre_Distincts qui permet
d’afficher tous les nombres distincts d’une base B (sachant que 3 ≤B≤16 et B est déjà
saisie dans le programme appelant ).
Procédure Nbre_Distincts (B : entier)
Début
Pour K de 0 à Max(B) Faire
R Convert(K,B)
Si Distinct(R) Alors
Ecrire (R)
Fin Si
Fin Pour
Fin

a) Développer un algorithme pour le module Convert


b) Développer un algorithme pour le module Distinct.

5
Algo & prog

Exercice 6 15 min 3 Points


On se propose de calculer le Plus Grand Commun Diviseur (PGCD) de N entiers positifs, déjà
stockés dans la 1ère ligne d’une matrice carrée M. Pour ce faire :
• Remplir les cases des (N-1) autres lignes, de sorte que la valeur d’une case M[L,C] est
égale au PGCD des contenus de M[L-1 ,C-1] et M[L-1,C].
• La case M[N-1, N-1] contiendra le PGCD des N entiers.

Travail demandé :
1- Ecrire l’algorithme d’un module récursif nommé PGCD(X,Y) qui calcule le PGCD de deux
entiers positifs X et Y en utilisant la méthode des différences.
2- Ecrire l’algorithme d’un module itératif nommé CALCUL(M,N) qui prend en paramètre
une matrice carrée M de type Mat et son ordre N pour calculer et retourner le PGCD de
N entiers positifs, déjà stockés dans sa 1ère ligne en utilisant l’algorithme PGCD
développé dans la question précédente et en se basant sur le procédé décrit ci-dessus.

6
7

Vous aimerez peut-être aussi