Java - Lirmm

publicité
Plan
Java: Langage, entrées et
sorties
• Structure d’un programme
• Les entrées sorties
Joël Quinqueton
Dépt MIAp, UFR IV
UPV − Université Montpellier III
Java
• La programmation ajoute à l’écriture
des algorithmes la difficulté de les
formuler selon des règles strictes (et
propres au langage utilisé)
• Utilisation stricte de
– délimiteurs : point-virgule, accolade,
parenthèse, etc.
– mots réservés : types de variable,
formulation des boucles, etc.
Java – classe et fichier
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club !");
System.out.println("Hello");
}
}
• Fichier PremierProgramme.java
Java – un exemple
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
Java – public ?
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
1
Java – blocs et accolades
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
Java – variables
• Variables : il faut les annoncer avant de les
utiliser, et préciser leurs types
/** des nombres entiers */
déclaration
int entier1, entier2;
entier1 = 10;
initialisation
entier2 = 2;
affectation
entier2 = entier2 + 3 * entier1;
/** un nombre en virgule flottante
*/
Déclaration
ET initialisation
float reel
= 3.1415926589;
Java – commentaires
• Commentaires : ils sont placés entre « /* » et « */ »
(dans cet ordre)
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
Java – static void main …
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
Java – instructions
• Instructions : elles sont marquées par des points-virgules
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club !");
System.out.println("Hello");
}
}
Java – affichage à l’écran
public class PremierProgramme {
/**
* Un premier programme Java pour débuter
*/
public static void main(String[] args) {
System.out.println("Bienvenue au club
!");
System.out.println("Hello");
}
}
2
Java – affichage à l’écran
•
•
•
•
Avec saut de fin de ligne
System.out.println(…);
Sans saut de fin de ligne
System.out.print(…);
Java – lecture au clavier
public class Addition {
public static void main(String[] args) {
int entier1, entier2;
entier1 = Keyboard.readInt();
entier2 = Keyboard.readInt();
System.out.println("La somme des entiers " +
entier1 + " et " + entier2 + " vaut " +
(entier1 + entier2));
}
}
Java – classe String
• Un type complexe qui désigne les
chaînes de caractères
• Une classe qui met à disposition un
ensemble d’opérations et de
transformations sur les chaînes de
caractères
Java – lecture au clavier
• Classe Keyboard que l’on suppose
prédéfinie
• Lecture d’un entier
• Keyboard.readInt();
• Lecture d’un réel
• Keyboard.readFloat();
Java – chaînes de caractères
• Un caractère : une lettre qui se code en
mémoire par un entier (code ASCII, Unicode)
• Une chaîne de caractères : une suite de
caractères en mémoire
• On les traite comme des objets à part entière
• On leur applique des opérations et des
transformations
Java – classe String
String chaine1;
chaine1 = "Voilou !!!";
String chaine2 =
Keyboard.readString();
System.out.println(chaine1 + "
" + chaine2);
3
String – recherche
String chaine = "Voilou !!!";
int position = chaine.indexOf(‘o’);
/** retourne la position du premier
"o", soit 1 */
position = chaine.indexOf(‘o’ ,
position);
/** retourne la position du second
"o" */
Tableaux en java
• Suite de taille fixe d’objets de même
type
• Déclaration: float [] tabr; Button [] tb;
• Réservation: tabi = new int[10]; tb =
new Button [5];
• Affectation: tabi[i] = j; tb[i] = new
Button(« bonjour »);
Boucles - while
• Sommes des N premiers entiers
int N = Keyboard.readInt();
int k = 1;
int somme = 0;
while (k <= N) {
somme = somme + k;
k = k + 1;
}
• While = « tant que »
String – extraction
String chaine = "Voilou !!!";
int position =
chaine.indexOf(‘o’);
String ch1 =
chaine.substring(0,
position);
/** retourne le début de la
chaine avant "o" */
Conditionnelles
• Instruction if
– Pas de then
• La condition doit être exprimée entre
parenthèses
• Imbrication du bloc d’instruction
sousl’effet de la condition : { }
• If (test) {bloc exécuté si le est est vrai}
else {bloc exécuté si le test est faux}
Boucles - for
• L’expression for intègre les trois ingrédients
de la boucle
int N = Keyboard.readInt();
int somme = 0;
for(int k = 1; k <= N; k = k+1) {
somme = somme + k;
}
• la variable k n’est utilisée que pour la boucle
• sa déclaration est faite dans le corps de
l’instruction
4
Entrées / Sorties: le problème
• L’utilisateur doit-il coder un nombre
dans la norme IEEE pour le
communiquer à un programme ?
• Les humains sont habitués à réfléchir
en base 10 / Les ordinateurs se
régalent de la base 2
• Les humains utilisent souvent le clavier
pour communiquer avec un programme
Entrées / Sorties en Java
Entrées / Sorties: leur nature
• Pour l’ordinateur la donnée en entrée
est d’abord une suite de caractères
(une chaîne de caractères)
• Les résultats d’un programme (les
sorties) sont souvent une suite de
caractères (affichés à l’écran)
…«2», «4», …
Programme Java… « 2 + 4 = 6 »,…
Flots d’entrée et de sortie
System.out
• Un programme Java reçoit/transmet des
données au monde extérieur via un flot
(stream)
• Ces flots sont des objets de types complexes
• System.in et System.out
• sont des flots connectés à tout programme
pour communiquer via les entrées/sorties
standard
Programme Java
System.in
Entrées / Sorties dans un
programme
import java.io.*;
public class Echo {
public static void main (String[] args) throws
IOException {
InputStreamReader inStream = new
InputStreamReader( System.in );
BufferedReader stdin = new BufferedReader(
inStream );
String inData;
System.out.println("Enter the data:");
inData = stdin.readLine();
System.out.println("Input : " + inData);
}
}
Flots tamponnés
BufferedInputStream
Java
Monde extérieur
5
Entrées / Sorties
• Avant d’être un nombre …
– Une chaîne de caractères (en entrée) doit être «
convertie » en un type connu d’avance
• Un nombre (en sortie) doit être « converti »
en une chaîne de caractères
• Les routines de conversion sont différentes et
définies pour chacun des types primitifs
Lecture de données
numériques
• Conversion d’une chaîne de caractères
en un entier de type int
– La classe Integer (un objet de type Integer)
possède une méthode de conversion
chaîne de caractères <-> codage à
complément à 1
• La classe Integer possède aussi des
méthodes de conversion en short et
long
Lecture de nombres: exemple
import java.io.*;
public class EchoInt {
public static void main (String[] args) throws
IOException {
BufferedReader stdin = new BufferedReader(
newInputStreamReader(System.in));
String inData;
int num;
System.out.println("Entrez un entier:");
inData = stdin.readLine();
num = Integer.parseInt(inData);
System.out.println("L’entier lu: " + num);
}
}
6
Téléchargement