Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Algorithmique - Techniques fondamentales de programmation
  3. Techniques fondamentales de programmation
Extrait - Algorithmique - Techniques fondamentales de programmation Exemples en PHP (nombreux exercices corrigés) (4e édition)
Extraits du livre
Algorithmique - Techniques fondamentales de programmation Exemples en PHP (nombreux exercices corrigés) (4e édition) Revenir à la page d'achat du livre

Les variables et opérateurs

Les variables

1. Principe

Vous savez, grâce au chapitre précédent, comment l’ordinateur se représente les chiffres et les nombres : sous forme de binaires. De même la mémoire de l’ordinateur, composée de cases, peut contenir des informations, notamment ces fameux nombres. En programmation, il faut quelque chose de simple, pratique et souple à manipuler pour représenter ces nombres.

Chaque case de la mémoire est numérotée. Si la mémoire fait 256 octets et que chaque case peut contenir un octet, alors il y a 256 cases numérotées de 0 à 255. On peut donc obtenir la valeur d’une case depuis son numéro, en disant que la case 74 contient la valeur 212. Là où cela se complique, c’est que la mémoire de vos ordinateurs atteint un nombre très important de cases. Avec 1 Go de mémoire, vous avez 1 073 741 824 cases pouvant contenir chacune un octet. Comment voulez-vous vous souvenir de chaque numéro de case ? C’est bien entendu impossible.

Si par contre vous donnez un nom ou une étiquette à chaque valeur contenue dans la case, ou à une suite de valeurs de plusieurs cases, pour vous en rappeler plus facilement, cela devient bien plus évident. C’est ce qu’on appelle une variable. En informatique, une variable est l’association d’une étiquette à une valeur. Vous nommez la valeur. La variable représente la valeur et se substitue à elle. La variable est donc la valeur. Mais comme son nom l’indique, cette valeur peut changer dans le temps, soit que la variable ne représente plus la (ou les) même(s) case(s) mémoire, soit que la valeur de la case a changé.

Quel nom donner à une valeur ? Le nom que vous voulez et qui, si possible est en rapport avec ce que représente la valeur. Ce peut être une lettre, une association de lettres et de chiffres, ou d’autres symboles. Le formalisme des noms des variables dépend du langage utilisé. Parfois, un caractère spécifique indique le type (que vous rencontrerez plus bas) de la variable : ce qu’elle peut contenir.

Certains langages acceptent des noms en lettres minuscules, majuscules, avec des chiffres...

Opérateurs et calculs

1. Les affectations

Le symbole d’affectation "Images/flechegauche.PNG" fait partie d’une grande famille, celle des opérateurs. Comme son nom l’indique, un opérateur est utilisé pour et dans des opérations. Le symbole "Images/flechegauche.PNG" est un opérateur d’affectation. Il existe plusieurs opérateurs qui servent aux calculs, affectations, comparaisons, rotations (de bits), groupages, etc.

2. Les opérateurs arithmétiques

Pour que les algorithmes puissent effectuer des calculs, il faut pouvoir au moins faire des opérations simples. Vous utiliserez pour cela les symboles suivants :

  • + : addition ;

  • - : soustraction ;

  • * ou x : multiplication (il est plus facile d’écrire un x pour fois qu’une étoile) ;

  • / : division ;

  • % ou mod : modulo ;

  • DIV : la division entière.

Un modulo est le reste d’une division entière. Par exemple 15/2 vaut 7, mais il reste 1. On dit que 15 modulo 2 vaut 1.

Ces opérateurs sont dits binaires car ils s’utilisent avec deux valeurs : une avant le symbole et une après. Les valeurs avant et après peuvent être des données (de même type que la variable qui reçoit les résultats) ou des variables. Voici un exemple d’opérations dans un simple algorithme qui calcule la surface et le périmètre d’un cercle.

PROGRAMME CERCLE 
VAR 
  r, PI, surface,perimetre:réels 
DEBUT 
  PIImages/flechegauche.PNG3,1415927 
  rImages/flechegauche.PNG5,2 
  surfaceImages/flechegauche.PNGPI * r * r 
  perimetreImages/flechegauche.PNG2 * PI * r 
  Afficher surface,perimetre 
FIN 

Ici il n’y a que des multiplications. Vous pouvez déjà remarquer que vous avez parfaitement le droit de chaîner vos calculs et de mélanger les données et les variables. Simulez les deux calculs :

surfaceImages/flechegauche.PNGPI * r * r 
surfaceImages/flechegauche.PNG3,1415927 * 5,2 * 5,2 
surfaceImages/flechegauche.PNG84.948666608 
 
perimetreImages/flechegauche.PNG2 * PI * r 
perimetreImages/flechegauche.PNG2 * 3,1415927 * 5,2 
perimetreImages/flechegauche.PNG32.67256408 

En PHP :

<html> 
  <head><meta/> 
    <title>Cercle</title> 
  </head> 
  <body> 
  <?php 
    $pi=3.1415927; 
    $r=5.2; 
 
    $surface=$pi*$r*$r; 
    $perimetre=2*$pi*$r; ...

Pour aller plus loin

1. Les nombres négatifs

