Intro C
Intro C
Intro C
1
Classification
T o u s le s L a n g u a g e s
d e P r o g r a m m a tio n
Languages Languages
Im p e r a t if s D e c la r a tifs
P r o g r a m m a t io n P r o g r a m m a t io n P r o g r a m m a t io n P r o g r a m m a t io n P r o g r a m m a t io n
P r o c e d u r a le O r ie n t e e O b j e t s C o n c u rre n te F o n c t io n e lle L o g iq u e
A d a , P a s c a l, C C ++, Java Ada 95 L IS P , S C H E M E PR O LO G
2
Caractristique du C
Structur
Modulaire: peut tre dcoup en modules qui peuvent tre compils sparement
Universel: n'est pas orient vers un domaine d'application particulier
Typ: tout objet C doit tre dclar avant dtre utilis
Portable: sur n'importe quel systme en possession d'un compilateur C
3
Un long fleuve tranquille
Compilateur C
C
fichier
Code
assembleur
Assembleur
Code
objet
Linker
Code
executable
4
Fichier C (extension .c)
/* exemple de programme C :
- somme des nb de 1 10 et affichage
de la valeur*/ En C le programme principal 1
#include <stdio.h> 0 s'appelle toujours main
int main (void) 1
dclarations de variables de 2
{ type entier (cases mmoire
int somme; int i; 2 pouvant contenir un entier)
somme = 0; 3 instruction d'affectation de 3
for (i = 1; i <= 10; i++) valeur la variable somme
4 {
instructions excutes
somme = somme + i; en squence
} l'instruction entre accolades 4
printf ("%d\n", somme); 5 est excute pour les valeurs
somme = 0; de i allant de 1 10
} affiche l'cran la valeur de 5
l'entier contenu dans somme
Ecrire le programme suivant :
#include <stdio.h>
int main(void) {
int a= 257, b = 381;
if (a > 0 && b > 0) {
printf(" PGCD(%3d,%"d)\n",a,b);
while (a != b) {
if (a < b) b = b-a;
else a = a-b;
printf("=PGCD(%3d,%3d)\n",a,b);
}
printf("=%d\n",a);
}
return 0;
}
6
Anatomie
Programme typique en C
include
Main() toujours la
1ere fonction appele
main()
instructions
7
Commandes simples de compilation
8
Types dinstruction en C
Assignations
Fonctions
Contrle
9
Types de donnes et de variables
10
Types de donnes et de variables
11
Types de donnes et de variables
12
Types de donnes et de variables
13
Types de donnes et de variables
14
Types de donnes et de variables
Type float
format TMS320C30 sur 32 bits
de 5.9x10-39 3.4 x1038.
15
Types de donnes et de variables
Type double
format TMS320C30 sur 32 bits
de 5.9x10-39 3.4 x1038.
16
Types de donnes et de variables
Type pointer
binaire sur 32 bits
de 0 0xFFFFFFFF.
17
Les pointeurs
Dclaration:
float *wirelen;
18
Les pointeurs
Utilisation:
wirelen = &wire2 ;
Contenu de wirelen = adresse de wire2
*wirelen = 30.5 ;
Mme effet que wire2 = 30.5.
19
Les pointeurs et les vecteurs
Dclaration:
float *arrayptr;
float farray[30];
Utilisation:
arrayptr = farray; ou arrayptr = &farray[0];
20
Les pointeurs et les vecteurs
21
Les modificateurs des classes de mmorisation
extern :
indique une variable ou une fonction dclare dans un autre module.
register :
demande au compilateur de placer des variables dans les registres du
CPU. Augmente la vitesse de traitement.
22
Les modificateurs des classes de mmorisation
const :
indique que le contenu dune variable ne doit pas tre
modifie.
volatile :
indique quune variable peut voir son contenu changer tout
moment par le programme, des interruptions ou tout autre
facteur extrieur. Empche le compilateur de faire des
optimisations sur cette variable.
23
Oprateurs et expressions
Oprateurs un paramtre:
- change le signe de la variable
~complment 1
* indirection (pointeurs)
value = *salary; /* contenu point par salaire */
&adresse
++/-- incrmentation/dcrmentation
sizeof()
24
Oprateurs et expressions
Oprateurs arithmtique:
*,/,+,-
% modulo
25
Oprateurs et expressions
Oprateurs relationnels:
<,>,<=,=>
Oprateurs dgalit:
==, !=
Oprateurs logiques:
&& et
|| ou
26
Oprateurs et expressions
Oprateur conditionnel:
result = mode > 0 ? 1 : 0;
if mode>0 then result=1 else result=0.
Oprateurs dassignation:
=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=
27
Fonctions en C
28
Fonctions en C
Extrait de stdio.h
/****************************************************************/
/* FORMATTED INPUT/OUTPUT FUNCTIONS */
/****************************************************************/
extern int fprintf(FILE *_fp, const char *_format, ...);
extern int fscanf(FILE *_fp, const char *_fmt, ...);
extern int printf(const char *_format, ...);
extern int scanf(const char *_fmt, ...);
extern int sprintf(char *_string, const char *_format, ...);
extern int sscanf(const char *_str, const char *_fmt, ...);
extern int vfprintf(FILE *_fp, const char *_format, char *_ap);
extern int vprintf(const char *_format, char *_ap);
extern int vsprintf(char *_string, const char *_format, char *_ap);
29
Fonctions en C
31
Fonctions en C
/* Programme principal */
#include <stdio.h>
int imax(int,int);
main() Prototype de la fonction
{ }
32
Fonctions en C
La rcursivit
/* Programme principal */
#include <stdio.h>
void up_and_down(int);
main()
Niveau 1 {
Niveau 2 up_and_down(1)
Niveau 3 }
Niveau 4 void up_and_down(int n)
NIVEAU 4 {
NIVEAU 3 printf(Niveau %d\n n);
NIVEAU 2 if (n<4)
up_and_down(n+1);
NIVEAU 1 printf(NIVEAU %d\n n);
} 33
Boucle for
Initialisation
/* Boucle for */
#include <stdio.h>
#define NUMBER 22 Condition de fin
main() de boucle
{
int count, total = 0;
case c : fonctionC();
Excut si choix non
default : erreur(3); rpertori par un case
} et si choix = a, b ou c
} 37
Effet du break
#undefine <name>
#undefine ZERO
#include <filename>
#include <math.h>
39
Modle de la mmoire
40
Modle de la mmoire
Sections initialises:
.text:
code excutable.
.cinit:
table des variables globales et statiques initialises.
.const:
table des valeurs dinitialisation des constantes globales et statiques
+ les chanes de car.
41
Modle de la mmoire
Sections non-initialises:
.bss:
espace rserv pour les variables globales et statiques non
initialises.
.stack:
pile systme.
.sysmem:
pool de mmoire pour allocation dynamique (alloc, malloc, calloc).
42
Modle de la mmoire
43