Vous êtes sur la page 1sur 33

Chapitre 2

Syntaxe de langage C

ISET SILIANA
1
Département Eléctrique
PLAN

• La structure d’un programme C


• Les composants d’un programme C
• Les opérateurs d’un programme C

ISET SILIANA
2
Département Eléctrique
Structure d’un programme C
Un programme en C comporte :
Partie 1: les déclarations.
Partie 2: le corps de programme.
Déclaration de bibliothèques /*Directives de compilation*/
Déclaration du nouveau type Partie 1
Déclaration des constantes
Déclaration des variables globales
main() /*Programme principal*/
{ /*Début du programme*/

Déclaration de variables internes; /*Corps du programme*/


Suites des instructions /*Chaque instructions doit se terminer par ;*/ Partie 2

return 0;
} /*Fin du programme*/

ISET SILIANA
3
Département Eléctrique
Structure d’un programme C
Partie 1:
• Il fait appel à des bibliothèque fournies avec le compilateur.
• Afin d’utiliser des fonctions prédéfinies, on peut inclure dans
notre programme C des bibliothèques.
Exemples:
math.h: bibliothèque de fonctions mathématiques.
stdio.h: bibliothèque d’entrées/sorties standard
( Lire,Ecrire).
• Pour les inclure, il faut les mettre en haut du programme C en
utilisant :
# include<math.h> ou #include<stdio.h>.
• On peut déclarer des constantes , des variables globales et de
créer des nouveaux types.
• Cette partie peut contenir des définitions des fonctions qui
seront utilisées par l’ intermédiaire de la fonction principale
main.
ISET SILIANA
4
Département Eléctrique
Structure d’un programme C
Partie 2:

• Tout programme c doit comporter une fonction principale


main.
• Cette fonction est celle utilisée par le système pour exécuter
le programme.
• Elle comporte deux accolades d’ouverture et de fermeture.
• À l’intérieur, chaque ligne doit se terminer par ; .
• L’instruction return ne recevra aucune valeur ou sera
absente.
Remarques:
• Le langage C distingue les minuscules, des majuscules.
• Les mots réservés du langage C doivent être écrits en
minuscules.

ISET SILIANA
5
Département Eléctrique
Structure d’un programme C

Exemple 1:
#include <stdio.h> /* bibliotheque d'entrees-sorties standard */
main()
{ printf("BONJOUR \n"); /* utilisation d'une fonction-bibliotheque */
printf("Pour continuer frapper une touche...");
}
Résultat après compilation et exécution:
BONJOUR
Pour continuer frapper une touche…..

ISET SILIANA
6
Département Eléctrique
Les composants
d’un programme C

1. Les mots clés

Ce sont les mots propres au langage C. Ils sont utilisés pour décrire les
instructions à réaliser par le programme ainsi que les types prédéfinis.
L'ANSI-C compte 32 mots clefs :

Exemples : 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

ISET SILIANA
7
Département Eléctrique
Les composants d’un programme
C
En C, il n’existe que quelques types fondamentaux de
données :
• Le type char : un seul octet représentant un caractère.
• Le type int : un nombre entier dont la taille corresponds à
celles des entiers du SE.
• Le type float : un nombre en virgule flottante en simple
précision.
• Le type double : un nombre en virgule flottante en double
précision.
 Quand une déclaration ne précise pas le type de base, int
est supposé le type par défaut.
ISET SILIANA
8
Département Eléctrique
Les composants d’un programme
C
• Exemple :
Ch1
Etu_8 corrects
x

2etu
Etudiant 4 incorrects

Char
ISET SILIANA
9
Département Eléctrique
Les composants d’un programme
C
3. Les types de données
3.1. Les entiers:
Type Description Taille mémoire

int entier standard signé 4 octets


unsigned int entier positif 4 octets
short entier court signé 2 octets
unsigned short entier court non signé 2 octets

long entier long signé 8 octets


unsigned long entier long non signé 8 octets
char caractère signé 1 octet
unsigned char caractère non signé 1 octet

ISET SILIANA
10
Département Eléctrique
Les composants d’un programme
C
Numération des entiers:
• En décimal les nombres s'écrivent tels que, précédés de 0x en
hexadécimal.
• Exemple: 127 en décimal s'écrit 0x7f en hexadécimal.
• Remarque: En langage C, le type char est un cas particulier du
type entier: un caractère est un entier de 8 bits
• Exemples: Les caractères alphanumériques s'écrivent entre ‘ ‘ :
 Le caractère 'b' a pour valeur 98 (son code ASCII).
 Le caractère 22 a pour valeur 22.
 Le caractère 127 a pour valeur 127.
 Le caractère 257 a pour valeur 1 (ce nombre s'écrit sur 9 bits, le bit
de poids fort est perdu).

ISET SILIANA
11
Département Eléctrique
Les composants d’un programme
C
3.2. Les réels:
• Un réel est composée d’un signe, d’une mantisse et d’un exposant.
• Un nombre de bits est réservé en mémoire pour chaque élément.
• Le langage c distingue 3 types de réels:

Type Description Taille


