Académique Documents
Professionnel Documents
Culture Documents
Module: M1 - LFSMI - S4
Prof. R. HANNANE
r.hannane@uca.ma
Les bases de la
programmation en C:
Rappel
Introduction
Environnements de programmation en C
Le langage C est un langage compilé, ce qui signifie qu’un
programme écrit en C doit subir une suite de traitements
pour que la machine puisse l’exécuter.
Conseil:
Vous avez besoin d’un compilateur ANSI-C
Remarque:
Les système d’exploitation de type UNIX disposent de compilateurs C
immédiatement disponible. ⇒ Il s’agit de gcc et cc.
Environnements de programmation en C
Le fichier source
Pour créer un fichier source il faut utiliser un éditeur de texte, puis
taper le programme en respectant la syntaxe du langage C et
enregistrer le fichier ainsi créé en indiquant son nom.
Le fichier source d’un programme écrit en langage C est un simple
fichier texte dont l’extension est par convention " .c " (exemple
test.c).
Attention:
L’extension doit être en minuscule.
Remarque:
Ce fichier source doit être un fichier texte non formaté, c’est-à-dire un fichier
texte dans sa plus simple expression, sans mise en forme particulière ou caractères
spéciaux, il contient uniquement les caractères ASCII de base.
Premier programme en C
Un programme exécutable écrit en langage C, comporte
obligatoirement une fonction principale appelée main()
Cette fonction principale renferme les instructions qui doivent
être exécutées.
Ces instructions sont comprises entre les accolades ouvrante et
fermante qui suivent le nom de la fonction.
Voici un exemple de programme en C, il s’agit du texte contenu dans un
fichier nommé ”test.c” et on le voit tel qu’il apparaı̂t dans l’éditeur de
texte. Ce texte respecte la syntaxe du C.
Exemple 1:
# include < stdio .h >
void main ()
{
printf ( " Ceci est votre premier programme \ n " );
}
Premier programme en C
Le type retourné par la fonction main() est void, c’est-à-dire ” rien ”.
La norme actuelle du C impose que le type retourné par la
fonction soit explicitement annoncé, on ne peut donc pas écrire
"main() " sans spécifier le type de retour de cette fonction.
La fonction printf() produit une émission de caractères en séquence
vers la sortie standard nommée stdout (par défaut il s’agit de l’écran).
Il faut inclure un fichier nommé ”stdio.h” qui définit l’usage de cette
fonction printf.
Entre une paire de " (double quote) il y a une chaı̂ne de caractères
constante. ⇒ On parle de littéral constant de type chaı̂ne de caractères.
De fait, ”Ceci est votre premier programme \n” est donc une chaı̂ne de
caractères qui va s’afficher telle quelle.
Il s’agit du paramètre réel ( au sens effectivement transmis) de la
fonction printf. La séquence des deux caractères \ et n sera interprétée
par la fonction printf comme l’affichage d’un saut de ligne
Prof. R. HANNANE (FSSM) Programmation II 8 / 52
Les bases de la programmation en C
Attention:
Le premier caractère d’un identificateur ne peut pas être un
chiffre.
Par exemple: var 1, tab 23 ou deb sont des identificateurs valides;
par contre, 1i et i:j ne le sont pas.
Il est cependant déconseillé d’utiliser comme premier
caractère d’un identificateur car il est souvent employé pour
définir les variables globales de l’environnement C.
Les majuscules et minuscules sont différenciées.
Le compilateur peut tronquer les identificateurs au-delà d’une
certaine longueur. Cette limite dépend des implémentations, mais
elle est toujours supérieure à 31 caractères.
Un commentaire est une portion de texte dans le fichier source qui a pour but
d’expliquer le fonctionnement du programme sans que le compilateur ne les
prenne en compte
Attention:
On ne peut pas imbriquer des commentaires
⇒ Quand on met en commentaire un morceau de programme, il faut donc veiller à ce que
celui-ci ne contienne pas de commentaire
Attention:
Suivant les implémentations, le type char est signé ou non.
En cas de doute, il vaut mieux préciser unsigned char ou
signed char.
Prof. R. HANNANE (FSSM) Programmation II 19 / 52
Les bases de la programmation en C
Les opérateurs
L’affectation
Les opérateurs
L’affectation
Les opérateurs
Les opérateurs arithmétiques
Les opérateurs
Les opérateurs arithmétiques
Exemple 9:
float x ;
x = 3 / 2; /* affecte à x la valeur 1. */
/** ************* Par contre * * * * * * * * * * * * * * * * * * * * * * * * * */
x = 3 / 2.; /* affecte à x la valeur 1.5 */
Les opérateurs
Les opérateurs relationnels
Remarque:
Les deux expressions sont évaluées puis comparées.
La valeur rendue est de type int (il n’y a pas de type booléen en C); elle vaut 1
si la condition est vraie, et 0 sinon.
Les opérateurs
Les opérateurs relationnels
Attention:
Attention à ne pas confondre l’opérateur de test d’égalité
== avec l’opérateur d’affection =
Exemple 10:
void main () {
int a = 0;
int b = 1;
if ( a = b )
printf ( " \ n a et b sont egaux !\ n " );
else
printf ( " \ n a et b sont differents \ n " );
}
/* affiche à l ’é cran :
a et b sont egaux ! */
Les opérateurs
Les opérateurs logiques booléens
Les opérateurs
Les opérateurs logiques booléens
Exemple:
Exemple 11:
int i ;
int p =0;
if (( i >= 0) && ( i <= 9) && !( p == 0))
...
/* ici , la derni è re clause ne sera pas é valu é e
si i n ’ est pas entre 0 et 9. */
Les opérateurs
Les opérateurs logiques bit à bit
Les opérateurs
Les opérateurs logiques bit à bit
Considérons par exemple les entiers a = 77 et b = 23 de type
unsigned char (i.e. 8 bits).
⇒ En base 2 il s’écrivent respectivement 01001101 et 00010111.
Les opérateurs
Les opérateurs d’affectation composée
est équivalente à
expression1 = expression1 op expression2
Les opérateurs
Les opérateurs d’incrémentation et de décrémentation
Les opérateurs
L’opérateur virgule
Les opérateurs
L’opérateur conditionnel ternaire
Les opérateurs
L’opérateur de conversion de type
On écrit:
( type ) objet
Exemple 15:
void main () {
int i = 3 , j = 2;
printf ( " % f \ n " ,( float ) i / j );
}
// retourne la valeur 1.5
Les opérateurs
Règles de priorité des opérateurs
Le tableau suivant classe les opérateurs par ordres de
priorité décroissants
Les opérateurs
Règles de priorité des opérateurs
2) Les boucles
On distingue:
• Boucle while
• Boucle do---while
• Boucle for
Tant que expression est vérifiée (i.e., non nulle), instruction est
exécutée.
Si expression est nulle au départ, instruction ne sera jamais
exécutée.
instruction peut évidemment être une instruction composée.
Exemple 16:
i = 1;
while ( i < 10) {
printf ( " \ n i = % d " ,i );
i ++;
} // ce programme affiche les entiers de 1 à 9
Prof. R. HANNANE (FSSM) Programmation II 45 / 52
Les bases de la programmation en C
Ici, instruction sera exécutée tant que expression est non nulle. ⇒Cela signifie
que instruction est toujours exécutée au moins une fois
Exemple 17:
// programme pour saisir au clavier un entier entre 1 et 10 :
int a ;
do
{
printf ( " \ n Entrez un entier entre 1 et 10 : " );
scanf ( " % d " ,& a );
}
while (( a <= 0) || ( a > 10));
Exemple 18:
// pour imprimer tous les entiers de 0 à 9 , on é crit :
for ( i = 0; i < 10; i ++)
printf ( " \ n i = % d " ,i );
// a la fin de cette boucle , i vaudra 10
Les trois expressions utilisées dans une boucle for peuvent être
constituées de plusieurs expressions séparées par des virgules. Cela
permet par exemple de faire plusieurs initialisations à la fois.
Prof. R. HANNANE (FSSM) Programmation II 47 / 52
Les bases de la programmation en C
On laisse un blanc:
I entre les mots-clefs if, while, do, switch et la
parenthèse ouvrante qui suit
I après une virgule,
I de part et d’autre d’un opérateur binaire.