Académique Documents
Professionnel Documents
Culture Documents
Syntaxe de langage C
ISET SILIANA
1
Département Eléctrique
PLAN
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*/
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:
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
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
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:
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.
/* 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.
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
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
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