Compare commits

..

1 Commits

Author SHA1 Message Date
53e82c7673 Correction Cesar 2019-06-01 18:27:38 +02:00
15 changed files with 25 additions and 444 deletions

View File

@ -1,22 +0,0 @@
import static utils.Utils.*;
public class Accents {
private static final String TEST =
"Avec la mer du Nord pour dernier terrain vague,\n"+
"Et des vagues de dunes pour arrêter les vagues,\n"+
"Et de vagues rochers que les marées dépassent,\n"+
"Et qui ont à jamais le coeur à marée basse.\n"+
"Avec infiniment de brumes à venir\n"+
"Avec le vent d'ouest écoutez le tenir\n"+
"Le plat pays qui est le mien.\n";
public static final void main(String[] args) {
afficher("Accents");
char[] test = TEST.toCharArray();
afficher(String.valueOf(test));
}
}

View File

@ -1,38 +0,0 @@
import static utils.Utils.*;
public class Analyse1 {
public static final void main(String[] args) {
afficher("Analyse 1");
int[] tab1 = new int[] { 12, 0, 5, 21 };
afficher("tab1:");
maFonction(tab1);
int[] tab2 = new int[] { 81, 13, 100, 4 };
afficher("tab2:");
maFonction(tab2);
}
public static void maFonction(int[] tab){
int m1 = 0;
int m2 = 0;
for (int i = 0; i < tab.length; i++) {
int n = tab[i];
if (m1 < n) {
m2 = m1;
m1 = n;
} else if (m2 < n) {
m2 = n;
}
}
afficher(m1);
afficher(m2);
}
}

View File

@ -13,7 +13,16 @@ public class CesarChiffre {
// int position(char c): retourne la position de la lettre dans l'alphabet // int position(char c): retourne la position de la lettre dans l'alphabet
// (à partir de 0) // (à partir de 0)
return in; char[] out = new char[in.length];
for (int i = 0; i<in.length; i++) {
char c = in[i];
if (c == ' ') {
out[i] = c;
} else {
out[i] = ALPHABET[(position(c)+cle) % ALPHABET.length];
}
}
return out;
} }
} }

View File

@ -13,7 +13,16 @@ public class CesarDechiffre {
// int position(char c): retourne la position de la lettre dans l'alphabet // int position(char c): retourne la position de la lettre dans l'alphabet
// (à partir de 0) // (à partir de 0)
return in; char[] out = new char[in.length];
for (int i = 0; i<in.length; i++) {
char c = in[i];
if (c == ' ') {
out[i] = c;
} else {
out[i] = ALPHABET[(ALPHABET.length+position(c)-cle) % ALPHABET.length];
}
}
return out;
} }
} }

View File

