Introduction à la programmation

Retour à la liste des articles

14 novembre 2020

Salut ! Moi c’est Sylvain, aujourd’hui je serai ton guide dans la création de ton premier programme.

Pourquoi apprendre à programmer ? Nous n’avons jamais autant utilisé de programmes que maintenant. Alors que l’informatique a d’abord eu un côté très utilitaire, elle s’est démocratisée avec l’apparition d’Internet, puis des smartphones, pour apporter de l’information et du divertissement à un nombre toujours plus grand de personnes. Étant donné la place toujours plus importante que prennent les applications dans notre vie quotidienne, comprendre leur fonctionnement permet non seulement de mieux cerner les défis liés par exemple à la vie privée, mais aussi de participer à l’élaboration de nouveaux outils. Finalement, la création de programmes est une activité stimulante, qui nécessite peu d’outils (un ordinateur et une connexion à Internet), et qui peut s’apprendre de façon autonome, si l’on y consacre suffisamment de temps et d’énergie.

Cet article est un cours introductif, destiné à toute personne qui s’intéresse à la programmation, et ne demande pas de connaissances préalables. Il présente les bases à connaître pour écrire des programmes, par la réalisation d’exercices pratiques, et permet de continuer son apprentissage en suivant les liens à la fin de l’article, pour aller plus loin.

Pour savoir programmer, il n’y a pas besoin d’être doué-e en maths, en physique, ou dans n’importe quelle branche scientifique. En fait, la programmation s’apparente surtout à de la logique, et de la linguistique. Apprendre à programmer, c’est comme apprendre une nouvelle langue ! On y va ?

C’est quoi un programme ?

Excellente question, merci de l’avoir posée ! Demandons à Wikipédia :

Un programme est un ensemble d’instructions, qui réalise une certaine tâche lorsqu’il est exécuté par un ordinateur.

Bon, c’est assez abstrait. Remplaçons certains mots par des concepts qu’on connaît :

Une recette de cuisine est un ensemble d’instructions, qui réalise un certain plat lorsqu’elle est exécutée par un-e humain-e.

Ça te parle plus ? Une recette de cuisine c’est une suite d’instructions, qui, lorsqu’elles sont exécutées l’une après l’autre, aboutissent à un plat (qui peut être plus ou moins réussi). Prenons la recette suivante :

  1. Préchauffer le four à 180°C
  2. Placer un tamis sur un bol de taille moyenne
  3. Tamiser la farine, le cacao, le sucre en poudre, l’amidon de maïs, la poudre à lever et le sel. Mélanger pour aérer.
  4. Fouetter l’huile, le sirop d’érable, le lait végétal et la vanille dans un bol séparé.

C’est le début de ma recette préférée de cookies, et rien que de l’écrire ça me met l’eau à la bouche ! Hum, bref. Si on la suit point à point, on devrait arriver (normalement) à un joli plat de cookies.

Revenons à nos programmes. Un programme dont le rôle est de gérer l’accès d’une personne à un système (par exemple un site internet) pourrait être écrit comme ça :

  1. Demander le nom d’utilisateur-trice
  2. Demander le mot de passe
  3. Récupérer dans la base de données l’utilisateur-trice dont le nom correspond à celui demandé au point 1
  4. S’il n’y a pas d’utilisateur-trice qui a ce nom, afficher un message "Mauvais login ou mot de passe"
  5. Sinon, vérifier que le mot de passe correspond à celui demandé au point 2
  6. S’il correspond, afficher "Vous êtes connecté-e!"
  7. Sinon, afficher "Mauvais login ou mot de passe"

Il s’agit d’un programme déjà passablement complexe (ne t’inquiète pas si tu ne sais pas ce qu’est une « base de données »), mais il s’agit juste que tu comprennes une chose : un programme est une succession d’instructions, comme une recette de cuisine.

Je te vois déjà me demander « alors ça y est, je sais programmer ? ». Pas tout à fait, mais tu es en bonne voie ! Malheureusement pour nous, les ordinateurs ne parlent pas français.

Ça parle quelle langue, un ordinateur ?

