On commence par la question la plus simple qui soit, la plus basique de toutes les questions basiques

Si vous avez l'impression de déjà savoir tout ça, je vous conseille de lire quand même, ça ne peut pas vous faire de mal

Je pars de zéro pour ce cours, donc je vais devoir répondre à la question :
Que signifie le mot "programmer" ?
Bon, je vais éviter de vous faire comme mon prof de français : je ne vais pas vous donner l'origine du mot "programmer". Et puis de toute façon si je vous disais que ça vient du latin
programmeus je crois que vous auriez un peu de mal à me croire

Simplement, programmer signifie réaliser des "programmes informatiques". Les programmes demandent à l'ordinateur d'effectuer des actions.
Votre ordinateur est rempli de programmes en tous genres :
- La calculatrice est un programme
- Votre traitement de texte est un programme
- Votre logiciel de « Chat » est un programme
- Les jeux vidéo sont des programmes
En bref, les programmes sont partout et permettent de faire à priori tout et n'importe quoi sur un ordinateur. Vous pouvez inventer un logiciel de cryptage révolutionnaire si ça vous chante, ou réaliser un jeu de combat en 3D sur Internet, peu importe. Votre ordinateur peut tout faire (sauf le café, mais j'y travaille

).
Le célèbre jeu Half-Life 2, programmé en C++
Attention ! Je n'ai pas dit que réaliser un jeu vidéo se faisait en claquant des doigts. J'ai simplement dit que tout cela était possible, mais soyez sûrs que ça demande beaucoup de travail
Comme vous débutez, nous n'allons pas commencer par voir comment réaliser un jeu 3D. Ce serait du pur suicide

Nous allons devoir passer par des choses très simples. Une des premières choses que nous verrons est
comment afficher un message à l'écran. Oui, je sais ça n'a rien de très transcendant, mais rien que ça croyez-moi, c'est pas si facile que ça en a l'air
Bon, c'est vrai que ça impressionne moins les copains, mais on va bien devoir passer par là. Petit à petit, vous apprendrez suffisamment de choses pour commencer à réaliser des programmes de plus en plus complexes. Le but de ce cours est que vous soyez capables de vous débrouiller tous seuls dans n'importe quel programme écrit en C ou C++.
Mais tenez au fait, vous savez ce que c'est vous, cette histoire de "C / C++" ?
Votre ordinateur est une machine bizarre, c’est le moins que l’on puisse dire. On ne peut s’adresser à lui qu’en lui envoyant des 0 et des 1. Ainsi, si je traduis "Fais le calcul 3 + 5" en langage informatique, ça pourrait donner quelque chose comme :
0010110110010011010011110
(j’invente hein, je ne connais pas la traduction informatique par cœur :p)
Ce que vous voyez là, c’est le langage informatique de votre ordinateur, appelé
langage binaire (retenez bien ce mot !). Votre ordinateur ne connaît que ce langage-là et, comme vous pouvez le constater, c’est absolument incompréhensible, immonde et imbuvable
Donc voilà
notre premier vrai problème :
Comment parler à l’ordinateur plus simplement qu’en binaire avec des 0 et des 1 ?
Votre ordinateur ne parle pas l’anglais et encore moins le français. Pourtant, il est inconcevable d’écrire un programme en langage binaire. Même les informaticiens les plus fous ne le font pas, c’est vous dire
Eh bien, l’idée que les informaticiens ont eue, c’est d’inventer de nouveaux langages qui seraient ensuite traduits en binaire pour l’ordinateur. Le plus dur à faire, c’est de réaliser le programme qui fait la "traduction". Heureusement, ce programme a déjà été écrit par des informaticiens et nous n’aurons pas à le refaire (ouf !

). On va au contraire s’en servir pour écrire des phrases comme :
"Fais le calcul 3 + 5"
Qui seront traduites par le programme de "traduction" en quelque chose comme :
"0010110110010011010011110".
Si on fait un schéma de ce que je viens de dire, ça donne quelque chose comme ça :
Schéma ( super-simplifié
) de réalisation d’un programme
Un peu de vocabulaire
Là j’ai parlé avec des mots simples, mais il faut savoir qu’en informatique il existe un mot pour chacune de ces choses-là. Tout au long de ce cours, vous allez d’ailleurs apprendre pas mal de vocabulaire.
Non seulement vous aurez l’air de savoir de quoi vous parlez, mais si un jour (et ça arrivera) vous devez parler à un autre programmeur, vous saurez vous faire comprendre. Certes, les gens autour de vous vous regarderont comme des extra-terrestres, mais ça il faudra pas y faire attention
Reprenons le schéma qu’on vient de voir.
La première case est "Votre programme est écrit dans un langage simplifié". Ce fameux "langage simplifié" est appelé en fait "
langage de haut niveau".
Il existe plusieurs "niveaux" de langages. Plus un langage est haut niveau, plus il est proche de votre vraie langue (comme le français). Un langage de haut niveau est donc facile à utiliser (chouette !

), mais cela a aussi quelques petits défauts comme nous le verrons plus tard.
Il existe de nombreux langages de plus ou moins haut niveau en informatique dans lesquels vous pouvez écrire vos programmes. En voici quelques-uns par exemple :
- Le C
- Le C++
- Java
- Visual Basic
- Delphi
- Etc etc...
Notez que je ne les ai pas classés par "niveau de langage", donc n'allez pas vous imaginer que le premier de la liste est plus facile que le dernier ou l'inverse

Ce sont juste quelques exemples en vrac qui me sont passés par la tête.
(et d’avance désolé pour tous les autres langages qui existent, mais faire une liste complète serait vraiment trop long
)
Certains de ces langages sont plus haut niveau que d’autres (donc en théorie un peu plus faciles à utiliser), on va voir un peu plus loin notamment ce qui différencie le langage C du langage C++.
Un autre mot de vocabulaire à retenir est :
code source. Ce qu'on appelle le code source, c'est tout simplement le code de votre programme écrit dans un langage de haut niveau. C'est donc vous qui écrivez le code source, qui sera ensuite traduit en binaire.
Venons-en justement au « programme de traduction » qui traduit notre langage de haut niveau (comme le C ou le C++) en binaire. Ce programme a un nom : on l’appelle
le compilateur. La traduction, elle, s'appelle
la compilation.
Très important : il existe
un compilateur différent pour chaque langage de haut niveau. C’est d'ailleurs tout à fait logique : les langages étant différents, on ne traduit pas le C++ de la même manière qu’on traduit le Delphi
Vous verrez par la suite que, pour les langages C / C++ par exemple, il existe même plusieurs compilateurs différents ! Il y a le compilateur écrit par Microsoft, le compilateur GNU etc. On verra tout ça dans le chapitre suivant.
Heureusement, ces compilateurs-là sont quasiment identiques (même s’il y a parfois quelques "légères" différences que nous apprendrons à reconnaître).
Enfin, le programme binaire créé par le compilateur est appelé :
l’exécutable. C’est d’ailleurs pour cette raison que les programmes (tout du moins sous Windows) ont l’extension ".exe" comme EXEcutable.
Reprenons notre schéma de tout à l’heure, et utilisons cette fois des vrais mots tordus d’informaticien. Ca donne :
Le même schéma, avec le bon vocabulaire
Pourquoi choisir d’apprendre le C / C++ ?
Comme je vous l’ai dit plus haut, il existe de très nombreux langages de haut niveau. Doit-on commencer par l’un d’entre eux en particulier ? Grande question

Pourtant, il faut bien faire un choix, commencer la programmation à un moment ou à un autre. Et là, vous avez en fait le choix entre :
- Un langage très haut niveau : c’est facile à utiliser, plutôt "grand public". Parmi eux, on compte Python, Ruby, Visual Basic et bien d'autres. Ces langages permettent d'écrire des programmes plus rapidement en règle générale. Ils nécessitent toutefois d'être accompagnés de fichiers pour qu'ils puissent s'exécuter (comme un interpréteur).
- Un langage un peu plus bas niveau (mais pas trop quand même !) : ils sont peut-être un peu plus difficiles certes, mais avec un langage comme le C (ou le C++) vous allez en apprendre beaucoup plus sur la programmation et sur le fonctionnement de votre ordinateur. Vous serez ensuite largement plus capables d’apprendre un autre langage de programmation si vous le désirez. Vous serez donc plus autonomes.
Par ailleurs, le C et le C++ sont des langages très populaires. Ils sont utilisés pour programmer une grande partie des logiciels que vous connaissez.
Voilà en gros les raisons qui m’incitent à vous apprendre le langage C plutôt qu’un autre. Je ne dis pas qu’il
faut commencer par ça, mais je vous dis plutôt que c’est un bon choix qui va vous donner de solides connaissances.
Je vais supposer tout au long de ce cours que
c’est votre premier langage de programmation, que
vous n’avez jamais fait de programmation avant. Si, par hasard, vous avez déjà un peu programmé, ça ne vous fera pas de mal de reprendre à zéro
Stop, il y a quelque chose que je ne comprends pas… Je vais apprendre un langage appelé "C / C++" ou je vais apprendre 2 langages : l’un appelé "C" et l’autre appelé "C++" ?
La bonne réponse est que vous allez apprendre en fait 2 langages. Non, ça ne va pas faire 2 fois plus de travail

