Vous êtes sur la page 1sur 4

Semestre 1 / Devoir surveillé N°1 Année académique 

: 2019-2020
Prof. : Y. SORO

ECUE : ALGORITHME
Parcours : TWIN 1 Durée : 2h00

Exercice 1 : (5 points) Int n° 2 Durée : 25 MN


Soit un module composé de 3 notes (comprises entre 0 et 20). Tout étudiant se trouvant dans au
moins l’un des trois cas suivants sera refusé :
 deux des trois notes sont strictement inférieures à 7,5
 une note est strictement inférieure à 6
 la moyenne des trois notes est strictement inférieure à 10
Ecrire une expression booléenne, dépendant des 3 notes, qui aura la valeur VRAI si et seulement si
l’étudiant est admis. Utiliser cette expression dans un algorithme qui saisit les trois notes puis
annonce le résultat sous la forme "admis" ou "refusé".

CORRIGE :

Expression indiquant que la moyenne des trois notes est strictement inférieure à 10
(N1 + N2 + N3) / 3 < 10
Expression indiquant qu’une note est strictement inférieure à 6
(N1 < 6) OU (N2 < 6) OU (N3 < 6)
Expression indiquant que deux des trois notes sont strictement inférieures à 7,5
(N1 < 7,5 et N2 < 7,5) OU (N2 < 7,5 et N3 < 7,5) OU (N3 < 7,5 et N1 < 7,5)
On a mis les parenthèses pour plus de lisibilité, mais elles ne sont pas nécessaires puisque l’opérateur
et est prioritaire sur l’opérateur ou.

Expression indiquant que l’étudiant est refusé


( (N1 + N2 + N3) / 3 < 10) OU
((N1 < 6) OU (N2 < 6) OU
(N3 < 6)
)
OU
( (N1 < 7,5 et N2 < 7,5) OU
(N2 < 7,5 et N3 < 7,5) OU
(N3 < 7,5 et N1 < 7,5)
)

Expression indiquant que l’étudiant est admis


NON (
((N1 + N2 + N3) / 3 < 10)
OU
((N1 < 6) OU (N2 < 6) OU (N3 < 6))
OU
((N1 < 7,5 et N2 < 7,5) OU (N2 < 7,5 et N3 < 7,5) OU (N3 < 7,5 et N1 < 7,5))
)

Qu’on peut encore écrire :


(
(NI + N2 + N3) / 3 ≥ 10)
ET
((N1 ≥ 6) ET (N2 ≥ 6) ET (N3 ≥ 6))
ET
( (N1 ≥ 7,5 OU N2 ≥ 7,5)
ET
Page 1/4
(N2 ≥ 7,5 OU N3 ≥ 7,5)
ET (N3 ≥ 7,5 OU N1 ≥ 7,5)
)
)

ALGORITHME Module
VARIABLES
N1, N2, N3 : REEL
estAdmis : BOULEEN
DEBUT
ECRIRE ("Entrer les trois notes.")
LIRE (N1, N2, N3)
estAdmis ← (N1 + N2 +N N3) / 3 >= 10 ET NON (N1<6 OU N2<6 OU N3<6) ET
( (N1 >= 7,5 OU N2 >= 7,5) ET (N2 >=7,5 OU N3 >=7,5) ET (N3 >= 7,5 OU N1 >= 7,5))
SI NON estAdmis ALORS
ECRIRE ("refusé")
SINON
ECRIRE ("admis"’)
FINSI
FIN

Exercice 2 : (5 points)


Ecrire un algorithme qui permet de multiplier deux entiers positifs ou nuls sans effectuer directement
la multiplication. Nous vous recommandons d’utiliser la méthode de la multiplication par l’addition.

CORRIGE :
ALGORITHME multiplication_par_addition
VARAIBLE
N1, N2, i, mult : ENTIER
DEBUT
ECRIRE ("Entrer les deux entiers à multiplier SVP.")
LIRE (N1, N2)
mult ← 0
/* la multiplication par addition*/
POUR i DE 1 N1 FAIRE
mult ← mult + N2
FINPOUR
/* l’affichage du résultat */
ECRIRE ("La multiplication de ", N1, " par ", N2, " donne : ", mult)
FIN
2

Page 2/4
Exercice 3 : (5 points)
Ecrire un Algorithme qui permet la saisie de plusieurs notes comprises entre 0 et 20, en contrôlant
leur validité. Après chaque saisie valide, l’Algorithme demande : Encore une note (o/n)? Si une note
n'est pas valide, le message suivant sera affiché : Erreur, la note doit être comprise entre 0 et 20.

Compléter l’algorithme suivant :

Algorithme SaisieControlee
Constantes
BORNE_INF = 0
BORNE_SUP = 20
Variables
note : réel /* note */
reponse : caractere /* réponse (o/n) */
Début
…. A compléter
FIN

CORRIGE :
ALGORITHME SaisieControlee
CONSTANTES
BORNE_INF = 0
BORNE_SUP = 20
VARIABLES
note : REEL /* note*/
reponse : CARACTERE /* réponse (o/n) */
DEBUT
REPETER
REPETER
ECRIRE("note : ")
LIRE(nb)
SI (note < BORNE_INF) OU (note > BORNE_SUP) ALORS
ECRIRE("Erreur, la note doit être comprise entre ",
BORNE_INF, " et ", BORNE_SUP)
JUSQU’A (note >= BORNE_INF) ET (note <= BORNE_SUP)
ECRIRE ("Encore une note (o/n)?")
LIRE (reponse)
JUSQU’A reponse <> 'o'
FIN

Page 3/4
Exercice 4 : (5 points)
Ecrire un algorithme permettant de saisir 20 nombres dans un tableau. Votre algorithme doit
permettre de copier tous les nombres pairs dans un autre tableau et faire de même pour les nombres
impairs. On considère que Zéro (0) est un nombre pair.

CORRIGE :
ALGORITHME Tableau_pair_impair
VARIABLE
Tab, Impair, Pair : TABLEAU [1..20] DE ENTIER
i, j, k : ENTIER
DEBUT
/* saisie du tableau Tab */
POUR i DE 1 A 10 FAIRE
ECRIRE ("Entrez le nombre entier numéro", i)
LIRE (Tab[i])
FINPOUR
j←0
k←0
POUR i DE 1 A 20 FAIRE
SI Tab[i] MOD 2 =0 ALORS
j ← j+1
Pair[j] ← Tab[i]
SINON
k ← k+1
Impair[k] ← Tab[i]
FINSI
FINPOUR
/*Affichage du tableau de départ*/
POUR i DE A 20 FAIRE
ECRIRE (Tab[i], " ")
FINPOUR
/* Affichage du tableau contenant les nombres pairs */
POUR i DE A j FAIRE
ECRIRE (Pair[i], " ")
FINPOUR
/* Affichage du tableau contenant les nombres impairs */
POUR i DE A k FAIRE
ECRIRE (Impair[i], " ")
FINPOUR
FIN

Page 4/4

Vous aimerez peut-être aussi