Ne faisons pas durer le suspense plus longtemps et répondons à cette question : les ordinateurs parlent le binaire. Il s’agit d’un alphabet où les seules lettres sont 0 et 1. On met ces 0 et ces 1 ensemble pour former des instructions, comme par exemple :

1000010110111111011101101010110111111101011110010

C’est donc la langue maternelle des ordinateurs, mais pour nous c’est une langue super complexe, non seulement pour la comprendre, mais aussi pour la parler. On a donc d’un côté un-e humain-e qui parle français, et de l’autre un ordinateur qui parle binaire. Comment faire pour leur permettre de communiquer ?

Reprenons l’exemple de la recette de cuisine, mais changeons-la un peu :

  1. De oven voorverwarmen tot 180°C
  2. Plaats een zeef op een middelgrote schaal.
  3. Zeef de bloem, cacao, poedersuiker, maïszetmeel, bakpoeder en zout. Roer om te luchten.
  4. Klop de olie, de ahornstroop, de plantaardige melk en de vanille in een aparte kom.

Si tu la comprends, c’est que tu as la chance de comprendre le néerlandais, ou que tu es balèze avec les langues. En ce qui me concerne, je ne la comprends pas. Pour que je puisse la comprendre, et suivre les instructions pour arriver au résultat, il faut d’abord la traduire, par exemple en demandant à un-e interprète. Ça donnerait le processus suivant :

On va passer par le même processus pour notre programme. On va écrire les instructions dans une langue compréhensible par nous, puis demander à un interprète de les traduire en binaire.

C’est quoi ce fameux « langage compréhensible » ? Encore une excellente question ! C’est la langue que tu vas apprendre maintenant, son petit nom c’est Python.

Premiers pas avec Python

Comme pour les langues, il existe des milliers de langages de programmation. Certains ont été conçus pour des utilisations spécifiques, comme les sites internet, les teléphones portables, ou même les fusées. Heureusement, comme pour les langues, tu n’as pas besoin de tous les connaître ! Python est un langage de programmation dit « général », ce qui veut dire que tu pourras l’utiliser pour faire plein de choses différentes, comme des sites web, des jeux, des applications graphiques, des programmes de statistique et d’analyse, et en fait presque n’importe quoi !

Autre bonne nouvelle : les concepts présentés dans cet article sont les mêmes dans quasiment tous les langages de programmation. Ça te sera donc utile si un jour tu décides d’apprendre un autre langage.

Sans plus attendre, voici ton premier programme Python. Je suis sympa, je l’ai écrit pour toi. Prends quelques minutes pour lire les instructions (à gauche), puis clique sur le bouton Exécuter pour voir ce qui se passe !

Le résultat des instructions print() s'affichera ici.

Bravo, tu as exécuté ton premier programme Python ! Il correspond aux instructions suivantes :

  1. Afficher "Salut!" suivi d’un retour à la ligne
  2. Afficher "C’est mon premier programme!" suivi d’un retour à la ligne

Quand tu exécutes un programme, Python va le lire de haut en bas, puis exécuter chaque ligne l’une après l’autre. Dans Python, le texte qui n’est pas du code (aussi appelé « chaînes de caractères ») doit toujours être délimité par des guillemets doubles. Ce programme contient deux chaînes de caractères, "Salut!" et "C’est mon premier programme!".

Exercice : essaie de modifier le texte dans les instructions print, puis clique à nouveau sur Exécuter. Tu verras que le texte qui s’affiche correspond bien à ce que tu as demandé.

Les erreurs

Tout le monde fait des erreurs en programmant ! C’est donc une bonne idée de t’y habituer tout de suite et d’apprendre à les comprendre, puisqu’elles sont là pour t’aider. Clique sur le bouton Exécuter sous le programme suivant :

Le résultat des instructions print() s'affichera ici.

Solution

print("Salut!")
print("C’est mon premier programme!")

Au lieu d’afficher ton texte comme avant, la zone de droite contient un charabia technique. Dès que tu vois que le texte est affiché en rouge, c’est qu’il y a une erreur dans ton programme, et tu dois la corriger pour qu’il puisse s’exécuter. La partie la plus importante se trouve tout en bas du message. Ici, Python indique la nature de l’erreur (SyntaxError, il s’agit donc d’une erreur de syntaxe) ainsi que son emplacement (le circonflexe placé sous l’instruction print indique la ligne qui pose problème).

