Un programme type en C | Information ligne à ligne |
/*Mon premier programme en C*/ | Un commentaire en C |
#include <stdio.h> | Liste des bibliothęques. |
#define CONSTANTE 12 | Liste des constantes. |
int nbr; /*nbr est un entier*/ | Liste des variables globales. |
int valeur_absolue(int val); | Liste des prototypes de fonctions. |
main()
{ printf("tapez un nombre"); scanf("%d",&nbr"); printf("votre nombre = %d",nbr); } |
Contenu du programme principal. |
int valeur_absolue(val)
{ } |
Contenu des fonctions. |
Afin de mieux comprendre un programme, il est important que celui-ci contienne des explications aux endroits critiques. Le langage C donne la possibilité d'insérer des explications dans le test d'un programme. Cela se fait au moyen de commentaires. Les caractères placés entres les délimitateurs sont ignorés par le compilateur. On peut donc mettre n'importe quel signe entre les délimitateurs /* et */
Un commentaire est donc une suite de caractère placés entre les délimitateurs : /* et */. On ne peut pas imbriquer plusieurs commentaires.
Exemple :
/* Ceci est un commentaire sur une seule ligne*/
/*
Ceci est un
commentaire qui
s'étend sur
plusieurs lignes */
Chaque instruction d'un programme C doit se terminer par le signe de ponctuation ";". Inversement, le signe de ponctuation ";" marque soit la fin d'une instruction, soit la fin d'une liste de déclarations.
Exemples :
int n;
int tab[4][5];
float PI;
printf("bonjour");
scanf("%d",&val);
Attention : Le point virgule ";" ne doit pas être oublié dans certaines syntaxes comme :
La bibliothèque standard comprend un ensemble de fonctions et de macros pré-programmées auxquelles on peut faire appel à partir d'un programme en C. Chaque fonction ou macro de la bibliothèque standard figure dans un fichier "en-tête" ayant l'extension ".h" (header). Lorsqu'on utilise une de ces fonctions ou macros il faut, généralement inclure ce fichier "en tête" par la directive au préprocesseur #include.
Sa syntaxe est :
#include <fichier_en_tête.h>
ou
#include "chemin_du_fichier_en_tête"
Si le nom du fichier en tête est mis entre '<'
et '>', alors le préprocesseur commence
par rechercher le fichier en tête dans le répertoire prédéfinit par le
compilateur comme étant celui les contenant tous. Si en revanche le fichier
en tête est mit entre guillemets, le préprocesseur
le recherche grâce au chemin indiqué. C'est le cas de vos propres flibrairies.
Attention :
La bibliothèque stdio.h est obligatoire
car elle contient des instructions nécessaires aux entrées/sorties.
Exemples de bibliothèques :
#include <ctype.h>
/* analyse et transformation de caractères.*/
#include <math.h>
/* fonctions mathématiques.*/
#include <setjmp.h>
/* traitement des erreurs.*/
#include <signal.h>
/* gestion des événements.*/
#include <string.h>
/* fonctions de manipulations de chaŽnes de caractères.*/
#include <time.h>
/* fonctions relatives au temps qui permettent de
gérer des temporisations.*/
Cette directive remplace dans le programme toutes les occurences du symbole par la suite de caractères. Cette suite peut représenter un nombre, un texte, etc.
Sa syntaxe est :
#define SYMBOLE suite_de_caractères
Cette instruction permet d'affecter à SYMBOLE :
Exemples :
#define MIN
8 /* MIN sera remplacé par la valeur 8 dans le programme
et ne peut pas être modifié*/
#define AN
1996 /* AN sera remplacé par la valeur 1996
dans le programme et ne peut pas être modifié*/
#define OISE
60 /* OISE sera remplacé par la valeur 60
dans le programme et ne peut pas être modifié*/
#define PI
3.14 /* PI sera remplacé par la valeur 3.14
dans le programme et ne peut pas être modifié*/
#define LETTRE
'A' /* LETTRE sera remplacé par le caractère
'A' dans le programme et ne peut pas être modifié*/
#define UV
"nf16" /* UV sera remplacé par la
chaŽne "nf16" dans le programme et ne peut pas être modifié*/
L'ensemble des variables d'un programme en C est réparti en deux grandes catégories : les variables externes et les variables internes :
Il y a deux sous-catégories de variables internes à une fonction :
La syntaxe d'une déclaration de variable est :
nom_identificateur_du_type_1 nom_variable1;
nom_identificateur_du_type_2 nom_variable2;
ou
nom_identificateur_du_type_1 nom_variable1;
nom_identificateur_du_type_1 nom_variable2;
ou
nom_identificateur_du_type_1 nom_variable1, nom_variable2;
Toute variable d'un fichier doit être déclarée AVANT son utilisation dans une expression quelconque. Chaque donnée utilisée par un programme C doit posséder un type prédéfini. Ce type détermine l'ensemble des valeurs possibles que peut prendre la donnée pendant l'execution du programme. C'est ainsi qu'une donnée pourra contenir des valeurs de types :
Exemples :
int m; /* m est
un entier */
int n,p; /* n et p sont des entiers */
float valeur; /*
valeur est un nombre décimal */
char reponse; /*
reponse contient un caractère */
Dans un programme, on peut avoir besoin d'exécuter le même ensemble d'instructions plusieurs fois, mais avec des données différentes. On regroupe alors cet ensemble d'instructions en une fonction.
Le prototype d'une fonction est une ligne décrivant, au reste du programme, ses caractéristiques principales.
La déclaration se fait de la façon suivante :
type de fonction nom_de_la_fonction (liste des paramêtres);
"type de fonction" permet de définir le type de la valeur
de retour de la fonction.
"nom_de_la_fonction" est bien sur le nom que l'on veut donner
à la fonction.
"liste des paramêtres" permet de définir le nombre et le
type des paramêtres dont la fonction a besoin.
Exemples :
int valeur_absolue(int nombre); /*
on définit ici la fonction qui renvoie la valeur absolue d'un entier */
char lettre(int n); /*
on définit ici la fonction qui renvoie la n iême lettre de l'alphabet */
void affichage_ordonne(int
x, int y, int z); /* on définit ici la procédure
qui affiche dans l'ordre les valeurs x,y et z */
Un programme C consiste en une série de fonctions. Parmi celles ci l'une doit s'appeler main() : elle représente le corps principal du programme. Ce programme s'articule principalement grâce à des commandes qui permettent :
En plus de la fonction principale (main), on peut créer dans un programme autant de fonctions secondaires que l'on désire. Ces fonctions doivent toutes être extérieures les unes aux autres. On trouve dans cette partie des définitions de fonctions, c'est à dire la description des variables utilisées par ces fonctions et l'ensemble des opérations qu'elles vont effectuer sur ces variables.
Cette définition devra être sous la forme :
type de fonction nom_de_la_fonction(liste
de paramêtres)
{
déclarations de variables locales à la fonction;
instructions;
}
Exemple :
int incremente(int valeur) /* cette fonction renvoie
'valeur' incrémentée de 1 */
{
int retour; /* "retour"
est la variable locale qui permet de calculer la valeur de retour */
retour=valeur+1; /*
on effectue ici le calcul */
return(retour);
/* "return" permet de renvoyer la valeur
"retour" */
}