Communiquez avec un ordinateur

Pour communiquer avec un ordinateur, vous avez d’abord besoin d’un langage. Entre humains, il existe beaucoup de langues diffĂ©rentes qui ont chacune leur usage. Nous avons d’ailleurs plusieurs familles de langues organisĂ©es souvent autour d’un alphabet : les langues indo-europĂ©ennes (dont le français, l’espagnol ou l’anglais), les langues sino-tibĂ©taines (dont le mandarin), les langues sĂ©mitiques (dont l’arabe), etc.

Ces langues partagent trĂšs souvent bien plus qu’un alphabet. Vous voyez oĂč je veux en venir : par exemple, en français nous utilisons des verbes quand nous voulons exprimer une action. On utilise aussi des noms pour dĂ©signer les objets ou les personnes : une chaise, un tableau, une fille.

Les langages de programmation utilisent une logique trÚs semblable. Dans ce cours, nous nous intéresserons à la programmation structurée qui est un des paradigmes de programmation les plus connus.

En programmation structurĂ©e, nous dĂ©coupons un problĂšme en micro tĂąches indĂ©pendantes les unes des autres, et modulaires. C’est exactement ce que nous sommes en train de faire !

Les noms : les variables

Une variable est une maniĂšre de faire rĂ©fĂ©rence Ă  un objet. Dans le langage courant, c’est exactement ce que nous appelons "nom". Qu’est-ce qu’un mot, sinon une Ă©tiquette que nous avons collĂ©e sur un objet pour pouvoir y faire rĂ©fĂ©rence plus tard ? Une variable a donc une valeur, et un mot qui permet d'accĂ©der Ă  cette valeur. Vous pouvez donc soit lire la valeur soit la modifier.

Nous pouvons par exemple crĂ©er deux variables dans notre algorithme pour compter le nombre de dĂ©placements et le score du joueur, qu’on aura initialisĂ©s Ă  0 au dĂ©but du programme.

Vous pouvez dĂ©clarer l’ensemble des variables dans le pseudo-code dans une section dĂ©diĂ©e aux variables ; cela permet de donner une indication des diffĂ©rentes variables de l'algorithme. Vous placerez cette section juste avant le mot-clé DĂ©but  , comme ceci :

Algorithme DéclarerVariable
Variable
    dĂ©placement ← 0
    score ← 0
Début
Fin

Mettons-nous d’accord sur la maniĂšre de mettre Ă  jour les variables, Ă  travers ce tableau qui rĂ©sume les diffĂ©rentes possibilitĂ©s :

Action

Variable

Valeur ajoutée

un déplacement

déplacement

+1

un déplacement à droite

score

+10

un déplacement à gauche

score

+20

un déplacement en haut

score

+10

un déplacement en bas

score

+20

Prenons le labyrinthe ci-dessous, et essayons de construire l’algorithme qui permet de rejoindre la case d’arrivĂ©e. Il faudra prendre en compte la mise Ă  jour de chaque variable.

Labyrinthe en 3 cases par 3 cases avec un point de départ en bas à gauche et un point d'arrivée en haut à gauche

Voici le pseudo-code :

Algorithme variable
Variable
    dĂ©placement ← 0
    score ← 0
Début
    Déplacement à droite
    dĂ©placement ← dĂ©placement + 1
    score ← score + 10
    Déplacement en haut
    dĂ©placement ← dĂ©placement + 1
    score ← score + 10
    Déplacement en haut
    dĂ©placement ← dĂ©placement + 1
    score ← score + 10
    Déplacement à gauche
    dĂ©placement ← dĂ©placement + 1
    score ← score + 20
Fin

Ainsi, à la fin du jeu, la variable déplacement  contient la valeur 4, et la variable score  contient la valeur 50.

Les verbes : les fonctions

À prĂ©sent, voyons comment simplifier la mise Ă  jour des deux variables en regroupant les instructions dans un seul mĂȘme bloc. Vous avez sĂ»rement pu le remarquer, nous avons dĂ» Ă©crire plusieurs fois les instructions qui permettent de changer les valeurs des deux variables.

Nous allons utiliser ce qu’on appelle, en programmation, une fonction. Il s’agit d’un bloc qui regroupe plusieurs actions. Vous pouvez rĂ©utiliser ce bloc autant de fois que vous le voulez en invoquant son nom. Une fonction peut aussi ĂȘtre vue comme une moulinette qui va prendre des informations en entrĂ©e, les traiter et en renvoyer d’autres en sortie. C’est en quelque sorte un mini-algorithme.

Lorsqu'une fonction est "appelée", le programme "quitte" la section de code en cours et commence à exécuter la premiÚre ligne à l'intérieur de la fonction. 

Nous allons maintenant créer notre fonction à partir des critÚres suivants :

Nom 

 maj_déplacement_score 

ParamĂštres d’entrĂ©e

  • dĂ©placement

  • score

  • point_de_dĂ©placement  (point en fonction du sens de dĂ©placement)

Instructions

  • Ajouter +1 Ă  la variable dĂ©placement

  • IncrĂ©menter la variable score  Ă  l’aide du paramĂštre point_de_dĂ©placement

ParamĂštres de sortie

Pas de paramĂštre de sortie

Nous pouvons dĂ©crire cette fonction Ă  l’aide du pseudo-code :

Fonction maj_déplacement_score(déplacement, score, point_de_déplacement)
Début
    dĂ©placement ← dĂ©placement + 1
    score ← score + point_de_dĂ©placement
Fin

Vous remarquerez qu’il n’y a pas de diffĂ©rence avec la description d’un algorithme en pseudo-code, sauf que nous avons ajoutĂ© entre parenthĂšses les paramĂštres d’entrĂ©e. Vous pouvez ajouter avant la fin de la fonction, avec le mot-clé Retourner  , les valeurs de sortie, s’il y en a.

Nous utiliserons  la fonction maj_déplacement_score pour modifier notre algorithme précédent ainsi :

Algorithme variable
Variable
    dĂ©placement ← 0
    score ← 0
Début
    Déplacement à droite
    maj_déplacement_score(déplacement, score, 10)
    Déplacement en haut
    maj_déplacement_score(déplacement, score, 10)
    Déplacement en haut
    maj_déplacement_score(déplacement, score, 10)
    Déplacement à gauche
    maj_déplacement_score(déplacement, score, 20)
Fin

À vous de jouer

Contexte

Reprenons notre périple dans le labyrinthe.

Considérons le pseudo-code suivant qui dirige les déplacements du joueur dans le labyrinthe :

Algorithme déplacement
Variable
    dĂ©placement ← 0
    score ← 0
Début
    Déplacement en haut
    Déplacement en haut
    Déplacement à droite
    Déplacement à gauche
    Déplacement en bas
    Déplacement en bas
Fin

Vous allez mettre en place dans cet exercice une fonction permettant de calculer votre score selon le nombre de déplacements effectués.

Labyrinthe en 4 cases par 4 cases avec un point de départ en bas à gauche et un point d'arrivée en haut à droite
Voici le labyrinthe Ă  utiliser de cet exercice

Consignes

Reprenez le pseudo-code ci-dessus et adaptez-le en fonction des consignes suivantes :

  • Un dĂ©placement incrĂ©mente la variable dĂ©placement  de 1.

  • IncrĂ©mentation du score  en fonction du sens de dĂ©placement : 

    • Ă  gauche :  50 points / le nombre de dĂ©placements 

    • Ă  droite :  70 points  / le nombre de dĂ©placements 

    • en haut :  25 points  / le nombre de dĂ©placements 

    • en bas :  90 points  / le nombre de dĂ©placements 

  • Si le joueur passe Ă  nouveau sur une mĂȘme case, il faut dĂ©crĂ©menter le score de 25 points.

  • Si le joueur revient Ă  la case DĂ©part, le score  est rĂ©initialisĂ© Ă  0.