Exercice : essaie de trouver l’erreur dans le code, corrige-la et appuie à nouveau sur Exécuter jusqu’à voir le texte "Salut! C’est mon premier programme" qui s’affiche à droite. Si tu ne la trouves pas, appuie sur le bouton Voir la solution.

Il faut être très minutieux-se quand on écrit du code. Il suffit d’une virgule manquante, d’une parenthèse mal placée ou, comme dans le cas présent, de guillemets manquants, et Python ne saura pas comment exécuter ton programme ! Si tu as une erreur, prends le temps de la lire pour trouver où le problème se situe, et relis attentivement ton code.

Les fonctions

Tu as déjà vu une fonction, qui permet d’afficher du texte : print. Python dispose de plein d’autres fonctions qui vont t’aider à écrire des programmes (si ça t’intéresse, tu trouveras la liste complète dans la documentation officielle). Voilà à quoi ressemble une fonction, ici la fonction max :

Une fonction est une moulinette, dans laquelle on peut mettre des choses (on appelle ça des « paramètres »), et qui utilise ces paramètres pour réaliser une opération (par exemple, les afficher à l’écran ou calculer le nombre le plus grand). Une fonction peut aussi éventuellement renvoyer une valeur (on appelle ça une « valeur de retour »).

Sur l’illustration, j’ai utilisé la fonction max parce qu’elle illustre bien ce concept de paramètres et de valeur de retour. On peut donner autant de paramètres qu’on veut à cette fonction, et elle va calculer le nombre le plus grand et le renvoyer. Voilà ce que ça donne sous forme de code :

Le résultat des instructions print() s'affichera ici.

Appuie sur le bouton Exécuter et regarde ce qui se passe. Rien ne s’affiche ! C’est parce qu’on a pas indiqué à Python de faire quoi que ce soit avec la valeur de retour, alors il l’a mise à la poubelle. Pour l’afficher, on doit la donner à la fonction print. On va donc connecter la sortie de la fonction max avec l’entrée de la fonction print, comme ça :

Sous forme de code, ça revient à passer en paramètre la valeur de retour de max à la fonction print, et donc à mettre max dans print. Essaie de modifier le programme suivant pour qu’il affiche la valeur de retour de la fonction max.

Le résultat des instructions print() s'affichera ici.

Solution

print(max(1, 2, 3, -5, 0))

Tu devrais maintenant voir la valeur 3 s’afficher. Tu peux voir sur le dessin ci-dessus que la fonction print n’a pas de robinet de sortie : c’est parce qu’elle ne renvoie pas de valeur ! Elle s’occupe juste d’afficher à l’écran la valeur qu’on lui donne. La documentation de Python indique pour chaque fonction si elle renvoie une valeur ou non.

Une autre fonction très utile est la fonction input. Elle permet de rendre ton programme interactif, en demandant à la personne qui l’utilise d’entrer du texte. Elle renvoie ensuite ce texte comme valeur de retour. On peut aussi lui donner un paramètre qui est la question à poser. Le programme suivant demande un nom, puis l’affiche en le mettant dans la fonction print :

Le résultat des instructions print() s'affichera ici.

Essaie d’imaginer ce code sous forme de dessin. On a d’abord une moulinette input qui reçoit "Quel est ton nom?" et qui ressort le texte entré par la personne, puis ce texte est mis dans la moulinette print, qui va l’afficher. Ça veut dire que Python exécute les fonctions de l’intérieur vers l’extérieur : il doit d’abord exécuter la fonction intérieure (ici input) pour pouvoir donner son résultat à la fonction extérieure (ici print). Et on peut imbriquer comme ça autant de fonctions qu’on veut.

C’est un bon début pour un programme interactif ! Modifions-le pour saluer la personne. L’opérateur + permet de mettre ensemble du texte.

Le résultat des instructions print() s'affichera ici.

Prends un instant pour lire ce code et t’assurer que tu le comprends. Essaie de le modifier pour poser d’autres questions et afficher autre chose. Pourquoi ne pas demander l’âge de la personne qui utilise ton programme ?

Les variables