@ -85,15 +85,6 @@ Une variable de type booléen prend comme valeur VRAI (`true`) ou FAUX (`false`)
Une variable de type entier peut prendre comme valeur l'ensemble des nombres entiers signés. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`. Une variable de type entier peut prendre comme valeur l'ensemble des nombres entiers signés. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`.
L'operateur modulo (`%`) permet d'obtenir le reste de la division euclidienne entre 2 entiers.
a = 5
b = 2
a%b == 1
5 divisé par 2 est égal à 2 avec un reste de 1
### Réels ### Réels
Une variable de type réel peut prendre comme valeur l'ensemble des nombres réels. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`. Une variable de type réel peut prendre comme valeur l'ensemble des nombres réels. Les opérations associées sont les opérations usuelles `+`, `-`, `*`, `/`.
@ -351,28 +342,3 @@ Certains langages sont dédiés à la manipulation de données (lecture, créati
D'autres langages sont utilisés pour la création de documents (HTML) ou la mise en page (CSS). D'autres langages sont utilisés pour la création de documents (HTML) ou la mise en page (CSS).
Certains langages sont dit "embarqués", car ils ne sont pas exécutés directement sur le processeur mais au sein d'un autre logiciel (par exemple javascript dans un navigateur). Certains langages sont dit "embarqués", car ils ne sont pas exécutés directement sur le processeur mais au sein d'un autre logiciel (par exemple javascript dans un navigateur).
# Cours java
Sommaire: https://www.jmdoudoux.fr/java/dej/index.htm
Chapitres essentiels
* https://www.jmdoudoux.fr/java/dej/chap-presentation.htm 1.1
* https://www.jmdoudoux.fr/java/dej/chap-techniques-base.htm 2.1 (voir plus tard)
* https://www.jmdoudoux.fr/java/dej/chap-syntaxe.htm parcourir rapidement, revenir pour les détails
* https://www.jmdoudoux.fr/java/dej/chap-poo.htm gros morceau objet, voir en plusieurs fois, avec exercices
* https://www.jmdoudoux.fr/java/dej/chap-packages-base.htm packages de bases, filtrer les classes utiles
* https://www.jmdoudoux.fr/java/dej/chap-math.htm maths, pas indispensable
* https://www.jmdoudoux.fr/java/dej/chap-exceptions.htm exceptions, important
* https://www.jmdoudoux.fr/java/dej/chap-jdk1.5.htm spécificités java 5, voir rapidement, revenir après collections
* https://www.jmdoudoux.fr/java/dej/chap-annotations.htm voir plus tard
* https://www.jmdoudoux.fr/java/dej/chap-java7.htm specificités java 7, voir rapidement
* https://www.jmdoudoux.fr/java/dej/chap-lambdas.htm voir plus tard
* https://www.jmdoudoux.fr/java/dej/chap-collections.htm collections
Autres sujets:
* https://www.jmdoudoux.fr/java/dej/chap-normes-dev.htm normes de développement, utile à connaître
* https://www.jmdoudoux.fr/java/dej/chap-utilisation_dates.htm dates, voir surtout la nouvelle API
* https://www.jmdoudoux.fr/java/dej/partie15.htm tests unitaires, voir principalement Junit4/5

View File

@ -97,103 +97,16 @@ Exemple:
## Exercice 7 ## Exercice 7
Pour 2 entiers donnés (n et p), retourner la somme des entiers entre ces 2 entiers (compris).
Exemples:
n = 3
p = 7
somme = 3 + 4 + 5 + 6 +7 = 25
=> Somme2.java
## Exercice 8
Écrire un programme qui affiche les nombres de 1 à 199. Mais pour les multiples de 3, afficher “Fizz” au lieu du nombre et pour les multiples de 5 afficher “Buzz”. Pour les nombres multiples de 3 et 5, afficher “FizzBuzz”.
Exemple:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...
=> FizzBuzz.java
## Exercice 9
Que fait maFonction dans Analyse1.java?
## Exercice 10
Afficher la suite de Fibonacci.
Il sagit dune suite de nombres dans laquelle tout nombre (à partir du troisième) est égal à la somme des deux précédents:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…
Écrire ensuite une solution avec une fonction récursive.
=> Fibonacci.java
## Exercice 11
Convertir un nombre romain en entier (avec "chiffre" romains I, V et X).
=> Romain.java
## Exercice 12
Remplacer tous les caractères accentués par caractères non accentués.
=> Accents.java
## Exercice 13
Chiffre de César: Chiffre de César:
Le texte chiffré s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Pour les dernières lettres (dans le cas d'un décalage à droite), on reprend au début. Par exemple avec un décalage de 3 vers la droite, A est remplacé par D, B devient E, et ainsi jusqu'à W qui devient Z, puis X devient A etc. Le texte chiffré s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Pour les dernières lettres (dans le cas d'un décalage à droite), on reprend au début. Par exemple avec un décalage de 3 vers la droite, A est remplacé par D, B devient E, et ainsi jusqu'à W qui devient Z, puis X devient A etc.
=> CesarChiffre.java CesarDechiffre.java
## Exercice 14
Tester si un mot est un palindrome. Un palindrome est un mot qui peut se lire dans les 2 sens: été, ici, colloc
## Exercice 15
Vérification ISBN à 13 caractères:
Retirer les tirets, ajouter tous les chiffres en multipliant successivement par 1 puis 3. Le résultat doit être un multiple de 10.
Exemple:
978-2-3793-1012-6
9x1 + 7x3 + 8x1 + 2x3 + 3x1 + 7x3 + 9x1 + 3x3 + 1x1 + 0x3 + 1x1 + 2x3 + 6x1 = 100
=> Isbn.java
# Idées # Idées
* Chiffrement de César * Chiffrement de César
* Somme des entiers entre 2 entiers donnés
* FizzBuzz
* mot palindrome
* cle IBAN
* Chiffrement de Vigenere * Chiffrement de Vigenere
* Factoriel * Factoriel
* Nombre d'occurrences d'un mot dans un texte * Nombre d'occurrences d'un mot dans un texte
* Somme des entiers entre 2 entiers donnés
* FizzBuzz

View File

@ -1,43 +0,0 @@
# Exercices java
## Bases classe/objet
### Bonjour
* Créer un programme java qui affiche "Bonjour", appeler la classe principale `Application`.
### Classe et objet
* Créer une classe `Personne` vide. Créer un objet de cette classe dans la classe `Application`.
### Constructeur
* Ajouter un constructeur à la classe `Personne`, et lui faire afficher "Constructeur!".
### Constructeurs multiples
* Ajouter un autre constructeur à la classe `Personne`, prenant en paramètre une chaine de caractères `nom`.
* Faire afficher le paramètre `nom` par le constructeur.
* Modifier la classe `Application` pour utiliser ce constructeur.
### Variable d'instance
* Ajouter à la classe `Personne` une variable d'instance `nom`.
* Dans le second constructeur, valoriser la variable d'instance avec le paramètre, et supprimer l'affichage.
### Méthodes
* Ajouter à la classe `Personne` une méthode `ecrireNom`, qui affiche `Mon nom est ` puis la valeur de la variable d'instance `nom`.
* Appeler cette méthode depuis `Application`.
### Getters/setters
* Ajouter à la classe `Personne` les getter/setter pour l'attribut `nom`.
* Modifier la classe `Application` pour changer le nom, avant l'appel à `ecrireNom`.
### Composition
* Créer une classe `Cerveau`.
* Ajouter un constructeur à cette classe qui affiche "Réflexion...".
* Ajouter un attribut `cerveau` de type `Cerveau` à la classe `Personne`.
* Initialiser cet attribut dans le constructeur avec `nom`.

View File

@ -1,37 +0,0 @@
import static utils.Utils.*;
public class Fibonacci {
public static final void main(String[] args) {
afficher("Fibonacci");
/*
int valeurPrecedente=0;
int valeur = 1;
afficher(valeurPrecedente);
while (valeur<=100){
afficher(valeur);
int nouvelleValeur = valeur+valeurPrecedente;
valeurPrecedente=valeur;
valeur=nouvelleValeur;
}
*/
afficher(0);
calculer(0, 1);
}
public static final void calculer(int valeurPrecedente,int valeur){
if (valeur<=100){
afficher(valeur);
int nouvelleValeur=valeur+valeurPrecedente;
calculer(valeur,nouvelleValeur);
}
}
}

View File

@ -1,25 +0,0 @@
import static utils.Utils.*;
public class FizzBuzz {
public static final void main(String[] args) {
for (int a=1; a<=199; a++){
if (a%3==0){
if (a%5==0) {
afficher("FizzBuzz");
} else {
afficher("Fizz");
}
} else{
if (a%5==0){
afficher("Buzz");
} else{
afficher(a);
}
}
}
}
}

View File

@ -1,24 +0,0 @@
import static utils.Utils.*;
public class Iban {
public static final void main(String[] args) {
String[] inputs = new String[] {
"FR7640618802770004064892182",
"FR7610807004896241909471914",
};
for (String input : inputs) {
char[] inputChar = input.toCharArray();
if (verifIban(inputChar)) {
afficher("IBAN correct: ", input);
} else {
afficher("IBAN incorrect: ", input);
}
}
}
public static boolean verifIban(char[] iban) {
return false;
}
}

View File

@ -1,12 +0,0 @@
import static utils.Utils.*;
public class Isbn {
public static final void main(String[] args) {
afficher("ISBN");
// exemple: 978-2-3793-1012-6
}
}

View File

@ -1,13 +0,0 @@
import static utils.Utils.*;
public class Palindrome {
public static final void main(String[] args) {
testPalindrome(Palindrome::estPalindrome);
}
private static final boolean estPalindrome(char[] mot) {
return false;
}
}

View File

@ -1,15 +0,0 @@
import static utils.Utils.*;
public class Romain {
public static final void main(String[] args) {
afficher("Conversion nombre romains (I à X)");
testRomains(Romain::convertirEnDecimal);
}
public static int convertirEnDecimal(char[] romain) {
return 0;
}
}

View File

@ -1,28 +0,0 @@
import static utils.Utils.*;
public class Somme2 {
public static final void main(String[] args) {
afficher("Somme 2");
testSomme2(Somme2::somme2);
}
public static final int somme2(int n, int p) {
if (n<=p){
int r=0;
for (int q=n; q<=p; q++){
r=r+q;
}
return r;
}
else {
return somme2(p,n);
}
}
}

View File

@ -1,28 +1,12 @@
package utils; package utils;
import java.util.Map;
import java.util.List;
import java.util.Arrays; import java.util.Arrays;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.Scanner; import java.util.Scanner;
import java.util.function.Function;
import java.util.function.BiFunction; import java.util.function.BiFunction;
public class Utils { public class Utils {
public static Map<String, Integer> ROMAINS = Map.of(
"I", 1,
"II", 2,
"III", 3,
"IV", 4,
"V", 5,
"VI", 6,
"VII", 7,
"VIII", 8,
"IX", 9,
"X", 10
);
public static final char[] ALPHABET = new char[] { public static final char[] ALPHABET = new char[] {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
@ -42,24 +26,6 @@ public class Utils {
"yxda zdn wxdb anbbnwcrxwb un kxwqnda m ncan carbcn" "yxda zdn wxdb anbbnwcrxwb un kxwqnda m ncan carbcn"
}; };
public static int[] TEST_SOMME2 = new int[] {
0, 3, 6,
3, 7, 25,
7, 3, 25,
};
public static void testSomme2(BiFunction<Integer, Integer, Integer> func) {
for (int i=0; i<TEST_SOMME2.length; i+=3) {
int n=TEST_SOMME2[i];
int p=TEST_SOMME2[i+1];
int s=TEST_SOMME2[i+2];
afficher("n = ", n, "p = ", p);
afficher("*** SOMME: ", func.apply(n, p));
afficher(" Attendu: ", s);
}
}
public static final void afficher(Object... args) { public static final void afficher(Object... args) {
if (args == null) { if (args == null) {
System.out.println("null"); System.out.println("null");
@ -69,6 +35,7 @@ public class Utils {
.collect(Collectors.joining(" ")); .collect(Collectors.joining(" "));
System.out.println(str); System.out.println(str);
} }
System.out.print(' ');
} }
public static final void afficherTabInt(int... args) { public static final void afficherTabInt(int... args) {
if (args == null) { if (args == null) {
@ -80,6 +47,7 @@ public class Utils {
.collect(Collectors.joining(" ")); .collect(Collectors.joining(" "));
System.out.println(str); System.out.println(str);
} }
System.out.print(' ');
} }
public static int lireEntier() { public static int lireEntier() {
@ -127,31 +95,4 @@ public class Utils {
} }
} }
public static void testPalindrome(Function<char[], Boolean> func) {
testPalindrome(func, "palindrome", false);
for (String pal : List.of("elle", "kayak", "serres", "essayasse")) {
testPalindrome(func, pal, true);
}
}
public static void testPalindrome(Function<char[], Boolean> func,
String mot, boolean result) {
boolean val = func.apply(mot.toCharArray());
afficher(mot, result == val ? "OK" : "ERREUR");
}
public static void testRomains(Function<char[], Integer> func) {
for (Map.Entry<String, Integer> entry : ROMAINS.entrySet()) {
String rom = entry.getKey();
int val = entry.getValue();
int res = func.apply(rom.toCharArray());
afficher(rom, " -> ", res);
if (res == val) {
afficher("Succés");
} else {
afficher("Attendu:", val);
}
}
}
} }