Votre objectif : 

  1. CrĂ©ez l’algorithme qui prend en compte l’ensemble des consignes ci-dessus. N’hĂ©sitez pas Ă  Ă©crire Ă  cĂŽtĂ© de chaque instruction la valeur courante des variables dĂ©placement  et score  .

  2. Créez une fonction qui permet de mettre à jour les variables déplacement  et score  .

  3. Créez une fonction qui permet de réinitialiser la variable score  à 0.

  4. Adaptez votre algorithme avec les deux nouvelles fonctions.

Vérifiez votre travail

Voici les quatre étapes à suivre pour obtenir le résultat final de cet exercice :

PremiÚre étape : création de l'algorithme de déplacement
Algorithme déplacement
Variable
    dĂ©placement ← 0
    score ← 0
Début
    Déplacement en haut
    dĂ©placement ← dĂ©placement + 1
    score ← score + 25
    Déplacement en haut
    dĂ©placement ← dĂ©placement + 1
    score ← score + 25
    Déplacement à droite
    dĂ©placement ← dĂ©placement + 1
    score ← score + 70
    Déplacement à gauche
    dĂ©placement ← dĂ©placement + 1
    score ← score + 50 - 25 (Le joueur revient sur une case)
    Déplacement en bas
    dĂ©placement ← dĂ©placement + 1
    score ← score + 90 - 25 (Le joueur revient sur une case)
    Déplacement en bas
    dĂ©placement ← dĂ©placement + 1
    score ← score + 90 - 25 (Le joueur revient sur une case)
    score ← 0 (Le joueur est revenu Ă  la case dĂ©part donc score = 0)
Fin
Seconde étape : création de la fonction de mise à jour des variables déplacement et score
Fonction maj_déplacement_score(déplacement, score, point_de_déplacement)
Début
    dĂ©placement ← dĂ©placement + 1
    score ← score + (point_de_dĂ©placement / dĂ©placement)
Fin
TroisiÚme étape : création de la fonction de réinitialisation du score
Fonction réintialiser_score(score)
    Début -
    score ← 0
Fin
QuatriÚme étape : adaptation de l'algorithme avec les deux fonctions précédentes
Algorithme déplacement
Variable
    dĂ©placement ← 0
    score ← 0
Début
    Déplacement en haut
    maj_déplacement_score(déplacement, score, 25)
    Déplacement en haut
    maj_déplacement_score(déplacement, score, 25)
    Déplacement à droite
    maj_déplacement_score(déplacement, score, 70)
    Déplacement à gauche
    maj_déplacement_score(déplacement, score, 50 - 25)  // Retour en arriÚre de 25 points
    Déplacement en bas
    maj_déplacement_score(déplacement, score, 90 - 25)  // Retour en arriÚre de 25 points
    Déplacement en bas
    maj_déplacement_score(déplacement, score, 90 - 25)
    réinitialiser_score(score)
Fin

En résumé

  • La plupart des langages de programmation ont une structure de base similaire les uns aux autres.

  • Les variables sont utilisĂ©es pour stocker des informations Ă  rĂ©fĂ©rencer et Ă  manipuler dans un programme informatique.

  • Une fonction est simplement un "morceau" de code que vous pouvez rĂ©utiliser, plutĂŽt que de le réécrire plusieurs fois.

  • Les fonctions "prennent" gĂ©nĂ©ralement des donnĂ©es en entrĂ©e, les traitent et "renvoient" un rĂ©sultat.

Vous avez dĂ©couvert le monde des variables et comment simplifier votre algorithme en le dĂ©coupant en fonctions. Il est maintenant temps de tester vos connaissances à l’aide d’un petit quiz dans le chapitre suivant. Bonne chance ! 

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best