CoursInformatiqueLangage C/C++

Cours PDF langage C / initiation à la programmation en C

Dennis Ritchie a conçu et implémenté le langage C pour le système d’exploitation UNIX à la fin des années 70, caractérisant ce langage de programmation général par sa concision, ses structures de contrôle et de données modernes, ainsi que son ensemble d’opérateurs.

Cours gratuit pour commencer la programmation en langage C

Cette page vous offre un cours d’initiation gratuit au langage C avec la possibilité de télécharger le cours au format PDF. Avant de procéder au téléchargement, nous vous suggérons de consulter les informations générales ci-dessous. Pour les débutants complets, nous vous encourageons à commencer par le cours d’initiation à l’algorithme.

Quels sont les avantages de choisir un cours de programmation en langage C ?

Le langage C présente plusieurs caractéristiques distinctes :

  1. Il adopte une approche procédurale moderne, offrant une notation concise et efficace.
  2. Il est portable, fonctionnant sur de nombreuses architectures différentes.
  3. Il accorde un haut degré de contrôle sur la gestion de la mémoire, permettant l’optimisation du code.
  4. Sa polyvalence en fait un choix courant pour diverses applications, allant des systèmes d’exploitation aux bibliothèques scientifiques et aux logiciels d’application.
  5. En tant que précurseur de la programmation orientée objet, sa version orientée C++ reste l’une des options privilégiées dans le domaine du calcul scientifique et de l’industrie.

Les symboles utilisés par le langage C sont :

Le langage C utilise un ensemble de caractères qui inclut les lettres de A à Z, a à z, les chiffres de 0 à 9, ainsi que divers symboles spéciaux comme +, -, *, /, =, ^, <, >, (, ), [, ], {, }, ,, :, ;, ‘, !, @, $, et %.

  • Lettres : A à Z, a à z
  • Chiffres : 0, 1, 2, …, 9
  • Symboles spéciaux : + – * / = ^ <> () [] {}. ,:; ‘ ! @ $ %
  • Le langage C est sensible à la casse, c’est-à-dire qu’il n’est PAS
  • vrai que
  • PLUTON = PlUtO = PLUTO = pLUTO = barre
  • Il est courant en C d’utiliser des lettres minuscules pour les noms de variables et fonctions / sous-programmes et majuscules pour les constantes symboliques.

Bits et octets

Dans le contexte du langage C, les puces mémoire renferment des bits d’information, où chaque bit ne peut avoir que deux valeurs possibles, soit 0, soit 1. Toutefois, cette limitation apparente est surmontée en utilisant des ensembles de bits consécutifs pour représenter des données plus complexes. En C, ces ensembles de bits, appelés “octets” ou “mots” en fonction de leur taille, permettent de stocker et de manipuler des informations variées en combinant ces valeurs binaires.

Nombreuses possibilités :

Pour illustrer, prenons l’exemple des 8 bits, équivalant à 1 octet, qui peuvent distinguer entre 256 (2^8) cas différents, représentant ainsi toutes les combinaisons possibles de 8 valeurs 0 et 1. En utilisant un groupe d’octets consécutifs en mémoire, il est possible de représenter des nombres, des entiers ou des nombres à virgule flottante.

Types de variables 

En langage C, il est impératif de déclarer les variables avant de les utiliser, cette déclaration s’effectue généralement au début du programme ou de chaque fonction, couramment appelée fonction en C. Pour simplifier cette démarche, le langage C offre des types de variables prédéfinis. Par exemple, ils sont prédéfinis :

  • entiers
  • les vrais chiffres
  • les personnages


Pour certains de ces types, il existe deux versions, courte et longue (version réduite ou étendue).
 Dans ce cours de programmation en C, les mots écrits en les caractères gras sont des commandes en langage C ou des mots réservés.

Int


Occupation mémoire : 2 octets (= 16 bits)


Tout entier n, tel que -32768 Si l’entier est en dehors de cette plage, un entier apparaît débordement.
Les qualificatifs courts et longs s’appliquent aux int et correspondent à deux longueurs différentes d’entiers (en termes de chiffres).
Ils sont interprétés différemment selon les machine et compilateur, la seule certitude est que short int a moins de chiffres que l’entier long.
Dans de nombreux cas, l’une des deux versions coïncide avec le type int, par exemple dans Turbo C int = short int.
Un nombre entier long occupe 4 octets (= 32 bits).
Un autre qualificatif pour les nombres entiers est non signé, les nombres entiers non signés sont toujours positifs.

Donnons un exemple sur l’utilisation du langage C

Exemple

int i;
int n;
unsigned int m;

nt aux déclarations d’entier(s), d’entier étendu (n) et un entier positif (m).
Le débordement d’entier n’est pas déclaré, mais le résultat n’est pas ce que vous vouliez.

Exemple :
L’opération
1000 * 100/50
Ne renvoie pas 2000, mais donne un débordement d’entier (c’est-à-dire
32768) Car les opérations s’effectuent de gauche à droit.
Les parenthèses inversent l’ordre d’exécution, donc 1000 * (100/50) donne le bon résultat.

int resultat = 1000 * (100 / 50);

float


En langage C, vous pouvez déclarer des variables pour stocker des nombres réels en utilisant différents types de données, tels que “float” et “double”, qui ont des tailles différentes en mémoire. Voici comment cela pourrait être formulé :

#include <stdio.h>

