Dans le siècle précédent, on considérait comme illettrés, les personnes qui ne savaient ni lire, ni écrire. Aujourd’hui, dans le monde numérique où nous vivons, il est admis que les illettrés de ce siècle sont ceux qui ne savent pas programmer. Pourquoi ? Simplement parce que les activités du numériques requièrent toutes un minimum de savoir-faire en programmation informatique, que ce soit pour développer une simple routine d’automatisation de tâche, ou pour écrire un script de planification d’exécution automatique de Job.

La programmation informatique est devenue dans le numérique ce qu’était l’écriture à l’époque industrielle. Vous souhaitez entamer une carrière en informatique ? Vous souhaiter vous orienter vers un métier relatif au traitement de données ? Alors « apprendre à coder » comme on dit généralement (même si ce n’est avoir un minimum de connaissance), n’est pas négociable pour vous !

Dans ce guide complet, nous allons vous apprendre les bases de la programmation informatique. En réalité, c’est l’article introductif d’une série d’articles exclusifs sur la programmation. Alors, accrochez-vous, prenez un café, un thé ou une pinã colada, car ça va être assez long !

Qu’est-ce que la programmation informatique ?

Commençons par les bases. Qu’entend t’on par programmation informatique ? De manière générale, la programmation informatique est l’une des étapes du cycle de vie de l’obtention d’un logiciel. De façon plus précise, c’est l’écriture de ce qu’on appelle le code source d’un programme. Le programme informatique lui-même étant l’ensemble d’instructions machine qui permettent de résoudre un problème ou une tâche spécifique. C’est l’ensemble de ces instructions qu’on qualifie de « code source », et c’est leur écriture qui représente ce qu’on entend par programmation informatique.

Donc lorsqu’on parle de programmation informatique, on fait référence à l’activité d’écriture d’instructions qui vont être interprétées par une machine pour exécuter une tâche ou pour résoudre un problème précis.

L’activité de programmation informatique fait elle-même partie d’un cycle de vie plus global dans le développement du logiciel. Il y’a d’autres activités en amont comme le recueil de besoin, la spécification fonctionnelle, et d’autres activités en aval comme la validation fonctionnelle, et les tests unitaires. C’est l’ensemble des étape du cycle de vie de l’obtention du programme qu’on qualifie d’ingénierie logicielle (ou de développement informatique).

Pour écrire un programme informatique (ou logiciel), on utilise un langage informatique. Nous allons revenir plus bas sur les langages informatiques…

Mais, pourquoi est-il nécessaire de développer des programmes informatiques ?

En fait, vous devez comprendre que tout appareil électronique, c’est-à-dire tout appareil capable de convertir le courant électrique en signal numérique a besoin d’un logiciel (autrement dit d’un programme informatique) pour fonctionner. Dit simplement, le logiciel est une façon à l’être humain de communiquer à l’appareil l’action qu’il veut que celui-ci exécute, et surtout la façon dont il veut que cette action soit effectuée. C’est au développeur de programmer la façon dont l’action en question sera effectuée grâce à un langage informatique.

En réalité, chaque bouton sur un appareil électronique comme un ordinateur, une machine à laver, un téléphone, déclenche un programme informatique qui dit à l’appareil la tâche qu’il doit effectuer et de quelle manière il doit l’effectuer. Donc quand on parle de programmation informatique, ne voyez pas forcément les gros logiciels de type Microsoft ou Oracle. Toute action que vous pouvez programmer et qui est déclenché à la suite d’un événement (comme un clic sur un bouton, un double-clic, une diction, etc.) est un programme informatique.

Dans la discipline informatique, on dit formellement qu’un appareil électronique est composée de 2 parties : le Hardware et le Software. Le Hardware est la partie physique de l’appareil, c’est la partie qu’on voit. Tandis que le Software est le logiciel, la partie invisible qui fait vivre le Hardware. On pourrait assimiler cela à l’être humain, composé d’une partie physique, le corps humain et d’une partie psychique invisible, l’esprit.

L’exécution d’une tâche dans tout matériel Tech (ordinateur, smartphone, smart TV ou même votre machine) passe par l’appel d’un programme qui y est intégré. Or, aujourd’hui, tout notre monde est basé sur l’ High Tech. C’est pourquoi il vous faut un minimum de connaissance en programmation informatique.

Les bases de la programmation informatique

Maintenant que les bases sont posées, passons au vif du sujet. Nous allons apprendre toutes les bases essentielles que vous devez connaître pour écrire un programme informatique.

Base #1 : le fonctionnement de l’ordinateur

Le premier élément que vous devez comprendre pour écrire un bon programme informatique c’est le fonctionnement de l’ordinateur. Formellement, un ordinateur (de l’anglais computer) est un appareil électro-mécanique programmable et capable de traiter de façon automatique les informations (ici il s’agit des signaux numériques, une suite binaire de 0 et 1).

