diff --git a/slides/Makefile b/slides/Makefile index 7067a6bb63b80693d59f4ccb53c2f2af0531c2a7..04c8b3be8f0c3cf60fda4649f1fa9478427380a9 100644 --- a/slides/Makefile +++ b/slides/Makefile @@ -4,7 +4,7 @@ PDFOPTIONS += --highlight-style my_highlight.theme PDFOPTIONS += --pdf-engine pdflatex PDFOPTIONS += -V theme:metropolis PDFOPTIONS += -V themeoptions:numbering=none -V themeoptions:progressbar=foot -PDFOPTIONS += -V fontsize=smaller +# PDFOPTIONS += -V fontsize=smaller PDFOPTIONS += -V urlcolor=blue REVEALOPTIONS = -t revealjs diff --git a/slides/variables_fonctions.md b/slides/variables_fonctions.md index eb2f783c7a2d3ae4debcab01a0948c1410f90361..84d6be091e13c3300fde708fde511f0366dae770 100644 --- a/slides/variables_fonctions.md +++ b/slides/variables_fonctions.md @@ -29,33 +29,39 @@ patat: * Un **type** (`int`, `double`, ...); * une **adresse mémoire** (voir ci-après). -# Représentation des variables en mémoire (1/2) +# Représentation des variables en mémoire (1/3) -## La mémoire +## La mémoire est : -* La mémoire est: - - ... un ensemble de bits, - - ... accessible via des adresses, +- ... un ensemble de bits, +- ... accessible via des adresses, +------+----------+----------+------+----------+------+------+ | bits | 00110101 | 10010000 | .... | 00110011 | .... | .... | +======+==========+==========+======+==========+======+======+ | addr | 2000 | 2001 | .... | 4000 | .... | .... | +------+----------+----------+------+----------+------+------+ +- ... gérée par le système d'exploitation. +- ... séparée en deux parties: **la pile** et **le tas**. - - ... gérée par le système d'exploitation. - - ... séparée en deux parties: **la pile** et **le tas**. +## Pile vs tas -## Une variable +* Pile structurée, tas non-structuré; +* Pile ordonnée, tas amas informe; +* Pile taille connue à la compilation, tas dynamique. -* Une variable, `type a = valeur`{.C}, possède: - - un type (`char`{.C}, `int`{.C}, ...), - - un contenu (une séquence de bits qui encode `valeur`{.C}), - - une adresse mémoire (accessible via `&a`{.C}), - - une portée. +# Représentation des variables en mémoire (2/3) +## Une variable, `type a = valeur`{.C}, possède: -# Représentation des variables en mémoire (2/2) +- un type (`char`{.C}, `int`{.C}, ...), +- un contenu (une séquence de bits qui encode `valeur`{.C}), +- une adresse mémoire (accessible via `&a`{.C}), +- une portée. + +## En fonction du **type** les bits ne représentent pas la même chose! + +# Représentation des variables en mémoire (3/3) {width=100%} @@ -140,10 +146,8 @@ int main() { void set_to_two(int a) { // a: nouvelle variable // valeur de a est une copie de x // lorsque la fonction est appelée, ici -1 - a = 2; // la valeur de a est fixée à 2 } // a est détruite - int main() { int x = -1; set_to_two(x); // -1 est passé en argument