Le langage C

Vous souhaitez apprendre à programmer, mais vous ne savez pas comment vous y prendre ? Vous connaissez déjà le C, mais vous avez besoin de revoir un certain nombre de points ? Ou encore, vous êtes curieux de découvrir un nouveau langage de programmation ? Si oui, alors permettez-nous de vous souhaiter la bienvenue dans ce cours de programmation consacré au langage C.

Pour pouvoir suivre ce cours, aucun prérequis n’est nécessaire : tout sera détaillé de la manière la plus complète possible, accompagné d’exemples, d’exercices et de travaux pratiques.

Remerciements

Avant de commencer, nous souhaitons remercier plusieurs personnes :

  • Mewtow pour sa participation à la rédaction et à l’évolution de ce cours ainsi que pour ses nombreux conseils ;
  • @Arius, @Saroupille, @amael et @Glordim pour la validation de ce cours ;
  • @Pouet_forever, SofEvans, @paraze et Mathuin pour leur soutien lors des débuts de la rédaction ;
  • @Dominus Carnufex et @patapouf pour leur suivi minutieux et leur bienveillance face à nos (nombreuses) fautes de français ;
  • @Karnaj, @Ifrit et @AScriabine pour leurs suggestions et corrections ;
  • @Maëlan pour sa relecture attentive du chapitre sur les encodages ;
  • toute l’équipe de Progdupeupl et de Zeste de Savoir ;
  • tous ceux qui, au fil du temps et de la rédaction, nous ont apporté leurs avis, leurs conseils, leurs points de vue et qui nous ont aidés à faire de ce cours ce qu’il est aujourd’hui ;
  • et surtout vous, lecteurs, pour avoir choisi ce cours.

Premiers pas

  1. Présentation du langage C

    1. La programmation, qu’est-ce que c’est ?

    2. Le langage C

    3. Notre cible

  2. Les outils nécessaires

    1. Windows

    2. GNU/Linux et *BSD

    3. Mac OS X

  3. Notre premier programme C

    1. Premier programme

    2. Erreur lors de la compilation

    3. Les commentaires

Les bases du langage C

  1. Les variables

    1. Qu’est-ce qu’une variable ?

    2. Déclarer une variable

    3. Initialiser une variable

    4. Affecter une valeur à une variable

    5. Les représentations octale et hexadécimale

  2. Manipulations basiques des entrées/sorties

    1. Les sorties

    2. Interagir avec l'utilisateur

  3. Les opérations mathématiques

    1. Les opérations mathématiques de base

    2. Raccourcis

    3. Le type d'une constante

    4. Le type d'une opération

    5. Les conversions

    6. Exercices

  4. Tests et conditions

    1. Les booléens

    2. Les opérateurs de comparaison

    3. Les opérateurs logiques

    4. Priorité des opérations

  5. Les sélections

    1. La structure if

    2. L'instruction switch

    3. L'opérateur conditionnel

  6. TP : déterminer le jour de la semaine

    1. Objectif

    2. Première étape

    3. Correction

    4. Deuxième étape

    5. Correction

    6. Troisième et dernière étape

    7. Correction

  7. Les boucles

    1. La boucle while

    2. La boucle do-while

    3. La boucle for

    4. Imbrications

    5. Boucles infinies

    6. Exercices

  8. Les sauts

    1. L'instruction break

    2. L’instruction continue

    3. Boucles imbriquées

    4. L'instruction goto

  9. Les fonctions

    1. Qu'est-ce qu'une fonction ?

    2. Définir et utiliser une fonction

    3. Les prototypes

    4. Variables globales et classes de stockage

    5. Exercices

  10. TP : une calculatrice basique

    1. Objectif

    2. Préparation

    3. Correction

  11. Découper son projet

    1. Portée et masquage

    2. Partager des fonctions et variables

    3. Fonctions et variables exclusives

    4. Les fichiers d'en-têtes

  12. La gestion d'erreurs (1)

    1. Détection d'erreurs

    2. Prévenir l'utilisateur

    3. Un exemple d'utilisation des valeurs de retour

Agrégats, mémoire et fichiers

  1. Les pointeurs

    1. Présentation

    2. Déclaration et initialisation

    3. Utilisation

    4. Pointeurs génériques et affichage

    5. Exercice

  2. Les structures

    1. Définition, initialisation et utilisation

    2. Structures et pointeurs

    3. Portée et déclarations

    4. Les structures littérales

    5. Un peu de mémoire

  3. Les tableaux

    1. Les tableaux simples (à une dimension)

    2. La vérité sur les tableaux

    3. Les tableaux multidimensionnels

    4. Les tableaux littéraux

    5. Exercices

  4. Les chaînes de caractères

    1. Qu'est-ce qu'une chaîne de caractères ?

    2. Définition, initialisation et utilisation

    3. Afficher et récupérer une chaîne de caractères

    4. Lire et écrire depuis et dans une chaîne de caractères

    5. Les classes de caractères

    6. Exercices

  5. TP : l'en-tête <string.h>

    1. Préparation

    2. Correction

    3. Pour aller plus loin : strtok

  6. L'allocation dynamique

    1. La notion d'objet

    2. Malloc et consoeurs

    3. Les tableaux multidimensionnels

    4. Les tableaux de longueur variable

  7. Les fichiers (1)

    1. Les fichiers

    2. Les flux : un peu de théorie

    3. Ouverture et fermeture d'un flux

    4. Écriture vers un flux de texte

    5. Lecture depuis un flux de texte

    6. Écriture vers un flux binaire

    7. Lecture depuis un flux binaire

  8. Les fichiers (2)

    1. Détection d'erreurs et fin de fichier

    2. Position au sein d'un flux

    3. La temporisation

    4. Flux ouverts en lecture et écriture

  9. Le préprocesseur

    1. Les inclusions

    2. Les macroconstantes

    3. Les macrofonctions

    4. Les directives conditionnelles

  10. TP : un Puissance 4

    1. Première étape : le jeu

    2. Correction

    3. Deuxième étape : une petite IA

    4. Correction

    5. Troisième et dernière étape : un système de sauvegarde/restauration

    6. Correction

  11. La gestion d'erreurs (2)

    1. Gestion de ressources

    2. Fin d'un programme

    3. Les assertions

    4. Les fonctions strerror et perror

Notions avancées

  1. La représentation des types

    1. La représentation des entiers

    2. La représentations des flottants

    3. La représentation des pointeurs

    4. Ordre des multiplets et des bits

    5. Les fonctions memset, memcpy, memmove et memcmp

  2. Les limites des types

    1. Les limites des types

    2. Les dépassements de capacité

    3. Gérer les dépassements entiers

    4. Gérer les dépassements flottants

  3. Manipulation des bits

    1. Les opérateurs de manipulation des bits

    2. Masques et champs de bits

    3. Les drapeaux

    4. Exercices

  4. Internationalisation et localisation

    1. Définitions

    2. La fonction setlocale

    3. La catégorie LC_NUMERIC

    4. La catégorie LC_TIME

  5. La représentation des chaînes de caractères

    1. Les séquences d'échappement

    2. Les tables de correspondances

    3. Des chaînes, des encodages

  6. Les caractères larges

    1. Introduction

    2. Traduction en chaîne de caractères larges et vice versa

    3. L'en-tête <wchar.h>

    4. <wchar.h> : les fonctions de lecture/écriture

    5. <wchar.h> : les fonctions de manipulation des chaînes de caractères

    6. L'en-tête <wctype.h>

  7. Les énumérations

    1. Définition

    2. Utilisation

  8. Les unions

    1. Définition

    2. Utilisation

  9. Les définitions de type

    1. Définition et utilisation

  10. Les pointeurs de fonction

    1. Déclaration et initialisation

    2. Utilisation

    3. Pointeurs de fonction et pointeurs génériques

  11. Les fonctions et macrofonctions à nombre variable d'arguments

    1. Présentation

    2. L'en-tête <stdarg.h>

    3. Méthodes pour déterminer le nombre et le type des arguments

    4. Les macrofonctions à nombre variable d'arguments

  12. Les sélections génériques

    1. Définition et utilisation

  13. T.P. : un allocateur statique de mémoire

    1. Objectif

    2. Première étape : allouer de la mémoire

    3. Correction

    4. Deuxième étape : libérer de la mémoire

    5. Correction

    6. Troisième étape : fragmentation et défragmentation

    7. Correction