Comme on l’a vu avant, si on ne fait rien avec une valeur de retour, Python la met à la poubelle et on ne peut pas la réutiliser. Pour régler ce problème, on a passé la valeur de retour à une autre fonction, la fonction print, pour l’afficher.

Il arrive souvent qu’on veuille garder une valeur pour plus tard, pour pouvoir la réutiliser. Le programme suivant, qui est un début de jeu d’aventure, illustre bien le problème. Essaie de l’exécuter.

Le résultat des instructions print() s'affichera ici.

Le jeu demande le nom deux fois, pas terrible pour l’immersion ! Plutôt que de passer directement la valeur à une autre fonction, on peut demander a Python de la garder en mémoire pour plus tard, en lui donnant un nom. On appelle ça une « variable ».

Le dessin suivant illustre l’exécution de la fonction input, à laquelle on donne en paramètre la chaîne de caractères "Quel est ton nom?", et qui renvoie la chaîne de caractères "Julie". Pour finir, pour que cette valeur ne soit pas jetée, elle est mise dans un bac (une variable) appelée my_name.

Au niveau du code, la syntaxe pour cette opération est nom_de_la_variable = valeur. Le nom d’une variable peut contenir des lettres, des chiffres (mais ne peut pas commencer par un chiffre), et le signe « _ », qu’on utilise pour séparer les mots (puisqu’on ne peut pas utiliser d’espace). Pour le dessin ci-dessus, le code correspondant est le suivant :

my_name = input("Quel est ton nom?")

On peut maintenant demander à Python de nous donner la valeur qui est dans le bac my_name. Par exemple :

Le résultat des instructions print() s'affichera ici.

Exercice : modifie le programme ci-dessus pour créer une scène d’ouverture d’un jeu d’aventure. Commence par demander le nom du personnage avec la fonction input, garde-le dans une variable, puis réutilise ce nom dans la scène, avec une personne qui interpelle le personnage.

Structures de contrôle : les conditions

Tu peux exécuter les programmes que tu as écrits jusque-là autant de fois que tu veux, ils s’exécuteront toujours de la même façon, une ligne après l’autre. C’est comme lire un livre classique. Tu peux le lire autant de fois que tu veux, les personnages feront toujours les mêmes erreurs et le dénouement sera toujours exactement le même.

Les livres dont vous êtes le héros, qui ont eu leur moment de gloire dans les années 1980-90, proposaient un concept différent : et si, à chaque lecture du livre, la lectrice ou le lecteur pouvait faire des choix et créer ainsi une histoire différente ? Ainsi, à la fin de chaque chapitre, la joueuse ou le joueur pouvait faire un choix. Par exemple : si tu souhaites te diriger discrètement vers le bruit que tu viens d’entendre, rends-toi au chapitre 84. Si tu souhaites crier « Qui va là ? », rends-toi au chapitre 12.

La différence entre ces deux types de livres peut être schématisée de la façon suivante. À gauche, un livre classique, qui a une trame linéaire, et à droite, un livre dont vous êtes le héros ou l’héroïne, dont la trame dépend des choix qui sont faits durant l’aventure.

Chaque embranchement correspond à un choix, et chaque case correspond à un chapitre qui décrit la scène. Un chapitre d’un livre dont vous êtes le héros ou l’héroïne pourrait correspondre à la logique suivante :

Décrire la scène du chapitre 7 et afficher les choix

Si la joueuse décide de se diriger vers le bruit:
    Décrire la scène du chapitre 84 et afficher les choix

    Si la joueuse décide de …:
        Décrire la scène du chapitre 71
Sinon, si la joueuse décide de crier « Qui va là ? »:
    Décrire la scène du chapitre 12 et afficher les choix

    Si la joueuse décide de …:
        Décrire la scène du chapitre 42
    Sinon, si la joueuse décide de …:
        Décrire la scène du chapitre 51

En Python, cette structure « si… sinon, si… » s’écrit presque de la même façon que dans le langage naturel (elif est la contraction de else if, autrement dit sinon, si) :

if condition:
    instructions exécutées seulement si condition est vraie
elif condition2:
    instructions exécutées seulement si condition2 est vraie

