« Langage C/Introduction au C » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- d'utiliser + d’utiliser )
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
Ligne 7 :
}}
 
== Avant-propos ==
=== Esprit et but du tutoriel ===
 
Ligne 16 :
En résumé, ce tutoriel se composera d'un juste mélange entre théorie et pratique au travers de multiples exemples et exercices d'application qui nécessiterons une investissement personnel et des efforts pour fortifier chaque connaissance acquise.
 
=== À qui est destiné ce tutoriel ? ===
 
Le tutoriel a pour intention d’être compréhensible par n’importe qui. Que vous soyez un parfait débutant qui souhaite apprendre la programmation sans aucune connaissance au préalable ou que vous soyez un programmeur expérimenté, vous êtes le bienvenu dans ce cours. Les explications seront les plus détaillées possible afin de rendre la lecture accessible à tous.
Ligne 32 :
Dernier point qui concerne les mathématiques : contrairement à la croyance populaire, un bon niveau en maths n’est absolument pas nécessaire pour faire de la programmation. Certes, ça peut aider en développant la logique, mais si les mathématiques ne sont pas votre fort, vous pourrez quand même suivre ce cours sans problèmes.
 
=== Allez plus loin ===
 
Un des concepts fondamentaux de l’apprentissage de notions informatiques sur Internet est le ''croisement des sources''. Il permet de voir la programmation sous un angle différent. Par exemple, quelques cours de [http://c.developpez.com/cours/ Developpez] ou de [http://fr.wikibooks.org/wiki/Programmation_C/Introduction Wikibook], d’approches différentes, sont à votre entière disposition. N’hésitez pas non plus à lire des livres sur le C, notamment [http://framabook.org/6-le-c-en-20-heures/ Le C en 20 heures] écrit par Eric Berthomier et Daniel Schang ou encore le [http://c.developpez.com/cours/?page=lang-c K&R], écrit par les créateurs du C. C’est un livre très complet qui pourra vous être utile.
Ligne 38 :
Enfin le plus important : n’hésitez pas à programmer tout seul. Faites des exercices, modifiez les codes du tutoriel, regardez ceux des autres, participez à des projets. C’est la meilleure façon de progresser.
 
== La programmation, qu’est-ce que c’est ? ==
 
La programmation est une branche de l’informatique qui permet la création de '''programmes'''. Votre ordinateur est intégralement contrôlé par des programmes, votre système d’exploitation (Windows, GNU/Linux, Mac OS X, ...) est un programme, votre navigateur web (Internet Explorer, Mozilla Firefox, Opera, ...) est un programme, et cela va de même pour votre logiciel de discussion instantanée, vos jeux vidéos, etc... Les programmes ne sont par ailleurs pas seulement contenus uniquement dans votre ordinateur, et de très nombreux appareils contiennent des programmes, comme par exemple votre lecteur MP3, votre console de jeux, etc.
Ligne 534 :
[[Image:Compilation.PNG|600px|center|Schéma simplifié de la compilation d'un programme.]]
 
== Le langage C ==
 
Malgré tous ces langages de programmation disponibles, nous allons tout au long de ce cours nous concentrer sur le langage C. Avant d'entamer concrètement la programmation, il me semble important d'évoquer l'histoire de ce langage, ainsi que les caractéristiques et les choix qui nous amènent à l’étudier dans ce cours.
 
=== L'histoire du C ===
 
Le langage C est né au début des années 1970 dans les laboratoires AT&T aux États-Unis. Son concepteur, [[w:Dennis Ritchie|Dennis Ritchie]], souhaitait améliorer un langage existant, le B, afin de lui adjoindre des nouveautés. En 1973, le C était pratiquement au point, et il commença à être distribué l’année suivante. Son succès était tel auprès des informaticiens que l’[[w:American National Standards Institute|ANSI]] en 1989, puis l’[[w:Organisation internationale de normalisation|ISO]] en 1990 décidèrent de le normaliser, c’est-à-dire d’établir les règles officielles du langage. On parle donc de C89 / C ANSI ou bien C90 / C ISO (au choix). D’autres normes sortirent plus tard, en 1999 (on parle de C99) et en 2011 (on parle de C11).
 
=== Pourquoi apprendre le C ? ===
 
C’est une très bonne question. Après tout, il existe tellement de langages différents, et on peut logiquement se demander pourquoi le C en particulier ? En fait, il y a plusieurs raisons qui peuvent motiver l'apprentissage du C.
Ligne 557 :
Même si c’est un langage qui ne sera pas abordé au long de ce cours, il me semble important d'évoquer le C++, dont vous avez peut-être déjà entendu parler. C’est un langage de programmation qui a été inventé dans les années 1980 par Bjarne Stroustrup, un collègue de Dennis Ritchie, qui souhaitait rajouter des éléments au C. Bien que très ressemblants à l’époque de sa création, ces deux langages sont aujourd’hui très différents (on ne programme pas et on ne réfléchit pas de la même façon en C qu’en C++). Ne croyez pas qu’il y a un langage meilleur que l’autre. Ils sont simplement différents. Si d’ailleurs votre but est d’apprendre le C++, je vous encourage à le faire directement. Contrairement à ce que l’on pense et dit souvent, il est tout à fait possible d'apprendre le C++ sans passer par l'apprentissage du C.
 
=== La norme ===
 
Comme précisé plus haut, le C est un langage qui possède des règles. Ces règles ont été définies par des informaticiens professionnels et sont toutes regroupées dans ce que l’on appelle '''la norme''' du langage. Chaque fois que l’on a un doute ou que l’on se pose une question, le premier réflexe est de regarder dans la norme ce qui est dit. Bien entendu, la norme n’est pas parfaite, elle ne répond pas à toutes les questions que l’on pourrait se poser et ne précise pas tous les détails dont on pourrait avoir besoin. Néanmoins, elle reste '''la référence''' de tout programmeur. Cette norme sert aussi de référence pour les compilateurs. En effet, tous les compilateurs respectent cette norme (en règle générale), afin de parer à différentes interprétations d’un même code.
Ligne 565 :
Il existe plusieurs versions de la norme : le C89, le C99 et le C11. Dans ce cours, nous avons décidé de nous servir de la norme C89. En effet, même si c’est la plus ancienne et qu’elle semble restrictive à certains, elle permet néanmoins de développer avec n’importe quel compilateur sans problèmes, contrairement aux normes C99 et C11 que tous les compilateurs ne connaissent pas. De plus, il est très facile de passer aux normes plus récentes ensuite. Voici [http://flash-gordon.me.uk/ansi.c.txt le lien] vers le brouillon de cette norme, ce n’est certes pas la version définitive et officielle, mais celle-ci est très chère et le brouillon est largement suffisant pour notre niveau et entièrement gratuit. Bien entendu, cette norme est en anglais.
 
== L’algorithmique ==
 
L'algorithmique est très liée à la programmation, et elle constitue même une branche à part des mathématiques. Elle consiste à définir et établir des algorithmes.
Ligne 575 :
Ce qu’il faut retenir, c’est qu'un algorithme est une suite d'opérations destinée à résoudre un problème donné. Nous aurons l’occasion d’utiliser quelques algorithmes dans ce cours, mais nous ne nous concentrerons pas dessus. Si vous voulez en savoir plus, lisez le tutoriel sur [http://www.siteduzero.com/tutoriel-3-51781-algorithmique-pour-l-apprenti-programmeur.html l'algorithmique pour l'apprenti programmeur].
 
=== Le pseudo-code ===
 
Pour représenter un algorithme indépendamment de tout langage, on utilise ce qu'on appelle un '''pseudo-code'''. Il s'agit de la description des étapes de l'algorithme avec une structure proche du langage naturel (dans notre cas le français). Voici un exemple de pseudo-code :
Ligne 592 :
Durant ce cours, il y aura plusieurs exercices dans lesquels un algorithme fourni devra être implémenté (traduit) en C. Si vous voulez vous y entraîner davantage tout en suivant ce cours, je vous conseille le site [http://www.france-ioi.org/ France-IOI] qui propose des implémentations de divers algorithmes en plusieurs langages dont le C. Ce qui pourra être un excellent complément.
 
== Voir aussi ==
* Wikilivre [[b:Programmation C|Programmation C]], chapitre [[b:Programmation C/Introduction|Introduction]]