Vous êtes sur la page 1sur 7

Ministère

de l’Enseignement Supérieur et de la Recherche Scientifique


Université d’Alger 1 – Faculté Des Sciences – Département Mathématique et Informatique
Initiation à l’algorithmique – MI/S1
TP 07 : Traitement répétitif -3- (Do {Action} While (condition) )

Problématique: Lire un nombre entier et vérifiée si il est premier ou non tel que
un nombre est dit premier s’il n’est divisible que par lui-même et par le 1
Entrée : n,i,p,x des entiers: n pour lire le nombre entré par l’utilisateur, i pour le
compteur de la boucle, p pour une variable booléen, x pour la valeur absolue de
n
Traitement : On affiche « Veuillez entrer une valeur positif » ensuite on lit la
valeur n : si elle est négatif alors x reçoit –n sinon x reçoit n (pour la valeur
absolue) ensuite on vérifie si x égale à 2 alors on affiche direct le nombre est
premier sinon si x égale à 0 ou égale à 1 on affiche que le nombre n’est pas
premier ensuite on initialise la valeur booléen p par 0 et le i par 2 on répète la
vérification de la division de x par i si il est égale à zéro alors la valeur booléen
p devient vrais sinon on incrémente i tant que i est inférieur ou égale à la moitié
de x car les diviseurs ne peuvent pas dépasser la moitié du nombre et p doit être
faux pour la répétition
Affichage : si la valeur booléen est 1 (vrais) on affiche : Le nombre est premier
sinon on affiche qu’il n’est pas premier

Algorithme EXO1;
var n,i,p,x:entiers;
DEBUT
écrire("Veuillez entrer une valeur positif:");
lire(n);
si (n<0) alors
x <- -n;
sinon
x <- n;
si (n==2) alors écrire("Le nombre",n,"est premier");
sinon si (n==0 ou n==1) alors écrire("Le nombre",n,"n'est pas premier");
sinon
début
p <- 0; i <- 2;
Répeter
si(xmodi==0) alors p <- 1; sinon i <- i+1;
tantque ( i <= (x/2)) et (p==0) );
si (p==0) alors écrire("Le nombre",n,"est premier");
sinon écrire("Le nombre",n,"n'est pas premier");
FIN.

Problématique : Lire plusieurs nombres entiers tel que le dernier est égale à 0
ensuite on affiche : Le nombre total des entiers qui ont été lus, la somme de ces
nombres entiers, la plus grande valeur lue, le nombre de valeur multiple de 3
Entrée: i,m,s,max,n : i pour le compteur de la boucle, m pour pour calculer le
nombre de fois l’opérateur qui a été répété, s pour calculer la somme max pour
définir le max, n pour lire les valeurs entieres
Traitement : on initialise la valeur de i, m ,s par zéro
on affiche : « Veuillez entrer une valeur : » on lit la valeur
Ensuite on vérifie si il est divisible par 0 alors m reçoit m+1 et le max et s
reçoivent cette valeur, la valeur de i par 1
On répète cette opération et on incrémente la valeur de i, et si la valeur n est
supérieur ou égale au max alors max reçoit cette valeur, on répète tout sa tant
que n est différent de zéro
Affichage : on affiche le nombre des valeurs lus (i-1) la somme des valeurs s, le
maximum des nombres lus (max) et enfin les multiples de 3 (m-1)

Algorithme EXO2;
var i,m,s,max,n;
i <- 0;
m <- 0;
s <- 0;
écrire("Veuillez entrer une valeur:");
lire(n);
si(nmod3==0) alors m <- m+1; max <- n; s <- n; i <- 1;
Répeter
debut
écrire("Veuillez entrer une valeur:");
lire(n);
s <- s+n;
si(nmod3==0) alors m <- m+1; i<- i+1;
si (n>=max)
max <- n;
Jusqu'à (n==0);
fin ;
écrire("Le nombre des valeurs lus",(i-1),"La somme des valeurs:",s,"La plus grande valeur lue est:",max,"Le nombre
de valeurs multiples de 3 est:",(m-1));
FIN.

Problématique : Lire un nombre réel x et calculer son sinus à l’aide de la formule


# #' #) #* #+
sin(x) = - + - +
$! '! )! *! +!
Entrée : variable entières : i,j,k / réel : R,xrad,e , une fonction fact pour
calculer le factoriel, xrad pour la valeur entrée en rad, i,j pour la boucle, k pour
compter sin(-x),f pour le factoriel et e pour la précision epsilon
Traitement : Commençons par la fonction fact donc pour calculer la factoriel on
initialise f par 1 on met une boucle qui va de 2 à x (la variable qu’on souhaite
calculer son factoriel) et on calcule f*i
On lit xrad, si xrad < 0 k reçoit – 1 et xrad <- -xrad (on cas ou l’utilisteur tape –x
alors sin(-x)=-sin(x) ensuite on demande de taper la valeur epsilon , ensuite en
utilisant l’instruction répétitif while on calcule la puissance de x par i multiplier
par j qui change chaque fois de valeur -1 et 1 jusqu’à xradi/factoriel de i > e
R prend la valeur k*R (on cas ou x est négatif
Sortie : on affiche le résultat de calcule (R)

Algorithme EXO3;
var i=1,j=1,k=1:entiers;
R,xrad,e:réel;
fonction fact(E/x: entier);entier;
var i,f=1;
pour i <- 2 à x faire
f <- f*i;
fact <- f;
DEBUT
écrire("Ce programme permet de calculer sin(x), veuillez donner une valeur a x en rad");
lire(xrad);
si (xrad<0) alors debut
k <- -1;
xrad <- -xrad; fin;
écrire("Veuillez donner la precision epsilon, exemple: epsilon= 0,000000001");
lire(e);
répeter debut
R= j*(puiss(xrad,i))
j <- j*(-1)
jusqu'à (puiss(xrad,i)/fact(i)>e);
R=k*R;
écrire("Sin(",xrad,")=",R);
FIN.

Vous aimerez peut-être aussi