Tutorat en bio-informatique Le 2 novembre 2012
Exercice 5 et 6 (MAT1400) Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation a) en coordonnées cylindriques et b) en coordonnées sphériques : 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide.
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation a) en coordonnées cylindriques et b) en coordonnées sphériques : a)
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation a) en coordonnées cylindriques et b) en coordonnées sphériques : b)
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation a) en coordonnées cylindriques et b) en coordonnées sphériques : Rappel :
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide. z x 1
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide. z x 1
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide. z x 1
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide. z x 1
Exercice 5 et 6 (MAT1400) - solutions Chapitre 9.7, Analyse - concepts et contextes vol. 2 29) Un solide est délimité inférieurement par le cône et supérieurement par la sphère. Écrivez des inéquations en coordonnées sphériques qui correspondent à ce solide. z x 1
Au programme… Les fonctions Les tableaux
Les fonctions Une fonction (ou méthode) est un regroupement d'instructions auquel on donne un nom. Lorsque la fonction est définie (on lui a donné un nom et on a écrit la liste d'instructions), on peut l'appeler en une ligne de code.
Les fonctions Les fonctions nous permettent : –d'alléger notre code (même si on va se servir de la fonction une seule fois) –d'éviter de répéter le même bloc d'instructions plusieurs fois (réutilisation du code)
Les fonctions Une grande quantité de méthodes sont déjà offertes par JavaScript. Vous les avez probablement déjà utilisées : –de l'objet String : maString.charAt(5); maString.toLowerCase(); maString.toUpperCase(); –de l'objet Math : Math.abs(-5); Math.pow(4, 2); Math.sqrt(4);
Les fonctions Il est préférable de définir toutes les fonctions au même endroit dans le code, au tout début ou à la fin du fichier par exemple. Le code est ainsi plus lisible.
Les fonctions La définition d'une fonction comprend la signature (en couleur dans l'exemple) et le bloc d'instructions (corps de la fonction) : function nomDeFonction(paramètre1, paramètre2, …) { … } Par convention, on choisit un verbe comme nom de fonction.
Les fonctions On peut aussi affecter la définition de la fonction à une variable : var nomDeFonction = function(paramètre1, paramètre2, …) { … };
Les fonctions Attention!!! De cette manière, il est impossible de faire un appel à la fonction avant d'avoir fait l'affectation à la variable : nomDeFonction(); //ERREUR! var nomDeFonction = function(paramètre1, paramètre2, …) { … } js: uncaught runtime exception: TypeError: nomDeFonction is not a function, it is undefined.
Les fonctions Voyons en détails ces quatre types de fonctions : –les fonctions sans valeur de retour et sans paramètre –les fonctions avec valeur de retour et sans paramètre –les fonctions sans valeur de retour et avec un ou plusieurs paramètres –les fonctions avec valeur de retour et avec un ou plusieurs paramètres
Les fonctions Les fonctions sans valeur de retour et sans paramètre : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { //On quitte le programme si il n'y a pas un seul argument throw "Vous devez donner un argument!"; } var prix = Number(arguments[0]); if(isNaN(prix)) { //On quitte le programme si l'utilisateur n'a pas donné un nombre throw "L'argument doit etre un nombre!"; } var avecTaxes = prix * 1.05 * 1.095; print("Le prix du produit avec les taxes est egal a : " + avecTaxes);
Les fonctions Les fonctions sans valeur de retour et sans paramètre : On peut définir une fonction "quitter" qui va imprimer un message d'erreur et arrêter le programme. //Pour imprimer un message d'erreur et quitter le programme function quitter() { throw "Erreur!"; }
Les fonctions Les fonctions sans valeur de retour et sans paramètre : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter(); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter(); } var avecTaxes = prix * 1.05 * 1.095; print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function quitter() { throw "Erreur!"; }
Les fonctions Les fonctions avec valeur de retour et sans paramètre : –On peut définir une seule valeur de retour. –L'instruction 'return' suivie d'une variable ou d'une valeur permet de retourner la variable ou la valeur. –Après un 'return', on sort immédiatement de la fonction.
Les fonctions Les fonctions avec valeur de retour et sans paramètre : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter(); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter(); } var avecTaxes = prix * 1.05 * 1.095; print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function quitter() { throw "Erreur!"; }
Les fonctions Les fonctions avec valeur de retour et sans paramètre : On peut définir une fonction "trouveTaxes" pour calculer le taux correspondant aux deux taxes. //Fonction qui retourne le taux des deux taxes function trouveTaxes() { var taux = 1.05 * 1.095; return taux; } Si vous oubliez l'instruction return, undefined sera retourné par la fonction.
Les fonctions Les fonctions avec valeur de retour et sans paramètre : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter(); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter(); } var avecTaxes = prix * trouveTaxes(); print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function trouveTaxes() { var taux = 1.05 * 1.095; return taux; }
Les fonctions Les fonctions sans valeur de retour et avec un ou plusieurs paramètres : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter(); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter(); } var avecTaxes = prix * trouveTaxes(); print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function quitter() { throw "Erreur!"; }
Les fonctions Les fonctions sans valeur de retour et avec un ou plusieurs paramètres : On peut améliorer la fonction "quitter" en lui faisant imprimer un message d'erreur spécifique à la situation: //Pour imprimer un message d'erreur donné en paramètre et quitter le programme function quitter (message) { throw message; }
Les fonctions Les paramètres servent à "transporter" des copies des variables à l'intérieur d'une fonction. À l'intérieur d'une fonction avec paramètres, on travaille avec les copies des variables seulement. Les variables de départ ne peuvent pas être modifiées dans une fonction. On appelle cela du passage de paramètre par valeur.
Les fonctions Les fonctions sans valeur de retour et avec un ou plusieurs paramètres : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter("Vous devez donner un argument!"); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter("L'argument doit etre un nombre!"); } var avecTaxes = prix * trouveTaxes(); print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function quitter(message) { throw message; }
Les fonctions Les fonctions avec valeur de retour et avec un ou plusieurs paramètres : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter("Vous devez donner un argument!"); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter("L'argument doit etre un nombre!"); } var avecTaxes = prix * trouveTaxes(); print("Le prix du produit avec les taxes est egal a : " + avecTaxes); function quitter(message) { throw message; }
Les fonctions Les fonctions avec valeur de retour et avec un ou plusieurs paramètres : On peut faire le calcul du prix avec les taxes dans une fonction et retourner le total. //Pour calculer le montant total avec les taxes en prenant le prix en paramètre function calculeTotal (prix) { //var avecTaxes = prix * trouveTaxes(); //return avecTaxes; return prix * 1.05 * 1.095; }
Les fonctions Les fonctions avec valeur de retour et avec un ou plusieurs paramètres : //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (arguments.length != 1) { quitter("Vous devez donner un argument!"); } var prix = Number(arguments[0]); if(isNaN(prix)) { quitter("L'argument doit etre un nombre!"); } print("Le prix du produit avec les taxes est egal a : " + calculeTotal(prix)); function calculeTotal(prix) { return prix * 1.05 * 1.095; }
Les fonctions Avec les fonctions, il faut bien comprendre la notion de portée des variables, c'est-à-dire à quels endroits les variables sont accessibles. Les variables que vous créez à l'intérieur d'une fonction sont appelées variables locales. Elles n'existent qu'à l'intérieur de la fonction où elles ont été créées. Les fonctions ont accès à ce qui a été passé en paramètre, aux variables locales et aux variables globales.
Les variables globales Toutes les variables créées en dehors d'une fonction sont automatiquement des variables globales. Les variables globales sont accessibles partout dans le code, donc dans toutes les fonctions. var test = 5; //variable globale, accessible partout function uneFonction() { var test2 = 2; //variable locale, disparaît à la sortie de la fonction }
Les fonctions Pour les nombres et les strings : –les paramètres permettent de rendre accessibles des copies des variables (paramètres formels), et non pas les vraies variables. –Donc, toutes les modifications faites sur les copies des variables à l'intérieur d'une fonction ne seront pas transmises aux vraies variables (paramètres actuels). –Il s'agit de passage par valeur.
Les fonctions Pour les tableaux et les objets : –Une copie de la référence du tableau ou de l'objet est passée en paramètre. –On a donc accès directement au valeurs du tableau ou aux propriétés de l'objet et on peut les modifier à l'intérieur d'une fonction (et le paramètre actuel sera modifié aussi). –Une modification de la référence n'aura toutefois aucun effet.
Les fonctions Exemple : var a = 55; var b = calcule(a); //appel de la méthode -> a est un paramètre actuel print("Dans le code, a = " + a); print("Dans le code, b = " + b); function calcule(a) //Définition de la fonction -> a est un paramètre formel { //Ici, le paramètre a "cache" la variable globale a a *= 4; print("Dans la fonction calcule, a = " + a); return a; } Dans la fonction calcule, a = 220 Dans le code, a = 55 Dans le code, b = 220;
Les fonctions Exemple modifié : var a = 55; var b = calcule(); print("Dans le code, a = " + a); print("Dans le code, b = " + b); function calcule() //Sans paramètre maintenant { a *= 4; //Ici, on modifie donc la variable globale print("Dans la fonction calcule, a = " + a); return a; } Dans la fonction calcule, a = 220 Dans le code, a = 220 Dans le code, b = 220;
Exercice 1 Vous disposez du code suivant: var nbLitres = 25; var prixEssence = 5.49; var total; Définissez une fonction qui prend en paramètre le nombre de litres et le prix de l'essence (au litre), qui retourne le total et qui imprime ce total dans la console. Écrivez ensuite en une ligne l'affectation de la variable double total dans le code présenté en haut avec la valeur de retour de votre fonction.
Exercice 1 (réponse) var nbLitres = 25; var prixEssence = 5.49; var total; total = calculeTotal(nbLitres, prixEssence); function calculeTotal(nbLitres, prix) { var total = nbLitres * prix; print("Le cout total est de " + total + " $."); return total; }
Tableaux On utilise les tableaux pour : –enregistrer dans une même structure plusieurs informations qui sont habituellement reliées (une suite logique d'évènements, un ensemble de résultats, etc.) –passer plusieurs informations à une fonction dans un seul paramètre (la taille du tableau n'est pas définie dans les paramètres formels) –retourner plusieurs valeurs dans une fonction
Tableaux Lorsqu'on initialise un tableau, on a deux choix : –On crée un tableau vide –On donne la liste complète des éléments du tableau En JavaScript, la taille d'un tableau n'est pas définitive. On peut modifier la taille du tableau sans problème.
Tableaux Initialisation d'un tableau vide : var tab = []; var tab2 = new Array(); Initialisation avec tous les éléments : var tabNbDecimaux = [1.2, 2.22, 5.44, 6.1]; var tabString = ["test", "test2", "test3"]; var tabMelange = [3, 5.5, "string"];
Tableaux Pour accéder à une case du tableau, autant pour lire la valeur de la case que pour la modifier : var tabInt = []; tabInt[0] = 555; //ajoute un premier élement (position 0) tabInt[1] = 23; //ajoute un deuxième élément var test = tabInt[0]; //lecture tabInt[1] = tabInt[0]; //case 1 prend la valeur de case 0 La première case est toujours la case 0.
Tableaux Pour obtenir la taille d'un tableau : var tabInt = [0,1,2,3,4,5]; var size = tabInt.length; Attention : –La taille du tableau correspond au nombre total de cases, mais les positions des cases commencent à partir de 0.
Tableaux On peut laisser des "trous" dans un tableau : var tab = []; tab[0] = "dimanche"; tab[1] = "lundi"; tab[5] = "vendredi"; print("La case 3 contient : " + tab[3]); print("Taille : " + tab.length) La case 3 contient : undefined Taille : 6
Tableaux tabString var tabString = [];
Tableaux tabString "test" var tabString = []; tabString[0] = "test";
Tableaux tabString "test" var tabString = []; tabString[0] = "test"; tabString[1] = tabString[0];
Tableaux tabString "test" "test2" var tabString = []; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2";
Tableaux tabString "test" "test2" undefined "fin" var tabString = []; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin";
Tableaux On peut éliminer toute la fin d'un tableau en modifiant la longueur : var tab = [0,1,2,3,4,5]; print(tab); tab.length = 2; print(tab); 0,1,2,3,4,5 0,1
Tableaux tabString "test" "test2" undefined "fin" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString.length = 3;
Tableaux On peut utiliser la méthode push() pour ajouter un élément à la fin du tableau : tab.push(2); tab.push(3); On peut utiliser la méthode pop() pour retirer le dernier élément du tableau (retourne la valeur du dernier élément) : var dernierElem = tab.pop()
Tableaux tabString "test" "test2" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString.length = 3;
Tableaux tabString "test" "test2" "push" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString.length = 3; tabString.push("push");
Tableaux tabString "test" "test2" "push" "push2" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString.length = 3; tabString.push("push"); tabString.push("push2");
Tableaux tabString "test" "test2" "push" "push2" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString.length = 3; tabString.push("push"); tabString.push("push2"); var dernierElem = tabString.pop();
Tableaux On peut utiliser la méthode splice() pour retirer des cases d'un tableau, à n'importe quel endroit dans le tableau : var tab = [0, 1, 2, 3, 4, 5]; print("Tableau avant : " + tab); tab.splice(2, 3); //à partir de la position 2 (incl.), enlève 3 éléments print("Tableau apres : " + tab); Tableau avant : 0,1,2,3,4,5 Tableau après : 0,1,5
Tableaux 2D On peut utiliser des tableaux à 2 dimensions : var tab2d = [[1,2,3], [1,2,3], [1,2,3]]; tab2d
Tableaux 2D On peut utiliser des tableaux à 2 dimensions : var tab2d = [[1,2,3], [1,2,3], [1,2,3]]; tab2d[0][0] = 9; tab2d
Tableaux 2D On peut utiliser des tableaux à 2 dimensions : var tab2d = [[1,2,3], [1,2,3], [1,2,3]]; tab2d[0][0] = 9; tab2d[2][1] = 5; tab2d
Tableaux 2D Le tableau n'est pas réellement représenté graphiquement. Vous pouvez le regarder dans les deux sens. L'important est de bien se souvenir de la façon dont vous avez défini vos "lignes" et vos "colonnes". Toutefois, il faut plutôt voir le tableau 2D tout simplement comme un tableau qui contient des tableaux.
Exercice 2 Écrivez une fonction qui prend en paramètre un tableau de nombres entiers et qui retourne la valeur minimale du tableau.
Exercice 2 (réponse) function min(tab) { var min = tab[0]; for(var i = 1; i < tab.length; i++) { if(tab[i] < min) min = tab[i]; } return min; }
Exercice 3 Écrivez une fonction qui prend en paramètre un tableau de strings et une string. Cette fonction insère la string dans le tableau à la première position vide trouvée. Si elle ne trouve pas de case vide dans le tableau, elle doit ajouter la string à la fin du tableau.
Exercice 3 (réponse) function insertion(tab, string) { for(var i = 0; i < tab.length; i++) { if(tab[i] == undefined) { break; } tab[i] = string; }
Prochain rendez-vous Mercredi, le 7 novembre, à 13h30, au local 1207 Solution de ces questions d'examens intra antérieurs –intra Hiver-2007 : questions 5 et 6 –intra Automne-2009 : question 5 –intra Hiver-2011 : question 7 (tout sauf f)