import java.io.*; 
class chap4_fact {* 
public static void main(String[] args) { 
int cpt,resultat=1; 
String txt=""; 
BufferedReader saisie; 
 
saisie=new BufferedReader(new InputStreamReader(System.in)); 
try { 
System.out.println("Table ?"); 
txt=saisie.readLine(); 
} 
catch(Exception excp) { 
System.out.println("Erreur"); 
} 
cpt=Integer.parseInt(txt); 
resultat=cpt; 
 
while(cpt>2) { 
cpt-; 
resultat=resultat*cpt; 
} 
System.out.println(resultat); 
} 
}
c. x à la puissance y 
Il s’agit cette fois d’élever une valeur à une puissance quelconque. Pour rappel, x n  est égal à x*x*x*x… n fois. C’est 
donc  très  simple  :  une  boucle  Tant  Que  qui  va  compter  de  1  à  n,  dans  laquelle  le  résultat  de  la  multiplication 
précédente va être multiplié par x. 
PROGRAMME puissance 
VAR 
x,n,cpt,resultat:entiers 
DEBUT 
Afficher "x,n ?" 
Saisir x,n 
cpt←1 
resultat←1 
Tant que cpt<=n Faire 
resultat←resultat*x 
cpt←cpt+1 
FinTantQue 
Afficher resultat 
FIN
Cet algorithme fonctionne bien, mais ne gère pas tous les cas. En fait, il fonctionne uniquement si la puissance est 
supérieure ou égale à zéro. Si n vaut zéro, le programme ne rentre même pas dans la boucle et le résultat vaut 1. Si 
n vaut un, resultat vaut x. Et pour les puissances négatives ? x ­n  est égal à 1/x n .  
Il s’agit donc de déterminer le signe de la puissance et de faire une division. Il faut aussi récupérer la valeur absolue 
de la puissance, ce que vous savez déjà faire. Dans l’algorithme suivant, un drapeau « signe » est utilisé pour savoir 
si n est négatif ou non, afin d’effectuer une division à la fin. 
Variables x,n,signe,cpt,resultat en Numérique 
Début 
Signe←0 
Ecrire "x,n ?" 
Lire x,n 
Si n<0 Alors 
Signe←1 
n←-n 
FinSI 
cpt←1 
resultat←1 
Tant que cpt<=n Faire 
resultat←resultat*x 
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
76
Précédent

- 76/220

Suivant