Google Plus

الصفحات

Affiliate Program ”Get Money from your Website”
Get Traffic Like Spam

الاثنين، 3 أكتوبر 2011

Cours d'algorithmique N°1 : les variables

1. Déclaration
Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par l’utilisateur (frappées au clavier), ou que sais-je encore. Il peut aussi s’agir de résultats obtenus par le programme, intermédiaires ou définitifs. Ces données peuvent être de plusieurs types (on en reparlera) : elles peuvent être des nombres, du texte, etc. Toujours est-il que dès que l’on a besoin de stocker une information dans un programme, on utilise une variable.
Pour employer une image, une variable est une boîte, repérée par une étiquette. Pour avoir accès au contenu de la boîte, il suffit de la désigner par son étiquette.
En réalité, dans la mémoire vive de l’ordinateur, il n’y a ni boîte ni étiquette collée dessus. Il y a un emplacement de mémoire, désigné par une adresse binaire. Le langage informatique se charge, entre autres rôles, de vous épargner la gestion fastidieuse de ces emplacements mémoire et de leurs adresses. Il est beaucoup plus facile d’employer les étiquettes de son choix, que de devoir manier des adresses binaires.
La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui coller une étiquette. Ceci se fait tout au début de l’algorithme, avant même les instructions proprement dites. C’est ce qu’on appelle la déclaration des variables. C’est un genre de déclaration certes moins romantique qu’une déclaration d’amour, mais d’un autre côté moins désagréable qu’une déclaration d’impôts.
Le nom de la variable (l’étiquette de la boîte) obéit à des impératifs changeant selon les langages. Toutefois, une règle absolue est qu’ils peuvent comporter des lettres et des chiffres, mais qu’ils excluent la plupart des signes de ponctuation, en particulier les espaces. Un nom de variable correct commence impérativement par une lettre. Quant au nombre maximal de signes pour un nom de variable, il dépend du langage utilisé.
En pseudo-code algorithmique, on est bien sûr libre du nombre de signes pour un nom de variable, même si pour des raisons purement pratiques, et au grand désespoir de Stéphane Bern, on évite généralement les noms à rallonge.
2. Type des variables

Cours d'algorithmiqueCours d'algorithmique N°1 : les variables

Auteur : Christophe Darmangeat AddThis

1. Déclaration
Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs. Il peut s’agir de données issues du disque dur, fournies par l’utilisateur (frappées au clavier), ou que sais-je encore. Il peut aussi s’agir de résultats obtenus par le programme, intermédiaires ou définitifs. Ces données peuvent être de plusieurs types (on en reparlera) : elles peuvent être des nombres, du texte, etc. Toujours est-il que dès que l’on a besoin de stocker une information dans un programme, on utilise une variable.
Pour employer une image, une variable est une boîte, repérée par une étiquette. Pour avoir accès au contenu de la boîte, il suffit de la désigner par son étiquette.
En réalité, dans la mémoire vive de l’ordinateur, il n’y a ni boîte ni étiquette collée dessus. Il y a un emplacement de mémoire, désigné par une adresse binaire. Le langage informatique se charge, entre autres rôles, de vous épargner la gestion fastidieuse de ces emplacements mémoire et de leurs adresses. Il est beaucoup plus facile d’employer les étiquettes de son choix, que de devoir manier des adresses binaires.
La première chose à faire avant de pouvoir utiliser une variable est de créer la boîte et de lui coller une étiquette. Ceci se fait tout au début de l’algorithme, avant même les instructions proprement dites. C’est ce qu’on appelle la déclaration des variables. C’est un genre de déclaration certes moins romantique qu’une déclaration d’amour, mais d’un autre côté moins désagréable qu’une déclaration d’impôts.
Le nom de la variable (l’étiquette de la boîte) obéit à des impératifs changeant selon les langages. Toutefois, une règle absolue est qu’ils peuvent comporter des lettres et des chiffres, mais qu’ils excluent la plupart des signes de ponctuation, en particulier les espaces. Un nom de variable correct commence impérativement par une lettre. Quant au nombre maximal de signes pour un nom de variable, il dépend du langage utilisé.
En pseudo-code algorithmique, on est bien sûr libre du nombre de signes pour un nom de variable, même si pour des raisons purement pratiques, et au grand désespoir de Stéphane Bern, on évite généralement les noms à rallonge.
2. Type des variables
Il ne suffit pas de créer une boîte (réserver un emplacement mémoire) ; encore doit-on préciser ce que l’on voudra mettre dedans, car de cela dépendent la taille de la boîte (de l’emplacement mémoire) et le type de codage utilisé.
2.1 Types numériques classiques
Commençons par le cas le plus fréquent, celui d’une variable destinée à recevoir des nombres.
Si l’on réserve un octet pour coder un nombre, on ne pourra coder que 28 = 256 valeurs différentes. Cela peut signifier par exemple les nombres entiers de 1 à 256, ou de 0 à 255, ou de –127 à +128, c’est une pure question de convention. Mais ce qui n’est pas une convention, c’est qu’on est limité à 256 valeurs possibles. Si l’on réserve deux octets, on a droit à 65 536 valeurs ; avec trois octets, 16 777 216, etc. Et là se pose un autre problème : ce codage doit-il représenter des nombres décimaux ? des nombres négatifs ?
Bref, le type de codage (autrement dit, le type de variable) choisi pour un nombre va déterminer :
  • les valeurs maximales et minimales des nombres pouvant être stockés dans la variable
  • la précision de ces nombres (dans le cas de nombres décimaux).
Tous les langages, quels qu’ils soient offrent un " bouquet " de types numériques, dont le détail est susceptible de varier légèrement d’un langage à l’autre. Grosso modo, on retrouve cependant les types suivants :

Type Numérique
Plage
Byte (octet) 0 à 255
Entier simple -32 768 à 32 767
Entier long -2 147 483 648 à 2 147 483 647
Réel simple -3,40E38 à -1,40E-45 pour les valeurs négatives 1,40E-45 à 3,40E38 pour les valeurs positives
Réel double 1,79E308 à -4,94E-324 pour les valeurs négatives 4,94E-324 à 1,79E308 pour les valeurs positives

Pourquoi ne pas déclarer toutes les variables numériques en réel double, histoire de bétonner et d’être certain qu’il n’y aura pas de problème ? En vertu du principe de l’économie de moyens. Un bon algorithme ne se contente pas de marcher ; il marche en évitant de gaspiller les ressources de la machine. Sur certains programmes de grande taille, l’abus de variables surdimensionnées peut entraîner des ralentissements notables à l’exécution, voire un plantage pur et simple. Alors, autant prendre de bonnes habitudes d’hygiène…
Une déclaration algorithmique de variables aura ainsi cette tête :
Variable g en Entier Long
Variables PrixHT, TauxTVA, PrixTTC en Réel Simple
2.2 Autres types numériques
Certains langages autorisent d’autres types numériques, notamment :
  • le type monétaire (avec strictement deux chiffres après la virgule)
  • le type date (jour / mois / année).
Nous n’emploierons pas ces types ici, mais vous ne manquerez pas de les rencontrer en programmation proprement dite.
2.3 Types non numériques
Fort heureusement, les boîtes que sont les variables peuvent contenir bien d’autres informations que des nombres. Sans cela, on serait un peu embêté dès que l’on devrait stocker un nom de famille, par exemple.
On dispose donc également du type alphanumérique (également appelé type caractère) : dans une variable de ce type, on stocke des caractères, qu’il s’agisse de lettres, de signes de ponctuation, d’espaces, ou de chiffres. Le nombre maximal de caractères pouvant être stockés dans une seule variable dépend du langage utilisé. Une série de caractères (stockée ou non dans une variable alphanumérique, d’ailleurs), s’appelle une chaîne de caractères. Et une telle chaîne de caractères est toujours notée entre guillemets. Pourquoi diable ? Parce que 423 peut représenter le nombre 423, ou la suite de caractères 4, 2, et 3, selon le type de codage (le type de la variable) qui a été utilisé pour le stocker. Les guillemets permettent d’éviter toute ambiguïté à ce sujet. On y reviendra.
Un autre type est le type booléen : on y stocke uniquement les valeurs logiques VRAI et FAUX.
3. L’instruction d’affectation 

3.1 Syntaxe et signification
Ouf, après tout ce baratin préliminaire, on aborde enfin nos premières véritables manipulations d’algo. Pas trop tôt.
La seule chose qu’on puisse vraiment faire avec une variable, c’est de l’affecter, c’est-à-dire lui attribuer une valeur. En algorithmique, cette instruction se note avec le signe ï.
Ainsi :
Toto ï24
Attribue la valeur 24 à la variable Toto. Ce qui, soit dit en passant, sous-entend impérativement que Toto est une variable de type numérique.
On peut attribuer à une variable la valeur d’une autre variable, telle quelle ou modifiée. Par exemple :
Tutu ï Toto
Signifie que la valeur de Tutu est maintenant celle de Toto.
Notez que cette instruction n’a modifié en rien la valeur de Toto : une instruction d’affectation ne modifie que ce qui est situé à gauche de la flèche.
Tutu ï Toto + 4
Si Toto contenait 12, Tutu vaut maintenant 16. De même que précédemment, Toto vaut toujours 12.
Tutu ï Tutu + 1
Si Tutu valait 6, il vaut maintenant 7. La valeur de Tutu est modifiée, puisque Tutu est la variable située à gauche de la flèche.
3.2 Ordre des instructions
Il va de soi que l’ordre dans lequel les instructions sont écrites va jouer un rôle essentiel dans le résultat final. Considérons les deux algorithmes suivant (notez que ce sont les premiers algorithmes complets que nous examinerons, comme quoi on avance) :
Variable A en Entier Variable A en Entier
Début Début
A ï 34 A ï 12
A ï 12 A ï 34
Fin Fin
Il est clair que dans le premier cas la valeur finale de A est 12, dans l’autre elle est 34 .
Il est tout aussi clair que ceci ne doit pas nous étonner. Lorsqu’on indique le chemin à quelqu’un, dire " prenez tout droit sur 1km, puis à droite " n’envoie pas les gens au même endroit que si l’on dit " prenez à droite puis tout droit pendant 1 km ".
Enfin, il est également clair que si l’on met de côté leur vertu pédagogique, les deux algorithmes ci-dessus sont parfaitement idiots ; à tout le moins ils contiennent une incohérence. Il n’y a aucun intérêt à affecter une variable pour l’affecter différemment juste après. En l’occurrence, on aurait tout aussi bien atteint le même résultat en écrivant simplement :
Variable A en Entier Variable A en Entier
Début Début
A ï 12 A ï 34
Fin Fin
Eh bien maintenant, à vous de jouer !

