Académique Documents
Professionnel Documents
Culture Documents
Cours C Partie 2
Cours C Partie 2
Langage C
KHALID SBAI
Enseignant Chercheur
Ecole Suprieure de Technologie
Dpartement de Gnie Electrique
kh.sbai@yahoo.fr
Universit Moulay Ismal
Khalid SBAI Cours dinformatique
I. Structures de contrle
structures de choix
structures rptitives
I. Structures de contrle
I.1 Structures de choix
Linstruction de branchement
conditionnels:
If . else
Linstruction de branchement
multiple:
switch
Khalid SBAI Cours dinformatique
23/02/2012
Forme 1:
Syntaxe:
if(expression)
{
bloc dinstructions;
dinstructions;
}
23/02/2012
Forme 2:
Syntaxe:
if(expression)
{
bloc dinstructions1;
dinstructions1;
}
else
{
bloc dinstructions2;
dinstructions2;
}
23/02/2012
Remarques :
Lorsquon a plusieurs cas tester, on peut enchaner les if else
if(expression1)
instruction1
else
if(expression2)
instruction2
else
Lorsque plusieurs instructions if sont imbriques, il est
convenu que chaque else se rapporte au dernier if qui ne
possde pas de partie else.
else.
Khalid SBAI Cours dinformatique
if (var1!=0)
if (var1 > 0)
printf("Elle est positive\
positive\n");
else
printf("Elle est ngative\
ngative\n");
x = 3;
0
y = 2;
=
max_xy = ( (x>=y)
=
1
max_xy = y;
x :
y);
max_xy = x;
23/02/2012
char choix;
printf("Taper 1 ou 2");
scanf("%c",&choix);
switch(choix)
{
case '1': printf("vous avez tape 1\
1\n");
break;
case '2': printf("vous avez tape 2\
2\n");
break;
default : printf("je vous ai dit 1 ou 2 pas %c\
%c\n",choix);
break;
}
Khalid SBAI Cours dinformatique
For
While
Do . While
23/02/2012
int i,f,n;
for(i=n, f=1; i>1; f *= i, i-i--);
);
Lorsque expr2 est absente, lexpression correspondante
est considre comme vraie.
Par consquent, for( ; ; ) est une Boucle infinie.
Khalid SBAI Cours dinformatique
expr1;
while ( expr2 )
{
liste dinstructions;
expr3;
}
23/02/2012
#include <stdio.h
stdio.h>
>
int I, S, n;
main ()
{
printf("Donner
printf
("Donner un entier positif :");
scanf("
scanf
(" %d",&n);
for(S=0, I= 1; I<=n;
I<=n; I++)
S += I;
printf("Somme
printf
("Somme S= %d ", S);
return (0)
}
Khalid SBAI Cours dinformatique
s = 0;
for(i=0; i<10; i++)
{
scanf(%d,&n);
if(n<=0)
break;
s += n;
}
Exemple2
#include <stdio.h>
int main( )
{ int i, j ;
for (i = 1 ; i<=15 ; i++)
{
for (j = 1 ; j<=15 ; j++)
{
if (j = = 5) break ;
printf("%d\\t", i * j) ;
printf("%d
}
printf("\\n") ;
printf("
}
return 0 ;
}
Khalid SBAI Cours dinformatique
23/02/2012
Exemple3
x=1;
While (x<=10)
{
a = xx-7;
printf("%f", 1/a);
x++;
}
23/02/2012
23/02/2012
Exemple1
x=1;
while(x<=10)
{
a=1/(x-7);
a=1/(xprintf("%f",a);
x++;
}
Khalid SBAI Cours dinformatique
23/02/2012
Exemple2
x=1;
while(x<=10)
{
if (x==7)
{
printf("division par 0");
x++;
continue;
}
a=1/(x--7);
a=1/(x
printf("%f",a);
x++;
}
Khalid SBAI Cours dinformatique
23/02/2012
Tableau de 10 entiers
index
valeur
10
45
21
37
98
-5
12
45
-20
37
ou
#define N 5
int T[N];
23/02/2012
6
Khalid SBAI Cours dinformatique
23/02/2012
Remarques:
int T[20];
dclare un tableau baptis T de 20 lments de type int
int i;
dclare une variable lmentaire i pouvant servir indicer
un tableau
T[i]
utilisable comme une varaible lmentaire, cest llment
dindice i du tableau T.
(T[3])++
incrmente de 1 llment dindice 3 de tableau T, qui est
le 4me lment de ce tableau
Khalid SBAI Cours dinformatique
Dclaration du
tableau de 10 entiers
Remplissage de chaque
case par la valeur de
son indice
#include <stdio.h>
stdio.h>
void main()
{
int i;
float moyenne
moyenne,, somme, temperature
temperature[7];
[7];
for (i=0;i<7;i++)
{
printf("
printf
("Temperature
Temperature[%d]=",i);
[%d]=",i);
scanf("%f",&
scanf
("%f",&temperature
temperature[i]);
[i]);
}
somme=0;
for (i=0;i<7;i++)
somme += temperature
temperature[i];
[i];
moyenne=somme/7;
moyenne
=somme/7;
printf("la
printf
("la temprature moyenne de la semaine est
est=%f
=%f\\n",moyenne);
n",moyenne);
}
Khalid SBAI Cours dinformatique
23/02/2012
23/02/2012
Exercice :
Ecrire un programme qui lit la dimension N d'un tableau T du
type int (dimension maximale: 20 composantes), remplit le
tableau par des valeurs entres au clavier et affiche le tableau.
Calculer et afficher ensuite la somme des lments du tableau.
Dfinition
En C, un tableau deux dimensions est interprter comme un
tableau (uniuni-dimensionnel
dimensionnel)) de dimension L dont chaque
composante est un tableau (unidimensionnel) de dimension C.
L le nombre de
lignes du tableau
Capteur de temprature
10
7.5
12
13.5
15
12
10
12
14
12
10
12
13.5
14
4.5
8.5
10
10
12
14.5
12
5.5
10
9.5
13.5
10.5
14
11
7.5
10.5
12.5
14.5
11.2
9.5
10.5
11.5
12.5
14.5
10
9.5
8.5
11
10
13.5
6.5
12
13.5
15.5
14
10.5
14.5
12
9.5
13.5
18
15.5
8.5
10.5
4.5
6.5
10
12.5
10.5
11.5
13.5
14
10
4.5
15
Type_donne Indent_Tab
Indent_Tab[[Nlign][Ncol
Nlign][Ncol];
];
Type_donnee : cest le type de donnes prciser pendant
la dclaration (entier, rel, caractres, ..).
Ident_Tab : le nom du tableau
Nlign et Ncol : reprsente le nombre de lignes et de colonne
maximal du tableau. Ce sont des constantes
littrales ou symbolique.
Exemple:
long A[10][10];
float B[2][20];
int C[3][3];
Khalid SBAI Cours dinformatique
23/02/2012
Initialisation et Rservation
T[0][1]
T[1][0]
Premier
Elment
T[0][0]
Dernier
Elment
T[L--1][CT[L
1][C-1]
T[2][1]
T[6][7]
Char t[20] ;
char t2[] = Bonjour
Bonjour;
char s[10] = Salut
Salut ;
Khalid SBAI Cours dinformatique
Exemple:
char t[]= "Bonjour\
"Bonjour\n";
printf ("Bonjour\
("Bonjour\n");
printf ("%s", t);
23/02/2012
23/02/2012
23/02/2012
Principales fonctions :
Concatnation : strcat
strcat((dest
dest,, source);
source);
Simple
char* strcat(char*
strcat(char* Dest, const char* Source);
Avec limitation de la taille de la destination
char* strncat(char*
strncat(char* Dest, const char* Source, int N);
Possibilit de chanage des appels: Les fonctions strcat
retournent le paramtre strDest.
strDest.
strcat((strcat(
strcat
strcat(dest,
dest, source1),
source1), source2);
source2);
Principales fonctions :
Comparaison : strcmp
strcmp((chaine1,
chaine1, chaine2);
chaine2);
Simple
int strcmp
strcmp(const
(const char * ch1,
ch1, const char *ch2
*ch2);
);
Avec limitation de la taille utilise
int strncmp
strncmp(const
(const char* ch1
ch1,, const char* ch2
ch2,, int N);
Comparaison caractre par caractre des valeurs numriques des
Caractres.
Rsultat
0 si les chanes sont identiques.
< 0 si ch1 < ch2
>0 si ch2 > ch1
Khalid SBAI Cours dinformatique
Principales fonctions :
Comparaison insensible aux majuscules et minuscules:
stricmp((chaine1,
stricmp
chaine1, chaine2
chaine2);
);
23/02/2012
Simple
int stricmp
stricmp(const
(const char * ch1,
ch1, const char *ch2
*ch2);
);
Avec limitation de la taille utilise
int strnicmp
strnicmp(const
(const char* ch1
ch1,, const char* ch2
ch2,, int N);
Comparaison caractre par caractre des valeurs numriques des
Caractres, indpendamment des majuscules et minuscules.
Rsultat
0 si les chanes sont identiques.
< 0 si ch1 < ch2
>0 si ch2 > ch1
Khalid SBAI Cours dinformatique
Principales fonctions :
Comparaison
ch1
ch2
strcmp
stricmp
Principales fonctions :
23/02/2012
Recherche
char* strchr(
strchr(const char* ch
ch,, int c);
// retourne l'adresse de la premire occurrence d'un caractre
dans une chaine
char* strrchr(
strrchr(const char* ch
ch,, int c);
// retourne l'adresse de la premire occurrence d'un caractre
dans une chaine en partant de la droite
size_t strcspn
strcspn((const char* ch
ch,, const char* chCharSet);
chCharSet);
// retourne l'indice de la premire occurrence dans une chaine
d'un caractre pris dans un ensemble
size_t strspn
strspn((const char* ch
ch,, const char* chCharSet);
chCharSet);
// retourne l'indice de la premire occurrence dans une chaine
d'un caractre ne figurant pas dans un ensemble
Khalid SBAI Cours dinformatique
Exemple:
#include <stdio.h
stdio.h>
>
#define N 50
void main()
{
int lg;
char chaine[N];
printf("saisir
printf
("saisir une chaine : ");
gets(chaine);
gets
(chaine);
for (lg=0; chaine[lg] !=\
!=\0; lg++);
lg++);
printf("longueur
printf
("longueur de la chaine = %d ", lg);
}
FIN