Autre utilitaire pour les tableaux

publicité
Série 2.Exercice 1 : nombres premiers
La méthode la plus simple pour tester
la primauté d’un nombre N est de tester
sa divisibilité par 2 puis par tous les
 5
entiers compris entre 3 et
 37
[√N] = E(√N)
 [4,564] = E(4,564)
 13
 [0.0035] = E(0.0035) = 0
1
Nombres premiers / Algorithme
lire N;
Boolean EstPremier(N)=
{Si N<2 alors retourne(faux) sinon
Pour un entier N donné,
si (N=2) alors retourne(vrai) sinon
 Si N <2, N n’est pas premier
si (N modulo(2)=0) alors retourne(faux) sinon
 Si N=2; N est premier
{i ← 3;
 Si N est divisible par un entier
2
D tel que 2 <D< = [√N] alors
tant que (i <=N) faire
N n’est pas premier, sinon il
{si (N modulo(i)=0) alors retourne(faux) ;
l’est
i ← i+2;}
Retourne (vrai);}
}
Rappels Java
Rappels Java
les tableaux
 Tableau = objet
 Taille fixe
 Taille variable quel choix?
 possibilité de stocker des types de base (int, char,
boolean, long, short, …) ou des objets
 int[ ] tableau1 = new int[45]; (Éléments numéroté
de 0 à 44)
 monObjet[] tab_objets = new monObjet[50];
 Int[ ] tableauInit = {1, 40, 54, 13, 5};
 boolean[] tabBooleans = {true, true, false,
true};
 Tableau anonyme :
new char[ ] {‘c’, ‘q’, ‘e’, ‘v’};
Rappels Java
Les tableaux en Java
 Possibilité de récupérer un tableau en tant que résultats
Public static char[] getVoyels();
 Possibilité de passer un tableau en argument
Public static void main(String[] argv);
 Opérations sur les tableaux:
 affectation d'une valeur à une case

int[] tableau1 = new int[5];
tab[3] = "salut";
Copie: int[] tab1=new int[10]; int[] tab2=tab1;
Tab2[4]=3; // alors
tab1[4] vaux maintenant 3.
 Longeur d’un tableau int longueur = tableau1.length;
Rappels Java
la classe Arrays
Cette classe contient diverses méthodes pour manipuler des tableaux
 fill : affecte la même valeur à toutes les cases du tableau:
public class Array_demo{
public static void main(String[] args){
int[] tableau = new int[20];
Arrays.fill(tableau, (int)(Math.random()*100));
//remplit toutes les cases avec le MÊME nombre
for(int i = 0; i < tableau.length; i++){
System.out.println(tableau[i]);
}
…
Rappels Java
la classe Arrays
 equals : égalité profonde:
Arrays.equals(tableau1, tableau2);
equals() retourne vrai si :
- les deux tableaux sont de la même taille
- les deux tableaux contiennent le même type d'éléments
- les paires d'éléments correspondent tableau1[i]=tableau2[i]
 sort : pour trier un tableau
Arrays.sort(tableau);
 binarySearch : recherche d'un élément
Arrays.binarySearch(tableau, 17);
retourne l'index de l'élément recherché sinon une valeur négative sinon.
Le tableau doit avoir été trié au préalable (avec Arrays.sort())
Rappels Java
la classe Arrays
import java.util.Random;
import java.util.Arrays;
public class RandomTab{
public static void main(String[] args){
int[] tableau = new int[20];
for(int i = 0; i < tableau.length; i++){
tableau[i] = (int)(Math.random()*100);
}
Arrays.sort(tableau);
for(int i = 0; i < tableau.length; i++){
System.out.println(tableau[i]);
}
}
}
Rappels Java
Autre utilitaire pour les tableaux
 System.arraycopy(Object from, int fromIndex,
Object to, int toIndex, int count); : copier un tableau
(ou une partie)
public class CopieTableau {
public static void main(String[] args) {
char[] source = { 'a', 'r', 't', 'i', 'f', 'i', 'c', 'i', 'e', 'l', 'l', 'e' };
char[] cible = new char[4];
System.arraycopy(source, 6, cible, 0, 4);
System.out.println(new String(cible));
}
}
→ ciel
Rappels Java
Autre utilitaire pour tableaux
 System.sort(short[] a); trie le tableau passé en
paramètre en utilisant un algorithme QuickSort adapté.
 System.binarySearch(long[] l, long v); recherche la
valeur v dans le tableau l et renvoie son indice ou une
valeur négative r, (-r+1) désigne la position ou v pourrait
s’insérer pour que le tableau reste trié
Rappels Java
Autre utilitaire pour tableaux

System.fill(char[] t, char c); donne la valeur c à
tous les éléments de t

System.equals(xxx[] t, Object other); Renvoie
true si
 Other est un tableau du même type que t
 Other a le même taille que la taille de t
 Les éléments correspondants possèdent la même
valeur.
Rappels Java
Les tableaux multidimensionnels
 Plusieurs applications
 double[][] matrice = new double[5][7];
 Mais Java ne possède pas de tableaux
multidimensionnels!! tableaux de tableaux
Int[][] naissances={{1,2,1985}, {30,4,1976},
{29,12,1999},{20,8,1975},{27,2,1976}};
 Donc naissance[1] vaux {30,4.1976}
 Possibilité de créer des tableaux irréguliers
Exercices / Série 3
série n°3 Exercice 1
On va jouer pour deviner un nombre inférieur à 120
Nombre d'essaies :
6
ça y est, j'ai choisi un nombre au hasard.
Taper le nombre que vous avez deviné:
45
trop grand :) il vous reste 5 essaie(s)
Taper le nombre que vous avez deviné:
32
trop petit :) il vous reste 4 essaie(s)
Taper le nombre que vous avez deviné:
39
trop grand :) il vous reste 3 essaie(s)
Taper le nombre que vous avez deviné:
1
série n°3 Exercice 1
…
…
…
15
trop petit :) il vous reste 1 essaie(s)
Taper le nombre que vous avez deviné:
18
trop petit :) il vous reste 0 essaie(s). Désolé, vous n‘avez pas réussi à trouver le
nombre mystérieux
Voulez – vous rejouer (O/N) ?
1
série n°3 Exercice 2
> Géstion d’agenda.
Tapez A pour ajouter un rendes-vous ou V pour afficher des rendez-vous.
Votre choix ?:
A
Quelle date, jj/mm ?:
14/03
RDV ?:
Anniversaire Michelle.
Ok
> Tapez ‘a’ pour ajouter un rendes-vous, ‘v’ pour afficher des rendez-vous ou ‘q’ pour
quitter.
Votre choix ?:
1
série n°3 Exercice 2
v
Quelle date, jj/mm ?:
14/03
RDV(s) : - Anniversaire Michelle.
> Tapez ‘a’ pour ajouter un rendes-vous, ‘v’ pour afficher des rendez-vous ou ‘q’ pour
quitter.
Votre choix ?:
q
Téléchargement