diff --git a/Makefile b/Makefile index 00d05ebb61e525e0dbb352705c6c8c96870a96df..33cb7ae66998ca60376296af8d9d4e73c5f58858 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ REVEALOPRIONS += --highlight-style espresso # all: cours.pdf cours.html -all: intro.html +all: intro.html variables.html # cours.pdf: cours.md Makefile # pandoc -s $(BEAMEROPTIONS) -o $@ $< @@ -35,5 +35,8 @@ all: intro.html intro.html: intro.md Makefile pandoc -s $(REVEALOPRIONS) -o $@ $< +variables.html: variables.md Makefile + pandoc -s $(REVEALOPRIONS) -o $@ $< + clean: rm -rf intro.html \ No newline at end of file diff --git a/variables.md b/variables.md new file mode 100644 index 0000000000000000000000000000000000000000..abcbb076252ecdbc66aac53c859ac8f9c0c779f9 --- /dev/null +++ b/variables.md @@ -0,0 +1,131 @@ +--- +title: Cours de programmation séquentielle +subtitle: Variables +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> +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 variables + +## Lien entre une valeur et un symbole + +- Symbole liant un *identifiant* avec une *valeur*. +- Le *type* de la valeur peut être quelconque. +- Pour *déclarer* une variable il faut utiliser la forme: + + `let symbole = valeur`{.rust}. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x = 5; // entier 32 bits + println!("La valeur de x est: {}", x); // affichage + + let y = "La valeur 5 est liée avec la variable x"; // Chaîne de caractères + println!("La valeur de y est: {}", y); // affichage +} +</code></pre> + +- En rust le type d'une variable est **inféré** (quand c'est possible). +- Sinon il faut le donner explicitement: + + `let symbole: type = valeur`{.rust}. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x: i32 = 5; // entier 32 bits + println!("La valeur de x est: {}", x); // affichage +} +</code></pre> + +## Quelques règles + +- Les mot-clés du langage sont interdits pour nommer les variables. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let if = 7; +} +</code></pre> + +- Une variable ne peut pas être utilisée si elle n'est pas déclarée. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + println!("La valeur de x est: {}", x); // affichage +} +</code></pre> + +- On peut déclarer une variable, puis l'initialiser. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x; // Déclaration + x = 5; // Assignation, on préfère écrire `let x = 5;` + println!("La valeur de x est: {}", x); // affichage + + let y = "La valeur 5 est liée avec la variable x"; // Chaîne de caractères + println!("La valeur de y est: {}", y); // affichage +} +</code></pre> + +- On peut explicit + +## Mutabilité/**Immutabilité** + +- Les variables sont **immutables** par défaut. +- Une variable immutable **ne peut pas** être modifiée. +- Si on essaie le compilateur refuser de compiler le programme. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let x = 5; // + println!("La valeur de x est: {}", x); + + x = 6; + println!("La valeur de x est: {}", x); +} +</code></pre> + +## **Mutiabilité**/Immutabilité + +- Pour rendre une variable **mutable** il faut utilise la forme: + + `let mut symbole = valeur`{.rust}. + +- Une variable mutable **peut** être modifiée. + +<pre><code data-trim="hljs rust" class="lang-rust"> +fn main() { + let mut x = 5; + println!("La valeur de x est: {}", x); + + x = 6; + println!("La valeur de x est: {}", x); +} +</code></pre> + +## Constantes + +- Les variables immutables ressemblent aux *constantes*. +- On les déclare avec la forme: + +`const SYMBOLE: type = valeur;`{.rust} + +- Plusieurs différences notables: + 1. On ne peut pas utiliser `mut`{.rust} \ No newline at end of file