La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Tutorat en bio-informatique 29 janvier 2013. Au programme… Introduction au Java.

Présentations similaires


Présentation au sujet: "Tutorat en bio-informatique 29 janvier 2013. Au programme… Introduction au Java."— Transcription de la présentation:

1 Tutorat en bio-informatique 29 janvier 2013

2 Au programme… Introduction au Java

3 Java vs JavaScript Fortement typé Typage statique Compilé Faiblement typé Typage dynamique Interprété

4 Éditeurs de texte C’est ce qu’on utilise pour écrire un programme Bloc-notes sur Windows en est un exemple (mais il y a beaucoup mieux!) Sur Linux, plusieurs éditeurs de texte sont disponibles : Emacs, Vi, KWrite, gedit, etc. Eclipse (environnement de développement)

5 KWrite

6 Emacs

7 Console La console sert à donner des commandes à l’ordinateur On peut lancer des programmes (Emacs, KWrite) dans la console On se sert également de la console pour lancer nos programmes Java

8 Console

9 Soit le programme 'Prog.java' Compilation du programme : javac Prog.java Exécution du programme : java Prog

10 Types de variables L’ordinateur garde en mémoire différents types de valeurs de différentes façons Il faut indiquer à l’ordinateur quel type de variable sera utilisé Vous ne seriez pas capables d’écrire un texte avec une calculatrice De la même façon, un ordinateur ne pourra pas sauvegarder un texte dans un nombre entier

11 Types de variables Les types de variables les plus souvent utilisés : –int : nombre entier (2, -55, 1665442)‏ –double : nombre décimal (-123.456, 7.5)‏ –String : chaîne de caractères ("J’aime le jambon!") –char : 1 caractère (‘a’, ‘.’, ‘/’, ‘^’)‏

12 Pour chaque type, on a : –Un ensemble d’opérations permises –Un nombre limité de valeurs possibles Types de variables

13 On choisit les types de nos variables en fonction de l’utilisation (et de la gestion de la mémoire) : –byte : -128 à 127 1 octet –int : -2 147 483 648 à 2 147 483 647 4 octets –double : ≈4.94e-324 à ≈ 1.79e3088 octets (notez qu’il existe d’autres types que ceux-ci)‏ Types de variables

14 Déclaration d’une variable C’est le fait de créer une nouvelle variable en indiquant à l’ordinateur son type En Java : int nombreEntier; double nombreDecimal; String phraseImportante; char caractere;

15 Overflow : int nb1 = 2147483647; int nb2 = 1; int res = nb1 + nb2; // donne -2147483648 !!! On doit s’assurer que tous les résultats possibles d’une opération sont contenus dans les valeurs possibles du type. Types de variables

16 Vous ne pouvez pas sauvegarder des fonctions dans des variables en Java! Types de variables

17 Initialisation Il est important d’initialiser (de donner une valeur initiale) les variables, sinon le traitement est impossible et cela provoque des erreurs à la compilation.

18 Initialisation Nombre entier : int nb = 575; Caractère : char monA = ‘A’; Chaîne de caractères : String maString = "mot";

19 Opérations arithmétiques + addition a + 4 - soustraction a – 4 * multiplication a * 4 / division a / 4 % modulo a % 4 La division de 2 entiers (int) est une division entière  le résultat est arrondi à l'entier inférieur : 9 / 10 = 0

20 Opérations Division de 2 int int 5 / 2 = 2 Addition de byte + int = int Le résultat sera du même type que le type le plus précis de l'opération : byte short int long float double (évite la perte d’information) nombres entiers nombres décimaux

21 Opérations Addition de byte + int = int byte nb1 = 25; int nb2 = 300; byte result = nb1 + nb2; //erreur! int result2 = nb1 + nb2; //fonctionne

22 Types boolean : true ou false boolean b = true; if(b) System.out.println("Vrai!");

23 Casting On peut avoir besoin de changer le type d’une variable. Un exemple de mauvaise programmation! AGCTAAGTACAAAGTAACAG int nbA = 10; int nbNucleo = 20; double pourcentA = nbA / nbNucleo * 100; Ici, pourcentA sera égal à 0.0% !!!

24 Casting Un exemple en programmation (version 1.3): AGCTAAGTACAAAGTAACAG int nbA = 10; int nbNucleo = 20; double pourcentA = (double)nbA / nbNucleo * 100;

25 Casting Attention : une erreur de casting peut entraîner une perte d'information int x = 2; double y = 1.8; int result = (int) ((int) (y / x) + 0.1); // result = 0 int x = 2; double y = 1.8; int result = (int) (y / x + 0.1); // result = 1 int x = 2; double y = 1.8; int result = (int) ((int)y / x + 0.1); // result = 0 int x = 2; double y = 1.8; int result = (int)y / x + (int)0.1; // result = 0

26 Opérations sur les Strings On peut utiliser un opérateur arithmétique (+) sur les Strings en Java (concaténation) : String s = "J’aime "; String s2 = "la programmation!"; String s3 = s + s2; //s3 devient: “J’aime la programmation!” Pour écrire la chaîne de caractères s3 dans la console: System.out.println(s3);

27 String  int Pour changer un String en int (après une entrée clavier par exemple): –int nbClavier = Integer.parseInt(stringClavier); Pour changer un int en String (pour écrire dans la console par exemple)‏ –String sortie = "" + 55;

28 Constantes On doit ajouter le mot réservé « final » avant le type. On écrit le nom de la constante en lettres majuscules et on sépare les mots par des ‘_’ (convention). Une seule affectation est permise. La deuxième provoquera une erreur à la compilation. Exemple : final int MINUTES_DANS_HEURE = 60;

29 Opérateurs de comparaison Exemple : char a = 97; char b = 98; char D = 'D'; boolean bool1 = a < b;//true boolean bool2 = a < D;//false!

30 Comparaison de String Les opérateurs de comparaison ne sont pas définis pour les String. On doit utiliser des méthodes (fournies) pour comparer deux String ou pour vérifier si deux String sont identiques.

31 Comparaison de String Méthode equals()  retourne un boolean String s = "test"; if (s.equals("test")) System.out.println("Les String sont identiques"); Méthode compareTo()  retourne un int négatif (plus petit), 0 (identique) ou positif (plus grand) String s1 = "test2"; String s2 = "test3"; int compare = s1.compareTo(s2);//compare = -1

32 Comparaison de String Comme pour les comparaisons de char, la méthode compareTo() compare les codes ASCII : String s1 = "test2"; String s2 = "Test2"; int compare = s1.compareTo(s2);//compare = 32

33 Comparaison de String Méthode equalsIgnoreCase() –Même fonctionnement que equals(), mais ne fait pas la distinction entre les lettres majuscules et minuscules. Méthode compareToIgnoreCase() –Même fonctionnement que compareTo(), mais ne fait pas la distinction entre les lettres majuscules et minuscules.

34 Comparaison de double ou float Pour comparer des double ou des float, il est préférable de vérifier la différence entre les deux nombres plutôt que de vérifier directement l'égalité : double a = 0.1 + 0.1 + 0.1; if (Math.abs(a - 0.3) < 0.001) { System.out.println("0.1 + 0.1 + 0.1 est égal à 0.3"); } a = 0.30000000000000004 !!!

35 Switch char note = 'B'; switch (note) { case 'A': System.out.println("Excellent"); break; case 'B': System.out.println("Bon"); break; case 'C': System.out.println("Moyen"); break; default: System.out.println ("Note invalide"); }

36 Switch On peut utiliser les switch avec les types primitifs suivants : –byte –short –char –int –String (nouveau dans Java SE 7)

37 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args) { int test = 0 } MonProgramme.java:5: ';' expected int test = 0 ^ 1 error

38 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args) { int test = 5.6; } MonProgramme.java:5: possible loss of precision found : double required: int int test = 5.6; ^ 1 error

39 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args) { String s = Allo; } MonProgramme.java:5: cannot find symbol symbol : variable Allo location: class MonProgramme String s = Allo; ^ 1 error

