Analyse d’une phrase lettre par lettre

String et char sont deux type de variables qui permettent de stocker une chaine de caractère (string en anglais) et un caractère. Une page de tutoriel sur le site de Processing en parle.

1/9 | Suivant

Récupérer les informations d’une variable String

String est une variable d’un type particulier, puisqu’elle est composée d’un assemblage de lettre. On peut la manipuler et l’interroger àtravers une série d’opérateurs.

Nombre de caractères d’une variable String
Le nombre de caractères d’une variable String s’obtient par la méthode length(), comme ceci :

String phrase="Voici une chaine de caractère";
int nb_lettres=phrase.length();
println( nb_lettres );

Sélectionner un caractère dans la chaine
On peut obtenir la valeur d’un caractère par la méthode charAt() comme ceci

String phrase="Voici une chaine de caractère";
char lettre=phrase.charAt(3);
println(lettre); // on obtient "c"

La variable char

char est une variable qui peut recevoir un caractère. On la code entre simple guillemets (ou apostrophe). Si on tente de stocker u

char lettre='g';
char lettre2='+';

Valeur numérique d’une variable char
Les variables char sont un peu particulières, puisqu’elles sont équivalentes àun chiffre :

char t='a';
if(t == 97){ println("le caractère 'a' est aussi 97"); }

Cette caractéristique permet de transformer les caractères en chiffre. Ainsi, la valeur du a minuscule est 97, le z minuscule est 122, la valeur du A majuscule est 65, Z majuscule est 90. Les autres caractères, comme les chiffres et les opérateur, enfin tout ce qui s’affiche sous la forme de caractère (même les espaces et le tab, et même encore le retour en arrière ou delete) a son propre code.

Utiliser les valeurs numériques de char

Voici quelques exemples d’utilisation des valeurs numériques de char :

Dessiner des barres verticales :

// dessiner des barres sur base d'une phrase
String mot="Voici une chaine de caractère avec un a et un z";
// a est 97, z est 122
// A est 65, Z est 90

void setup(){
  size(600,600);
  fill(0);
  noStroke();
}

void draw(){
  background(255);
  beginShape();
  for(int i=0; i<mot.length(); i++){
    // tout transformer en lowercase, 
    // retirer 96 pour que a soit 1, b soit 2, etc.
    int chiffre=char(mot.toLowerCase().charAt(i))-96; 
    if(chiffre < 0 ) { chiffre=26; fill(230); } else { fill(0); }
    rect((width/mot.length())*i,0,width/mot.length(),(height/26)*chiffre);
  }
  endShape();
  noLoop();
}

Dessiner avec vertex() :

// dessiner des barres sur base d'une phrase
// https://processing.org/tutorials/text/
String mot="J'essaie de faire un truc";
// a est 97, z est 122
// A est 65, Z est 90

void setup(){
  size(600,600);
  fill(0);
  noStroke();
}

void draw(){
  background(255);
  translate(width/2,height/2);
  beginShape();
  for(int i=0; i<mot.length(); i++){
    // tout transformer en lowercase, 
    // retirer 96 pour que a soit 1, b soit 2, etc.
    int chiffre=char(mot.toLowerCase().charAt(i))-96; 
    
    // mettre tous les caractères spéciaux en 0
    if(chiffre < 0 || chiffre > 122) { chiffre=0; }
    // calcul de l'angle
    float angle=(TWO_PI/mot.length())*i;
    // calcul de la taille (de 0 à 45% de la taille de la fenêtre)
    float taille=map(chiffre,1,26, 0, width*0.45);
    // dessin du point
    vertex(sin(angle)*taille,cos(angle)*taille);
  }
  endShape(CLOSE);
  noLoop();
}

Dessiner avec curveVertex() :

// dessiner des barres sur base d'une phrase
// https://processing.org/tutorials/text/
String mot="J'essaie de faire un truc";
// a est 97, z est 122
// A est 65, Z est 90

void setup(){
  size(600,600);
  fill(0);
  noStroke();
}

void draw(){
  background(255);
  translate(width/2,height/2);
  beginShape();
  for(int i=0; i<mot.length(); i++){
    // tout transformer en lowercase, 
    // retirer 96 pour que a soit 1, b soit 2, etc.
    int chiffre=char(mot.toLowerCase().charAt(i))-96; 
    
    // mettre tous les caractères spéciaux en 0
    if(chiffre < 0 || chiffre > 122) { chiffre=0; }
    // calcul de l'angle
    float angle=(TWO_PI/mot.length())*i;
    // calcul de la taille (de 0 à 45% de la taille de la fenêtre)
    float taille=map(chiffre,1,26, 0, width*0.45);
    // dessin du point
    curveVertex(sin(angle)*taille,cos(angle)*taille);
  }
  endShape(CLOSE);
  noLoop();
}

void keyTyped() {
  // The variable "key" always contains the value 
  // of the most recent key pressed.
  if ((key >= 'A' && key <= 'z') || key == ' ') {
    char letter = key;
    mot = mot + key;
    // Write the letter to the console
    println(key);
    loop();
  }
}