Attention !! Lorsque nous parlons d’ordinateur ici, ne voyez pas seulement votre PC ou votre tablette, mais voyez tout appareil électronique (et programmable). Dans ce sens, un téléphone peut être considéré comme un ordinateur. Une Smart TV peut être considérée comme un ordinateur. Un véhicule High Tech peut également être considéré comme un ordinateur.

Pour développer de bons programmes informatiques, vous devez impérativement comprendre comment interagissent les différents composants au sein de l’ordinateur pour l’exécuter.

Un ordinateur est composé de 3 éléments de base :

  • Le processeur : encore appelé CPU (Central Processing Unit), c’est une puce électronique située sur la carte mère de l’appareil qui effectue tous les traitements adressés à l’appareil. Il est à l’appareil ce que le cerveau est pour les humains. C’est le centre névralgique de l’appareil. Cependant, fondamentalement, ce n’est qu’une calculatrice qui n’effectue que des opérations basiques (addition, soustraction et multiplication). C’est d’ailleurs à cause du CPU qu’on a baptisé l’ordinateur « computer », pour désigner justement cet aspect calculatrice. Le processeur va prendre en entrée les instructions d’un programme informatique, effectuer les calculs demandés et retourner un résultat, tout simplement.
  • Les mémoires centrales : ce sont la RAM et la ROM. La RAM, pour Random Access Memory – Mémoire à accès direct, est la mémoire vive de l’ordinateur. Elle emmagasine provisoirement les données lors de l’exécution de programmes. Pour faire simple, c’est dans la RAM que le microprocesseur vient lire, traiter et écrire les informations. Les programmes informatiques y sont enregistrés temporairement pour traitement par le microprocesseur. En général, c’est à la RAM que vous faites référence quand vous parlez de la mémoire de votre appareil. Physiquement, la RAM se présente sous forme de barrettes qui sont enfichées sur les slots mémoires de la carte mère de l’appareil. En dehors de la RAM, il y’a également la ROM (Read-Only Memory – Mémoire en lecture seule), qui n’intervient pas vraiment dans le processus d’exécution du programme informatique. Son but est de conserver des informations spécifiques de façon durable (par exemple, les paramètres de démarrage de l’appareil, ses caractéristiques, ses configurations par défaut, etc). La ROM est utilisé pour cet enregistrement parce que la RAM est une mémoire volatile, cela signifie qu’elle perd ses informations une fois hors électricité. C’est pourquoi c’est la ROM qui conserve ces informations sensibles.
  • Les périphériques d’entrée/sortie : ce sont les moyens qui permettent à la machine de communiquer avec l’extérieur. Ils peuvent être des dispositifs qui permettent de communiquer à l’ordinateur des informations (comme une souris, un scanner, un clavier), des dispositifs de sortie qui permettent de renvoyer à l’extérieur les résultats des traitements (l’écran, l’imprimante, etc).
fonctionnement d'un ordinateur et relation avec l'exécution d'un programme informatique
Figure : fonctionnement d’un ordinateur et relation avec l’exécution d’un programme informatique

Donc, lors de l’exécution d’un programme dans l’ordinateur, voici ce qui se passe :

  • Votre programme informatique, qui est persisté sur le disque dur, va être réquisitionné par le système d’exploitation
  • Ensuite, il va être enregistré de façon temporaire dans la mémoire RAM pour qu’il soit lu par le processeur
  • Le processeur va exécuter les instructions du programme
  • Et les résultats seront ensuite renvoyés à l’utilisateur

Comme vous venez de le voir, un ordinateur exécute une suite d’instructions. Vous vous doutez bien qu’un ordinateur ne comprend pas le langage humain. Parler un langage qu’il peut assimiler est donc la manière de lui demander d’exécuter ces instructions. Apprendre à coder revient donc à apprendre à écrire ces suites d’instructions grâce à un langage de programmation.

Base #2 : le paradigme de programmation

Le deuxième concept à comprendre pour écrire des programmes informatiques est la notion de paradigme de programmation.

Avant d’écrire un programme informatique, il faut savoir comment vous allez le structurer. Cela vous aidera plus tard à choisir le langage à adopter.

Le paradigme de programmation est ce choix de structuration. C’est à l’aide du paradigme que vous allez formuler la manière dont le programme s’exécutera. Le choix dépendra de ce que vous souhaitez développer, des problèmes auxquels le résultat que vous souhaiter obtenir vous confronte et de la finalité de chaque action.

Il existe plusieurs types de paradigmes de programmation :

  • La programmation impérative : consiste à écrire une suite d’instructions qui sert à modifier l’état d’un programme. Il existe deux sous-ensembles de ce paradigme : la programmation procédurale qui introduit la notion de procédure et la programmation structurée
  • La programmation déclarative : un type de programmation qui vise à supprimer tout effet de bord. C’est-à-dire que les fonctions ne changent pas d’état. Les types de programmation compris dans ce paradigme sont la programmation fonctionnelle, que l’on utilise justement dans le Big Data, et la programmation logique.
  • La programmation orientée objet : sans doute le plus utilisé en ce moment. Elle consiste à définir chaque problème en différents objets. Les objets possèdent des méthodes et des attributs. La programmation orientée prototype et la programmation orientée classe font partie de ce paradigme.