int main() {
    float nombreFloat = 3.4E-38;  // Précision simple
    double nombreDouble = 1.7E-308;  // Double précision

    printf("Taille en mémoire d'un float : %lu octets\n", sizeof(float));
    printf("Taille en mémoire d'un double : %lu octets\n", sizeof(double);

    printf("Exemple de valeur en précision simple : %.8f\n", nombreFloat);
    printf("Exemple de valeur en double précision : %.16f\n", nombreDouble);

    return 0;
}

Ce code déclare des variables pour stocker des nombres réels en précision simple (float) et en double précision (double) en utilisant le format scientifique (par exemple, 3.4E-38). Il affiche également la taille en mémoire de ces types de données et des exemples de valeurs.

Char

En langage C, les caractères sont stockés en mémoire avec une occupation mémoire d’un octet. Les caractères sont représentés dans la table ASCII, qui contient 255 caractères différents. Vous pouvez stocker des chaînes de caractères (c’est-à-dire des séquences de caractères et des espaces blancs) en utilisant des variables de type “char”. Par exemple, voici comment vous pourriez attribuer une phrase à une variable de type “char” :

#include <stdio.h>

int main() {
    char phrase[] = "Le résultat de l'intégrale est :";

    printf("Taille en mémoire d'une variable char : %lu octets\n", sizeof(char));
    printf("Phrase : %s\n", phrase);

    return 0;
}

Ce code montre comment une variable de type “char” peut stocker une phrase. La taille en mémoire d’une variable “char” est de 1 octet.

Noter :
En C, le type booléen n’est pas prédéfini. Habituellement, la variable booléenne est remplacée par une variable entière
qui ne peut être que 1 (vrai) ou 0 (faux).
En C++, par contre, il y a le type bool, avec des variables de ce type généralement les opérateurs logiques (AND, OR,
NE PAS, ..)

Langage C : Conversions de type (cast) 

Lorsque des opérations sont effectuées entre des variables de type, par exemple une multiplication entre un entier et un réel. Le langage C les traite comme s’ils étaient tous du même type, considérant implicitement tous de type “supérieur”.

En particulier, dans les expressions arithmétiques, la séquence des transformations de type s’effectue exactement dans cette commande :

  1. On convertit “short int” en “int” et “float” en “double”.
  2. Si l’un des deux opérandes est de type “double”, l’autre est également converti en “double”, et le résultat de l’opération est un “double”.
  3. Si l’un des deux opérandes est de type “long”, l’autre est également converti en “long”, et le résultat de l’opération est de type “long”.
  4. Si l’un des deux opérandes est non signé, l’autre est également converti en non signé, et le résultat de l’opération est non signé.

Pointeurs

Les variables peuvent également être de type pointeur, contenant l’adresse mémoire d’une autre variable de type int, char, float, etc. Un pointeur ne peut pas être universel, c’est-à-dire qu’il ne peut pas pointer indifféremment vers n’importe quel type de variable (entier, réel, caractère, etc.). Vous devez toujours spécifier le type de variable pointée à côté du pointeur en plaçant un astérisque (*) avant le nom de la variable dans sa déclaration.

int *pn, *pm;
float *px, *py, x;

// L’opérateur & renvoie l’adresse mémoire
pn = &x; // pn pointe vers x

// L’opérateur * renvoie la valeur contenue dans une adresse
int a = *pn; // a contient la valeur de x

Identifiants (noms) 


Les constantes, types de variables, variables et fonctions doivent être nommés en commençant par une lettre et en permettant ensuite n’importe quelle combinaison de lettres, de chiffres ou de traits de soulignement. En d’autres termes, un nom est essentiellement une chaîne de caractères. Il est possible d’utiliser jusqu’à 127 caractères dans un nom, et tous ces caractères ont une signification.


Exemple :

int Total, Pair, P3, extreme_b;
int somme, produitxy, pix;


Pointeurs

En langage C, il est possible de déclarer des variables de type pointeur. Ces variables contiennent des adresses mémoire qui pointent vers d’autres variables de types tels que int, char, float, et plus encore. Il est important de noter qu’un pointeur ne peut pas être de type “universel”, c’est-à-dire qu’il ne peut pas pointer indifféremment vers n’importe quel type de variable, qu’elle soit entière, réelle, ou de caractère, par exemple. Par conséquent, lors de la déclaration d’une variable pointeur, il est impératif de préciser le type de variable vers laquelle elle pointe en utilisant l’opérateur * placé devant le nom de la variable.

Structure d’un programme C

Un programme en langage C est structuré en sous-programmes, communément appelés des fonctions, qui sont des blocs d’instructions conçus pour résoudre des problèmes spécifiques ou des sous-problèmes. Ces fonctions prennent en entrée certaines variables (données d’entrée) et génèrent des résultats (données de sortie). Il n’existe pas de lien direct entre le type de données d’entrée et de sortie, ce qui signifie que les résultats ne sont pas nécessairement des valeurs numériques. De plus, le programme C est généralement précédé de commandes de préprocesseur, aisément identifiables car elles débutent par le symbole #.

Autres articles

Exercices Corrigés sur les Écarts Budgétaires
Exercice 1 : Calcul des Écarts sur Volume et PrixContexte...
Read more
Guide : Implémenter get_iemedans des fichiers avec...
La fonction get_iemepermet de récupérer le i-ème élément d'un fichier...
Read more
Guide : Implémenter un Fichier en Tableau...
Les fichiers en tableaux circulaires (ou files d'attente circulaires )...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *