Chapitre 1
Chapitre 1
Chapitre 1
Programmation
structurée
Langage C
1
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
I. Introduction
Le langage C est un langage de la troisième génération, il est développé en 1970 par Dennie
Ritchie. C’est un langage évolué et structuré, il est assez proche du langage machine.
Exemple :
#include<stdio.h> /*header de la bibliothéque contenant printf*/
#include<math.h>
#define Nfois 3
float calcul( );/*fonction qui calcule la racine carrée*/
void main( )
{
int i;
float resu;
float calcul( )
{
float x,racx;
racx=0;
printf("\ndonner un nombre:");
scanf("%f",&x);
racx=sqrt(x);
return racx;
}
2
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
Remarque :
Le caractère « souligné » est considéré comme une lettre. Il peut apparaître en début d’un
identificateur.
Le langage C différencie entre les majuscules et les minuscules.
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.
Les mots-clefs
Certains mots clefs sont réservés par le langage C à un usage bien défini et ne peuvent pas
être utilisés comme identificateurs. L'ANSI-C compte 32 mots clefs :
auto const double float int short struct unsigned break continue else for long
signed switch void case default enum goto register sizeof typedef volatile char do
extern if return static union while
3
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
Les constantes
Une constante est une donnée dont la valeur ne peut varier.
Il est possible de donner un nom symbolique à une chaîne particulière et de lui associer une
valeur constante au début d’un programme. Après une déclaration de constante le compilateur
remplacera toutes les occurrences de ce nom par la valeur correspondante.
syntaxe : #define nom_variable valeur
Les opérateurs
a) Arithmétiques
Ces opérateurs s’appliquent à des valeurs entières ou réelles.
- et + : opérateur unaire (Ce sont les opérateurs à un seul argument)
+ : addition
- : soustraction
* : multiplication
/ : division
% : reste de la division (% nécessite obligatoirement deux arguments entiers)
Ordre de priorité:
+ ; - (unaire)
*;/;%
+; -
En cas de même priorité le calcul se fait de gauche à droite, on dit qu’on a associativité à
gauche.
b) Relationnels
= = : égalité
!= : différent
< : inférieur strictement
> : supérieur strictement
<= : inférieur ou égal
>= : supérieur ou égal
Ordre de priorité:
Les opérateurs < ; <= ;> ; >= sont prioritaires par rapport aux opérateurs = = ; !=
La priorité des opérateurs relationnels est inférieure à celle des opérateurs arithmétiques:
x+y < a+2 <==> (x+y) < (a+2)
N.B. : Le résultat de comparaison n’est pas une valeur booléenne mais un entier:
0 si le résultat est faux
1 si le résultat est vrai
c) Logiques
&& : "et" logique
|| : "ou" logique
! : "non" logique
4
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
N.B. : && et ¦¦ ont une priorité inférieure aux opérateurs arithmétiques et relationnels.
! a une priorité supérieure aux opérateurs arithmétiques et relationnels.
d) Incrémentation ou décrémentation
++ : incrémentation de 1
-- : décrémentation de 1
e) Binaires
& : "et"
^ : "ou" exclusif
| : "ou" inclusif
<< : décalage à droite
>> : décalage à gauche
~ : complément à 1
f) Affectation
= : affectation simple
+= , -= , *= , /= , %= , <<= , >>= , &= , ^= , |=
g) Conditionnel
L'opérateur conditionnel ?: permet à une expression une valeur conditionnellement à une autre
valeur.
Exemple:
If a>b
max=a
else
max=b
h) Conversion de type
Lorsque des opérandes d'un opérateur sont de type différent, ils sont convertis en un type
commun. Par exemple, dans l'expression 2.0 + 3, l'entier 3 sera converti en double. Il s'agit
d'une conversion implicite.
Il est possible de forcer une conversion (conversion explicite) en utilisant un opérateur de
cast : (nom_type)expression. L'expression globale est convertie dans le type nom_type.
Exemple :
Soient deux variables n et p de type entier, l’expression (double)(n/p) aura comme valeur celle
de l’expression entière n/p convertie en double.
(doube)n/p.
5
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
Les constantes doivent toutes être déclarées et initialisées avant d’être utilisées. Il existe deux
méthodes pour la déclaration des constantes.
Méthode 1 :
#define nom_cste valeur /* pas de point virgule à la fin */
Exemple : #define PI 3.14
Méthode 2 :
const type nom_cste = valeur ;
Exemple : const float PI = 3.14 ;
Le compilateur réserve de la place en mémoire (ici 4 octets), pour la variable PI, mais dont on
ne peut changer la valeur.
V. Les variables
Les variables doivent toutes être déclarées avant d’être utilisées. A une variable correspond un
espace en mémoire et un mécanisme permettant d’adresser cet emplacement. En C une
variable est caractérisé par :
Son nom (un identificateur)
Son type (type de base ou type définie par l’utilisateur)
La déclaration d’une variable a la forme :
<type> <non>;
Example
#include<stdio.h>
#include<conio.h>
void main()
{
Déclaration de variables
int i;/*i: variable de type entier */
char car;/*car: variable de type caractère */
i=65;/*i vaut 65 */ Ecriture dans les variabes
car = 'E'; /* car vaut E */
clrscr(); /* Efface l'écran */
printf("i vaut %d.\n", i); /* Affiche la valeur de i */ Affichage des variables
printf("car vaut %c.\n",car); /* Affiche la valeur de car */
getch(); /* Attendre l'appui d'une touche */
6
Cours programmation 1 : langage C Chapitre 1 : Structure d’un programme C
}
Explication :
On met dans la variable i la valeur 65.
On met dans la variable car la valeur de E.
Le langage C fournit une fonction appelée typedef qui crée de nouveaux types de données.
Exemple :
typedef int entier ; /* fait du nouveau nom ‘entier’ un synonyme de int.
Ce type peut être utilisé dans des déclaration, des ‘casts’ … exactement
comme int. */
tyedef char STRING ; /* fait de string un synonyme de char*/