Base #3 : Les patrons de conception

Pour que vous comprenez l’importance des patrons de conception, prenons un exemple simple. Supposons que vous souhaitez confectionner une chemise. Pour ce faire, il vous faudra connaître la structure de cette dernière. Une chemise est composée de manches, de cols et du corps de la chemise. Avant de commencer à coudre, vous allez devoir dessiner un patron qui vous guidera. Vous pouvez par la suite confectionner autant de chemises que vous voulez. Vous choisissez des tissus différents, des couleurs différentes, des manches différentes, etc.

Les patrons de conception, ou plus communément appelés Design Pattern sont exactement pareils. C’est une stratégie à adopter afin de solutionner des problèmes récurrents dans la conception d’un logiciel. Ils sont en quelques sortes des techniques standards et réutilisables utilisés lors de la programmation informatique.

Il existe de multitude de Design Pattern. Il y a ceux des GoF (Gang of Four) et les patrons de conception GRASP. Il existe aussi d’autre Design Pattern autre que ceux mentionnés précédemment. Résumons ceux de GoF dans ce tableau.

Design pattern

Description

Factory

Créer une famille de classe possédant des méthodes communes

Adapter

Connecter une classe à une autre dont l’interface a changé

Bridge

Séparer les classes de définition à son implémentation

Builder

Séparer la construction d’un objet aux résultats de celui-ci..

Chain of responsibility

Traiter une instruction à l’aide d’une chaine d’objet

Command

Emboiter, paramétrer, mettre en attente et exécuter une demande

Composite

Implémenter une interface dans la création de plusieurs objets

Decorator

Implémenter une interface en ajoutant d’autres fonctionnalités aux objets créés

Facade

Créer des interfaces à partir d’une autre unifiée

Flyweight

Créer des objets plus petits à partir d’un autre

Interpreter

Créer un objet à partir d’un texte source

Iterator

Fournir les méthodes Next et Current

Mediator

Définir un moyen de communication avec des objets à partir d’un autre objet

Memento

Garder l’état d’un objet

Observer

Avertir d’autres objets d’un changement fait dans un autre

Prototype

Cloner une instance d’objet

Proxy

Agir à la place d’un autre objet

Singleton

Créer une seule instance d’un objet

State

Modifier le comportement d’un objet après un changement d’état

Strategy

Permettre aux algorithmes d’être changés sans impacter l’application

Template method

Permettre aux algorithmes d’être changés sans toucher à la structure de base.

Visitor

Changer une opération sans impacter l’objet

Ceux qui sont mis en gras sont les plus utilisés de nos jours.

En ce qui concerne les patrons de conception GRASP, ce sont ceux que l’on applique notamment dans la conception d’un programme orienté objet. Ils sont liés au patron de conception MVC (Modèle-Vue-Contrôleur) qui est sans doute le plus utilisé dans ce paradigme.

Base #4 : Les Frameworks

Un autre concept très important avec lequel vous devez être familier en programmation informatique c’est le framework. Un Framework est une base applicative composée de plusieurs bibliothèques. Utiliser des Frameworks est pertinent dans le sens où certaines structures sont déjà mises en place. Ces structures sont basées entre autres sur un langage défini, un patron de conception ou un paradigme de programmation.

L’avantage est que vous n’aurez plus à réinventer la roue. Une architecture est déjà prête. Ce qui facilite votre travail.

Plusieurs Frameworks existent, et ce pour tout type de langage de programmation. Par exemple, en Java, pour développer des microservices, il y’a le framework Spring Boot, pour le mapping objet/relationnel, il y’a le framework Hibernate, pour les tests unitaires, il y’a JUnit, etc. Pour les développeurs Python, il y a Django, Pyramid ou Bottle. En PHP, il y a Symfony, Laravel, CodeIgniter, etc. Pour les développeurs qui travaillent avec les produits Microsoft, il y’a le framework .NET. Même en Big Data on a des framework, comme Apache Spark, ou l’écosystème Hadoop pour le traitement massivement parallèle des données.

Aujourd’hui, maîtriser un Framework est primordial pour développer un logiciel. A la rigueur, vous n’êtes pas obligés de savoir utiliser les patrons de conception; par contre la maîtrise d’au moins un framework est indispensable !

Base #5 : l’algorithme

Bien évidemment, comme vous pouvez l’imaginer, l’algorithme est indispensable dans la programmation. Un algorithme est un ensemble d’instructions à suivre pour aboutir à un résultat.

En d’autres termes, c’est le plan que vous allez suivre lors de l’écriture des codes qui seront interprétés par la machine. L’algorithme est le raisonnement que vous appliquez pour résoudre un problème. C’est à la base de votre programme informatique.

Dans la suite de cette partie, nous allons voir comment construire un algorithme. Nous verrons aussi les différentes instructions comprises dans un algorithme et des exemples d’implémentation de ces derniers.