float réel standard 4 octets
double réel double 8 octets
précision
long double réel quadripule 16 octets
précision

Exemple: Représentation interne d’un réel x de type float:


BSM=0
ou
1

ISET SILIANA
Département Eléctrique 12
Exposant sur 8 bits Mantisse sur 23 bits
Les composants d’un programme
C
Exemple sur le codage d’un nombre réel (float): 32 bits
on a float x=525.5 est un nombre réel positif
1. Bit de signe=0
2. L’exposant ? Il faut coder le nombre à la base 2(binaire):
525.5=(1000001101.1) en binaire
il faut appliquer la norme IEEE qui décrit la façon de coder un nombre réel:
1.xxxxxxxx * 2 ^(n+127)
n? 1000001101.1=1.0000011011*2^(9+127)
L’exposant=136=(10001000)en binaire
3. La mantisse=0000011011
sur 23 bit: on ajoute de début 23-10 =13 zéro 0000000000000 0000011011

0 10001000 00000000000000000011011

ISET SILIANA
13
Département Eléctrique
Les composants d’un programme
C
4. Les variables
Les variables doivent être déclarées avant d’être utilisées.
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)

ISET SILIANA
14
Département Eléctrique
Les composants d’un programme
C
• La déclaration est comme suit :

Type identificateur_var ;
Type identificateur_var1, identificateur_var2
;

Exemples :
int x ;
char a,b,c;
ISET SILIANA
15
Département Eléctrique
Les composants d’un programme
C
• On peut définir de nouveaux types à l’aide de la fonction
typedef :
• Exemple:
typedef int entier; /*fait du nouveau nom entier un
synonyme de int */
typedef float reel;
En général, nous avons le choix entre plusieurs types.
reel x; est équivalant à float x;
entier a; est équivalant à int a;

ISET SILIANA
16
Département Eléctrique
Les composants d’un programme
C
5. Les commentaires
• Il est fortement recommandé d'inclure dans le programme
source des commentaires pour faciliter la compréhension du
programme.

• Un commentaire en C commence toujours par les deux


symboles /* et se termine par les deux symboles */
Exemples :

/* ceci est un commentaire sur une seule ligne */

/* ce commentaire porte
sur deux lignes */

ISET SILIANA
17
Département Eléctrique
Les composants d’un programme
C
6. Les constantes
• Les constantes doivent toutes être déclarées et initialisées avant d’être
utilisées. Il existe 2 méthodes pour la déclaration des constantes.

Méthode 1 : #define nom_cste valeur /* Sans point virgule à la fin */


Exemple : #define PI 3.14
Le compilateur ne réserve pas de place en mémoire. Les constantes
déclarées par #define s'écrivent traditionnellement en majuscules,
mais ce n'est pas une obligation.

Méthode 2 : const type nom_cste = valeur ;


Exemple : const float PI = 3.14 ;
Dans ce cas, 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.

ISET SILIANA
18
Département Eléctrique
Les opérateurs
Ce sont des symboles qui permettent de manipuler des
variables, c'est-à-dire effectuer des opérations, les
évaluer .
En langage C, on distingue plusieurs types d'opérateurs :
• L’opérateur d’affectation
• Les opérateurs de calcul
• Les opérateurs d'assignation
• Les opérateurs de comparaison
• Les opérateurs logiques
• Les opérateurs d'incrémentation
• Les opérateurs de conversion de type
• L’opérateur conditionnel ternaire
ISET SILIANA
19
Département Eléctrique
Les opérateurs
• L’opérateur d’affectation =
Exemple : int x;
int y = 2;
x=y;
• Les opérateurs arithmétiques
+, -, *, /, % (modulo, le reste de la division)
Exemple : int x, y;
x = 5;
y=x %2;

ISET SILIANA
20
Département Eléctrique
Les opérateurs
• Les opérateurs d’affectation et calculs arithmétiques

Les opérateurs "+=", "-=","*=", "/=" et "%=" affectent à leur


opérande gauche la valeur de l'expression formée par
l'opérande gauche, l'opérateur arithmétique
correspondant et l'opérande droite.

Exemple : L'expression A += B est équivalente à A = A+B

