Cours programmation


Introduction

De nos jours, tout le monde est détenteur d’un ordinateur, qu’il l’utilise pour une ou plusieurs finalités. Ce dispositif intelligent a pour mission de traiter les données sous le contrôle d’un programme informatique.

Un programme, également appelé application ou logiciel, désigne une séquence d’instructions exécutées par l’ordinateur. Lors de cette exécution, le programme traite des données en entrée pour finir avec des données en sortie sous le format souhaité.


Ces programmes sont écrits avec un langage de programmation (par exemple : C, C++, JAVA, Python, etc.). Ces langages se divisent en trois types, des langages de ‘’haut niveau’’ qui sont presque des langages humains, d’autres de “bas niveau” ou encore appelés les langages machine, qui sont moins compréhensibles par l’humain mais plus simples pour un ordinateur. Et entre ces deux types, on trouve les langages d’assemblage également baptisés ‘’code machine symbolique’’. Le langage d’assemblage est particulièrement spécifique à l’architecture informatique.

Vous allez surement vous demander comment une machine puisse comprendre ce que vous voulez vraiment d’elle ! C’est simple, lorsqu’on écrit un programme avec un langage donné, il y a un autre programme intermédiaire qui traduit à la machine ce qu’on veut en utilisant le langage comprit réellement par la machine, on parle ici du binaire (les fameuses suites de 0 et 1). Ce programme intermédiaire diffère d’un langage à un autre, mais le principe reste le même. On distingue donc deux catégories de langages de programmation : des langages compilés et des langages interprétés. La différence entre ces deux programmes se résume dans le fait que le premier traduit une bonne fois pour toute notre code en un fichier indépendant exécutable, tandis que le deuxième interprète notre code à chaque exécution.

Si vous avez bien suivi, vous devez comprendre qu’un langage de programmation est un outil de communication entre l’humain et l’ordinateur. Autrement dit, par le biais d’un langage de programmation, on explique à l’ordinateur ce qu’on veut de lui, et il s’en occupe du reste. Donc si vous avez toujours rêvé de réaliser une application que ce soit web ou mobile, n’attendez pas et apprenez à parler aux ordinateurs et le tour est joué… Génial ! n’est-ce pas ?

Objectifs

Si vous êtes un amateur de voyage et devriez aller en chine, par exemple, vous devrez absolument apprendre la langue chinoise afin de pouvoir communiquer aux habitants de ce pays. C’est en effet quasiment la même chose si vous voulez vous faire plaisir à créer les applications de vos rêves, sauf que les langages de programmation sont plus faciles à apprendre que le chinois.

Dans cette rubrique de « cours de programmation », nous vous présenterons dans un premier temps la base de la programmation qui s’articule principalement autour de l’algorithmique qui est la logique globale de tout programme. Nous vous aiderons également à comprendre les principes fondamentaux de la programmation et des langages de programmation les plus populaires et les plus utilisés, de la manière la plus simple et la plus efficace. L’objectif principal est de vous familiariser avec les langages de programmation si vous êtes encore débutant, mais aussi vous faire passer à des niveaux plus avancés jusqu’à l’expertise. Et ce, en vous proposant des cours et des tutoriels qui vous faciliteront l’apprentissage, ainsi que des exercices et des travaux pratiques pour mieux avancer dans la programmation et en faire bonne carrière.

Débouchés

Apprendre à programmer ne vous permettra pas seulement de réaliser les applications dont vous avez tout le temps rêvé, mais aussi d’intégrer le monde professionnel de ses plus grandes portes. Les développeurs ou encore les programmeurs sont de plus en plus demandés sur le marché de travail vu la direction suivie par presque tous les domaines. Il s’agit bien de la voie de la transformation digitale ou encore la digitalisation, qui signifie le passage de la gestion avec des outils traditionnels aux outils et programmes informatiques.

“Développeur” n’est pas le seul métier à espérer dans le domaine de l’IT (Technologie de l’information), il existe bien d’autres métiers tel qu’un chef de projet IT, architecte logiciel, responsable SEO, spécialiste Big Data, responsable de sécurité,etc. Faire partie de la famille IT ne vous garantit pas uniquement d’avoir un métier d’avenir mais aussi des avantages tels que le travail en remote (à distance), le freelance (travail libre), etc.

Les numéros binaires

Les ordinateurs et presque tous les appareils informatiques utilisent le système de numération binaire dans leur fonctionnement. Ce système comprend seulement deux nombres, 1 et 0. Chacun d'eux est appelé un bit. Tous les programmes informatiques peuvent être simplifiés jusqu'à ce système. En fait, le système binaire joue un rôle clé dans la façon dont les ordinateurs stockent des informations et des données de toutes sortes.

