# Qu'est ce qu'une fonction Une fonction est un ensemble d'action à realiser dans un but precis et eviter la réecriture des actions dans plusieurs endroit . Une fonction doit etre : 1) Déclarer : on decrit ce qu'elle fait , les actions qu'elle va faire (à faire une seule fois) 2) Executer : on lance, on l'utilise à un ou plusieurs endroit (à faire plusieurs fois quand on veut utiliser la fonction) Une fonction peut avoir des entrés ou input nécessaire à son fonctionnement = des arguments Une fonction peut avoir des sorties ou output qui decrit ses resultats # Exemple en Javascript ### Déclarer une fonction ``` function helloworld() { console.log('Hello world!') // Le output } ``` ``` function salut(nom) { // nom = argument ou input return 'Bonjour ' + nom; // autre type de output qu'on peut stocker dans une variable lors de l'utilsation ou execution de la fonction } ``` une fonction peut avoir 0 à n arguments séparé par des virgules ``` function addition(valeur, valeur2) { return valeur + valeur2 } ``` ### Utilisation ``` helloworld() // sans le terme function ``` > `Hello world` ``` salut('safidy') // le input 'safidy' est stocké dans la variable nom lors de la declaration salut('rakoto') salut('rabe') ``` > `Bonjour safidy` > `Bonjour rakoto` > `Bonjour rabe` On peut utiliser autant de fois la fonction `salut` sans repeter ses actions. Une seule declaration et plusieurs utilisations. Exemple, je veux faire plusieurs additions avec la fonction déclarée ci-dessus. ``` addition(1, 2) // 1 + 2 ``` > 3 ``` addition(4, 3) ``` > 7 ``` sum([1, 4, 7]) ``` > 12 ### Exemple ``` var somme = arraySum([5, 20, 50]) console.log(somme) ``` > 75 ## Correction #### 1 ``` function rangeGenerator(min, max) { const tab = [] for (i = min; i <= max; i++) { tab.push(i) } return tab } ``` #### 2 ``` function arraySum(tab) { let sum = 0 tab.forEach(item => { sum += item }) return sum } ``` #### 3 ``` function dataConstructor(collection) { const prepared = [] collection.forEach(item => { prepared.push({ id: item.id, fullname: item.firstname + ' ' + item.lastname }) }) return prepared } ``` #### 4 ``` function arrayFlatten(tab) { const data = [] const flat = tab.flat() flat.forEach(item => { if (!data.includes(item)) { data.push(item) } }) return data } ``` #### 5 ``` function arrayAverage(tab) { let sum = 0 tab.forEach(item => { sum += item }) return sum/tab.length } ``` #### 6 #### 7 ``` function arrayToString(tableau) { tableau = tableau.flat() let results = '' tableau.forEach (item => { if (typeof item === 'string') { results += ' ' + item } }) return results } ``` #### 8 ``` const tab = [3, 4, 2, 1, 7] function arrayMax(collection) { const item = { value: 0, position: 0 } collection.forEach((element, index) => { if (element >= item.value) { item.value = element item.position = index } }) return item } console.log(arrayMax(tab)) ``` #### 9 ``` const tab = [3, 4, 2, 1, 7] function arrayMin(collection) { const item = { value: 0, position: 0 } collection.forEach((element, index) => { if (element < item.value) { item.value = element item.position = index } }) return item } console.log(arrayMin(tab)) \\``