Variables et Modes

tutorial de programmation
en processing

MBill_variations

Max Bill: "Quinze Variations d'une thème unique" 1938

 

Introduction

Dans ce cours, nous aborderons deux concepts très important de la programmation, la variable et nous allons approfondir le fonctionnement procédurale de l'informatique.

Nous trouvons des approches similaires dans le monde de la création, surtout dans la musique. Le concepts de la variation, variable et variation ont la même origine étymologique. L'exemple le plus virtuose sont probablement les compositions de Bach, où la variation joue un rôle primordiale, par exemple les Goldberg-Variation, les Inventions et d'une manière générale la Fugue, qui est un concepts de composition sur la variation d'une thème.

Dans l'art plastique nous trouvons aussi ce concept de variation, surtout au 20ème siècle. Max Bill crée par exemple les "15 variations sur un même thème". Son approche picturale est fortement influencé par la mathématique,une conception protocolaire et rigoureux et où il évite toute considérations personnel, ou émotionnel, on appelle cette mouvement l'art concret. Un autre représentant de l'art concret est François Morellet.

François Morellet a fait très tôt le choix de l’abstraction géométrique et de l’intervention minimale, avec le souci d’éviter tout effet sensible de la subjectivité ou de la facture, mais avec un égal souci de désamorcer l’esprit de sérieux et d’échapper aux dogmes et au formalisme convenu qu’engendre trop souvent ce type d’engagement. Le rôle décisif de l’artiste se porte avant tout sur le protocole. Il définit la mise au point d’un processus à partir duquel l’œuvre va se constituer. Si la méthode est rigoureuse, s’il s’interdit de biaiser avec le mode opératoire une fois que celui-ci est arrêté, François Morellet prend soin, dès la conception, de faire le paramètre qui permettra au résultat de faire une part réjouissante au hasard, et – sans jamais trahir la logique – d’engendrer l’imprévisible. Les titres de ses œuvres prennent plaisamment l’allure d’un descriptif de géométrie. Hubert Besacier

 

Littérature et références

François Morellet
  François Morellet

 

Variable

Dans un langage de programmation, une variable est un espace de stockage dans le mémoire de l'ordinateur. On peut imaginer un tiroir dans lequel on stocke des données . Étant donné qu'un programme gère qu'une instruction à la fois, la variable permet d'enregistrer une information à un endroit et de le réutiliser à un autre.

Une variable est composé

- d'un nom
- d'un type

 

Type de données

Chaque variable appartient a un certain type qu'il faut définir avant son usage. Il est ensuite inéchangeable ou quasi (plus tard on apprendra comment changer un type de donnée pour une variable). Cette définition décide quel genre de donnée peuvent être enregistrer. Nous rencontrons le plus souvent le type int, float et boolean. Ces trois type appartient ou type primitifs. Nous rencontrons d'autres type de données plus tard.

Nous déclarons une variable dans Processing en définissant son type de donnée, son nom et son valeur initiale.

type de variable exemple description espace de stockage
byte byte monVarByte = 25; des nombres entiers entre -128 et 128 un octet (8 bits)
int int monVarEntier = -200; nombres entiers entre ~ -2mrd et 2 mrd 4 octet, 32 bits
float float monVarFlottant = 0.257 nombre flottant 4 octet, 32 bits
boolean boolean ifFaitBeau=true true ou false 1 bit
char char lettre = 'a' un lettre entouré des ' 2 octet, 16 bits

Après avoir déclaré une variable, (la déclaration du type et nom), nous pouvons la changer autant qu'on veut. Pour cela, il faut juste rappeler son nom.

int x = 0;
line (x, 100, x100);
x=50;
line (x,100, x, 200);

Affectation

Le changement d'un variable se fait à travers l'affectation: variable = nouvelle valeur. x = 20; La nouvelle valeur doit être du même type que la variable. (int x; x =2.54; ne marchera pas). Pour ceux qu'il veulent savoir pourquoi on dit 'affecter' voici quelques explications supplémentaires =>.

Expression

Les ordinateurs ont été inventé pour exécuter des calcules. Dans la programmation, les calcules sont toujours des opérations importants. Pour exécuter des opérations arithmétiques nous utilisons des expressions, .

int a = 3; // a est définit comme int et on l'affecte la valeur 3
int b= 5; // on affecte 5 à la variable b
int c= a+b; //c =8
a= b*2; // a =10
c= a+b; // c =15
a= c/b // a = 5

Les expressions peuvent être utiliser directement dans des instructions

int  a = 100;  
int  b = -20;
line (a * 2, 50, a + b, a); 

 

Variables redéfinies

Processing a prédéfinit quelques variables qu'on peut utiliser sans les déclarer.

nom de variable explication
width la largeur de la 'fenêtre', définit dans size
height la hauteur de la 'fenêtre'
mousePressed une variable boolean, qui devient 'true' quand la souris est appuyé
random(5,10) ceci n'est pas vraiment un variable mais plutôt une fonction. Elle permet de générer un chiffre par hasard entre une valeur minimale et maximale, ici 5 et 10.

Les variables prédéfinit sont en bleu dans Processing.

setup() et draw()

Pour l'instant, les codes ont permis de dessiner des dessins statiques. Pour pouvoir exécuter des animations récursive, dynamiques, ou interactif il faut utiliser void setup() et void draw(). Nous verrons plus tard à quoi sert le 'void', les parenthèses() et les accolades {}, pour l'instant sache que le setup() sert à définir les taches qui seront exécuter une seule fois au lancement de l'application, comme la taille de la fenêtre, evt. le background, ect et dans draw() ce qui sera exécuter en boucle. Mets le code suivant dans processing et essaie d'expliquer ce qui ce passe.

void setup() {
size(200,200); }
void draw() {
fill (random(0,255),random(0,255),random(0,255));
rect(random(0,200), random(0,200),100,100 );
}

 

Scoop des variables

Tout d'abord une variable devient valable seulement après sa déclaration. Exemple suivant produira un erreur parce que le programme est lu ligne par ligne. Dans la première ligne, maVariable n'est pas encore connu.

maVariable = 20;
int maVariable;

Une variable n'est pas forcement valable partout. Le scoop (anglais pour mesure, louche) d'une variable définit où la variable est accessible dans le programme. Ceci dépend l'endroit ou la variable a été déclaré. Dans ce contexte on parle aussi du scoop global ou local.

Une variable qui est définit au début du programme, avant le setup() à une 'validité' global.

int maVariableGlobale = 125;
void setup(){
background(maVariableGlobale);
}
void draw(){
rect(maVariableGlobale, 10,25,25)
}

Une variable qui est définit dans void setup() ou void draw() est seulement valable dans ces méthodes, donc local. On expliquera plus tard ce que c'est une méthode. Pour l'instant on constate seulement que la méthode à des parenthèse () avec son nom. Des accolades {} définissent le bloc du programme qui appartient à la méthode et dans lequel la variable est valable. On gros, c'est les accolades qui définissent la validité, si une variable est définit en dehors de toute accolade, cad au début, elle est valable partout - global.

int maVariableGlobale = 125;
void setup(){
int largeur = 200;
size (largeur, 300);
background(maVariableGlobale);
}
void draw(){
int largeurDuRectangle=120;
rect(maVariableGlobale, 10,25,25);
rect (largeur, 10,50,50); // erreur!!!
rect(largeurDuRectangle, 30,60,70);
fill( largeurDuRectangle)//pourquoi pas?
rect(50,30,70,60);
}

Mais qu'est ce qui se passe si on déclare une variable globale qu'on change localement?

int maVariableGlobale = 125;
void setup(){
background(maVariableGlobale);// 125 est affecté à maVariableGlobale
}
void draw(){
maVariableGlobale=150;
rect(maVariableGlobale,30,70,60); //quelle est la valeur de la variable //ici 125 ou 150?
}

Le règle d'hiérarchie des variables dit que c'est la valeur local qui prime avant la valeur globale.

Ce qu'il faut connaître:
 

 

Exercice

  1. Imagine un protocole de dessin, basé sur une ou plusieurs variables. La variation de la forme, de l'emplacement et de la couleur est uniquement géré par des variables. Explore le monde des variations et des variables! Décris en quelques ligne ton concept ou protocoles, écrit le en tant commentaire ( /* .. */ou début du code.
  2. Regarde le texte de Max Bill dans le paragraphe Référence.

doesburg
Théo Van Doesburg, Composition arithmétique, 1930