Un nombre signé par exemple sur 8 bits, contient un bit réservé pour le signe. C’est en tout cas ainsi qu’on vous le présente pour plus de compréhension. Généralement c’est le bit de poids fort, le plus à gauche, qui sert pour le signe : à 0 le nombre est positif, à 1 il est négatif.

Par exemple -9(10) devrait être représenté par 10001001(2). Cette représentation pratique pour le lecteur ne l’est cependant absolument pas pour l’ordinateur. Additionnez -9 et 30, vous obtenez 21.

En binaire, 30 équivaut à 00011110. Le binaire s’additionne comme le décimal : 1+1=10 donc retenue de 1 et ainsi de suite :

 00011110 (30) 
+10001001 (-9) 
=10100111 (-39) 

Il y a un problème ! Vous devriez obtenir 21 soit 00010101 ! C’est qu’en réalité un nombre négatif n’est pas représenté comme ceci. L’ordinateur « ruse » avec les manipulations binaires. L’astuce consiste à prendre le complément à un de la valeur binaire en valeur absolue (-9 => 9) et de lui ajouter un (on obtient au final un complément à deux). Le complément à un consiste à remplacer tous les zéros (0) par des un (1) et tous les 1 par des 0.

 11111111 (complément à un) 
00001001 (9) 
=11110110 (tout est inversé) 
+00000001 (+1) 
=11110111 (équivaut à -9 représentation machine) 

Si vous additionnez un nombre avec son complément à deux, vous obtenez 0 (plus une retenue).

Maintenant, additionnez ce résultat à 30 :

 11110111 (équivaut à -9 représentation machine) 
+00011110 (30) 
=00010101 (21 - plus une retenue) 

C’est gagné ! En pratique, le microprocesseur n’effectue pas tous ces calculs de conversion car il sait représenter nativement en interne toutes ces valeurs, matériellement.

2. La représentation des nombres réels

S’il est simple de se représenter un nombre entier en binaire, cela semble plus complexe avec un nombre à virgule. En effet, le principe même du binaire veut que chaque valeur représente...

Types et langages

1. Langages typés ou non

Quelques langages sont très souples avec les variables. Vous pouvez tout d’abord y mettre des nombres, puis du texte, puis de nouveau des nombres. Ces langages sont dits « non typés ». Certains poussent le raisonnement assez loin : une variable peut contenir le chiffre 3 et l’autre le texte "3 petits cochons", il pourra les additionner (ce qui devrait donner 6) ! C’est le cas du PHP par exemple : le type de la variable dépend alors de son contexte d’utilisation, le langage tentant de convertir son contenu quand c’est possible !

À l’inverse, d’autres langages sont de « typage fort » où toutes les variables doivent être déclarées de manière extrêmement précise : type, signe, longueur et les éventuelles conversions doivent être explicites.

En algorithmique, vous vous contenterez de donner le nom, le type et éventuellement la taille de la variable, qui gardera ses propriétés tout au long de l’algorithme, sa valeur pouvant bien entendu évoluer.

2. La gestion de la mémoire

La gestion de la mémoire est le calvaire des programmeurs en langages de bas niveau ou même de haut niveau quand ceux-ci laissent au programmeur la tâche de gérer la mémoire...

Exercices

Exercice 1

Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

VAR 
A,B:entiers 
DEBUT 
AImages/flechegauche.PNG2 
BImages/flechegauche.PNGA+4 
AImages/flechegauche.PNG4 
FIN 

Exercice 2

Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?

VAR 
A,B,C:entiers 
DEBUT 
AImages/flechegauche.PNG1 
BImages/flechegauche.PNG3 
CImages/flechegauche.PNGA+B 
AImages/flechegauche.PNG5 
CImages/flechegauche.PNGB-A 
FIN 

Exercice 3

Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ?

VAR 
A,B:entiers 
DEBUT 
AImages/flechegauche.PNG2 
BImages/flechegauche.PNGA+3 
AImages/flechegauche.PNGA+5 
BImages/flechegauche.PNGA-4 
FIN 

Exercice 4

Quelles sont les valeurs de A et B à la fin du code suivant ? Adaptez l’algorithme pour échanger les valeurs de A et B.

VAR 
A,B:entiers 
DEBUT 
AImages/flechegauche.PNG1 
BImages/flechegauche.PNG3 
AImages/flechegauche.PNGB 
BImages/flechegauche.PNGA 
FIN 

Exercice 5

Qu’affiche l’algorithme suivant ?

VAR 
A,B:chaîne 
DEBUT  
AImages/flechegauche.PNG"12" 
BImages/flechegauche.PNG"34" 
Afficher A+B 
FIN 

Exercice 6

Qu’affiche l’algorithme suivant ?

VAR 
A,B:chaîne 
DEBUT  
AImages/flechegauche.PNG"12" 
BImages/flechegauche.PNG"34" 
Afficher A&B 
FIN 

Exercice 7

Qu’affiche l’algorithme suivant ?

VAR 
A,B:réels 
C:entier 
DEBUT  
AImages/flechegauche.PNG3.2 
BImages/flechegauche.PNG4.6 
CImages/flechegauche.PNGA+B 
Afficher C  
FIN 

Exercice 8

Créer l’algorithme pour échanger les valeurs de A, B et C de façon...