Je m’explique. Le langage C et le langage C++ sont très similaires.
Quand je désigne les 2 à la fois (comme je l’ai fait jusqu’ici), j’écris "C / C++".
Voici ce qu’il faut savoir sur la différence entre les 2 avant de continuer :
- Au tout début, à l’époque où les ordinateurs pesaient des tonnes et faisaient la taille de votre maison, on a commencé à inventer un langage de programmation appelé l'Algol.
- Ensuite, les choses évoluant, on a créé un nouveau langage appelé le CPL, qui évolua lui-même en BCPL, puis qui pris le nom de langage B (euh si vous retenez pas tout ça c'est pas grave, j'écris juste pour faire semblant d'avoir de la culture là
)
- Puis, un beau jour, on en est arrivés à créer encore un autre langage qu’on a appelé... le langage C. Ce langage, s'il a subi quelques modifications, reste encore un des langages les plus utilisés aujourd'hui.
- Un peu plus tard, on a proposé d’ajouter des choses au langage C. Une sorte d’amélioration si vous voulez. Ce nouveau langage, que l’on a appelé "C++", est entièrement basé sur le C. Le langage C++ n’est en fait rien d’autre que le langage C avec des ajouts (quels ajouts ? On verra ça plus tard dans le cours).
Il y a plusieurs façons d’apprendre la programmation, je vous l’ai dit plus haut.
Certaines personnes pensent qu’il est bien d’enseigner directement le C++. Elles n’ont peut-être pas tort. Après tout, si le C++ c’est du langage C "avec des trucs en +", ça revient un peu au même.
Pourtant, moi (et cet avis n’engage que moi), je pense que ce serait mélanger les choses. Aussi j’ai décidé que j’allais séparer mon cours en 2 grosses parties :
- Le langage C
- Le langage C++
Vu que vous aurez déjà appris le langage C dans un premier temps, quand on en viendra au langage C++ ça ira bien plus vite. Je n’aurai pas à vous réapprendre toutes les bases du C, j’aurai juste besoin de vous indiquer quels ajouts ont été faits dans le C++ (enfin, y’a de quoi dire quand même

)
Qu’il n’y ait pas de malentendus. Le langage C++ n’est pas "meilleur" que le langage C, il permet juste de programmer différemment. Il permet disons aussi au final de programmer un peu plus vite et de mieux organiser le code de son programme.
Ce n’est PAS parce que Half-Life 2 a été codé en C++ qu’il faut absolument faire du C++ pour réaliser des jeux ou des programmes complexes.
Le langage C n’est pas un "vieux langage oublié", au contraire il est encore très utilisé aujourd’hui. Il est à la base des plus grands systèmes d'exploitation tels Unix (et donc Linux et Mac OS), ou encore Windows.
Retenez donc : le C et le C++ ne sont pas des langages concurrents,
on peut faire autant de choses avec l’un qu’avec l’autre. Ce sont juste 2 manières de programmer assez différentes.
L’avantage, c’est qu’à la fin de ce cours vous saurez aussi bien programmer en C qu’en C++ selon vos besoins
Voilà une question qui doit bien vous torturer l'esprit

Alors : faut-il être un super mathématicien qui a fait 10 ans d'études supérieures pour pouvoir commencer la programmation ?
La réponse, que je vous rassure, est non

Non, un super niveau en maths n'est pas nécessaire. En fait tout ce que vous avez besoin de connaître, ce sont les 4 opérations de base :
- L'addition (bon j'espère que vous maîtrisez
)
- La soustraction (ouille ouille ouille !)
- La multiplication (argh)
- La division (bah pourquoi y'a plus personne tout à coup ?
)
J'espère que vous connaissez tout ça

Et histoire d'en être sûr, je vous expliquerai dans un prochain chapitre comment l'ordinateur réalise ces opérations de base.
Bref, niveau maths, il n'y a pas de difficulté insurmontable

En fait, tout dépend du programme que vous allez faire : si vous devez faire un logiciel de cryptage, alors oui il vous faudra connaître des choses en maths. Si vous devez faire un programme qui fait de la 3D, oui il vous faudra quelques connaissances en géométrie de l'espace.
Chaque cas est particulier.
Pour apprendre le langage C / C++, vous n'avez pas besoin de connaissances pointues en quoi que ce soit.
Mais alors, où est le piège ? Où est la difficulté ?
Il faut savoir comment un ordinateur fonctionne pour comprendre ce qu'on fait. De ce point de vue-là, rassurez-vous, je vous apprendrai tout au fur et à mesure.
Un programmeur a aussi certaines qualités comme :
- La patience : un programme ne marche jamais du premier coup, il faut savoir persévérer !
- Le sens de la logique : pas besoin d'être fort en maths certes, mais ça ne vous empêchera pas d'avoir à réfléchir (ah ben zut alors !
)
- Le calme : on ne tape pas sur son ordinateur avec un marteau
Ce n'est pas ça qui fera marcher votre programme
En bref, et pour faire simple, il n'y a pas de véritables connaissances requises pour programmer. Un nul en maths peut s'en sortir sans problème, le tout est d'avoir la patience de réfléchir. Il y en a beaucoup d'ailleurs qui découvrent qu'ils adorent ça !