★ À maîtriser
📌 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.
Le langage machine parle aux processeurs ; les langages évolués facilitent le travail humain.
★ À maîtriser
Compléments
📌 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.
★ À 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 :
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 */.
Source → prétraitement → compilation en objets → édition de liens → exécutable.
★ À 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;.
★ À 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 :
Les types réels présentés sont :
📌 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.
★ À maîtriser
📌 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.
★ À 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
📌 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’opérateur conditionnel exp1 ? exp2 : exp3 évalue exp1 puis choisit exp2 si sa valeur est non nulle, sinon exp3.
📌 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é.
++i incrémente avant l’affectation ; i++ incrémente après.
★ À 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 :
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.
printf affiche des valeurs ; scanf les lit à des adresses de variables.
Compilation et interprétation
| Aspect | Compilateur | Interpréteur |
|---|---|---|
| Traduction | Programme entier une fois pour toutes | Instructions au fil de chaque exécution |
| Exécution | Plus rapide | Plus lente |
| Atout indiqué | Code source protégé | Exécution immédiate, utile aux débutants |
| Limite indiquée | Recompilation après modification | Vitesse inférieure à la compilation |
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 ?
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.
Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.
Générateur de fiches