40 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args) { System.out.println("Blablabla."; } MonProgramme.java:5: ')' expected System.out.println("Blablabla."; ^ 1 error

41 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args) { String s; System.out.println(s); } MonProgramme.java:6: variable s might not have been initialized System.out.println(s); ^ 1 error

42 Messages d’erreurs – erreurs syntaxiques public class MonProgramme { public static void main (String[] args)‏ { int age = 25; if (age < 18)‏ { boolean adulte = false; } else { boolean adulte = true; } if (adulte)‏ { System.out.println(“Vous êtes un adulte”); } MonProgramme.java:15: cannot find symbol symbol : variable adulte location: class MonProgramme if (adulte)‏ ^ 1 error

43 Messages d’erreurs – erreurs d'exécution public class MonProgramme { public static void main (String[] args) { String s = "Pizza"; String sub = s.substring(0, 15); } Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 15 at java.lang.String.substring(String.java:1935) at MonProgramme.main(MonProgramme.java:6)

44 Messages d’erreurs – erreurs d'exécution public class MonProgramme { public static void main (String[] args) { String s = "pizza"; System.out.println("J'aime la " + s); s = null; int longueur = s.length(); } J'aime la pizza Exception in thread "main" java.lang.NullPointerException at MonProgramme.main(MonProgramme.java:8)

45 Messages d’erreurs – erreurs d'exécution public class CalculTaxes { public static void main (String[] args)‏ { //L'utilisateur doit donner en argument un prix et les taxes seront calculees double prix = Double.parseDouble(args[0]); double avecTaxes = prix * 1.05 * 1.085; System.out.println("Le prix du produit avec les taxes est égal à : " + avecTaxes); } java CalculTaxes Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at CalculTaxes.main(CalculTaxes.java:6)‏

46 Messages d’erreurs – erreurs d'exécution public class CalculTaxes { public static void main (String[] args)‏ { //L'utilisateur doit donner en argument un prix et les taxes seront calculees double prix = Double.parseDouble(args[0]); double avecTaxes = prix * 1.05 * 1.085; System.out.println("Le prix du produit avec les taxes est égal à : " + avecTaxes); } java CalculTaxes abc Exception in thread "main" java.lang.NumberFormatException: For input string: "abc" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)‏ at java.lang.Double.parseDouble(Double.java:510)‏ at CalculTaxes.main(CalculTaxes.java:6)‏

