Introduction à la programmation informatique

Bernard Amade

Chapitre 2. Les éléments d’un programme

texte

2.1. Les données de base: première approche

texte

2.2. Les variables

texte

2.2.1. Typage faible §§

Il existe des langages de programmation, et en particulier des langages de script (voir annexe A), dans lesquels il n’est pas besoin d’associer un "type" à une variable. Ceci ce prête bien à des manipulations rapides faites par un seul programmeur.

On a X et on a Y, on affecte une valeur à X une autre à Y … et si au fond on veut juste afficher ces valeurs le langage se débrouille pour toujours obtenir quelque chose.

Les utilisations possibles de X et de Y sont connues du programmeur et il va se débrouiller pour que son code soit cohérent.

Prenons donc un exemple en Groovy (dans ce qui va suivre on notera simplement que signe = va exprimer une affectation pas une égalité et / indique une division; les lignes de commentaires -non exécutées- commencent par //):

//soit la variable nommée x qui prend la valeur 100
def x = 100
def y = 25
def z = x/y
println( z )

Le résultat va afficher :

4

Si un peu plus loin nous faisons

y = 33
z = x/y

alors nous aurons :

3.0303030303

(n’oubliez pas que dans la plupart des langages de programmation la notation "avec virgule" se note en fait avec un point - c’est le standard américain qui s’impose ici -. Autre remarque: à un moment donné le résultat s’arrête de donner des chiffres supplémentaires après la virgule!)

A ce niveau, on peut ne pas tenir compte du nombre de chiffres après la virgule … mais nous allons voir que ce résultat, aussi sympathique soit-il, ne va pas de soi!

Reprenons d’abord une autre partie du même script … Que se passe-t’il si nous écrivons:

// nous affectons à y un littéral chaîne de caractères (noté entre guillemets)
// en fait ce pourrait être  le résultat d'une saisie par l'utilisateur

 y = "33"
println( x + y)

ce qui s’affiche:

10033

peut-être pas tout à fait ce à quoi nous nous attendions!

Et si nous faisons:

println (x / y)

L’exécution est carrément refusée et le langage passe en erreur.

On voit donc ici que le programmeur qui a déclaré une variable générale qui peut prendre n’importe quelle valeur le fait dans un cadre étroit qui peut être:

  • " je suis pressé, je sais ce que je fais et il ne me viendrait jamais à l’idée d’affecter une chaîne de caractère à y"
  • " mon programme est très général x et y peuvent être n’importe quoi " (mais dans ce cas je peux faire println(x) mais pas x/y).

Le programmeur peut aussi choisir une autre perspective et déclarer une variable à laquelle sont associées des contraintes précises (dans nos cours d’algèbre nous avons des déclarations comme "soit X appartenant à l’ensemble N" etc.)

Certains langages de programmation comme Java sont très stricts et imposent une déclaration précise d’un type associé à toute déclaration de variable.

2.2.2. Typage "fort"

texte

2.2.3. Problèmes et règles concernant l’usage des variables §§

L’utilisation des variables pose de réels problèmes qu’il faut savoir cerner:

  • Quel est le contrat? Ici c’est la notion de type qui intervient. Il est prudent de contrôler les catégories de données que l’on veut pouvoir affecter à cette variable.
  • Qui a le droit de la modifier et dans quelles circonstances? Voilà une question essentielle! N’oubliez pas que la plupart des codes sont réalisés au sein d’une équipe. Que va-t’il se passer si un autre code modifie cette variable d’une manière ou à un moment que vous n’avez pas prévu? Ces modifications imprévues peuvent être mortelles!

En gros se pose la problématique de la portée d’une variable. Ceci englobe également un autre cas: que se passe-t’il si deux programmeurs utilisent le même nom pour deux choses différentes?

Non seulement le programmeur doit se poser des questions de portée et d’utilisation (et donc de type) mais il doit aussi obéir à des règles de bienséance:

  • Donner à sa variable un nom explicite qui indique précisément de quoi il s’agit.
  • Respecter les règles de nommage du langage (plus les règles additionnelles fixées au sein de son équipe). Ces règles sont très variées; on aura par exemple : une variable compteEnBanque pour un langage et compte_en_banque pour un autre (il est extrêmement rare d’avoir des langages qui tolèrent des espaces à l’intérieur des "noms". Par ailleurs les règles syntaxiques propres au langage limitent ces caractères et leur utilisation: par ex. d2r2 serait correct mais pas 6po et encore moins Smith&Wesson)…

Le respect de ces règles permet de rendre les codes plus lisibles par tous et plus facile à maintenir.

Table of contents

previous page start next page