Documente Academic
Documente Profesional
Documente Cultură
Classification
Tous les Languages de Programmation Languages Imperatifs Programmation Procedurale Ada, Pascal, C Programmation Orientee Objets C++, Java Programmation Concurrente Ada 95 Languages Declaratifs Programmation Fonctionelle LISP, SCHEME Programmation Logique PROLOG
Languages Imperatifs: Langages incluant des moyens pour le programmeur d attribuer des valeurs a des locations en mmoire. Languages Declaratifs: Langages pour lesquels le programmeur rflchit en terme de valeurs des fonctions et de relations entre entits diverses. Il n y a pas d attribution de valeurs aux variables.
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
C fichier
Code assembleur
1
2
4 5
Anatomie
Programme typique en C
include main() fonction a() fonction b() Main() toujours la 1ere fonction appele
Types dinstruction en C
Dclarations des variables Assignations Fonctions Contrle
10
11
12
13
14
15
16
17
Les pointeurs
Un pointeur contient ladresse dune autre variable. 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
20
21
22
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 Oprateurs sur bits: <<,>> dcalage gauche ou droite status = byte << 4; &et | ou ^ ou exclusif
25
Oprateurs et expressions
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
Plusieurs fonctions pr-dfinies: printf(), sin(), atoi(), Le prototype de ces fonctions sont dans fichiers dentte (header file) printf() dans stdio.h sin() dans math.h
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
Bien sr, nous pouvons crire nos propres fonctions.
/* Routine de calcul du maximum */ int imax(int n, int m) Dclaration de la fonction { int max;
if (n>m) max = n; else max = m; return max; } Variable locale
Fonctions en C
Fonctions sans arguments et ne retournant pas de valeur. void fonction(void) Fonctions avec arguments ne retournant pas de valeur. void fonction(int x, int y, char ch)
31
Fonctions en C
Les fonctions exigent la dclaration dun prototype avant son utilisation:
Fonctions en C
La rcursivit
Niveau 1
/* Programme principal */ #include <stdio.h> void up_and_down(int); main() { up_and_down(1) } void up_and_down(int n) { printf(Niveau %d\n n); if (n<4) up_and_down(n+1); printf(NIVEAU %d\n n); }
33
Boucle for
/* Boucle for */ #include <stdio.h> #define NUMBER 22 main() { int count, total = 0;
Initialisation
Condition de fin de boucle
for(count =1; count <= NUMBER; count++, total += count) printf(Vive le langage C !!!\n); printf(Le total est %d\n, total); } Incrmentation et autres fonctions
34
Boucle while
/* Boucle while */ Initialisation #include <stdio.h> #define NUMBER 22 Condition de fin de boucle main() (boucle tant que vrai) { (boucle faite que si vrai) int count = 1, total = 0; while(count <= NUMBER) { printf(Vive le langage C !!!\n); count++; total += count; } printf(Le total est %d\n, total);
Incrmentation
35
Boucle do while
/* Boucle do while */ Initialisation #include <stdio.h> #define NUMBER 22 Incrmentation main() { int count = 1, total = 0; Condition de fin de boucle (boucle tant que vrai) do (boucle faite au moins 1 fois) { printf(Vive le langage C !!!\n); count++; total += count; } while(count <= NUMBER); printf(Le total est %d\n, total);
36
/* Utilisation de switch case */ main() { char choix; switch(choix) { case a : fonctionA(); case b : fonctionB(); case c : fonctionC(); default : erreur(3); } }
Paramtre de dcision
Excut si choix = a Excut si choix = a ou b Excut si choix = a, b ou c
37
Effet du break
/* Utilisation de switch case */ main() Paramtre de dcision { char choix; Excut si choix = a switch(choix) { Excut si choix = b case a : fonctionA(); break; case b : fonctionB(); break;Excut si choix = c case c : fonctionC(); break; Excut si choix non rpertori par un case default : erreur(3); } }
38
Directives
39
Modle de la mmoire
Le compilateur C gnre 6 sections (ou blocs) de code et de donnes relocalisables.
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
La section .data nest pas utilise par le compilateur C (rserv pour lassembleur).
43