ISET SILIANA
21
Département Eléctrique
Les opérateurs
• Les opérateurs logiques booléens: prends 0 ou
1
&& : ET logique
|| : OU logique
! Négation logique
Exemple:
if ( age >= 7 && age <= 77 ) puts( "yes" );
if ( age < 7 || age > 77 ) puts( "no" );
if ( ! ( age >= 7 && age <= 77 ) puts( "no!!" );

ISET SILIANA
22
Département Eléctrique
Les opérateurs
• L'opérateur logique sur les entiers bit par bit:
& ET
| OU
<< décalage à gauche
>> décalage à droite
Exemple :
N=23; /*N=00010111 en binaire */
P=N<<2; /*p=n décalé de 2 bits à gauche =0001011100
Q=N>>1; /*p=n décalé de 1 bit à droite= 000010111
Les opérateurs

• Les opérateurs relationnels:


<, >, <=, >=
Si le test est vrai ,elle retourne 1 sinon 0.
== tester l’égalité
!= tester l’inégalité (différent)
Attention à ne pas confondre l’opérateur de test d’égalité ==
et l’opérateur d’affectation =

ISET SILIANA
24
Département Eléctrique
Les opérateurs
• Les opérateurs d'incrémentation et de
décrémentation: ++ / --
o Deux notations: la notation préfixe(++i,--i) et la notation
postfixe(i++,i---)
i=i+1; équivalente i++;
i=i-1; équivalente i--;
o Les opérateurs ++ et -- sont utilisés dans les cas suivants:
 Incrémenter /décrémenter une variable dans une boucle par
exemple. Dans ce cas, il n’y a pas une différence entre la
notation préfixe et la notation postfixe.
 Incrémenter/décrémenter une variable et en même temps
affecter sa valeur à un autre variable. Dans ce cas, il y a une
différence entre la notation préfixe et la notation postfixe.

ISET SILIANA
25
Département Eléctrique
Les opérateurs
• Notation post fixe:
X=i++; passe d’abord la valeur de i à X et incrémentation
après.
• Notation préfixe:
X=++i; incrémente d’abord et passe la valeur de i à X.
• Par exemple :
int x =3, y, z ;
y = ++x ; /* x et y valent 4 */
z = y++ ; /* z vaut 4 et y vaut 5 */

ISET SILIANA
26
Département Eléctrique
Les opérateurs
• L’opérateur conditionnel ternaire: permet, sur une
seule ligne, en fonction d'une condition, de changer la
valeur d'une variable.
– L'opérateur conditionnel « ? » est un opérateur ternaire de
syntaxe : Condition ? expression1 : expression2 ;
– Cette expression retourne la valeur de « expression1 » si «
condition » est satisfaite, et renvoie la valeur de «
expression2 » sinon.
– Par exemple, l'expression : Max = ((X > Y) ? X : Y) ;
– Cette instruction affecte à Max le maximum de X et de Y, et
elle est équivalente à : si( X> Y) alors Max = X ; sinon
Max = Y ;

ISET SILIANA
27
Département Eléctrique
Les opérateurs
• L'opérateur de conversion de type (cast):
L’opérateur de transtypage en français, appelé aussi cast,
permet de transformer des données d'un type vers un autre
type, c'est-à-dire modifier explicitement le type d’une
variable.
Cas 1:Conversion automatique: le type le plus petit
vers le type le plus large
 Les opérateurs de cast peuvent être utilisés de manière
implicite par le compilateur pour transformer.
 il n'y aura aucune perte d'information.
char en int , float en double,…………….
ISET SILIANA
28
Département Eléctrique
Les opérateurs
Exemple:
int i=8;
float x=12.5;
double y;
Y=i*x;
i est converti en float pour être multiplié par x.
Le résultat de la multiplication est de type float.
Avant d’ être affecté à y, le résultat est converti en double.
On obtient y=100.0

ISET SILIANA
29
Département Eléctrique
Les opérateurs
• Cas 2:conversions forcées
il est possible de convertir explicitement une valeur en un
type quelconque en forçant la transformation à l’aide de la
syntaxe :
(<type>) <expression>
Exemple:
int a=3;
int b=4;
float c;
c=(float) a/b;
• La valeur de a est explicitement converti en float .
• La valeur de b est automatiquement convertie en float.
• Le résultat de la division est affecté à c.
• Les contenus de a et b restent inchangés, seulement les
valeurs utilisées dans les calculs
ISET SILIANA
sont converties.
30
Département Eléctrique
Priorité des opérateurs:
Priorité 1(la plus fort) () [] _>
Priorité 2 ! ++ --
Priorité 3 */ %

Priorité 4 + -
Priorité 5 << >>
Priorité 6 < <= > =>
Priorité 7 == !=
Priorité 8 &
priorité 9 ~
Priorité 10 |
Priorité 11 &&
Priorité 12 ||
Priorité 13 ?
Priorité 14 = += -= *= %= <<=
>>=
Priorité 15 ISET SILIANA , 31
Département Eléctrique
Exercice d’application
Exercice 1: Eliminer les parenthèses superflues dans les
expressions suivantes :

a = (x+5) ; // expression 1
a = (x=y) + 2 ; // expression 2
a = (x == y) ; // expression 3
(a<b) && (c<d) ; // expression 4
(i++) * (n+p) ; // expression 5

ISET SILIANA
32
Département Eléctrique
Exercice d’application
Exercice 2: Soient les déclarations suivantes :
int n=5, p=9 ;
int q ; float x ;

Quelle est la valeur affectée aux différentes variables par chacune des
instructions suivantes :
q=n<p ; /*1*/
q=n==p ; /*2*/
q=p%n+p>n ; /*3*/
x=p/n ; /*4*/
x=(float) p/n ; /*5*/
x=(p+0.5)/n ; /*6*/
x= (int) (p+ 0.5)/n ; /*7*/
p=n*(p>n ? n : p) ; /*8*/
q=n*(p<n ? n :p) ; /*9*/
ISET SILIANA
33
Département Eléctrique

Vous aimerez peut-être aussi