Base #6 : les librairies

Le mot exact pour désigner une librairie est une bibliothèque. Comme son nom l’indique, c’est un ensemble de fonctions déjà compilé et prêt à être utilisé dans un langage défini. Il vous donne les moyens d’exécuter une tâche sans que vous ne le codiez.

Pour utiliser une bibliothèque, il vous suffit de l’importer dans votre programme. Ces fichiers ont par exemple l’extension .dll, .ocx et bien d’autres encore. Le format diffère en fonction du langage.

Une fois importé, vous pourriez faire appel à ses fonctions. D’habitude, chaque fonction possède une description détaillée sur son utilisation.

Prenons par exemple ce programme en C :

#include <math.h>
void main(void) {
int a = 2 ;
int b = 3 ; 
double result = sqrt(a*b) ;
printf ("le résultat est : " + result) ;
}

Dans cette fonction, on fait appel à la bibliothèque « math.h » afin d’exécuter la racine carrée de a*b. Ce qui vous évite de coder une fonction racine carrée en plus dans votre programme.

Base #7 : les classes, les objets et les fonctions

La classe peut s’apparenter à un moule dans lequel on fabrique un objet. C’est surtout dans la programmation orientée objet que cette notion prend tout son sens. Elle regroupe les attributs et les méthodes qui vont constituer un objet.

Vous faites donc appel à une classe précise lorsque vous avez besoin de créer un objet possédant les attributs et les méthodes de celle-ci. C’est ce que l’on appelle l’instanciation d’une classe.

Voyions un exemple de classe, mais cette fois-ci, en C# :

programme informatique en c#

Dans le programme, on utilise une instance de la classe A dans la classe B pour effectuer une addition entre x et y. Ce qui veut dire que vous pouvez utiliser les méthodes d’une classe dans une autre sans aucun souci. Cliquez sur le lien suivant pour plus de détails sur la programmation orientée objet et les classes.

À l’issue de ce que vous venez de voir, on déduit l’objet. L’objet est le résultat de l’instanciation d’une classe. Dans l’exemple précédent, A1 est donc un objet de la classe A. Vous pouvez par la suite créer d’autres objets A2, A3, etc. grâce à la classe A.

Vous savez maintenant qu’un objet est une instanciation d’une classe. Et vous avez appris aussi que chaque classe contient des attributs et des méthodes. Et bien, les fonctions sont justement ces méthodes.

Une fonction permet d’exécuter les requêtes du programme à l’aide d’une suite d’instructions. Une fonction peut avoir un ou plusieurs paramètres. Il peut aussi ne pas en avoir. Il en va de même en ce qui concerne sa valeur de retour.

Pour écrire une fonction sans valeur de retour, vous utiliseriez par exemple le préfixe « void ». Et pour celles qui ont des valeurs, souvent c’est le type de la valeur qui sera mis en préfixe. Nous allons voir un peu plus bas les types qui existent en programmation informatique.

Base #8 : les variables et leur type

Pour stocker une donnée ou le résultat de vos opérations, il vous faudra un support. Ces supports ce sont des variables. Elle stocke temporairement ou définitivement les valeurs manipulées lors de l’exécution de votre programme. Ce qui lui confère le nom de variable, car son état peut être changé.

La déclaration d’une variable change selon le langage. Il y en a qui le précède du préfixe var et d’autres commencent par son type.

En parlant de type, chaque variable en possède un en particulier. Cela sert à identifier le domaine dans lequel il prend ses valeurs. Il existe plusieurs types de base (car il faut noter que vous pouvez créer vos propres types lors de l’écriture de vos programmes) :

  • Les types numériques : int, double, float, long, long int, byte. Les types monétaires et les dates font partie des types numériques.
  • Les types alphanumériques : char, string.
  • Le type booléen : bool.

Base #9 : les structures de données

Avant d’exécuter une instruction, vous devez récupérer les valeurs que vous allez utiliser lors de cette instruction. N’est ce pas ? Donc, où stocker ces valeurs exactement ?

Les structures de données servent justement à effectuer ce stockage entre autres. Mais cela ne se fait pas n’importe comment, il y a une classification précise établie lors de la création de la structure.

Il existe plusieurs types de structures de données comme par exemple, les listes et les tableaux que nous allons voir ci-après. Mais aussi, d’autres types plus ou moins complexes comme les graphes, les piles, les files, etc. Étant donné que vous serez amenés à utiliser ces structures de données systématiquement, nous allons voir plus en détail les plus importantes entre elles.

Les listes

Une liste est une collection ordonnées de données de même type. Sa définition et ses caractéristiques peuvent changer d’un langage à un autre. Par exemple, en programmation scala, une liste est une collection immutable de données de même type.

val list2:List[Int] = List(1,8,5,6,9,58,23,15,4)  
val names = List("joel", "ed", "chris", "maurice")
val nums = List.range(0, 10)

Les tableaux

