Fiche de révision : Algorithmique et programmation en C

Plan du Cours

  1. Langages informatiques et traduction
  2. Histoire et caractéristiques du C
  3. Construction d’un programme C
  4. Variables et identificateurs
  5. Types et constantes en C
  6. Expressions et conversions
  7. Opérateurs et évaluation
  8. Entrées-sorties formatées

Repères chronologiques

  1. 1972Le langage C a été conçu aux Bell Laboratories par Dennis Ritchie pour écrire le système d’exploitation UNIX.
  2. 1978Kernighan et Ritchie ont publié The C Programming Language, qui a établi une première définition rigoureuse du C appelée K&R-C.
  3. 1983L’ANSI a chargé une commission d’établir une définition explicite et portable du C, aboutissant au standard ANSI-C.

1. Langages informatiques et traduction

Notions clés & Définitions

  • Langage informatique : Permet de donner des instructions à une machine, chaque instruction correspondant à une action du processeur.

★ À maîtriser

  • Un programme est une suite consécutive d’instructions destinée à effectuer une tâche donnée.

📌 Un compilateur traduit le programme entier une fois pour toutes, tandis qu’un interpréteur traduit les instructions au fur et à mesure de chaque exécution.

Compléments

  • Le langage machine exprime et manipule l’information sous forme de bits, chacun valant 0 ou 1.

  • Un octet contient 8 bits et permet 256 combinaisons possibles.

  • Le code ASCII associe aux caractères alphanumériques des représentations binaires, par exemple A = 01000001 et ? = 00111111.

  • La compilation est plus rapide à l’exécution et nécessite une nouvelle compilation après chaque modification du programme.

  • L’interprétation permet une exécution immédiate appréciable pour les débutants, mais elle est plus lente que la compilation.

Astuce mémo

Le langage machine parle aux processeurs ; les langages évolués facilitent le travail humain.

2. Histoire et caractéristiques du C

★ À maîtriser

  • Le C est un langage universel, proche de la machine, modulaire et portable lorsqu’il respecte le standard ANSI-C.

Compléments

  • Le C est utilisé dans des domaines variés et offre des opérateurs proches du langage machine, notamment pour manipuler les bits et les adresses.

📌 Les langages procéduraux constituent une catégorie distincte des langages orientés objets, avec notamment C parmi les exemples du premier groupe et C++ et Java parmi ceux du second.

3. Construction d’un programme C

★ À maîtriser

  • Un programme C peut être composé de plusieurs fichiers sources, chacun étant traduit par le compilateur en un fichier ou module objet.

  • Un fichier objet n’est pas exécutable seul, car il peut lui manquer les fonctions de la bibliothèque standard et d’autres fichiers objets nécessaires.

  • La construction d’un exécutable C passe par le prétraitement, la compilation des fichiers sources en modules objets, puis l’édition de liens des modules et des fonctions de bibliothèque nécessaires.

  • La fonction main est obligatoire dans un programme C et son exécution déclenche automatiquement le début de l’exécution du programme.

Compléments

  • Un programme C comprend notamment :

    • des directives du préprocesseur
    • des déclarations de variables globales
    • des définitions de fonctions
    • des commentaires
  • En C, toute instruction simple se termine par un point-virgule.

  • Un commentaire C peut commencer par // et se terminer en fin de ligne, ou être délimité par /* et */.

Astuce mémo

Source → prétraitement → compilation en objets → édition de liens → exécutable.

4. Variables et identificateurs

Notions clés & Définitions

  • Variable : Stocke une valeur utilisée pendant l’exécution d’un programme et doit être déclarée avant d’être utilisée avec un nom et un type.

★ À maîtriser

📌 Un identificateur C ne contient que des lettres, des chiffres et le caractère souligné, et commence par une lettre ou le caractère souligné.

Compléments

📌 Un identificateur ne peut pas être un mot réservé du langage C.

  • Le langage C distingue les majuscules des minuscules, de sorte que NOMBRE et nombre sont des identificateurs différents.

  • Une déclaration C prend la forme <Type> <NomVar1>, <NomVar2>, … ; et peut aussi initialiser une variable, par exemple double z = 1.5;.

5. Types et constantes en C

Notions clés & Définitions

  • Type de base : Détermine les valeurs possibles d’une variable et le nombre d’octets qui lui est réservé en mémoire ; la variable ne prend qu’une valeur à la fois.

★ À maîtriser

  • Les types entiers du cours comprennent char sur 1 octet (−128 à 127), short sur 2 octets (−32768 à 32767), int sur 2 ou 4 octets et long sur 4 octets (−2147483648 à 2147483647).

  • Les plages non signées présentées sont :

    • unsigned char : 0 à 255
    • unsigned short : 0 à 65535
    • unsigned int : plage dépendant du codage sur 2 ou 4 octets
    • unsigned long : 0 à 4294967295
  • Les types réels présentés sont :

    • float sur 4 octets
    • double sur 8 octets
    • long double sur 10 octets

📌 La directive #define associe une valeur à une constante sans lui donner de type, tandis que le mot-clé const déclare une constante typée.

Compléments

  • En C, le caractère est un cas particulier du type entier, les chaînes n’ont pas de type spécial et les booléens sont représentés par des entiers, avec zéro pour faux et toute valeur non nulle pour vrai.

  • Les constantes entières peuvent être écrites en décimal, en octal avec un zéro initial ou en hexadécimal avec 0x ou 0X.

  • Les constantes réelles s’écrivent en notation décimale ou exponentielle, sont de type double par défaut, et peuvent recevoir les suffixes f ou F pour float et l ou L pour long double.

