From bcd6414c7445c3f1f81937ef50ffcd2a2edd03b4 Mon Sep 17 00:00:00 2001
From: Orestis Malaspinas <orestis.malaspinas@hesge.ch>
Date: Fri, 22 Jun 2018 15:10:31 +0200
Subject: [PATCH] ajouts divers fonctions

---
 control.md   |  4 ++--
 fonctions.md | 48 ++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 40 insertions(+), 12 deletions(-)

diff --git a/control.md b/control.md
index b9e6842..2f49133 100644
--- a/control.md
+++ b/control.md
@@ -115,7 +115,7 @@ fn main() {
 
 - On sort d'une boucle avec `break`{.rust}
 
-    <pre><code data-trim="hljs rust" class="lang-rust">
+<pre><code data-trim="hljs rust" class="lang-rust">
 fn main() {
     let mut i = 0;
     loop {
@@ -129,7 +129,7 @@ fn main() {
         }
     }
 }
-    </code></pre>  
+</code></pre>  
 
 ## La boucle `while`{.rust}
 
diff --git a/fonctions.md b/fonctions.md
index 50d95e8..5b48730 100644
--- a/fonctions.md
+++ b/fonctions.md
@@ -22,7 +22,7 @@ sansfont: Sans Serif
 <!-- slide-numbers: true -->
 ---
 
-# Les instructions et les expressions
+# Instructions et expressions
 
 ## Les instructions (statements)
 
@@ -32,7 +32,7 @@ sansfont: Sans Serif
     ```{.lang-rust}
     let x = 1; // une instruction
     ```
-- On ne peut pas assigner une instruction
+- On ne peut pas assigner une instruction `let`{.rust}
 
 <pre><code data-trim="hljs rust" class="lang-rust">
     fn main() {
@@ -50,14 +50,42 @@ sansfont: Sans Serif
     ```
 
 - La plupart du code rust est une expression.
-- N'importe quel bloc peut effectuer des opérations et retourner une valeur.
+- N'importe quel **bloc** peut effectuer des opérations et retourner une valeur.
 
 <pre><code data-trim="hljs rust" class="lang-rust">
-    fn main() {
-        let y = {
-            let x = 5 + 3;
-            x - 9
-        };
-        println!("5 + 3 - 9 = {}", y);
-    }
+fn main() {
+    let y = {
+        let x = 5 + 3;
+        x - 9
+    };
+    println!("5 + 3 - 9 = {}", y);
+}
 </code></pre>
+
+- **Important:** Une expression sans `;` dans un bloc retourne la valeur evaluée de l'expression.
+
+# Fonctions
+
+## Généralités
+
+- Les fonctions s'écrivent en *snake_case* (le compilateur vous avertiras...).
+- La définition d'une fonction commence par un `fn`{.rust}.
+- La définition des fonctions peut se faire avant ou après l'endroit où elle est appelée.
+
+    <pre><code data-trim="hljs rust" class="lang-rust">
+fn main() {
+    println!("La fonction main est une fonction.");
+
+    fonction_fonction();
+}
+
+fn fonction_fonction() {
+    println!("La fonction fonction_fonction est une fonction.");
+}
+    </code></pre>
+
+## Paramètres de fonctions
+
+- Une fonction peut prendre des arguments séparés par des `,`{.rust}.
+- Le type des arguments doit toujours être explicitement déclaré.
+- 
\ No newline at end of file
-- 
GitLab