Au niveau fondamental, les ordinateurs passent simplement de 1 à 0 pour toutes leurs fonctions, aussi simples ou complexes soient-elles. Toutes les données, y compris le texte et les images, sont stockées dans l'ordinateur sous la forme d'une série de 1 et 0s. En effet, les ordinateurs sont des circuits électriques. Dans un circuit, un courant électrique. Par conséquent, l'état peut être défini comme un 1 ou un 0.

Une fois que vous aurez compris ce concept, vous comprendrez pourquoi le système binaire est un ordinateur de base. Dans tous les programmes et situations informatiques, un problème peut toujours être simplifié jusqu'à un choix binaire. En tant que tel, tous les ordinateurs traitent l'information en utilisant le système binaire.

Qu'est-ce qu'un programme?

Laissez-nous d'abord analyser la fonction d'un ordinateur. Sa fonction principale est de résoudre un problème. Maintenant, comment le résoudre? Il le fait avec l'aide d'un programme. Les programmes informatiques sont des séquences d'instructions qui exécutent une tâche spécifique lorsqu'elles sont exécutées par l'ordinateur.
Peu importe ce que l'ordinateur est, il restera complètement inutile, il a le bon ensemble de programmes. Si vous lisez ce livre sur un appareil informatique, c'est uniquement parce que l'appareil dispose d'un programme qui lui permet de le faire.
Qu'est-ce qu'un langage de programmation?
Comme son nom l'indique, un langage de programmation est un langage spécialisé utilisé pour la programmation.
 
Maintenant, il existe un langage de programmation natif que tous les ordinateurs ont et comprennent. C'est ce qu'on appelle un code machine. Malheureusement, le code machine peut être extrêmement difficile à comprendre. Entre autres choses, le code machine est presque toujours exprimé dans le système binaire. De plus, le code machine est unique à l'architecture informatique spécifique. Par conséquent, deux ordinateurs peuvent utiliser deux variantes de code machine.

Par conséquent, vous avez besoin d'un moyen de communiquer avec les ordinateurs. C'est pourquoi d'autres langages de programmation existent. Ils agissent comme une interface entre les gens et l'ordinateur. Avec eux, les programmes peuvent être exprimés dans des langues qui peuvent être facilement comprises par les gens. Dans le même temps, le langage sera commun aux différentes architectures informatiques. Plus important encore, les programmes peuvent être traduits en code machine facilement.
Pour s'assurer que cela se produise, un ordinateur doit interpréter ou compiler le programme écrit dans un langage de programmation afin que le programme soit exécuté. Vous devez comprendre la compilation et l'interprétation en ce qui concerne la programmation informatique.

Pour un programme compilé, un compilateur doit être utilisé afin que le programme puisse être traduit en code machine pour l'ordinateur à utiliser. Cependant, le code source ne sera pas exécuté par l'ordinateur dans le cas d'un programme interprété. Au lieu de cela, un interprète lit chaque ligne du programme pendant son exécution et la modifie dans le code machine. Une fois modifié, l'ordinateur exécute cette ligne du programme.
Les langages de programmation peuvent utiliser l'une de ces approches ou les deux. Chacun d'entre eux a ses propres avantages en matière de programmation et de développement de logiciels. Généralement, les programmes compilés peuvent prendre plus de temps à se développer, mais ils peuvent fonctionner plus rapidement. Après tout, l'ordinateur exécutera un programme qui a déjà été traduit. Les programmes interprétés prennent plus de temps à être exécutés car ils doivent être traduits chaque fois qu'ils sont exécutés. Cependant, ils peuvent être écrits plus rapidement car les langages sont généralement plus simples. En même temps, le programme entier ne sera pas compilé après chaque modification ou test de bogue.

Les concepts de base des langages de programmation

Malgré leur multitude, la plupart des langages de programmation se basent sur un bon nombre de principes fondamentaux communs.

Certains découlent immédiatement de la nature même de l'ordinateur et de l'existence d'un programme de traduction. C'est, par exemple, le cas de la notion de variable que nous avons rencontrée sans la nommer : elle consiste à donner un nom à un emplacement de la mémoire destiné à contenir une information ; elle est donc liée à la fois à la notion technologique d'adresse et à l'existence d'un compilateur. Nous verrons que le besoin de traduire un programme en langage évolué nécessitera de définir la notion de type d'une variable, type qui sert à définir la manière dont doit s'opérer le codage des valeurs correspondantes.

De même, tout langage possède :

  • des instructions dites d'affectation : elles permettent de calculer la valeur d'une expression et de la ranger dans une variable ;
  • des instructions permettant d'échanger des informations entre la mémoire et des périphériques (qu'ils soient de communication ou d'archivage) ; on parle d'instructions :
    - de lecture, lorsque l'échange a lieu du périphérique vers la mémoire ;
    - d'écriture, lorsque l'échange a lieu de la mémoire vers le périphérique.

D'autres concepts, plus théoriques, ont été inventés par l'homme pour faciliter l'activité de programmation. C'est notamment le cas de ce que l'on nomme les structures de contrôle, les structures de données, les fonctions (ou procédures) et, plus récemment, les objets.

Les structures de contrôle servent à préciser comment doivent s'enchaîner les instructions d'un programme. En particulier, elles permettent d'exprimer les répétitions et les choix que nous avons déjà mentionnés : on parle alors de structure de choix ou de structure de répétition. Bien entendu, au bout du compte, après traduction du programme, ces structures se ramènent à des instructions machine et elles font finalement intervenir des instructions de branchement.

Les structures de données (attention, ici, le mot donnée est employé au sens général d'information) servent à mieux représenter les informations qui doivent être manipulées par un programme. C'est le cas de la notion de tableau dans laquelle un seul nom permet de désigner une liste ordonnée de valeurs, chaque valeur étant repérée par un numéro nommé indice.

Bien entendu, là encore, au bout du compte, à chaque valeur correspondra un emplacement défini par son adresse.

La fonction (ou procédure) permet de donner un nom à un ensemble d'instructions qu'il devient possible d'utiliser à volonté, sans avoir à les écrire plusieurs fois. Comme dans le cas d'une fonction mathématique, ces instructions peuvent être paramétrées, de façon à pouvoir être utilisées à différentes reprises avec des variables différentes, nommées paramètres. Le bon usage des fonctions permet de structurer un programme en le décomposant en différentes unités relativement indépendantes.

La programmation orientée objet

Les notions d'objet et de classe sont les piliers de la programmation orientée objet. Un même objet regroupe, à la fois des données et des fonctions (nommées alors méthodes) ; seules ces méthodes sont habilitées à accéder aux données de l'objet concerné. La classe généralise aux objets la notion de type des variables. Elle définit les caractéristiques d'objets disposant de la même structure de données et des mêmes méthodes. Cette notion de classe offre une nouvelle possibilité de décomposition et de structuration des programmes.

Généralement, en programmation orientée objet, soit on définit une classe que l'on pourra utiliser ensuite pour créer un ou plusieurs objets de cette classe, soit on utilise des classes existantes (fournies avec le langage ou créées par vous-même ou par d'autres programmeurs). On retrouve là encore quelque chose de comparable à ce qui se passait avec les fonctions.

L'un des éléments majeurs de la POO est qu'une classe peut tout à fait modifier son implémentation, sans que ceci n'ait de conséquences sur son utilisation (à condition, bien sûr de respecter le contrat !).

Elle sera complétée par les notions :

  • Héritage : possibilité d'exploiter une classe existante en lui ajoutant de nouvelles fonctionnalités) ; Le concept d'héritage constitue l'un des fondements de la programmation orientée objet. Il va permettre de « réutiliser » les « composants logiciels » que sont les classes, en offrant la possibilité de définir une nouvelle classe, dite classe dérivée, à partir d'une classe existante dite classe de base. Cette nouvelle classe « hérite » d'emblée des fonctionnalités de la classe de base (attributs et méthodes) qu'elle pourra modifier ou compléter à volonté, sans qu'il soit nécessaire de remettre en question la classe de base.
  • Polymorphisme : possibilité de s'adresser à un objet sans en connaître exactement la nature, en le laissant adapter son comportement à sa nature véritable. Le polymorphisme est un concept très puissant de la POO qui complète l'héritage. Il permet de mani- puler des objets sans en connaître (tout à fait) le type.

La programmation procédurale / structurée

On parle généralement de langage procédural pour qualifier un langage disposant de la notion de procédure (fonction), ce qui est le cas de tous les langages actuels. On parle souvent delangage objet pour qualifier un langage qui, en plus de l'aspect procédural, dispose de possibilités orientées objets. En toute rigueur, certains langages objet ne disposent pas de la fonction « usuelle », les seules fonctions existantes étant les méthodes des objets. De tels langages sont souvent qualifiés de totalement orientés objets. Ils sont cependant assez rares et, de toute façon, en dehors de cette différence, ils utilisent les mêmes concepts fondamentaux que les autres langages. Les autres langages objet permettent de faire cohabiter la décomposition procédurale avec la décomposition objet.