Les espaces au début de chaque ligne qui se trouve dans un embranchement sont très importants ! Si tu ne les mets pas, ton programme fera une erreur ou, pire, ne se comportera pas comme prévu. Chaque ligne dans un « bloc » doit ainsi commencer par 4 espaces, pour indiquer à Python que ces instructions font partie de cet embranchement.

Les conditions sont souvent le résultat de comparaisons. Par exemple, « est-ce que la personne a répondu oui à la question ? » ou « est-ce que le mot de passe est correct ? ». La réponse à ces questions peut être soit vraie, soit fausse. Pour comparer des textes, on utilise deux opérateurs :

  • == pour indiquer « est égal à »
  • != pour indiquer « est différent de »

Une comparaison renvoie une valeur (comme une fonction !), qui peut être soit vraie, soit fausse. On appelle ça une valeur booléenne (du nom de leur inventeur, George Boole). Une valeur booléenne peut donc être soit vraie, soit fausse, et rien d’autre.

Voici un exemple d’utilisation d’une condition, qui affiche un message seulement si le nom entré est "Julie" :

name = input("Quel est ton nom?")

if name == "Julie":
    print("Salut Julie!")

Exercice : remplace les XXX dans le code ci-dessous pour qu’il corresponde à ce schéma. Si tu es bloqué-e, clique sur le bouton Voir la solution. Quand tu testes ton programme fais bien attention de respecter les majuscules et minuscules. Pour Python, les valeurs "julie" et "Julie" sont différentes.

Le résultat des instructions print() s'affichera ici.

Solution

name = input("Quel est ton nom?")

if name == "Elena":
    print("On se connaît")
    print("À bientôt!")
elif name == "Julie":
    print("Salut Julie!")

L’embranchement par défaut

Dans ton dernier programme, on a rien affiché si le nom n’était ni Julie ni Elena. On va maintenant créer un programme pour le schéma suivant :

Il s’agit du même schéma qu’avant, mais on a ajouté un embranchement à droite, qui est la situation « sinon », autrement dit si aucune des autres conditions n’a été remplie. Pour cela, il faut ajouter un embranchement else: dans ton programme. Essaie d’ajouter cet embranchement dans le programme ci-dessous !

Le résultat des instructions print() s'affichera ici.

Solution

name = input("Quel est ton nom?")

if name == "Elena":
    print("On se connaît")
    print("À bientôt!")
elif name == "Julie":
    print("Salut Julie!")
else:
    print("Merci d’utiliser mon programme!")

Et maintenant ?

Tu connais les concepts de fonctions, de variables et de conditions, indispensables pour programmer, et tu as écrit tes premiers programmes. Tu peux être fier-e de toi ! Ce que tu as fait peut te sembler basique, et tu te demandes probablement comment on peut faire des « vrais » programmes. La réponse se trouve principalement dans la bibliothèque standard de Python, qui est une collection de fonctions prêtes à l’emploi et qui permettent par exemple de manipuler des dates, d’interagir avec des bases de données ou avec des sites web.

Cet article n’est bien sûr pas exhaustif et il reste plusieurs concepts à connaître pour que tu puisses créer n’importe quel programme. La documentation officielle de Python propose un tutoriel qui va plus loin que cet article.

Si tu souhaites créer quelque chose de plus complexe qu’un programme qui affiche du texte, le tutoriel de Django Girls propose une introduction à la création de sites web.

Je te recommande aussi bien entendu la lecture de Génies du code, qui t’accompagnera dans la réalisation de ton premier site web ! Les deux premiers chapitres te permettront déja de créer ta première page web. Télécharge-les gratuitement !

J’espère que cette introduction t’a plu ! C’est plus ou moins ce que je présente dans des ateliers interactifs de découverte à la programmation. Sur ce, je m’en retourne à un programme lui aussi bien alléchant : ma confection de cookies.

À bientôt!

Tu veux en savoir plus ?

Génies du code est une méthode illustrée, adaptée à tous les niveaux, qui t'initiera à la programmation à travers la réalisation de ton propre site web de A à Z. Les deux premiers chapitres sont disponibles gratuitement dans leur intégralité !

Découvrir Génies du code

Et aussi, fais un tour sur les autres articles, tous plus intéressants les uns que les autres, en toute modestie.