47 Un exemple de prévention d'erreurs d'exécution public class CalculTaxes { public static void main (String[] args)‏ { //L'utilisateur doit donner en argument un prix et les taxes seront calculees if (args.length != 1)‏ { System.out.println("Vous devez donner un argument!"); System.exit(0);//On quitte le programme si il n'y a pas un seul argument } try//On essaie... { double prix = Double.parseDouble(args[0]); double avecTaxes = prix * 1.05 * 1.085; System.out.println("Le prix du produit avec les taxes est égal à : " + avecTaxes); } catch(Exception e)//... et on quitte le programme s'il se produit une erreur { System.out.println("L'argument doit être un nombre!"); System.exit(0); }

48 Les boucles for for (int i = 0; i < 5; i++) Initialisation d'un compteur (une variable) La condition De quelle façon la valeur du compteur doit changer à la fin de l'itération Les deux ';' servent à séparer les trois éléments qui sont à l'intérieur des parenthèses.

49 Les boucles while while (i < 5) La condition Dans ce cas, la variable 'i' doit être déjà déclarée (et initialisée). On peut évidemment utiliser un boolean comme condition.

50 Les boucles do-while do { instructions } while (i < 5); La condition Dans ce cas, la variable 'i' doit être déjà déclarée. On peut évidemment utiliser un boolean comme condition.

51 Les fonctions Une grande quantité de fonctions sont déjà offertes par Java dans ses différentes classes. Vous les avez probablement déjà utilisées : –Dans la classe String : maString.length(); maString.substring(0, 10); maString.equals(string); maString.compareTo(string); –Dans la classe System : System.exit(0); –Dans la classe PrintStream : System.out.println(string); –Dans la classe Math : Math.abs(-5);

52 Les fonctions Vous avez même déjà créé une fonction : public class MonProgramme { public static void main (String[] args) { System.out.println("Quelque chose…"); } La fonction main est une fonction qui est appelée automatiquement au lancement du programme, plus précisément au lancement de la classe qu'on exécute.

53 Les fonctions Les fonctions doivent être définies à l'intérieur de la classe, mais à l'extérieur de la fonction main (si elle existe). public class MonProgramme { public static void main (String[] args) { System.out.println("Quelque chose…"); } Définir les fonctions ici! }

54 Les fonctions Il est interdit de définir des fonctions à l'intérieur d'une autre fonction en Java!

55 Les fonctions La définition d'une fonction comprend la signature et le bloc d'instructions. public static nomDeFonction( paramètre, …) { … } Par convention, on choisit un verbe comme nom de fonction.

56 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 public static double trouveTaxes() { double taux = 1.05 * 1.085; return taux; } Si vous oubliez l'instruction return, vous allez avoir ce message d'erreur à la compilation: missing return statement.

57 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 public static void quitter (String message) { System.err.println(message); System.exit(0); }

58 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 fonctions n'ont pas accès aux variables que vous utilisez dans une autre fonction (y compris la fonction main). Les fonctions ont seulement accès à ce qui a été passé en paramètre (et aux variables static de classe).

59 Les fonctions Contrairement aux variables, plusieurs fonctions peuvent avoir exactement le même nom, en autant que les paramètres soient différents. public static void dessine() //public static String dessine() //pas permis par le compilateur! public static void dessine(int x, int y) public static void dessine(int x) public static void dessine(double x, double y) Les 4 fonctions en noir sont différentes et il n'y aurait aucune erreur lors de la compilation.

60 Les variables static de classe Les variables static de classe sont accessibles partout dans la classe, donc dans toutes les fonctions. Vous pouvez vous en servir pour déclarer des constantes et elles seront accessibles partout dans votre programme. public class MonProgramme { public static final int MINUTES_DANS_HEURE = 60; public static void main (String[] args) { System.out.println("Minutes dans une heure = " + MINUTES_DANS_HEURE); }

61 Tableaux Lorsqu'on initialise un tableau, on a deux choix : –On donne la taille du tableau (le nombre de cases) –On donne la liste complète des éléments du tableau Au minimum, on doit donc connaître la taille du tableau (si on ne connaît pas encore la liste des éléments à insérer). La taille choisie est définitive. Il sera impossible de la modifier plus tard.

62 Tableaux Initialisation avec taille seulement : int[] tabInt = new int[10]; String[] tabString = new String[25]; Initialisation avec tous les éléments : double[] tabDouble = {1.2, 2.22, 5.44, 6.1}; String[] tabString2 = {"test", "test2", "test3"};

63 Tableaux Pour accéder à une case du tableau, autant pour lire la valeur de la case que pour la modifier : int[] tabInt = new int[2]; tabInt[0] = 555; tabInt[1] = 23; int test = tabInt[0]; tabInt[1] = tabInt[0]; Il faut faire attention à ne pas accéder à une position (case) qui n'existe pas.

64 Tableaux Pour obtenir la taille d'un tableau : int[] tabInt = {0,1,2,3,4,5}; int size = tabInt.length; Attention : –La taille du tableau correspond au nombre total de cases, mais les positions des cases commencent à partir de 0.

65 Tableaux Lorsqu'on initialise un tableau avec la taille, les cases ne sont pas initialisées. Les cases contiendront la valeur par défaut du type primitif, ou null pour les objets et les String. Valeurs par défaut : –int : 0 –double : 0.0 –boolean : false

66 Tableaux tabString null String[] tabString = new String[10];

67 Tableaux tabString "test" null String[] tabString = new String[10]; tabString[0] = "test";

68 Tableaux tabString "test" null String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0];

69 Tableaux tabString "test" "test2" null String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2";

70 Tableaux tabString "test" "test2" null "fin" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin";

71 Tableaux tabString "test" "test2" null "fin" String[] tabString = new String[10]; tabString[0] = "test"; tabString[1] = tabString[0]; tabString[2] = tabString[1] + "2"; tabString[9] = "fin"; tabString[10] = "fin2"; Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

72 Tableaux 2D On peut utiliser des tableaux à 2 dimensions : int[][] tab2d = new int[5][5]; tab2d[0][0] = 5; tab2d[2][3] = 7; tab2d 50000 00000 00070 00000 00000


Télécharger ppt "Tutorat en bio-informatique 29 janvier 2013. Au programme… Introduction au Java."

Présentations similaires


Annonces Google