Ce que nous avons nommé « programmation procédurale », basée sur l'utilisation des procédures et des structures fondamentales (choix et répétitions), s'est aussi appelé
« programmation structurée ». Avant la généralisation de ce type de programmation, certains langages utilisaient des instructions de branchement conditionnel ou inconditionnel, désignés souvent par goto.

Programmation concurrente

Programmation impérative
Programmation déclarative

Programmation fonctionnelle

La programmation fonctionnelle est fondée sur la notion classique de fonction. Qu'est-ce à dire? Au sens mathématique du terme, une fonction est une relation entre deux ensembles de valeurs, le domaine source et le domaine but, et cela avec une contrainte : une unique valeur du but est associée à chaque valeur de la source.

Du point de vue de la programmation, la caractéristique principale d'une  fonction est de posséder un comportement stable : puisqu'à toute valeur du domaine source correspond une unique valeur du domaine but, le calcul d'une fonction ne dépend pas d'un état local ou global. Ce calcul ne dépend que de ses arguments. Au contraire, une opération qui est soumise à des variables globales, ou une opération qui permet d'agir sur un périphérique ne sont généralement pas des fonctions. Leurs résultats et leurs effets sont liés à l'état de leur environnement.

Par exemple, voici le cas d'une opération simple, implémentée en langage C :

int i = 0;
int f(int j) {
i = i + j;
return i;
}

L'opération f ne définit pas ici une fonction : ses résultats ne dépendent pas  seulement de son paramètre j, mais également de l'état de la variable globale i. De plus, f agit directement sur cette variable qui doit donc exister indépendamment. Cette opération est caractéristique de la programmation dite impérative. Elle représente une part des comportements qu'évite la programmation fonctionnelle.

L'idée principale de la programmation fonctionnelle : Faire en sorte que la  plupart des calculs d'un programme soient effectués au moyen de fonctions au sens mathématique du terme.

Mettre ainsi la notion de fonction au centre de la programmation induit quatre caractéristiques :

  1. Une simplification des conditions de développement des programmes.
  2. Des formalismes sous-jacents aux langages et aux programmes..
  3. Des fonctions avec le même statut que les autres valeurs.
  4. Une restriction des constructions à la disposition du programmeur.

Conseils pour la programmation

Lorsque vous programmez, vous apprendrez beaucoup de choses nouvelles. En tant que tel, les choses peuvent devenir confuses très rapidement, sauf si vous pouvez garder une trace. Dans de nombreux cas, les apprenants oublient même quelques principes de base sur la programmation. Souvenez-vous de ces détails pour vous assurer que vous ne vous sentez pas trop gêné.

  • Lorsque vous essayez de développer un programme, vous devez vous assurer qu'il peut répondre au besoin pour lequel il a été créé en premier lieu.
  • Vous devez également vous assurer que votre programme peut être facilement utilisé par d'autres personnes.
  • Vous devez être prêt à investir beaucoup de temps tout en apprenant la programmation.
  • D'un autre côté, vous devez vous assurer que votre programme peut être compris, amélioré et corrigé dans un court laps de temps.
  • Avant de démarrer un programme, vérifiez les autres programmes similaires à ce que vous voulez créer. Comprenez ces programmes et découvrez leurs points forts et faibles. Vous devriez penser à des moyens par lesquels le programme peut être amélioré.
  • Vous devez planifier ce que vous voulez que votre programme soit capable avant de commencer à l'écrire. Vous pouvez créer un organigramme des fonctions et des fonctionnalités du programme à l'avance.
  • Si possible, essayez de trouver un bon code source pour les programmes similaires aux vôtres. Assurez-vous de la qualité du code.
  • Lors de l'écriture d'un programme, vous devez optimiser les fonctionnalités tout en réduisant la complexité. C'est ainsi que vous créez un programme vraiment efficace.
  • Vous devez développer votre programme de telle sorte qu'il soit possible de comprendre ce qui se passe en regardant simplement le code source.
  • Vous devriez ajouter des commentaires chaque fois que vous tentez le compliqué du programme. Cela peut être utile pour vous à long terme.
  • Lorsque vous définissez des variables, vous devez toujours utiliser des noms facilement compréhensibles et simples. Cela vous aide à garder une trace d'eux et les fonctions dans lesquelles ils seront utilisés.

Vous devriez maintenant avoir une idée de ce qu'est la programmation. Maintenant, il est temps de choisir le langage de programmation que vous devriez essayer.

programmation informatique .