6. Expressions et conversions

Notions clés & Définitions

  • Expression : Valeur, variable ou opération qui fournit une seule valeur après évaluation selon les règles de priorité et d’associativité.

★ À maîtriser

  • Les types char et short sont convertis en int, puis les conversions usuelles suivent la hiérarchie int, long, float, double et long double.

📌 En C, la division de deux entiers donne un quotient entier, tandis qu’un quotient est réel si au moins un opérande est réel.

📌 L’affectation convertit toujours la valeur affectée au type de la variable située à gauche, ce qui peut entraîner une perte d’information si le type cible est moins précis.

Compléments

📌 Les opérateurs binaires prennent deux opérandes, les opérateurs unaires en prennent un et l’opérateur conditionnel ?: en prend trois.

  • Un cast de la forme (type) expression convertit le résultat de l’expression après son calcul ; ainsi (double)(n / p) convertit le quotient déjà calculé.

7. Opérateurs et évaluation

★ À maîtriser

  • Les opérateurs arithmétiques C sont +, −, *, / et %, et l’opérateur modulo % ne s’applique qu’aux entiers.

  • Les opérateurs de comparaison renvoient 0 lorsque la comparaison est fausse et 1 lorsqu’elle est vraie.

  • Les opérateurs logiques sont &&, || et ! ; toute valeur numérique non nulle est considérée vraie et zéro est considéré faux.

  • Les opérateurs && et || évaluent leur second opérande uniquement si le premier ne suffit pas à déterminer le résultat.

📌 Dans k = i++, la valeur initiale de i est affectée à k avant l’incrémentation, tandis que dans k = ++i, i est incrémenté avant l’affectation.

Compléments

  • Les opérateurs bit à bit &, |, ^ et ~ effectuent respectivement les opérations ET, OU, OU exclusif et négation sur des opérandes entiers.

📌 Un décalage à gauche de k bits multiplie par 2^k sauf débordement, tandis qu’un décalage à droite d’un entier non signé correspond à une division entière par 2^k.

  • L’expression exp1 = exp1 op exp2 peut généralement s’écrire exp1 op= exp2, par exemple a = a + b équivaut à a += b.

📌 L’opérateur conditionnel exp1 ? exp2 : exp3 évalue exp1 puis choisit exp2 si sa valeur est non nulle, sinon exp3.

  • L’opérateur sizeof fournit la taille en octets d’un type ou d’une variable.

📌 Les opérateurs sont évalués selon des règles de priorité et d’associativité, et les parenthèses permettent d’indiquer explicitement l’ordre de calcul souhaité.

Astuce mémo

++i incrémente avant l’affectation ; i++ incrémente après.

8. Entrées-sorties formatées

Notions clés & Définitions

  • printf : Affiche du texte, des valeurs de variables ou des résultats d’expressions selon une chaîne de format.
  • scanf : Lit des données au clavier selon un format et affecte les valeurs aux variables indiquées par leurs adresses.

★ À maîtriser

  • La bibliothèque standard d’entrées-sorties est incluse avec le fichier d’en-tête stdio.h, qui contient notamment les fonctions printf et scanf.

  • Dans un appel printf, le nombre de spécificateurs de format doit être égal au nombre d’expressions fournies.

  • Les spécificateurs printf présentés sont : %d ou %i pour int, %u pour unsigned int, %c pour char, %o pour l’octal, %x ou %X pour l’hexadécimal, %f pour les réels en notation décimale, %e ou %E pour les réels en notation exponentielle, %s pour une chaîne

📌 Dans un appel scanf, l’adresse d’une variable est indiquée en faisant précéder son nom du signe &.

Compléments

  • Les séquences d’échappement présentées sont :

    • \n : nouvelle ligne
    • \t : tabulation horizontale
    • \a : signal sonore
    • \b : retour arrière
    • \r : retour chariot
    • \v : tabulation verticale
    • \f : saut de page
    • \ : barre oblique inversée
    • ' : apostrophe
    • " : guillemet
  • Pour afficher correctement les valeurs de type long avec printf, il faut utiliser les spécificateurs adaptés, comme %ld, %li, %lu, %lo ou %lx.

  • Pour afficher un réel avec printf, la précision par défaut est de six décimales et la largeur minimale peut être indiquée après le symbole %.

  • Pour scanf, les exemples présentés utilisent %d pour lire un entier, %f pour lire un float et %lf pour lire un double.

Astuce mémo

printf affiche des valeurs ; scanf les lit à des adresses de variables.

Tableaux de synthèse

Compilation et interprétation

AspectCompilateurInterpréteur
TraductionProgramme entier une fois pour toutesInstructions au fil de chaque exécution
ExécutionPlus rapidePlus lente
Atout indiquéCode source protégéExécution immédiate, utile aux débutants
Limite indiquéeRecompilation après modificationVitesse inférieure à la compilation

Teste tes connaissances

Teste tes connaissances sur Algorithmique et programmation en C avec 27 questions à choix multiples et corrections détaillées.

1. Une équipe choisit un outil qui prépare la traduction complète du programme avant son lancement, puis doit refaire cette traduction après chaque modification. Quel type d’outil utilise-t-elle ?

2. Quel rôle remplit un langage informatique lorsqu’un développeur veut faire agir une machine ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Algorithmique et programmation en C avec 64 flashcards interactives.

Que permet un langage informatique de donner à une machine ?

Des instructions.

Qu’est-ce qu’un programme destiné à effectuer une tâche donnée ?

Une suite consécutive d’instructions.

Comment un compilateur traduit-il un programme ?

Il traduit le programme entier une fois pour toutes.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches