1
la programmation en langage C
la programmation en langage C
2
Classification
Classification
Programmation
Procedurale
Ada, Pascal, C
Programmation
Orientee Objets
C++, Java
Programmation
Concurrente
Ada 95
Languages
Imperatifs
Programmation
Fonctionelle
LISP, SCHEME
Programmation
Logique
PROLOG
Languages
Declaratifs
Tous les Languages
de Programmation
Languages Imperatifs: Langages incluant des moyens pour le
programmeur d ’attribuer des valeurs a des locations en mémoire.
Languages Declaratifs: Langages pour lesquels le programmeur
réfléchit en terme de valeurs des fonctions et de relations entre
entités diverses. Il n ’y a pas d ’attribution de valeurs aux variables.
3
Caractèristique du C
Caractèristique du C
Structuré
Modulaire: peut être découpé en modules qui peuvent être compilés séparement
Universel: n'est pas orienté vers un domaine d'application particulier
Typé: tout objet C doit être déclaré avant d’être utilisé
Portable: sur n'importe quel système en possession d'un compilateur C
4
Un long fleuve tranquille
Un long fleuve tranquille
C
fichier
Compilateur C
Code
assembleur
Assembleur
Code
objet
Linker
Code
executable
/* exemple de programme C :
- somme des nb de 1 à 10 et affichage
de la valeur*/
#include <stdio.h>
int main (void)
{
int somme; int i;
somme = 0;
for (i = 1; i <= 10; i++)
{
somme = somme + i;
}
printf ("%dn", somme);
somme = 0;
}
Fichier C (extension .c)
Fichier C (extension .c)
1
En C le programme principal
s'appelle toujours main 1
déclarations de variables de
type entier (cases mémoire
pouvant contenir un entier)
2
2
3 instruction d'affectation de
valeur à la variable somme
3
4 instructions exécutées
en séquence
l'instruction entre accolades
est exécutée pour les valeurs
de i allant de 1 à 10
4
affiche à l'écran la valeur de
l'entier contenu dans somme
5
5
0
6
Ecrire le programme suivant :
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("=%dn",a);
}
return 0;
}
7
Programme typique en C
include
main()
fonction a()
fonction b()
instructions
instructions
instructions
Main() toujours la
1ere fonction appelée
Anatomie
Anatomie
8
Commandes simples de compilation
Commandes simples de compilation
Prétraitement, compilation et édition de liens :
gcc –Wall –g pgcd.o –lm –o pgcd
l'option –Wall demande une compilation avec des diagnostics sur la
propreté du code
l'option –g demande que la table des symboles soit ajoutée à l'exécutable
l'option –lm demande de lier la librairie mathématique
l'option –o pgcd demande que le résultat (l'exécutable) soit nommé pgcd au
lieu de a.out
Le programme est à lancer avec ./pgcd
9
Types d’instruction en C
Types d’instruction en C
Déclarations des variables
Assignations
Fonctions
Contrôle
10
Types de données et de variables
Types de données et de variables
Déclaration des variables
int y;
char yesno, ok;
int ordered = 1, onhand = 0;
float total = 43.132;
char *cptr = NULL;
11
Types de données et de variables
Types de données et de variables
Type « char » ou « signed char »:
ASCII sur 32 bits
• de -2147483648 à 2147483647.
Type « unsigned char »:
ASCII sur 32 bits
• de 0 à 4294967295.
12
Types de données et de variables
Types de données et de variables
Type « short » ou « signed short »
en complément à 2 sur 32 bits
• de -2147483648 à 2147483647.
Type « unsigned short »:
binaire sur 32 bits
• de 0 à 4294967295.
13
Types de données et de variables
Types de données et de variables
Type « int » ou « signed int »
en complément à 2 sur 32 bits
• de -2147483648 à 2147483647.
Type « unsigned int »:
binaire sur 32 bits
• de 0 à 4294967295.
14
Types de données et de variables
Types de données et de variables
Type « long » ou « signed long »
en complément à 2 sur 32 bits
• de -2147483648 à 2147483647.
Type « unsigned long »:
binaire sur 32 bits
• de 0 à 4294967295.
15
Types de données et de variables
Types de données et de variables
Type « enum » (ordered list)
en complément à 2 sur 32 bits
• de -2147483648 à 2147483647.
Type « float »
format TMS320C30 sur 32 bits
• de 5.9x10-39
à 3.4 x1038
.
16
Types de données et de variables
Types de données et de variables
Type « double »
format TMS320C30 sur 32 bits
• de 5.9x10-39
à 3.4 x1038
.
Type « long double »
format TMS320C30 sur 40 bits
• de 5.9x10-39
à 3.4 x1038
.
17
Types de données et de variables
Types de données et de variables
Type « pointer »
binaire sur 32 bits
• de 0 à 0xFFFFFFFF.
18
Les pointeurs
Les pointeurs
Un pointeur contient l’adresse d’une autre variable.
Déclaration:
float *wirelen;
19
Les pointeurs
Les pointeurs
Utilisation:
wirelen = &wire2 ;
• Contenu de wirelen = adresse de wire2
*wirelen = 30.5 ;
• Même effet que wire2 = 30.5.
20
Les pointeurs et les vecteurs
Les pointeurs et les vecteurs
Déclaration:
float *arrayptr;
float farray[30];
Utilisation:
arrayptr = farray; ou arrayptr = &farray[0];
21
Les pointeurs et les vecteurs
Les pointeurs et les vecteurs
Accès à une valeur dans le vecteur:
*(arrayptr+3) équivalent à farray[3]
Balayage simple avec ++arrayptr
22
Les modificateurs des classes de mémorisation
Les modificateurs des classes de mémorisation
« extern »:
indique une variable ou une fonction déclarée dans un autre module.
« register »:
demande au compilateur de placer des variables dans les registres du
CPU. Augmente la vitesse de traitement.
23
Les modificateurs des classes de mémorisation
Les modificateurs des classes de mémorisation
« const »:
indique que le contenu d’une variable ne doit pas être
modifiée.
« volatile »:
indique qu’une variable peut voir son contenu changer à tout
moment par le programme, des interruptions ou tout autre
facteur extérieur. Empêche le compilateur de faire des
optimisations sur cette variable.
24
Opérateurs et expressions
Opérateurs et expressions
Opérateurs à un paramètre:
- change le signe de la variable
~ complément à 1
* « indirection » (pointeurs)
• value = *salary; /* contenu pointé par salaire */
& adresse
++/-- incrémentation/décrémentation
sizeof()
25
Opérateurs et expressions
Opérateurs et expressions
Opérateurs arithmétique:
*,/,+,-
% modulo
Opérateurs sur bits:
<<,>> décalage à gauche ou à droite
• status = byte << 4;
& et
| ou
^ ou exclusif
26
Opérateurs et expressions
Opérateurs et expressions
Opérateurs relationnels:
<,>,<=,=>
Opérateurs d’égalité:
==, !=
Opérateurs logiques:
&& et
|| ou
27
Opérateurs et expressions
Opérateurs et expressions
Opérateur conditionnel:
result = mode > 0 ? 1 : 0;
if mode>0 then result=1 else result=0.
Opérateurs d’assignation:
=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=
28
Fonctions en C
Fonctions en C
Plusieurs fonctions pré-définies:
printf(), sin(), atoi(), …
Le prototype de ces fonctions sont dans fichiers d’entête (header file)
printf() dans stdio.h
sin() dans math.h
29
Fonctions en C
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);
30
Fonctions en C
Fonctions en C
Bien sûr, nous pouvons écrire nos propres fonctions.
/* Routine de calcul du maximum */
int imax(int n, int m)
{
int max;
if (n>m)
max = n;
else
max = m;
return max;
}
Déclaration de la fonction
Variable locale
Valeur retournée par la fonction
31
Fonctions en C
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)
32
Fonctions en C
Fonctions en C
Les fonctions exigent la déclaration d’un prototype avant son utilisation:
/* Programme principal */
#include <stdio.h>
int imax(int,int);
main()
{ … }
int imax(int n, int m)
{ … }
Prototype de la fonction
La fonction est définie ici
33
Fonctions en C
Fonctions en C
La récursivité
/* Programme principal */
#include <stdio.h>
void up_and_down(int);
main()
{
up_and_down(1)
}
void up_and_down(int n)
{
printf(“Niveau %dn” n);
if (n<4)
up_and_down(n+1);
printf(“NIVEAU %dn” n);
}
Niveau 1
Niveau 2
Niveau 3
Niveau 4
NIVEAU 4
NIVEAU 3
NIVEAU 2
NIVEAU 1
34
Boucle « for »
Boucle « for »
/* Boucle for */
#include <stdio.h>
#define NUMBER 22
main()
{
int count, total = 0;
for(count =1; count <= NUMBER; count++, total += count)
printf(“Vive le langage C !!!n”);
printf(“Le total est %dn”, total);
}
Initialisation
Condition de fin
de boucle
Incrémentation et autres fonctions
35
Boucle « while »
Boucle « while »
/* Boucle while */
#include <stdio.h>
#define NUMBER 22
main()
{
int count = 1, total = 0;
while(count <= NUMBER)
{
printf(“Vive le langage C !!!n”);
count++;
total += count;
}
printf(“Le total est %dn”, total);
}
Initialisation
Condition de fin de boucle
(boucle tant que vrai)
(boucle faite que si vrai)
Incrémentation
36
Boucle « do while »
Boucle « do while »
/* Boucle do while */
#include <stdio.h>
#define NUMBER 22
main()
{
int count = 1, total = 0;
do
{
printf(“Vive le langage C !!!n”);
count++;
total += count;
} while(count <= NUMBER);
printf(“Le total est %dn”, total);
}
Initialisation
Incrémentation
Condition de fin de boucle
(boucle tant que vrai)
(boucle faite au moins 1 fois)
37
Choix multiple: « switch case »
Choix multiple: « switch case »
/* Utilisation de switch case */
main()
{
char choix;
…
switch(choix)
{
case ‘a’ : fonctionA();
case ‘b’ : fonctionB();
case ‘c’ : fonctionC();
default : erreur(3);
}
}
Paramètre de décision
Exécuté si choix = a
Exécuté si choix = a ou b
Exécuté si choix = a, b ou c
Exécuté si choix non
répertorié par un « case »
et si choix = a, b ou c
38
Effet du « break »
Effet du « break »
/* Utilisation de switch case */
main()
{
char choix;
…
switch(choix)
{
case ‘a’ : fonctionA(); break;
case ‘b’ : fonctionB(); break;
case ‘c’ : fonctionC(); break;
default : erreur(3);
}
}
Paramètre de décision
Exécuté si choix = a
Exécuté si choix = b
Exécuté si choix = c
Exécuté si choix non
répertorié par un « case »
39
Directives
Directives
#define <name> <substitution>
#define ZERO 0
#undefine <name>
#undefine ZERO
#include <filename>
#include <math.h>
#if, #endif, #else
40
Modèle de la mémoire
Modèle de la mémoire
Le compilateur C génère 6 sections (ou blocs) de code et de données
relocalisables.
41
Modèle de la mémoire
Modèle de la mémoire
Sections initialisées:
.text:
• code exécutable.
.cinit:
• table des variables globales et statiques initialisées.
.const:
• table des valeurs d’initialisation des constantes globales et statiques
+ les chaînes de car.
42
Modèle de la mémoire
Modèle de la mémoire
Sections non-initialisées:
.bss:
• espace réservé pour les variables globales et statiques non
initialisées.
.stack:
• pile système.
.sysmem:
• pool de mémoire pour allocation dynamique (alloc, malloc, calloc).
43
Modèle de la mémoire
Modèle de la mémoire
La section « .data » n’est pas utilisée par le compilateur C (réservé pour
l’assembleur).

introC.pptxgfggggggggggffffffffffffffffffffffffffffffffffff

  • 1.
    1 la programmation enlangage C la programmation en langage C
  • 2.
    2 Classification Classification Programmation Procedurale Ada, Pascal, C Programmation OrienteeObjets C++, Java Programmation Concurrente Ada 95 Languages Imperatifs Programmation Fonctionelle LISP, SCHEME Programmation Logique PROLOG Languages Declaratifs Tous les Languages de Programmation Languages Imperatifs: Langages incluant des moyens pour le programmeur d ’attribuer des valeurs a des locations en mémoire. Languages Declaratifs: Langages pour lesquels le programmeur réfléchit en terme de valeurs des fonctions et de relations entre entités diverses. Il n ’y a pas d ’attribution de valeurs aux variables.
  • 3.
    3 Caractèristique du C Caractèristiquedu C Structuré Modulaire: peut être découpé en modules qui peuvent être compilés séparement Universel: n'est pas orienté vers un domaine d'application particulier Typé: tout objet C doit être déclaré avant d’être utilisé Portable: sur n'importe quel système en possession d'un compilateur C
  • 4.
    4 Un long fleuvetranquille Un long fleuve tranquille C fichier Compilateur C Code assembleur Assembleur Code objet Linker Code executable
  • 5.
    /* exemple deprogramme C : - somme des nb de 1 à 10 et affichage de la valeur*/ #include <stdio.h> int main (void) { int somme; int i; somme = 0; for (i = 1; i <= 10; i++) { somme = somme + i; } printf ("%dn", somme); somme = 0; } Fichier C (extension .c) Fichier C (extension .c) 1 En C le programme principal s'appelle toujours main 1 déclarations de variables de type entier (cases mémoire pouvant contenir un entier) 2 2 3 instruction d'affectation de valeur à la variable somme 3 4 instructions exécutées en séquence l'instruction entre accolades est exécutée pour les valeurs de i allant de 1 à 10 4 affiche à l'écran la valeur de l'entier contenu dans somme 5 5 0
  • 6.
    6 Ecrire le programmesuivant : 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("=%dn",a); } return 0; }
  • 7.
    7 Programme typique enC include main() fonction a() fonction b() instructions instructions instructions Main() toujours la 1ere fonction appelée Anatomie Anatomie
  • 8.
    8 Commandes simples decompilation Commandes simples de compilation Prétraitement, compilation et édition de liens : gcc –Wall –g pgcd.o –lm –o pgcd l'option –Wall demande une compilation avec des diagnostics sur la propreté du code l'option –g demande que la table des symboles soit ajoutée à l'exécutable l'option –lm demande de lier la librairie mathématique l'option –o pgcd demande que le résultat (l'exécutable) soit nommé pgcd au lieu de a.out Le programme est à lancer avec ./pgcd
  • 9.
    9 Types d’instruction enC Types d’instruction en C Déclarations des variables Assignations Fonctions Contrôle
  • 10.
    10 Types de donnéeset de variables Types de données et de variables Déclaration des variables int y; char yesno, ok; int ordered = 1, onhand = 0; float total = 43.132; char *cptr = NULL;
  • 11.
    11 Types de donnéeset de variables Types de données et de variables Type « char » ou « signed char »: ASCII sur 32 bits • de -2147483648 à 2147483647. Type « unsigned char »: ASCII sur 32 bits • de 0 à 4294967295.
  • 12.
    12 Types de donnéeset de variables Types de données et de variables Type « short » ou « signed short » en complément à 2 sur 32 bits • de -2147483648 à 2147483647. Type « unsigned short »: binaire sur 32 bits • de 0 à 4294967295.
  • 13.
    13 Types de donnéeset de variables Types de données et de variables Type « int » ou « signed int » en complément à 2 sur 32 bits • de -2147483648 à 2147483647. Type « unsigned int »: binaire sur 32 bits • de 0 à 4294967295.
  • 14.
    14 Types de donnéeset de variables Types de données et de variables Type « long » ou « signed long » en complément à 2 sur 32 bits • de -2147483648 à 2147483647. Type « unsigned long »: binaire sur 32 bits • de 0 à 4294967295.
  • 15.
    15 Types de donnéeset de variables Types de données et de variables Type « enum » (ordered list) en complément à 2 sur 32 bits • de -2147483648 à 2147483647. Type « float » format TMS320C30 sur 32 bits • de 5.9x10-39 à 3.4 x1038 .
  • 16.
    16 Types de donnéeset de variables Types de données et de variables Type « double » format TMS320C30 sur 32 bits • de 5.9x10-39 à 3.4 x1038 . Type « long double » format TMS320C30 sur 40 bits • de 5.9x10-39 à 3.4 x1038 .
  • 17.
    17 Types de donnéeset de variables Types de données et de variables Type « pointer » binaire sur 32 bits • de 0 à 0xFFFFFFFF.
  • 18.
    18 Les pointeurs Les pointeurs Unpointeur contient l’adresse d’une autre variable. Déclaration: float *wirelen;
  • 19.
    19 Les pointeurs Les pointeurs Utilisation: wirelen= &wire2 ; • Contenu de wirelen = adresse de wire2 *wirelen = 30.5 ; • Même effet que wire2 = 30.5.
  • 20.
    20 Les pointeurs etles vecteurs Les pointeurs et les vecteurs Déclaration: float *arrayptr; float farray[30]; Utilisation: arrayptr = farray; ou arrayptr = &farray[0];
  • 21.
    21 Les pointeurs etles vecteurs Les pointeurs et les vecteurs Accès à une valeur dans le vecteur: *(arrayptr+3) équivalent à farray[3] Balayage simple avec ++arrayptr
  • 22.
    22 Les modificateurs desclasses de mémorisation Les modificateurs des classes de mémorisation « extern »: indique une variable ou une fonction déclarée dans un autre module. « register »: demande au compilateur de placer des variables dans les registres du CPU. Augmente la vitesse de traitement.
  • 23.
    23 Les modificateurs desclasses de mémorisation Les modificateurs des classes de mémorisation « const »: indique que le contenu d’une variable ne doit pas être modifiée. « volatile »: indique qu’une variable peut voir son contenu changer à tout moment par le programme, des interruptions ou tout autre facteur extérieur. Empêche le compilateur de faire des optimisations sur cette variable.
  • 24.
    24 Opérateurs et expressions Opérateurset expressions Opérateurs à un paramètre: - change le signe de la variable ~ complément à 1 * « indirection » (pointeurs) • value = *salary; /* contenu pointé par salaire */ & adresse ++/-- incrémentation/décrémentation sizeof()
  • 25.
    25 Opérateurs et expressions Opérateurset expressions Opérateurs arithmétique: *,/,+,- % modulo Opérateurs sur bits: <<,>> décalage à gauche ou à droite • status = byte << 4; & et | ou ^ ou exclusif
  • 26.
    26 Opérateurs et expressions Opérateurset expressions Opérateurs relationnels: <,>,<=,=> Opérateurs d’égalité: ==, != Opérateurs logiques: && et || ou
  • 27.
    27 Opérateurs et expressions Opérateurset expressions Opérateur conditionnel: result = mode > 0 ? 1 : 0; if mode>0 then result=1 else result=0. Opérateurs d’assignation: =, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=
  • 28.
    28 Fonctions en C Fonctionsen C Plusieurs fonctions pré-définies: printf(), sin(), atoi(), … Le prototype de ces fonctions sont dans fichiers d’entête (header file) printf() dans stdio.h sin() dans math.h
  • 29.
    29 Fonctions en C Fonctionsen 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);
  • 30.
    30 Fonctions en C Fonctionsen C Bien sûr, nous pouvons écrire nos propres fonctions. /* Routine de calcul du maximum */ int imax(int n, int m) { int max; if (n>m) max = n; else max = m; return max; } Déclaration de la fonction Variable locale Valeur retournée par la fonction
  • 31.
    31 Fonctions en C Fonctionsen 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)
  • 32.
    32 Fonctions en C Fonctionsen C Les fonctions exigent la déclaration d’un prototype avant son utilisation: /* Programme principal */ #include <stdio.h> int imax(int,int); main() { … } int imax(int n, int m) { … } Prototype de la fonction La fonction est définie ici
  • 33.
    33 Fonctions en C Fonctionsen C La récursivité /* Programme principal */ #include <stdio.h> void up_and_down(int); main() { up_and_down(1) } void up_and_down(int n) { printf(“Niveau %dn” n); if (n<4) up_and_down(n+1); printf(“NIVEAU %dn” n); } Niveau 1 Niveau 2 Niveau 3 Niveau 4 NIVEAU 4 NIVEAU 3 NIVEAU 2 NIVEAU 1
  • 34.
    34 Boucle « for» Boucle « for » /* Boucle for */ #include <stdio.h> #define NUMBER 22 main() { int count, total = 0; for(count =1; count <= NUMBER; count++, total += count) printf(“Vive le langage C !!!n”); printf(“Le total est %dn”, total); } Initialisation Condition de fin de boucle Incrémentation et autres fonctions
  • 35.
    35 Boucle « while» Boucle « while » /* Boucle while */ #include <stdio.h> #define NUMBER 22 main() { int count = 1, total = 0; while(count <= NUMBER) { printf(“Vive le langage C !!!n”); count++; total += count; } printf(“Le total est %dn”, total); } Initialisation Condition de fin de boucle (boucle tant que vrai) (boucle faite que si vrai) Incrémentation
  • 36.
    36 Boucle « dowhile » Boucle « do while » /* Boucle do while */ #include <stdio.h> #define NUMBER 22 main() { int count = 1, total = 0; do { printf(“Vive le langage C !!!n”); count++; total += count; } while(count <= NUMBER); printf(“Le total est %dn”, total); } Initialisation Incrémentation Condition de fin de boucle (boucle tant que vrai) (boucle faite au moins 1 fois)
  • 37.
    37 Choix multiple: «switch case » Choix multiple: « switch case » /* Utilisation de switch case */ main() { char choix; … switch(choix) { case ‘a’ : fonctionA(); case ‘b’ : fonctionB(); case ‘c’ : fonctionC(); default : erreur(3); } } Paramètre de décision Exécuté si choix = a Exécuté si choix = a ou b Exécuté si choix = a, b ou c Exécuté si choix non répertorié par un « case » et si choix = a, b ou c
  • 38.
    38 Effet du «break » Effet du « break » /* Utilisation de switch case */ main() { char choix; … switch(choix) { case ‘a’ : fonctionA(); break; case ‘b’ : fonctionB(); break; case ‘c’ : fonctionC(); break; default : erreur(3); } } Paramètre de décision Exécuté si choix = a Exécuté si choix = b Exécuté si choix = c Exécuté si choix non répertorié par un « case »
  • 39.
    39 Directives Directives #define <name> <substitution> #defineZERO 0 #undefine <name> #undefine ZERO #include <filename> #include <math.h> #if, #endif, #else
  • 40.
    40 Modèle de lamémoire Modèle de la mémoire Le compilateur C génère 6 sections (ou blocs) de code et de données relocalisables.
  • 41.
    41 Modèle de lamémoire Modèle de la mémoire Sections initialisées: .text: • code exécutable. .cinit: • table des variables globales et statiques initialisées. .const: • table des valeurs d’initialisation des constantes globales et statiques + les chaînes de car.
  • 42.
    42 Modèle de lamémoire Modèle de la mémoire Sections non-initialisées: .bss: • espace réservé pour les variables globales et statiques non initialisées. .stack: • pile système. .sysmem: • pool de mémoire pour allocation dynamique (alloc, malloc, calloc).
  • 43.
    43 Modèle de lamémoire Modèle de la mémoire La section « .data » n’est pas utilisée par le compilateur C (réservé pour l’assembleur).

Notes de l'éditeur

  • #2 Programmation Procedurale: Le programme est divises en blocs qui peuvent contenir leurs propres variables ainsi que d ’autres blocs. Programmation Orientee Objet: Programmation qui supporte l ’interaction d ’objets. Un objet contient des donnees ainsi que des fonctions qui peuvent s ’appliquer a ces donnees. Programmation Concurrente: Languages de programmation qui s ’appliquent a plusieurs CPU ’s qui operent en parallele. Les donnees peuvent etre partagees ou non. Programmation Fonctionnelle: Un programme est un appel de fonction avec un certain nombre de parametres, qui eux-meme peuvent etre des appels d ’autres fonctions. Le programme renvoie donc un seul resultat, qui peut-etre assez complexe (example: une nouvelle fonction). Programmation Logique: Un programme consiste en une serie d ’axiomes, de regles de deduction et en un theoreme a prouver. Le programme renvoie la valeur « vrai » si les axiomes supporte le theoreme. Il renvoie la valeur « fause » autrement.