3.3 Expressions et opérateurs
Si on fait le point, on s’aperçoit que dans une instruction d’affectation, on trouve :
  • à gauche de la flèche, un nom de variable, et uniquement cela.
  • à droite de la flèche, ce qu’on appelle une expression. C’est-à-dire un ensemble de valeurs liées par des opérateurs, et dont le résultat final est obligatoirement du même type que la variable située à gauche. Si l’un de ces points n’est pas respecté, la machine sera incapable d’exécuter l’affectation, et déclenchera une erreur (est-il besoin de dire que si aucun de ces points n’est respecté, il y aura aussi erreur !)
Revenons maintenant sur ce terme d’opérateurs. Un opérateur est un signe qui peut relier deux valeurs, pour produire un résultat. Les opérateurs possibles dépendent du type des valeurs qui sont en jeu. Allons-y, faisons le tour, c’est un peu fastidieux, mais comme dit le sage, quand c’est fait, c’est plus à faire.
Opérateurs numériques :
Ce sont les quatre opérations arithmétiques tout ce qu’il y a de classique.
+ addition
- soustraction
* multiplication
/ division
Mentionnons également le ^ qui signifie " puissance ". 45 au carré s’écrira donc 45 ^ 2.
Enfin, on a le droit d’utiliser les parenthèses, avec les mêmes règles qu’en mathématiques. La multiplication et la division ont " naturellement " priorité sur l’addition. Les parenthèses ne sont ainsi utiles que pour modifier cette priorité naturelle.
Cela signifie qu’en informatique, 12 * 3 + 5 et (12 * 3) + 5 valent strictement la même chose, à savoir 41. Pourquoi dès lors se fatiguer à mettre des parenthèses inutiles ?
En revanche, 12 * (3 + 5) vaut 12 * 8 soit 96. Rien de difficile là-dedans, que du normal.
Opérateur alphanumérique : &
Cet opérateur permet de concaténer, autrement dit d’agglomérer, deux chaînes de caractères.
Exemple
Variables A, B, C en Caractère
Début
A ß "Gloubi"
B ß "Boulga"
C ß A & B
Fin
La valeur de C à la fin de l’algorithme est "GloubiBoulga"
Opérateurs logiques :
Il s’agit du ET, du OU et du NON. Nous les laisserons de côté… provisoirement, soyez-en sûrs.
4. Deux remarques pour terminer

J’attire votre attention sur la trompeuse similitude de vocabulaire entre les mathématiques et l’informatique. En mathématiques, une " variable " est généralement une inconnue. Lorsque j’écris que y = 3 x + 2, les " variables " x et y satisfaisant à l’équation existent en nombre infini (graphiquement, l’ensemble des solutions à cette équation dessine une droite). Lorsque j’écris ax² + bx + c = 0, la " variable " x désigne les solutions à cette équation, c’est-à-dire 0, une ou deux valeurs à la fois… En informatique, une variable a toujours une valeur et une seule. A la rigueur, dans certains langages, mais pas tous, elle peut ne pas avoir de valeur du tout (tant qu’on ne l’a pas affectée). Dans les autres langages, les variables non encore affectées sont considérées comme valant zéro. Et cette valeur justement, ne " varie " pas à proprement parler (du moins ne varie-t-elle que lorsqu’elle est l’objet d’une instruction d’affectation).
La deuxième remarque concerne le signe de l’affectation. En algorithmique, comme on l’a vu, c’est le ï . Mais en pratique, la quasi totalité des langages emploient le signe égal. Et là, pour les débutants, la confusion est facile avec les maths. En maths, A = B et B = A sont deux propositions strictement équivalentes. En informatique, absolument pas, puisque cela revient à écrire A ï B et B ï A, deux choses bien différentes. Donc, attention  ! ! !



0 commentaires:

إرسال تعليق

earn monye

شارك

Twitter Delicious Facebook Digg Stumbleupon Favorites More