Grammaires et algèbre

jeudi 15 juillet 2010
par  Alain BUSSER

Il y a

  • Les papous papas à poux papas ;
  • Les papous papas à poux pas papas ;
  • Les papous pas papas à poux papas ;
  • Les papous pas papas à poux pas papas ;
  • Les papoux papas pas à poux ;
  • Les papous pas papas pas à poux ;

et c’est tout !


String

Comme tous les langages objet, JavaScript gère les chaînes de caractère par le biais des objets String et RegExp. C’est JavaScript qui sera traité ici parce que conceptuellement, ce sont des chaînes de caractère qui sont produites par les CaRScripts. Voir à cet égard le tutoriel téléchargeable en pdf au bas de cette page.

Ainsi, même lorsqu’on fait ceci

var x=2+2;
Println(x);

c’est une chaîne de caractères qui est écrite et pas un nombre ; en effet "Println" ne sait imprimer que des chaînes de caractères ! Oui mais x est un nombre et pas une chaîne de caractères (sinon on aurait "22" au lieu de "4" puisque pour les chaînes, le signe "+" représente la concaténation) ! Aussi JavaScript réalise-t-il une conversion de x en chaîne de caractères, par

x.toString();

et du point de vue de l’interpréteur rhino, le script ci-dessus est discrètement transformé en

var x=2+2;
var affichage=x.toString();
Println(affichage);

La concaténation peut se faire soit comme une opération avec le signe "+", soit comme une méthode de l’objet String, méthode dont le nom est "concat". Par exemple pour construire le mot "CaRMetal" à partir de "CaR" et "Metal", on a le choix entre les deux options suivantes :

var x="CaR"+"Metal";
var y="CaR".concat("Metal");

Pour savoir combien de caractères sont contenus dans une chaîne de caractères, on utilise sa propriété "length" :

Println("CaRMetal".length);

Pour accéder à une sous-chaîne, on donne les indices de départ et d’arrivée à la méthode "substring" de la chaîne :

var x="CaRMetal";
Println(x.substring(3,7));

À titre d’exemple, voici une implémentation itérative du test des palindromes (une fonction booléenne qui retourne "true" si le mot qu’on lui soumet est un palindrome, et "false" sinon) :

function reverse(s){
	var n=s.length;//savoir jusqu'où on boucle
	var chaine=new String();
	for(i=n-1;i>=0;i--){//on part de la fin
		caractere=s.substring(i+1,i);
		chaine+=caractere;
	}
	return(chaine);
}
function IsPalindrome(s){//fonction booléenne
	return(s==reverse(s));//un palindrome est une chaîne égale à son inverse
}
Println(IsPalindrome("abba"));

Par exemple, la fonction répondra "false" avec le mot "Laval" (pourquoi ?) et "true" avec l’expression "(11*11).toString()" (comment ?)


Commentaires