Annexes

  1. Index

    1. Index



Ainsi s’achève ce cours, mais pas votre parcours dans le monde de la programmation ! En effet, même si vous avez appris certaines choses, vous ne connaissez pas tout : le C est un langage fabuleux qui réserve bien des surprises. Pour continuer votre apprentissage, voici quelques derniers conseils :

  • Soyez curieux : fouillez sur Internet pour découvrir de nouvelles méthodes, approfondissez celles que vous connaissez, renseignez-vous, testez de nouveaux outils, etc.
  • Entrainez-vous : c’est le meilleur moyen de progresser. Faites des projets qui vous tiennent à cœur, mettez en œuvre des algorithmes connus, réalisez des exercices, etc.
  • Lisez des codes produits par d’autres personnes : découvrez comment elles procèdent, apprenez d’elles de nouvelles techniques ou façons de faire et progressez en suivant leurs conseils. Vous pouvez par exemple commencer en visitant les forums de ce site.
  • Enfin, le plus important : amusez-vous ! ;)

Ces contenus pourraient vous intéresser

114 commentaires

Merci pour ce tuto ! Par curiosité, sur quoi portera la troisième partie ?

thwx

Le contenu n'est pas encore arrêté, mais elle devrait traiter des sujets suivants : le préprocesseur, la représentation des types et plus précisémment celle des entiers et des flottants, les opérateurs de manipulation de bits, les limites des types et les dépassements de capacité, les énumérations et les unions, les pointeurs de fonction, les fonctions à nombre variable d'arguments, les jeux de caractères et les encodages des chaînes de caractères, le débogage avec gdb et peut-être deux ou trois autres choses comme les sauts non locaux.

Elle comportera également un TP qui consistera sans doute en la création d'un petit allocateur de mémoire à partir d'un tableau alloué statiquement. ;)

+1 -0

J'ai dansé en voyant le tutoriel! :-D

"Dans C"

Ozmox

Police de l'humour ! Monsieur, vous êtes placé en garde à vue à partir de cet instant pour une durée minimale de 24h, reconductible, en raison de mauvaise blague sur lieu public en présence de forces de l'ordre. Vous avez le droit de garder le silence, toute blague prononcée pourra être retenu contre vous et servira lors de votre passage devant un juge d'obstruction.

J'ai dansé en voyant le tutoriel! :-D

"Dans C"

Ozmox

Police de l'humour ! Monsieur, vous êtes placé en garde à vue à partir de cet instant pour une durée minimale de 24h, reconductible, en raison de mauvaise blague sur lieu public en présence de forces de l'ordre. Vous avez le droit de garder le silence, toute blague prononcée pourra être retenu contre vous et servira lors de votre passage devant un juge d'obstruction.

informaticienzero

J'exige un avocat de qualité espèce de vieux policier! :pirate:

+0 -0

Je viens de voir la mention comme quoi je faisais partie de l'équipe initiale. C'est vrai mais je n'ai eu qu'une contribution super minime dans la partie sur les structures, qui a été refaite en bien mieux depuis par Lucas-84 si je me souviens bien. Pas la peine de me citer donc :)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte