Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1

Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 1 TP 1 : La classe String Le type de données String (chaîne de caractère) n'est pas un type élémentaire en Java, c'est une classe. Donc une chaîne de type String est un objet qui n'est utilisable qu'à travers les méthodes de la classe String. Pour accéder à la classe String et à toutes ses méthodes, vous devez mettre avant la déclaration de votre classe l'instruction d'importation de package suivante : import java.lang.String ; Un littéral de chaîne est une suite de caractères entre guillemets : " abcdef " est un exemple de littéral de String. Etant donné que cette classe est très utilisée les variables de type String bénéficient d'un statut d'utilisation aussi souple que celui des autres types élémentaires. On peut les considérer comme des listes de caractères numérotés de 0 à n-1 (si n figure le nombre de caractères de la chaîne). Toutefois les String de Java sont moins conviviales en utilisation que les string de pascal ou celles de C#, il appartient au programmeur d'écrire lui-même ses méthodes d'insertion, modification et suppression. Toutes les autres manipulations sur des objets String nécessitent l'emploi de méthodes de la classe String. Nous donnons quelques exemples d'utilisation de méthode classique sur les String. Le type String possède des méthodes classiques d'extraction, de concaténation, de changement de casse, etc. Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 2 Les String Java ne peuvent pas être considérées comme des tableaux de caractères, il est nécessaire, si l'on souhaite se servir d'une String, d'utiliser la méthode toCharArray pour convertir la chaîne en un tableau de caractères contenant tous les caractères de la chaîne. Enfin, attention ces méthodes de manipulation d'une chaîne ne modifient pas la chaîne objet qui invoque la méthode mais renvoient un autre objet de chaîne différent. Ce nouvel objet est obtenu après action de la méthode sur l'objet initial. Soient les quatre lignes de programme suivantes : String str1 = "abcdef" ; char [ ] tCarac ; tCarac = str1.toCharArray( ) ; tCarac = "abcdefghijk".toCharArray( ); Illustrons ci-dessous ce qui se passe relativement aux objets créés : Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 3 L'exemple précédent sur la concaténation ne permet pas de voir que l'opérateur + ou la méthode concat renvoie réellement un nouvel objet en particulier lors de l'écriture des quatre lignes suivantes : String str1,str2; str1="bon"; str2="jour"; str1=str1+str2; Illustrons ici aussi ce qui se passe relativement aux objets créés : Opérateurs d'égalité de String L'opérateur d'égalité = = , détermine si deux objets String spécifiés ont la même référence et non la même valeur, il ne se comporte pas en Java comme sur des éléments de type de base (int, char,...) String a , b ; (a = = b ) renvoie true si les variables a et b référencent chacune le même objet de chaîne sinon il renvoie false. La méthode boolean equals(Object s) teste si deux chaînes n'ayant pas la même référence ont la même valeur. Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 4 String a , b ; a.equals ( b ) renvoie true si les variables a et b ont la même valeur sinon il renvoie false. En d'autres termes si nous avons deux variables de String ch1 et ch2, que nous ayons écrit ch1 = "abcdef"; et plus loin ch2 = "abcdef"; les variables ch1 et ch2 n'ont pas la même référence mais ont la même valeur (valeur = "abcdef"). Voici un morceau de programme qui permet de tester l'opérateur d'égalité = = et la méthode equals : String s1,s2,s3,ch; ch = "abcdef"; s1 = ch; s2 = "abcdef"; s3 = new String("abcdef".toCharArray( )); System.out.println("s1="+s1); System.out.println ("s2="+s2); System.out.println ("s3="+s3); System.out.println ("ch="+ch); if( s1 == ch ) System.out.println ("s1=ch"); else System.out.println ("s1<>ch"); if( s1 == s3 ) System.out.println ("s1=s3"); else System.out.println ("s1<>s3"); if( s1.equals(s2) ) System.out.println ("s1 même val. que s2"); else System.out.println ("s1 différent de s2"); if( s1.equals(s3) ) System.out.println ("s1 même val. que s3"); Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 5 else System.out.println ("s1 différent de s3"); if( s1.equals(ch) ) System.out.println ("s1 même val. que ch"); else System.out.println ("s1 différent de ch"); Rapport entre String et char Une chaîne String contient des éléments de base de type char comment passe-t-on de l'un à l'autre type. 1) On ne peut pas considérer un char comme un cas particulier de String, le transtypage suivant est refusé : char car = 'r'; String s; s = (String)car; Il faut utiliser la méthode de conversion valueOf des String : s = String.valueOf(car); 2) On peut concaténer avec l'opérateur +, des char à une chaîne String déjà existante et affecter le résultat à une String : String s1 , s2 ="abc" ; char c = 'e' ; s1 = s2 + 'd' ; s1 = s2 + c ; Le caractère 'e' est de type char, La chaîne "e" est de type String (elle ne contient qu'un seul caractère). Exercice 1 : Parcourir une chaîne de caractère Écrire un programme qui lit un mot au clavier et qui indique combien de fois sont présentes chacune des voyelles a, e, i, o, u ou y, que celles-ci soient écrites en majuscules ou en minuscules, comme dans cet exemple. Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 6 Exemple d’exécution : Donnez un mot : Anticonstitutionnellement il comporte 1 fois la lettre a 3 fois la lettre e 3 fois la lettre i 2 fois la lettre o 1 fois la lettre u 0 fois la lettre y Exercice 2 : Majuscule / Minuscule Ecrire un programme permettant de transformer une chaîne en majuscule. Ecrire un programme permettant de transformer une chaîne en minuscule. Ecrire un programme permettant de lire le nom et le prénom d'un étudiant, ensuite transforme le nom en majuscule, la première lettre du prénom en majuscule et le reste en minuscule. Exercice 3 : Palindrôme Un palindrôme est un mot que l'on peut lire dans les deux sens. Ecrivez un programme permettant de détecter des palindrômes. Un palindrome est un mot que l'on peut lire dans les deux sens. La distinction entre majuscules/minuscules n'a aucune importance pour la lecture d'un palindrome. Si on ne tient pas compte des espaces, des virgules, des tirets et des apostrophes (i.e. les caractères ' ', ',', '-' et '\''), une phrase complète peut aussi être considérée comme un palindrome. Exemples de palindromes : Otto Elu par cette crapule Esope reste ici et se repose Tu l'as trop ecrase, Cesar, ce Port-Salut A man, a plan, a canal, Panama Ecole nationale d’Electronique et des Télécommunications de Sfax Auditoire : 1 MP II Matière : TP Atelier Informatique II Enseignante : Ghada Feki Année Universitaire : 2020 - 2021 7 Exemples de non-palindromes : Cours de Java Le pont de la rivière Kwai Ecrivez un programme Palindrome.java qui lit une chaine de caractères du clavier et qui teste s'il s'agit d'un palindrome. Exemple d'exécution : Entrez un mot ou une phrase : Otto C'est un palindrome ! Pour ce programme, il convient d'utiliser plusieurs méthodes prédéfinies de la classe String, comme par exemple charAt(), toLowerCase() et length(). chaine.toLowerCase() permet de convertir tous les caractères de chaine en minuscule. uploads/Litterature/ tp-1-atl-info-2.pdf

  • 30
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager