Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
EDDAOUI AHMED
Linstruction printf
La fonction printf ne fait pas partie du langage C au
#include <stdio.h>
void main ()
{
printf("Un ");
printf("bout de ");
printf("texte.\n");
printf("Nouvelle ligne");
}
Affichera:
Un bout de texte.
Nouvelle ligne
7
Commentaires
/* Commentaire
qui stend sur
plusieurs lignes */
// Commentaire sur une ligne
Dclaration de variables
Type nom_var;
Type nom_var=valeur;
Type nom_var1,nom_var2;
Diffrents types :
10
constantes
#include <stdio.h>
#define pi 3.1415626
#define g 9.81
void main ()
{
double rayon, diametre;
rayon = 15.0;
diametre = 2*pi*rayon;
}
11
variables
(entier, flottant, simple caractre, etc...) et quel format
d'affichage utiliser (combien afficher de chiffres aprs la virgule,
utiliser la notation dcimale habituelle ou la notation
scientifique en puissances de 10, complter les nombres trop
petits par des espaces ou des zros gauche, etc...) Ces deux
informations, type des variables afficher et format d'affichage
sont indiques au moyen de squences de caractres spciales,
appeles spcificateurs de format, insres dans la chane de
caractres passe comme premier paramtre la fonction printf.
Ainsi linstruction printf(%d,un_entier); affiche le contenu de
la variable un_entier sur lcran.
12
13
Lecture du clavier
scanf est un peu le
symtrique de printf et s'utilise de faon assez similaire. Ainsi, le
14
structure alternative
si (<expression logique>) alors
<bloc d'instructions 1>
sinon <bloc d'instructions 2>
finsi
15
structure alternative
Exemple 1
if (a > b)
max = a;
else
max = b;
Exemple 2
if (A==B)
printf("A est gal B\n");
else
printf("A est diffrent de B\n");
Exemple 3
if (A-B)
printf("A est diffrent de B\n");
else
printf("A est gal B\n");
16
structure alternative
Exemple 4
if (A > B)
{
AIDE = A;
A = C;
C = AIDE;
}
Else
{
AIDE = B;
B = C;
C = AIDE;
}
// SI A suprieur B Permuter A et C
// SI non permuter B et C
17
structure alternative
La suite d'instructions
if (A>B)
MAX=A;
else
MAX=B;
peut tre remplace par:
MAX = (A > B) ? A : B;
18
Structures rptitives
19
<bloc d'instructions>
Fintant
20
exemple
/* Afficher les nombres de 0 9 */ int I = 0;
while (I<10) {
while (I<10)
printf("%i \n", I++);
21
do - while
22
do - while
do {
Instruction 1;
Instruction 2:
..
}while ( condition );
La structure do - while est semblable la structure while,
d'instructions,
*do - while value la condition aprs avoir excut le bloc
d'instructions. Ainsi le bloc d'instructions est excut au
moins une fois.
23
Exemple
float N;
do
{
printf("Introduisez un nombre entre 1 et 10 :");
scanf("%f", &N);
}
while (N<1 || N>10);
int n, div;
La structure for en C
for ( <init.> ; <cond. rptition> ; <compteur> )
<bloc d'instructions>
25
Exemple
int I;
for (I=0 ; I<=20 ; I++)
printf("Le carr de %d est %d \n", I, I*I);
int n, tot;
26
experts en C */ int C, I;
C=getchar();
for (I=128 ; I>=1 ; C%=I, I/=2) printf("%i ", C/I);
/* d */ /* notation utilisant for - dconseiller - */ /* surcharge et
mauvais emploi de la structure */
int C, I;
for(C=getchar(),I=128; I>=1 ;printf("%i ",C/I),C%=i,i/=2) ;
27
Instruction switch
Elle permet dexcuter diffrentes instructions en fonction
28
#include <stdio.h>
void main (){
char operation;
int r, a, b;
printf("Entrez un signe d'opration: ");
scanf("%c", &operation);
a=273; b=158; r=0;
if (operation=='+' || operation=='p') r = a + b;
else if (operation=='-' || operation=='m') r = a - b;
else if (operation=='*' || operation=='f') r = a * b;
else if (operation=='/' || operation=='d') r = a / b;
else printf("Non valable: ");
29
#include <stdio.h>
void main (){
char operation; int r, a, b;
printf("Entrez un signe d'opration: "); scanf("%c",
&operation);
a=273; b=158; r=0;
switch (operation) {
case '+':case 'p':r = a + b;break;
case '-':case 'm':r = a - b;break;
case '*':case 'f':r = a * b;break;
case '/':case 'd':r = a / b;break;
default:printf("Non valable: ");}
printf("%d %c %d = %d\n", a, operation, b, r);
}
30
31
32
Exemple
La dclaration
int JOURS[12]={31,28,31,30,31,30,31,31,30,31,30,31};
33
Dclaration de tableaux en C
<TypeSimple> <NomTableau>[<Dimension>];
Les noms des tableaux sont des identificateurs qui
Mmorisation
En C, le nom d'un tableau est le reprsentant de
35
Exemple
En supposant qu'une variable du type long occupe 4
36
Initialisation
int A[5] = {10, 20, 30, 40, 50};
float B[4] = {-1.05, 3.33, 87e-5, -12.3E4};
int C[10] = {1, 0, 0, 1, 1, 1, 0, 1, 0, 1};
Il faut que le nombre de valeurs dans la liste
37
Rservation automatique
int A[] = {10, 20, 30, 40, 50};
==> rservation de 5*sizeof(int) octets (dans notre
cas: 10 octets)
float B[] = {-1.05, 3.33, 87e-5, -12.3E4};
==> rservation de 4*sizeof(float) octets (dans notre
cas: 16 octets)
int C[] = {1, 0, 0, 1, 1, 1, 0, 1, 0, 1};
==> rservation de 10*sizeof(int) octets (dans notre
cas: 20 octets)
38
39
Exercices
afficher la moyenne.
41
42
Dfinitions
En C, un tableau deux dimensions A est interprter
43
Dclaration
<TypeSimple>
<NomTabl>[<DimLigne>][<DimCol>];
Exemples
int A[10][10]; ou bien long A[10][10]; ou bien ...
float B[2][20]; ou bien double B[2][20]; ou bien ...
int C[3][3];
char D[15][40];
44
Mmorisation
le nom d'un tableau est le reprsentant de l'adresse
45
Initialisation
int A[3][10] ={{ 0,10,20,30,40,50,60,70,80,90},
{10,11,12,13,14,15,16,17,18,19},
{ 1,12,23,34,45,56,67,78,89,90}};
float B[3][2] = {{-1.05, -1.10 },
{86e-5, 87e-5 },
{-12.5E4, -12.3E4}};
Lors de l'initialisation, les valeurs sont affectes ligne
par ligne en passant de gauche droite. Nous ne
devons pas ncessairement indiquer toutes les valeurs:
Les valeurs manquantes seront initialises par zro.
46
Access au composants ,
- les indices du tableau varient de 0 L-1,
respectivement de 0 C-1.
- la composante de la Nime ligne et Mime colonne
est note:
A[N-1][M-1]
A[3][2]=4;
47
void main() {
int A[5][10];
int I,J;
/* Pour chaque ligne ... */
for (I=0; I<5; I++)
/* ... considrer chaque composante */
for (J=0; J<10; J++) scanf("%d", &A[I][J]);
}
49
Exercices
Exo 1: Saisir une matrice dentiers 2.2, calculer et afficher son dterminant.
50
Les pointeurs
51
adresse mmoire
52
5
53
La notion de pointeur
L'oprateur *
pi
*pi
5
variable pointeur
variable pointe
55
56
Pointeurs et typage
Typage d'un pointeur
- un pointeur est typ par le type de l'objet point
int * pi1, * pi2; /* pi1 et pi2 sont de type pointeur sur entier */
char * pc;
/* pc est de type pointeur sur caractre */
Affectation entre pointeurs
- l'affectation p1 = p2 est correcte si p1 et p2 sont de mme type
- pi1 = pi2; /* affectation correcte */
- pi1 = pc; /* affectation errone !!! */
57
#include <stdio.h>
int carre ( int x )
{
return (x * x);
}
void main ()
{
int i = 3;
int car;
car = carre ( i );
printf ("%d", car);
avant
i
appel
de carre car
i
appel
de carre
car
i
fin de
l'exc.
car
de carre
Carre
copie
3
valeur
3
9
retour
valeur
}
58
main
avant
appel
de raz
appel
de raz
*ip
3
&i
raz ( &i );
printf ("%d", i);
}
fin de
l'exc.
de raz
Raz
copie
adresse
ip
59
60
Pointeurs et tableaux
Identificateur de tableau
le nom d'un tableau est une constante dont la valeur
est l'adresse du premier lment du tableau
0
1
int t[3];
t
ou &t[0]
p2 = p1;
*(p2+1) = - 5 ;
==> modification de t1[1] !!!
p1
t1
p2
t2
p1
t1
p2
t2
p1
-5
t1
p2
t2
63
modifiable !!
non modifiable !!
tc
a d a \0
64
Pointeur
sur
fonction
Dfinition
- le langage C autorise la dfinition de pointeurs sur fonction
- le nom d'une fonction est une constante de type pointeur sur fonction
dont la valeur est l'adresse de sa premire instruction
Passage d'une fonction en paramtre
float integrer (float (* f)(float) , float a, float b, int n);
float carre (float x) { return (x * x); }
main ()
{ float surface;
surface = integrer (carre, 0.0, 2.0, 100);
}
65
LES FONCTIONS
66
Exemple
La fonction MAX est du type int et elle a besoin de
else
return N2; }
68
69
70
71
suivante :
on commence par fixer le type de retour (void s'il y en a
aucun),
puis on prcise le nom de la fonction
puis on donne une liste des types des paramtres
utiliss (cette liste est mise entre parenthses et les
lments sont spars par des virgules).
L'exemple suivant dfinit le prototype de la fonction
factorielle qui calcule la factorielle d'une valeur entire
(passe en paramtre) et retourne ce rsultat .
long fact(int); /* Pr-dclaration de la fonction fact
72
*/
73
Variables locales
Les variables dclares dans un bloc d'instructions
Exemple
Dans la fonction suivante,
int FONCTION(int A); {
int X; ...
X = 100; ...
while (A>10) {
double X;
...
X *= A;
... } }
la premire instruction X=100 se rapporte la variable du type
int dclare dans le bloc extrieur de la fonction; l'instruction
X*=A agit sur la variable du type double dclare dans la boucle
while. A l'intrieur de la boucle, il est impossible d'accder la
variable X du bloc extrieur.
75
Variables globales
Les variables dclares au dbut du fichier, l'extrieur
76
Exemple
La variable STATUS est dclare globalement pour pouvoir tre
77
rcursivit
Une fonction est dite rcursive, ds lors ou elle se fait appel pour
78
79
80
81