TP3
Utilisation du texte ISN Lycée Marlioz
Eric GILLON – Thomas REY
Est-ce logique ?
Prérequis
Le terme bit signifie « binary digit », (0 ou 1 en numération binaire) :
• Pour un signal électrique le 1 correspond à du courant, le 0 à l'absence de courant.
• Sur un CD, le 1 et le 0 correspondent à la présence ou l'absence d'aspérité sur la surface.
Avec un bit, il est possible d'obtenir deux états.
Avec 2 bits, il est possible d'obtenir quatre états différents, ainsi de suite…
Avec 8 bits, on peut donc obtenir 256 états différents.
Octet
• Un octet est un faisceau de 8 fils
électriques ou la lecture sur un CD de 8 aspérités cumulées.
• A savoir : La communauté internationale dans
son ensemble utilise le nom de « byte » plutôt
que le terme « octet » qui est francophone.
Le vieux Kilooctet
Pendant longtemps, on nous a appris que 1 kilooctet
valait 1024 octets, or depuis décembre 1998, l'organisme international IEC a normalisé ce système :
Un Kilooctet (Ko) = 1000 octets
Un Mégaoctet (Mo) = 1000 ko = 1 000 000 octets
Un Gigaoctet (Go) = 1000 Mo = 1 000 000 000 octets Un Téraoctet (To) = 1000 Go = 1 000 000 000 000 octets
Le Kibi
Du coup, cette organisation a défini le
kilobinaire (kibi) avec tous les préfixes habituels
• Un kibioctet (kio) vaut 1024 octets
• Un Mébioctet (Mio) vaut 1024 kio = 1 048 576 octets
• Un Gibioctet (Gio) vaut 1 073 741 824 octets
• Un Tébioctet (Tio) vaut 1 099 511 627 776
octets
Mémoires réelles
Alors pourquoi cette unité n'est pas utilisée régulièrement par les constructeurs ?
La réponse est simple :
100 Go est plus commercial qu'environ 93,13 Gio.
Vérifiez sur une clé USB vendue pour 8 Go par exemple :
8 000 000 000 octets
correspondent à environ 7,45 Gio !
Les différents types de variables
Une déclaration de variable se fait comme ceci :
<Type de la variable> <Nom de la variable> ; Ensuite, on l'initialise si besoin en entrant une valeur.
En Java, il y a deux types de variables : – les variables de type simple,
– les variables de type complexe appelées « objets ».
Par convention, les types de variable simple sont en
minuscules alors que les variables de type objets commencent par une majuscule.
Les variables de type numérique
Le type byte (1 octet) peut contenir les entiers entre -128 et +127.
Le type short (2 octets) contient les entiers compris entre -32768 et +32767.
Le type int (4 octets) va de ? à ? .
Le type long (8 octets) peut aller de ? à ? .
Que fait ce programme ?
• int a=2147483647;
• a=a+1;
• System.out.println(a);
Les variables décimales
Le type float (4 octets) est utilisé pour les nombres décimaux, sa plage de valeur est 3.4E-38 à 3.4E+38, avec une précision de 7 chiffres.
Le type double est identique à float mais sur 8 octets, Il peut aller de 1.7E-308 à 1.7E+308, avec une précision de 15 chiffres
Exemple :
float pi; pi = 3.141592653f;
float nombre = 2.0f;
A noter :
Le « f » à la fin !
La virgule est symbolisée par un point.
variables de type booléen
Le type boolean ne peut contenir que deux valeurs : true (vrai) ou false (faux),
sans guillemets…
int a=2147483647;
boolean b=true;
if (b==true) {
System.out.println(a);
}
Caractère
Variables stockant un caractère :
Le type char contient UN caractère stocké
entre apostrophes ‘a’.
Variable pour les chaines de caractères
Le type String permet stocker du texte. Il commence par une majuscule et lors de l'initialisation, on utilise des guillemets doubles " " .
Exemples de déclaration possibles : String phrase;
phrase = "abcd";
String phrase = new String();
phrase = "abcd";
String phrase = "abcd";
String phrase = new String("abcd");
A retenir sur les variables
• Toute variable doit être déclarée avant d’être utilisée.
• Une variable peut-être déclarée n’importe où dans le programme.
• Syntaxe: le type précède le nom de la variable.
• Une variable peut être initialisée lors de sa déclaration.
int i = 2
• On peut regrouper les variables de même type en une seule déclaration :
int nbre1 = 2, nbre2 = 3, nbre3 = 0;
En Java, il y a 8 types simples
• 4 pour le entiers: byte, short, int, long;
• 2 pour les réels: float, double;
• 1 type booléan: boolean;
• 1 type caractère: char.
• String est un type d’objet !
Le Code ASCII :
ASCII: (American Standard Code for Information Interchange ) est une norme d'encodage informatique des caractères alphanumériques de l'alphabet latin.
La norme ASCII établit une correspondance entre une représentation binaire des caractères de l'alphabet latin et les symboles, les signes, qui constituent cet alphabet.
La norme ASCII permet ainsi à toutes sortes de machines de stocker, analyser et communiquer de l'information textuelle.
La quasi totalité des ordinateurs personnels et des stations de travail utilisent l'encodage ASCII.
Il existe d'autres normes que l'ASCII, comme l'Unicode.
Le code ASCII utilise 8 bits donc on peut coder 256 caractères !
Extrait de la table ASCII
Principales fonctions utiles pour le texte
Saisir une variable texte ou nombre
• sc.nextLine() pour un texte alphanumérique.
• sc.nextInt() pour un entier.
• Sc.nextFloat() pour un décimal.
Extraction d’un caractère particulier
charAt()
• Elle ne peut s'opérer que sur des String . Le
premier caractère sera référencé par le numéro 0.
• Cette méthode prend un entier comme argument.
• Exemple :
String nbre = new String("1234567");
char carac = nbre.charAt(4);
Obtenir la longueur : length()
• Celle-ci renvoie la longueur d'une chaîne de caractères (en comptant les espaces).
• Exemples :
String chaine = new String("coucou ! ");
int longueur = 0;
longueur = chaine.length();
Extraire une chaine : substring()
• Cette méthode extrait une partie d'une chaîne de caractères.
• Elle prend deux entiers en arguments : le premier
définit le premier caractère (inclus) de la sous-chaîne à extraire, le second correspond au dernier caractère
(exclu) à extraire. Le premier caractère porte le numéro 0.
• Exemple :
String chaine = new String("abcdefghijklmnopqrstuv"), chaine2 = new String();
chaine2 = chaine.substring(3,6);
Comparer deux chaines : equals()
• Cette méthode permet de vérifier (donc de tester) si deux chaînes de caractères sont identiques. C'est avec cette
fonction que vous effectuerez vos tests de condition sur les String.
• Exemple :
String str1 = new String("coucou"), str2 = new String("toutou");
if (str1.equals(str2))
System.out.println("Les deux chaînes sont identiques !");
else
System.out.println("Les deux chaînes sont différentes !");
Changer la case : toLowerCase() et toUpperCase()
• Cette méthode permet de transformer tout caractère alphabétique en son équivalent minuscule.
• Elle n'a aucun effet sur les chiffres (ce ne sont pas des caractères alphabétiques.
• Exemple :
String chaine = new String("COUCOU TOUT LE MONDE
!"), chaine2 = new String();
chaine2 = chaine.toLowerCase();
String chaine = new String("coucou coucou"), chaine2 = new String();
chaine2 = chaine.toUpperCase();
Rechercher une chaine dans une chaine : indexOf() — lastIndexOf()
indexOf() explore une chaîne de caractères à la recherche d'une suite donnée de caractères, et renvoie la position (ou l'index) de la sous-chaîne passée en argument.
indexOf() explore à partir du début de la
chaîne, lastIndexOf() explore en partant de la fin, mais renvoie l'index à partir du début de la chaîne.
Ces deux méthodes prennent un caractère ou une chaîne de caractères comme argument, et renvoient un int.
Le premier caractère porte le numéro 0.
Exemple :
String mot = new
String("anticonstitutionnellement");
int n = 0;
n = mot.indexOf('t'); //n vaut 2
n = mot.lastIndexOf('t'); //n vaut 24
n = mot.indexOf("ti"); //n vaut 2
n = mot.lastIndexOf("ti"); //n vaut 12
n = mot.indexOf('x'); //n vaut -1
n = mot.indexOf('t',5); //n vaut 10
Concaténer
• Il suffit d’utiliser le symbole + ou concat
• Exemples
String mot1=new String(« abcd ») mot2=new String(« efgh ») ;
String mot3=mot1+mot2 ; //donne abcdefgh
String mot3 = mot1.concat(mot2);
Comparaison lexicographique
• compareTo() et compareToIgnoreCase()
Exemple
Interpréter ce programmes en Java.
String texte = "Quand le ciel bas et lourd pèse comme un couvercle" ;
int index = texte.indexOf("e") ; while (index > 0) {
System.out.println("J'ai trouvé un e en position "
+ index) ;
index = texte.indexOf("e", index + 1) ;
}
Exercice :
Interpréter ce programme en Java et donner le résultat.
String mot1 = new String("COUCOU"), mot2 = new String("coucou");
mot2 = mot2.toUpperCase();
if (mot1==mot2)
System.out.println("bingo !");
else
System.out.println("flop");