diff --git a/Makefile b/Makefile index 880cbce712d5512d23b2d3fa6a90c96c08496507..8c5f83f91a479392aaae977c3966bee27bd3abb2 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ REVEALOPRIONS += --self-contained SVG=$(wildcard figs/*.svg) PNG=$(SVG:%.svg=%.png) -all: $(PNG) intro.html variables.html +all: $(PNG) intro.html variables.html types.html figs/%.png: figs/%.svg convert \-flatten $< $@ @@ -40,5 +40,8 @@ intro.html: intro.md Makefile variables.html: variables.md Makefile pandoc -s $(REVEALOPRIONS) -o $@ $< +types.html: types.md Makefile + pandoc -s $(REVEALOPRIONS) -o $@ $< + clean: rm -rf intro.html variables.html diff --git a/types.md b/types.md new file mode 100644 index 0000000000000000000000000000000000000000..ad625b0967254246f9ee3841193c0e017903ea83 --- /dev/null +++ b/types.md @@ -0,0 +1,69 @@ +--- +title: Cours de programmation séquentielle +subtitle: Types +author: Orestis Malaspinas +<!-- date: 25 avril 2018 --> +sansfont: Sans Serif +header-includes: + <link rel="stylesheet" href="reveal.js/lib/css/zenburn.css" > + <link rel="stylesheet" href="reveal.js/css/theme/simple.css" id="theme"> + <link rel="stylesheet" href="css/console.css" id="theme"> + <script src="jquery/dist/jquery.min.js"></script> + <!-- <script src="reveal.js/lib/js/classList.js"></script> --> + <!-- <script src="reveal.js/plugin/zoom-js/zoom.js"></script> --> + <!-- <script src="reveal.js/plugin/highlight/highlight.js"></script> --> + <!-- <script src="js/remote-diagrams.js"></script> --> + <!-- <script src="reveal.js/plugin/notes/notes.js"></script> --> +include-after: + <script src="js/playRust.js"></script> + <script src="js/remote-code.js"></script> + <script src="js/remote-diagrams.js"></script> + <script src="js/em-artiste.js"></script> +width: + 1500 +height: + 1500 +<!-- slide-numbers: true --> +--- + +# Les types + +## Les types en rust + +- Langage **statiquement typé**: tous les types sont connus **à la compilation**. +- Les types sont **inférés** quand cela est possible. +- Il est parfois nécessaire d'annoter le type explicitement. +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x = 5; // entier 32 bits dont le type est inféré + + let y:i32 = 5; // entier 32 bits dont le type est annoté + println!("Ces deux lignes sont équivalentes x est: {} et y est: {}", x, y); // affichage +} +</code></pre> +- Il exits plusieurs types de base: + - Les entiers. + - Les nombres à virgule flottante. + - Les booléens. + - Les charactères. + + +## Les entiers + +- Il existe 4 tailles d'entiers (8, 16, 32, et 46 bits) qui viennent en signé ou non-signé. + ++---------------+---------------+--------------------+ +|Longueur | Signé | Non-signé | ++===============+===============+====================+ +| 8 bits | `i8`{.rust} | `u8`{.rust} | ++---------------+---------------+--------------------+ +| 16 bits | `i16`{.rust} | `u16`{.rust} | ++---------------+---------------+--------------------+ +| 32 bits | `i32`{.rust} | `u32`{.rust} | ++---------------+---------------+--------------------+ +| 64 bits | `i64`{.rust} | `u64`{.rust} | ++---------------+---------------+--------------------+ + +- Également en taille dépendant de l'architecture + - `isize`{.rust} entier signé 32 ou 64 bits. + - `usize`{.rust} entier signé 32 ou 64 bits. \ No newline at end of file