Le principe d’un tableau est semblable à celui d’une liste. La différence est que le nombre de lignes est prédéfini. Vous pouvez créer un tableau avec plusieurs lignes et plusieurs colonnes, comme pour un tableau quelconque. Tout comme pour les listes, la définition et les caractéristiques du tableau varient en fonction du langage. En scala par exemple, un tableau est une collection ordonnée et mutables des valeurs de même type. Voici un exemple de déclaration de tableau, d’insertion et de lecture d’une valeur 

string [] tab = new string [3] ;
tab[0] = "toto" ; 
tab[1] = "tata" ; 
tab[2] = "titi" ; 
string res = tab[1] ; //renvoie "tata"

En ce qui concerne les tableaux à plusieurs dimensions, deux dans ce cas, voici comment cela se présente :

programmation informatique - tableau à 2 dimensions

Base #10 : les opérateurs

Les opérateurs en programmation informatique, comme ceux que vous pouvez retrouver en arithmétique, sont les symboles qui permettent d’effectuer des opérations. Mais en plus des fonctions que les opérateurs ont en mathématique, ceux qui sont utilisés en programmation peuvent agir sur tous les types de variables : booléennes, alphanumériques et numériques.

Les opérateurs peuvent être unaires, binaires et ternaires. C’est-à-dire qu’ils peuvent effectuer plusieurs opérations différentes en même temps.

Voyons quelques exemples d’opérateur :

  • « + », « – », « x » et « / » ont une fonction semblable à ceux que l’on a retrouvés depuis notre enfance ;
  • Pour la division euclidienne avec reste, vous avez « % » ;
  • Pour incrémenter ou décrémenter une valeur, il y a « ++ » et « — » ;
  • Pour affecter une valeur à un variable ou pour le résultat d’une opération ou encore pour déterminer si deux ou plusieurs valeurs sont égales, vous utiliserez soit « : = », soit « == » soit « = » ;
  • Pour exprimer une différentiation, vous utiliseriez « != » ;
  • Pour exprimer une supériorité vous avez « > » ou « >= » et pour l’infériorité, c’est « < » et « <= » ;
  • Les opérateurs booléens sont : « && » (et), « || » (ou), et « ! » (non) ;
  • Les opérateurs logiques sont : « & » (et), « | » (ou), « ~ » (non) et « ^ » (NOR ou en français « ou exclusif »).

Après il faut quand même noter que la signification des opérateurs varient fortement en fonction du langage de programmation. Illustrons les opérateurs avec des exemples en Java.

public int exemple (int a, int b) {
    int c = 0 ; 
   c = a + b ; 
   return c ;
}

Ici, on effectue l’addition de a et b pour affecter le résultat dans c. On utilise donc l’opérateur « + » pour l’addition et « = » pour l’affectation.

public int exemple (int a, int b) {
    int c = 0 ; 
    if (a != 0 && b != 0) {
        c = a + b ;
    }
   return c ;
}

Comme pour l’exemple précédent, on fait toujours « a + b », mais cette fois-ci on soumet les deux variables à une condition. On teste si leur valeur est différente de 0 avec l’opérateur « != » en séparant les deux conditions avec l’opérateur « && ».

public int exemple (int a, int b) {
    int c = 0 ; 
    c = b == 0 ? a : a + b ;
   return c ;
}

Cette fois-ci, on vérifie si b est égal à 0. Pour cela, nous utilisons l’opérateur ternaire « ?: » pour soumettre la condition. Donc cette expression veut dire : si b = 0, c = a, sinon c = a + b.

Les opérateurs nous permettent d’introduire directement la suite de l’article, à savoir les conditions.

Base #11 : les instructions conditionnelles et itératives

Ce sont des instructions qui vous permettent d’indiquer des conditions, des embranchement d’exécution et des itérations (ou boucles). Vous allez systématiquement les utiliser dans vos programmes informatiques.

Les conditions

Une condition permet de vérifier si une affirmation est vraie ou fausse, comme son nom l’indique. Cela sert à évaluer l’instruction qui doit être exécutée. En algorithme voici comment c’est illustré :

embranchement conditionnelle en programmation informatique

Vous voyez qu’il y a deux branches pour l’exécution du programme. Une instruction à exécuter si la condition est vraie et une autre différente si c’est le contraire. Chaque valeur de retour possède un bloc d’instructions que le programme va exécuter.

Toutefois, pendant votre parcours, vous serez amené à voir une condition sans pour autant donner une instruction lorsque l’affirmation est fausse. C’est le cas de notre exemple dans la section opérateur. Mais pour une condition complète voici comme ça s’écrit :

code d'une instruction conditionnelle

Vous pourriez aussi apercevoir des formes de condition imbriquées. C’est-à-dire une suite de conditions qui émettra des instructions selon leurs résultats.

condition imbriquée algorithme

Les boucles

Encore appelé instructions itératives, ce sont des instructions qui vont le plus souvent s’exercer sur les structures de données (le plus souvent les tableaux et les listes). Elles permettent de les parcourir, effectuer des opérations sur elles et changer leurs valeurs.

L’utilisation des boucles est également adaptée lorsque vous souhaitez manipuler les suites de données ou itérer un ensemble d’instructions un nombre fois précis ou selon une condition.

Il existe plusieurs types de boucles que nous allons voir tout de suite.

La boucle For

C’est la boucle idéale lorsque vous souhaitez parcourir un tableau. Il va récupérer les valeurs de celui-ci selon l’ordre que vous avez indiqué dans la déclaration de la boucle. Cette boucle permet aussi d’itérer sur une instruction un nombre précis de fois. Ce que vous voyez ci-dessous est l’algorithme de base d’une boucle.

boucle For

Et voici comment cela s’écrit en code. Veuillez toujours vous rappeler que c’est juste un exemple de manière de coder. La syntaxe peut changer selon les langages.

public void exemple () {
        for (int i=0, i<=10, i++) {
              int result = i ;
              console.writeline(result.toString()) ;
         }
}

Dans ce bout de code, le résultat affichera un chiffre à partir de 0 et jusqu’à ce que i atteigne 10.

La boucle ForEach

En ce qui concerne foreach, elle est plutôt utilisée sur une liste. Rien ne vous empêche toutefois de l’utiliser sur un tableau. Comme la boucle for, elle parcourt aussi le contenu de la liste.

En algorithme, cela donne ce que nous voyons en bas :

boucle foreach

Elle va donc parcourir la liste et à chaque valeur, exécuter des instructions. Une fois que la liste est vide, le programme se poursuit. Vous pouvez donc déduire qu’elle décrémente la liste à chaque appel. Voici un exemple de code de foreach :

public void exemple (List <int> list) {
      int result ;
      foreach (int i in list) {
          result = i ;
          Console.writeline(result.toString()) ;
     }
}

La boucle While

Jusqu’ici, nous avons vu des itérateurs conditionnels, c’est-à-dire des boucles qui exécutent des instructions uniquement si une condition est respectée. Ce qui n’est pas le cas de la boucle while. En effet, celle-ci demande la condition après l’exécution des instructions. Et si la condition n’est pas respectée, la boucle recommence. Les instructions seront donc exécutées au moins une fois.

Toutefois, vous pouvez également l’utiliser comme les autres boucles. C’est-à-dire au début de l’instruction.

Voici comment l’algorithme se présente :

boucle While()

Et voici un exemple d’implémentation :

public void exemple (List <int> list) {
       int result ; 
       while (i < 10) {
             result = i ; 
             console.writeline(result.toString () ) ;
       }
}

Ce que nous voyons ci-dessus est un exemple où la boucle while agit comme les autres boucles. L’exemple de code ci-après illustre son implémentation lorsqu’elle est utilisée à la fin de l’instruction :

boucle while 2 ème cas d'utilisation
public void exemple (List <int> list) {
       int result ; 
       do {
              result = i ;
              console.writeline (result.toString() ) ;
             i++
        }
       while  (i < 10) ;
}

Vous remarquez sans doute qu’un préfixe do s’ajoute à l’appel de la boucle. C’est lui qui ordonnera au programme d’exécuter les instructions.

Encore une fois, prenez ces exemples de code avec des pincettes, car l’utilisation et la spécification de chaque boucle varie en fonction du langage de programmation.

Base #12 : la connexion à une base de données

Pour certains programmes informatiques, l’accès aux données ne se fait que par les structures de données que vous avez vues un peu plus haut. Mais pour d’autres, notamment les sites web, il vous faut d’autres moyens de stockage. C’est là qu’entrent en jeu les bases de données.

Comme vous l’aurez compris tout au long de cette article, apprendre à coder ou à développer des programmes informatiques va impliquer que vous travailler énormément avec les données.

Les bases de données sont incontournable dans la programmation informatique. C’est pourquoi l’une des bases du domaine consiste à savoir comment travailler avec les bases de données depuis votre langage de programmation.

Le sujet des bases de données est très vaste et tout le monde sait au moins intuitivement ce que c’est. Ce que vous devez savoir à ce stade c’est qu’il existe plusieurs types de bases de données : les bases de données dites SQL (comme Oracle, SQL Server, MySQL), les bases de données dites NewSQL, et les bases dites NoSQL comme Cassandra, HBase.

Pour accéder aux bases de données en général, il faut établir la connexion avec un protocole de données compatible avec le SGBD qui l’héberge. Le protocole de données le plus répandu c’est l’ODBC. Les informations qui vous seront demandées lors de la connexion sont en général :

  • L’adresse du serveur sur lequel elle est stockée
  • Les informations de connexion à la base et au serveur
  • Le nom de la base de données
  • Les informations d’authentification

Une fois que vous avez établi la connexion avec le SGBD, il vous faut maîtriser l’API ou le Framework offert par votre langage pour manipuler le SGBD en question. Par exemple, chez Microsoft l’API en question sera ADO.NET.

Voici un exemple de connexion à une base de données :

public static MySqlConnection ConnectionDB (string host, int port, string database, string username, string password)
           String connString = "Server=" + host + "; Database=" + database + "; port=" + port + "; UserId=" + username + "; password=" + password ; 
          MySqlConnection conn = new MySqlConnection (connString) ; 
          return conn ; 

Les outils et logiciels nécessaires pour programmer

A ce stade, vous avez les bases requises pour pouvoir créer votre propre programme informatique. Mais pour pouvoir effectivement coder, vous avez besoin d’outils et de logiciels spécifiques. C’est ce que nous allons voir dans cette section.

outil #1 : le langage de programmation

Le premier outil dont vous avez besoin pour programmer va de soi : c’est le langage de programmation. Pour comprendre ce que c’est, il faut comprendre l’algorithme.

Vous vous souvenez que le langage de description utilisé pour écrire le
résultat de l’analyse d’un problème est appelé algorithme. Lorsqu’on traduit cet algorithme dans un langage, on est en train de coder.

Du coup, un langage de programmation est un langage de communication intermédiaire entre l’humain et la machine, qui permet d’écrire dans un langage compréhensible par la machine, l’ensemble d’opérations que l’ordinateur doit effectuer.

Il existe une multitude de langages en fonction du paradigme de programmation et de la catégorie de problématique que vous souhaitez résoudre. Pour mieux choisir parmi cette pléthore de langages, vous devez vous demander ce que vous souhaitez faire. Quel genre de programme informatique voulez-vous créer ? En fonction de la réponse que vous allez fournir, vous devriez adapter votre choix de langage.

Voici quelques exemples de langage classés selon leur paradigme de programmation :

Paradigme de programmation

Langage de programmation

Programmation procédurale

PHP (version inférieure à 4), Fortran, C, Perl, PL/SQL, etc.

Programmation structurée

Fortran, C, Pascal, etc.

Programmation fonctionnelle

Scala, Ocaml, Haskell, Erlang, etc.

Programmation logique

Prolog, Python, Oz, etc.

Programmation orientée objet

Java, C#, PHP (au-delà de la version 4), Ruby, VB.Net, Python, etc.

Vous pouvez constater qu’il y a certains langages qui reviennent sur une autre ligne. En effet, il existe des langages qui supportent plusieurs paradigmes, comme nous l’avons mentionné dans la section du paradigme de programmation. Ce qui vous permettra de faire toute sorte de programmes sur un même langage. En Big Data et sur toutes les problématiques qui concernent le traitement de la data en général, les 03 langages les plus utilisés sont : Java, Scala et Python.

Outil #2 : l’Environnement de Développement Intégré (IDE)

Après le langage de programmation, vous avez besoin d’un autre outil fondamental : l’environnement de développement intégré, en abrégé IDE (Integrated Development Environment).

L’IDE est une plateforme qui rassemble dans une seule interface graphique les outils dont vous avez besoin pour l’intégralité du cycle de vie du développement de votre logiciel. Vous y retrouverez à l’intérieur les éléments suivants :

  • un éditeur de texte : pour rédiger votre programme dans le langage que vous avez choisi
  • un debugger : un outil pour examiner les bugs qui surviennent dans votre programme
  • l’autocomplétion : qui propose automatiquement les instructions du langage de sorte que vous n’ayez plus à les saisir complètement à chaque fois.
  • Un outil de build : pour compiler votre application et générer son package déployable
  • un outil de versioning comme Git pour la gestion des versions de votre code et la collaboration avec les autres membres de l’équipe

L’utilisation d’un IDE n’est pas obligatoire pour développer des applications, mais je vous recommande fortement son utilisation, car ils vous faciliteront le travail. Il existe plusieurs IDE et chacun d’entre eux est souvent spécifique à un ou plusieurs langages :

  • Pour Java et Scala : Eclipse, IntelliJ, Netbeans, etc. ;
  • Pour PHP : Netbeans, Zend Studio, etc. ;
  • Pour les langages .Net : Visual Studio ;
  • Pour Python : Jupyter

Personnellement, en Big Data j’ai une forte préférence pour IntelliJ.

Le cycle de vie d’un programme informatique

Vous êtes presque arrivé au bout de ce guide. Pour terminer, il est indispensable que vous sachiez comment est fabriqué un programme informatique. Autrement dit, les différentes étapes qui entre dans le développement d’un logiciel de sa conception sur une feuille blanche à son déploiement sur un ordinateur par des utilisateurs. On appelle cela formellement le cycle de vie du programme informatique. Nous en avions parlé un peu dans les sections précédentes, mais il est important pour bien démarrer de comprendre ces différentes étapes.

Avant d’entrer dans le cycle de vie proprement dit, il est important que vous sachiez qu’il existe plusieurs types de programmes en fonction de leur utilité. Ce type dépend pour une part du support sur lequel vous souhaitez le déployer. Par exemple, lorsque vous développer une application qui va tourner sur Internet, on parle de site web ou d’application web. Pour une application à usage local sur un PC, on parle d’application desktop. Pour une application à usage local sur un téléphone, on parle d’app mobile. Si c’est une application qui sert des ressources à d’autres applications, on parle de backend. Si au contraire ce sont des applications qui vont demander une ressource, on parle d’application cliente ou client. Si c’est une application en intermédiaire entre un client et un backend, on parle de middleware. Il existe aussi des programmes destinés à être utilisés par d’autres application par incorporation de cette dernière. Ce sont justement des API, des bibliothèques ou des extensions.

Le cycle de vie peut légèrement varier en fonction du type d’application, mais globalement voici les phases de développement d’un programme informatique :

  • L’implémentation : c’est la phase d’écriture du code. C’est pendant cette phase qu’on applique toutes les bases que vous vues précédemment.
  • Le Débogage : c’est une étape dans laquelle vous allez sans doute passer beaucoup de temps. En effet, les bugs peuvent toujours survenir, même avec ceux qui sont très expérimentés. Il s’agit ici de corriger les erreurs de code. Pour se faire, il vous faut identifier d’où provient l’erreur, puis la corriger.
  • L’interprétation : le rôle de l’interprétation est similaire à celui de la compilation. Elle a pour but d’interpréter le code en langage machine, car il y’a des langages qui sont interprétés comme le Python ou le VBA, et il y’a d’autres qui sont compilés. A la différence d’un compilateur, un interpréteur lit les lignes de codes une à une.
  • la compilation : à ce stade, vous savez qu’un ordinateur ne peut pas comprendre le langage humain. D’ailleurs, il ne comprend pas les langages de programmation non plus. La compilation est la phase où le code que l’on a écrit dans le langage de programmation est transformé en langage machine par un logiciel particulier appelé compilateur. Avant que le compilateur traduise les codes, il va procéder à une vérification et signalera tout erreur dans la syntaxe ou dans la structure du code qui lui a été soumis.
  • les tests : une fois votre programme compilé ou interprété, vous devez absolument le tester. Plusieurs types de tests doivent être faits avant de lancer une application ou un logiciel en mode réel. Il y’a des tests unitaires, qui consistent à tester le programme fonction par fonction, les tests d’intégration dans lesquels on teste un module du programme et son intégration avec les autres modules du programme, les tests système où tout le système sera soumis à une vague de test pour mesurer son niveau de conformité, et les tests d’acceptation qui sont une suite des tests système dans la vérification de la conformité du programme. Lors de l’exécution de ces tests, tout ce qui a été fait doit être consigné dans un cahier de tests.

Bonne pratique en programmation informatique

Nous allons terminé ce guide complet sur quelques notes en matière de bonnes pratiques en programmation. Pour bien programmer voici quelques conseils que nous pouvons vous donner :

  • Soyez curieux, ne prenez rien pour acquis, car les programmes informatiques sont d’abord et avant tout le résultat de la pensée humaine. Cela signifie que le même programme peut être développé différemment en fonction des développeurs. Un esprit de curiosité est indispensable pour copier les meilleurs stratégies algorithmiques et améliorer vos programmes.
  • Restez à l’affut des nouvelles tendances dans le domaine et apprenez continuellement, car en IT, les choses bougent énormément. Il est dit qu’en moyenne, les technologies évoluent sur un cycle de 6 mois. Il vous faudra donc être en veille perpétuelle pour être au top.
  • Cherchez et adoptez un style : il y’a mille et une façon de développer un programme en informatique. Ce n’est pas la peine d’essayer de maîtriser tous ces procédés. Ce qu’il faut faire c’est maîtriser le procédé qui correspond à votre personnalité et à votre façon de voir les choses, ensuite le corriger au fur et à mesure de votre progression dans vos compétences.

Voilà ! Nous sommes arrivés au terme de ce guide très complet sur la programmation informatique. Nous espérons qu’il vous aidera à bien démarrer dans le monde de la programmation informatique. Maintenant, il ne vous reste plus qu’à appliquer ce que vous avez appris. Si vous souhaitez aller plus loin, lisez les autres articles de la série et télécharger cette formation d’une heure sur Scala.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

  • Bachir dit :

    I’m very glad for this article, thanks very much

  • Ranaivo dit :

    Bonjour,
    C’est un bon guide cet article. Il montre un long chemin à faire pour ceux qui veulent savoir programmer, mais je trouve que c’est très éclairant.
    Merci

    • Juvénal JVC dit :

      Merci beaucoup pour ce commentaire positif Ranaivo ! 🙂
      Juvénal

  • Mawist dit :

    Merci pour ce guide ! Il y a juste une chose qui m’interpelle, pour moi la notion de cycle de vie est réservée à l’API de composition dans le cadre de programmation orientée objet. Mais je fais peut-être du zèle, c’était peut-être une façon de parler dans votre guide.
    En tout cas, merci à vous !

    • Juvénal JVC dit :

      Merci pour votre contribution.
      Bonne journée à vous et merci encore,
      Juvénal

  • Baptiste Dumoulin dit :

    merci cela ma permis d y voir plus claire

  • >