Initiation au langage C les principaux formateurs de printf()

Cours initiation pragmatique au langage C, tutoriel & guide de travaux pratiques langage C en pdf.

Un programme qui dit « bonjour »

Voici une version un peu plus élaborée, qui se contente d’afficher une simple phrase (« Hello world! ») sur la sortie standard (généralement l’écran).
#include <stdio.h>
int main (void)
{
puts (« Hello world! »);
return 0;
}
Dans ce programme, on constate l’ajout du mot clé #include et de son paramètre <stdio.h>, ainsi que la fonction puts(). et de son paramètre « Hello world! ».
On remarque que le mot clé #include commence par un ‘#’. En effet, ce mot clé appartient à la famille des commandes du préprocésseur, dont une caractéristique est justement de commencer par ‘#’.
#include <stdio.h> signifie que le fichier indiqué en paramètre est inclus dans le code source. Cette opération (ainsi que toutes les opérations du préprocesseur) est effectuée avant la traduction du code.
Cette opération d’inclusion est rendue nécessaire à cause de l’appel à la fonction puts(). En effet, il est recommandé (et parfois obligatoire) de fournir au compilateur un prototype à la fonction utilisée :
int puts (char const *);
La fonction puts() appartient à la bibliothèque standard du langage C, qui fait partie intégrante du langage. La définition du prototype de cette fonction se trouvant dans le fichier d’en-tête <stdio.h>, il est donc tout à fait logique d’inclure ce fichier dans le fichier source.
Cette fonction a pour effet d’émettre la chaîne de caractères passée en paramètre vers le flux de sortie standard.
Elle ajoute automatiquement un caractère de fin de ligne.
A première vue, le paramètre de cette fonction est une chaîne de caractères, En fait, c’est l’adresse de celle-ci. C’est pourquoi le paramètre de fputs() est défini comme un pointeur sur un type char. En effet, un pointeur est une variable qui peut contenir une adresse.
Le qualificateur const signifie que la fonction accepte l’adresse d’une chaîne non modifiable, car elle s’engage à ne pas modifier la chaîne pointée, ni à passer son adresse à une fonction qui pourrait la modifier.

Glossaire

Bit
Le bit (BInary digiT) ou chiffre binaire est l’unité de mesure d’information. Il peut prendre 2 valeurs : 0 ou 1.
Byte
Le byte (ou multiplet) est le plus petit objet adressable pour une implémentation donnée. En langage C, il fait au moins huit bits.
Caractère
Un caractère est une valeur numérique qui représente un glyphe visible (‘A’, ‘5’, ‘*’ etc.) ou non (CR, LF etc.). Un caractère est de type int. Cependant, sa valeur tient obligatoirement dans un type char.
Un objet de la taille d’un byte peut recevoir la valeur de n’importe quel caractère.
IV-D – Chaîne de caractères
Une chaîne de caractères est une séquence de caractères encadrée de double quotes.
« Hello world! »
La représentation interne d’une chaîne de caractères est spécifiée. C’est un tableau de char terminé par un 0.
char s[] = « Hello »;
est équivalent à :
char s[] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, 0};
Comportement indéfini
Un comportement indéfini (encore appelé Undefined Behaviour ou UB) est un bug grave. Il signifie que le comportement du programme est imprévisible et que tout peut arriver, y compris, et c’est ça qui rend ce bug très dangereux, un comportement d’apparence conforme.
Il n’existe pas de moyen automatique de détecter tous les UB d’un programme. Seul un contrôle visuel fait par une personne chevronnée permet de détecter un tel bug.
Fonction
Une fonction est une séquence d’instructions dans un bloc nommé. Une fonction est constituée de la séquence suivante :
• Un type (ou le mot clé void)
• Un identificateur (le nom de la fonction, ici main)
• Une parenthèse ouvrante (
• Une liste de paramètres ou une liste vide (dans ce cas, on écrit void)
• Une parenthèse fermante )
• Une accolade ouvrante {
• Une liste d’instructions terminée par un point virgule ;, ou rien
• Une accolade fermante }
L’utilisateur peut créer ses propres fonctions. Une fonction peut appeler une autre fonction. Généralement, une fonction réalisera une opération bien précise. L’organisation hiérarchique des fonctions permet un raffinement en partant du niveau le plus élévé (main()) en en allant au niveau le plus élémentaire (atomique).
On gardera cependant en tête que la multiplication des niveaux introduit une augmentation de la taille du code et du temps de traitement.
Une fonction ne peut être appelée qu’à partir d’une autre fonction.
 Flux
Un flux est un canal de données orienté byte. Il permet de réaliser des entrées ou des sorties de bytes, soit un par un, soit par bloc.
C’est le mécanisme du langage C qui permet l’interaction avec l’environnement.
Un programme C ouvre 3 flux par défaut :
• stdin : le flux d’entrée standard
• stdout : le flux de sortie standard
• stderr : le flux de sortie d’erreur
Sur la plupart des implémentations, ces flux sont connectés à la console.
 Paramètre
La zone entre parenthèses d’une fonction peut recevoir des paramètres. Un paramètre est défini au minimum par un type et un identificateur.

I – Introduction
II – Programme minimum
II-A – Analyse détaillée
III – Un programme qui dit « bonjour »
IV – Glossaire
IV-A – Bit
IV-B – Byte
IV-C – Caractère
IV-D – Chaîne de caractères
IV-E – Comportement indéfini
IV-F – Fonction
IV-G – Flux
IV-H – Paramètre
IV-I – Préprocesseur
IV-J – printf()
IV-J-1 – Les principaux formateurs de printf()
IV-J-2 – Exemples d’utilisation de printf()
IV-K – Prototype
IV-L – sizeof
IV-M – Tableau
IV-N – Type

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

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