Variables et Modestutorial de programmation |
Max Bill: "Quinze Variations d'une thème unique" 1938 |
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.
Littérature et références |
|
---|---|
François Morellet |
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
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
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);
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 =>.
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);
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.
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 );
}
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
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: |
|
|