ING 1 - POO Java année 2016 -2017 Correction TD n°1 Rappel Syntaxe En Java, la boucle pour a la forme suivante : for (var = b1 ; var <= b2 ; var = var + val) instructions ou bloc d’instructions Exemple : int i ; for (i=1 ; i<= n ; i= i+1) System.out.println.println(‘‘Iteration numero ‘‘+ i) ; 2. En Java, la boucle tant que a la forme suivante : while (condition) instructions ou bloc d’instructions Exemple : int n = 0 ; while(n * n < K) { n++ ; System.out..println(n); } Boucle For Exercice 1 : Affichage 1. Écrire un programme qui affiche une ligne contenant n symboles *, n étant entré par l’utilisateur 2. Écrire un programme qui affiche un carré plein de n par n. public class Ex0101 { public static void main(String [] args){ final int n = 15; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++) System.out.print("*"); System.out.print("\n"); } } } Exercice 2 : Puissance d’un nombre 1. écrire un programme qui calcule la nième puissance d’un nombre x entré par l’utilisateur 2,53 = 15,625 import java.util.Scanner; public class Ex0102 { /** Calcul de la puissance n-ième d'un nombre rentré par l'utilisateur */ public static void main(String args[]){ Scanner sc = new Scanner(System.in); double x; int n; System.out.print("Entrez le nombre "); x = sc.nextDouble(); System.out.print("Entrez la puissance "); n = sc.nextInt(); double resultat = 1.0; for(int i = 1; i <= n; i++) resultat *= x; System.out.println("\n" + x + "^" + n + "=" +resultat); } } Exercice 3 : Une suite écrire un programme qui calcule la somme des carrés des n premiers nombres pairs. Par exemple : 22 + 42 +62 = Exercice 4 : deux suites On définit trois suites : 1 1 A 0=1 B0 = C 0= 2 4 √ A n +1=( A n+ B n)/2 On admet que lim ( n→∞ n Bn+1= √ A n Bn Cn +1=C n−2 ( ( A n +Bn)2 4∗C n ( A n−B n) ) 2 ) converge vers π Écrire le programme qui calcule l’approximation de π Note/Rappel : la méthode Math.sqrt(x) calcule la racine carrée de x Note supplémentaire : visiblement comme cela a été vu en TP, la suite ne converge pas du tout vers π ! import java.util.Scanner; public class Ex0104 { /** Calcul de la puissance n-ième d'un nombre rentré par l'utilisateur */ public static void main(String args[]){ Scanner sc = new Scanner(System.in); double a,b,c; int iter; a = 1.0; b = Math.sqrt(1.0/2.0); c = 1.0/4.0; System.out.println("Entrez le nombre d'itérations "); iter = sc.nextInt(); double ancienA, ancienB; for(int i = 1; i < iter; i++){ ancienA = a; ancienB = b; a = (a + b)/2.0; b = Math.sqrt(ancienA*ancienB); c = c - Math.pow(2.0,i)*((ancienA - ancienB)/2.0)*((ancienA - ancienB)/2.0); } double resultat = (a + b)*(a + b)/(4.0 * c); System.out.println(resultat); } } Exercice 5 : Boucle while : la suite de Syracuse La suite de Syracuse est définie de la manière suivante à partir d’un entier n saisi au clavier U 0=n U n+ 1=U n /2 si n est pair U n+ 1=3∗U n+ 1 sinon Écrire un programme qui affiche tous les termes de la suite de Syracuse jusqu’au moment où celleci arrive à la valeur 1. On n’est pas certain que la suite converge vers 1 mais on a jamais jusqu’à maintenant trouvé de contre-exemple import java.util.Scanner; public class Ex0105 { // Suite de Syracuse public static void main(String [] args){ Scanner sc = new Scanner(System.in); System.out.print("Entrez un entier "); int nombre = sc.nextInt(); while (nombre != 1){ System.out.print(nombre + " "); // cas o¨ le nombre est pair ou impair if ((nombre % 2) == 0) nombre /= 2; else nombre = 3*nombre + 1; } System.out.println(nombre); } }