Apprentissage du langage C I)Généralités La programmation en C, c'est comme le sexe chez les adolescents
Tout le monde y pense
Tout le monde en parle
Tout le monde croit que le voisin le fait
Presque personne ne le fait
Ceux qui le font le font mal
Pensent que la prochaine fois ce sera mieux
Ne prennent pas de précautions
N'osent pas avouer leurs lacunes de peur de paraître niais
Sont fort bruyants quand ils y arrivent
1)Introduction – Historique Le langage C est un langage de programmation conçu pour de multiples utilisations. Son développement est parallèle au système UNIX car le noyau du système UNIX est écrit en langage C. Désormais, il est utilisé sur tous les systèmes d'exploitation et donc sur toutes les machines. Les principes fondamentaux du langage C sont issus des langages B et BCPL créés vers 1970 pour le premier système UNIX dans les laboratoires AT&T par Ken Thompson et Dennis Ritchie.
En 1970, Ken Thompson crée le langage B inspiré du BCPL.
En 1972, Dennis Ritchie définit le langage C à partir des travaux de Ken Thompson. Ces travaux seront continués par Brian W Kernigham et Dennis Ritchie en 1972 pour donner naissance au premier ouvrage de référence "Le langage C" éditions MASSON. Si le noyau du langage C est assez restreint, il s'enrichit d'une librairie standard qui contient des fonctions permettant les traitements les plus divers (Entrées-Sorties, Fichiers, Traitements des chaînes de caractères, Gestion dynamique de la mémoire, etc.). L'étude du système UNIX passe obligatoirement par l'étude du langage C. Ultérieurement, il sera possible d'aborder l'étude de la POO (Programmation Orientée Objet) en C++. Des travaux de normalisation ont été entrepris à partir de 1983. Le C-ANSI a été approuvé fin 1988 (Norme X3-159-1989). Dans ce document, on s'efforcera d'utiliser la norme ANSI. Tous les exemples (sauf avertissement) seront donnés pour un compilateur UNIX (cc ou gcc) respectant la norme ANSI.
2)Notions de fonctions et de blocs Les unités de structurations du langage C sont :
la fonction qui correspond à la notion de sous-programme en PASCAL, FORTRAN ou ADA. Il n'y a pas de distinction entre procédure (qui effectue une action mais qui ne renvoie rien) et fonction (qui calcule et renvoie un résultat en fonction de paramètres).
les fichiers comprenants des déclarations de fonctions et d'objets. Les fichiers peuvent être compilés séparéments. Ils constituent des modules, briques de base dans la construction d'applications. Un programme C, c'est en fait un ou plusieurs fichiers comprenant :
des déclarations de fonctions.
des déclarations d'objets, variables ou constantes.
des instructions de travail
des directives pour le pré processeur. Contrairement à PASCAL ou ADA, on ne peut déclarer de fonction à l'intérieur d'une autre fonction. Une fonction est un module (ou sous programme) destinée à effectuer une opération élémentaire et une seule, en définissant les cas limites. En langage C, un programme source est constitué de fonctions dont une particulière (appelée main) constitue le point d'entrée et de sortie du programme. On doit donc impérativement trouver "main" dans un programme et on ne doit en trouver qu'un seul. Un bloc est un ensemble d'instructions formant une entité logique indissociable bornée par une accolade ouvrante "{" (début) et une accolade fermante "}" (fin).Le plus grand bloc est la fonction… mais celle-ci peut contenir d'autres blocs d'instructions. Exemple de programme en C :
fonction1(…) // Fonction 1 – Point d'entrée dans la fonction 1 { Variables éventuelles /* Commentaires éventuels / Instructions } // Point de sortie de la fonction 1
main(…) // Fonction principale - Point d'entrée du programme { Variables éventuelles /* Commentaires / Instructions } // Point de sortie du programme
fonctionN(…) // Fonction N – Point d'entrée dans la fonction N { Variables éventuelles /* Commentaires éventuels / Instructions } // Point de sortie de la fonction N
|