Université de BATNA 2 Faculté de MI Département SCMI 1ère Année Licence (L1) 2018/2019
Examen en Algorithmique 1 -Session normale-
(Durée : 1h 30min)
Remarque : un point pour la lisibilité et la clarté des réponses
Exercice 1 : (5 points 3+2)
1. Corriger le programme en C suivant :
#include<stdio.h>
main
{
int x ,z, i
scanf ( "%c", x) ;
z = x*x*x ;
if z < 100
x = 10 ;
else
x=0;
printf ("x=", x);
2. Donner les traces d’exécution pour x=2 et x=5
Exercice 2 : (5 points 2+3)
Soit l’algorithme suivant :
Algorithme exo2
Variable n, x , i : entier
Début
Lire(n), x ← 1
Pour i de 1 à 10 faire
x ← x*n
Fin pour
Ecrire(x)
Fin
1. Que fait cet algorithme ?
2. Réécrire l’algorithme en remplaçant la boucle pour par :
a. La boucle tant que
b. La boucle répéter
Exercice 3 : (5 points)
Ecrire un algorithme qui affiche le nombre d’occurrence (répétition) d’un entier x dans un tableau de 100
entiers.
Exercice 4 : (4 points)
Ecrire un algorithme qui lit au clavier une suite de nombres réels (correspondant à des notes). Les notes
sont supérieures ou égales à 0 et inférieures ou égales à 20. La lecture se termine par la valeur -1.
Puis l’algorithme :
1 Calcule et affiche la moyenne de ces valeurs.
2 Affiche la note la plus élevée et la note la moins élevée.
BON COURAGE
Université de BATNA 2 Faculté de MI Département SCMI 1ère Année Licence (L1) 2018/2019
Corrigé type du module Algorithmique 1
Un point pour la lisibilité et la clarté des réponses
Exercice 1 (5 points)
#include<stdio.h> Pour x=2 :
main() 0,5 x z sortie
{
2 8 x=10
int x ,z ; 0,5 10 1
scanf ("%d", &x) ; 0,5
z = x*x*x ;
if (z<100) 0,5 Pour x=5 :
x = 10 ; x z sortie
else 5 125 x=0
x=0; 0 1
printf ("x=%d", x); 0,5
} 0,5
Exercice 2 (5 points)
1) L’algorithme calcule 𝒏𝟏𝟎 2
2)
Algorithme exo2 Algorithme exo2
Variable n, x,i : entier Variable n, x,i : entier
Début Début
Lire(n), x←1, i←1 0,5 Lire(n), x←1, i←1 0,5
Tq (i<=10) faire 0,5 Répéter
x← x*n , i←i+1 0,5 x← x*n , i←i+1 0,5
Fin Tq Jusqu’à (i>10) 0,5
Ecrire(x) Ecrire(x)
Fin Fin
Université de BATNA 2 Faculté de MI Département SCMI 1ère Année Licence (L1) 2018/2019
Exercice 3 (5 points)
Algorithme exo3 Algorithme exo3
Variable 0,5 Variable 0,5
i,x,r : entier i , x , r, t : entier
t : tableau de 100 entier Début
Début ecrire(‘Taper une valeur entière’)
ecrire(‘Tapez les valeurs du tableau’) lire(x) 0,5
Pour i de 1 à 100 faire r ← 0 0,5
lire(t[i]) 0,5 ecrire(‘Tapez les valeurs de la suite’)
FinPour Pour i de 1 à 100 faire 0,5
ecrire(‘Taper une valeur entière’) lire(t) 0,5
lire(x) 0,5 Si ( x = t) alors 1
r ← 0 0,5 r←r+1 0,5
Pour i de 1 à 100 faire 0,5 Finsi
Si ( x = t[i]) alors 1 FinPour
r←r+1 0,5 ecrire( ‘Nombre d’occurrence de’, x , ‘est ’, r ) 1
Finsi Fin
FinPour
ecrire(’Nombre d’occurrence de ’, x , ‘est ’, r ) 1
Fin
Exercice 4 (4 points)
Algorithme Exo4
variable
note , notemin , notemax , som : réel
i : entier
Début
ecrire(‘introduire les notes dans l’intervalle [0 .. 20] et -1 quand vous voulez arrêter’)
lire(note), som 0, notemin 20, notemax 0, i 0 1
Tq (note ≠ -1) faire 0,5
Si ( ( note >= 0 ) et ( note <=20 ) alors
i i+1 0,25
som som + note 0,25
Si ( notemax < note) alors 0,25
notemax note 0,25
FSi
Si (notemin > note) alors 0,25
notemin note 0,25
FSi
Fsi
Lire (note) 0,25
FTq
Si ( i = 0) alors
ecrire(‘Erreur pas de note valide ’)
sinon
ecrire(‘La moyenne de’ , i , ‘notes est :’ , som /i) 0,25
ecrire(‘La note la plus élevée est :’ , notemax) 0,25
ecrire (‘La note la moins élevée est :’, notemin) 0,25
Fsi
Fin
Université de BATNA 2 Faculté de MI Département SCMI
Examen en Algorithmique 1 -Session normale- « Progression 2018/2019» Durée : 1h 30min
Nom : ……………………………………..Prénom : ……………………………………Note : /20
Exercice 1 : (5 points) (Question de cours)
1- Les trois parties d’un algorithme sont : …………………………………………………………………..
2- Si le nombre d’itération est connu on utilise la boucle : …………………………………………………
3- La boucle qui s’exécute au moins une fois est la boucle : …………………………………………...…..
Exercice 2 : (5 points 3+1+1) On donne le programme PASCAL suivant :
Program Exam ; 1) Donner les nouvelles valeurs prises par n1 et n2
var n1,n2,tmp : integer ; N1 125
begin
write(‘introduisez deux valeurs :’) ;
readln(n1, n2) ; N2 55
while (n2<>0) do
begin
tmp :=n1 ; 2) Donner le résultat final du programme :
n1 :=n2 ;
n2 :=tmp mod n2 ;
end ; 3) Que fait ce programme ?
if n1=0 then writeln(‘erreur de données’)
else writeln(‘résultat = ‘, n1) ;
end. …………………………………………………..
Exercice 3 : (6 points 4,5+1,5) : 1) Réécrire le programme correct correspondant au code suivant :
Program Ex 02 ;
var n,x,i,s : integer ;
write(introduisez deux nombres :) ;
readln(‘n,x’) ;
s :=1
for i :=1 to n do ;
s =s*x
writeln(‘résultat = ‘ s) ;
end ;
2) Si on donne : n=5, x=4 qu’affiche le programme comme résultat ? …………………………………
Exercice 4 : (4 points) :
Ecrire un programme Pascal qui lit au clavier une suite de nombres réels (correspondant à des notes)
supérieur ou égale à 0 et inférieur ou égale à 20, terminée par la valeur -1, et calculer la moyenne olympique
de ces valeurs, c-à-d la moyenne des notes sans prendre en compte ni la note la plus élevée ni la note la
moins élevée.
(NB : écrire le programme au verso). Bonne Chance
Université de BATNA 2 Faculté de MI Département SCMI
Examen en Algorithmique 1 -Session normale- « Progression 2018/2019» Durée : 1h 30min
Corrigé type
Exercice 1 : (5 points) (Question de cours)
4- Les trois parties d’un algorithme sont : En-tête, Déclaration, Traitement
5- Si le nombre d’itération est connu on utilise la boucle : POUR (for)
6- La boucle qui s’exécute au moins une fois est la boucle : REPETER (repeat)
Exercice 2 : (5 points 3+1+1) On donne le programme PASCAL suivant :
Program Exam ; 4) Donner les nouvelles valeurs prises par n1 et n2
var n1,n2,tmp : integer ; N1 125 55 15 10 5
begin
write(‘introduisez deux valeurs :’) ;
readln(n1, n2) ; N2 55 15 10 5 0
while (n2<>0) do
begin
tmp :=n1 ;
5) Donner le résultat final du programme :
n1 :=n2 ;
n2 :=tmp mod n2 ; 5
end ;
if n1=0 then writeln(‘erreur de données’) 6) Que fait ce programme ?
else writeln(‘résultat = ‘, n1) ;
PGCD(n1,n2)
end.
Exercice 3 : (6 points 4,5+1,5) : 1) Réécrire le programme correct correspondant au code suivant :
Program Ex 02 ; Program Ex_02 ;
var n,x,i,s : integer ; var n,x,i,s : integer ;
write(introduisez deux nombres :) ; begin
readln(‘n,x’) ; write(‘introduisez deux nombres :’) ;
s :=1 readln(n,x) ;
for i :=1 to n do ; s :=1 ;
s =s*x for i :=1 to n do
writeln(‘résultat = ‘ s) ; s =s*x ;
end ; writeln(‘résultat = ‘ , s) ;
end .
2) Si on donne : n=5, x=4 le programme affiche comme résultat : 1024
Exercice 4 : (4 points) :
Program Exo4 ; Repeat If (n<>-1) then
Var write(‘Donner une note’) ; Begin
n,min,max,som :real ; readln(n) ; If n<min then min :=n ;
i :integer ; while(n<0)or(n>20) and (n<>-1) do If n>max then max :=n ;
begin begin i :=i+1 ;
i :=0 ; min :=21 ; writeln(‘une note superieur ou som :=som+n ;
max :=0 ; som :=0 ; egale a 0 et inferieur ou egale a Until (n=-1) ;
20’) ; Writeln(‘la moyenne olympique
Readln(n) ; =’, (som-max-min)/(i-2)) ;
End ; End.