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

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

GEF 243B Programmation informatique appliquée
Premier programme en C :
La boucle for : init7.c et init71.c
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Formation universitaire à .NET: Introduction à C#
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Programmer en JAVA par Tama
IJA - TD 2 Bases du langage
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Principes de programmation (suite)
Langage C Révision.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Présentation Structures de Données et TDA
Principes de programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Plan cours La notion de pointeur et d’adresse mémoire.
Animateur : Med HAIJOUBI
2.1 - Historique Chapitre 2 : Introduction au langage C++
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
Créer des packages.
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Introduction au langage C Fonctions et Procédures
Strings et Tableaux en Java
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Classe 1 CSI2572 Autres modificateurs de déclaration de variables: & volatile & register & static & auto & extern & const volatile Indique au compilateur.
Tutorat en bio-informatique Le 10 octobre Au programme… Rappel sur les variables Constantes Conditions Comparaisons Tables de vérité Switch.
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Tutorat en bio-informatique
Héritage Conception par Objet et programmation Java
Les bases de l’algorithmique
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Tutorat en bio-informatique Le 2 novembre Exercice 5 et 6 (MAT1400) Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation.
Scripts et fonctions Instructions de contrôle
PRO-1027 Programmation Scientifique en C
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction au langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Tutorat en bio-informatique 29 janvier 2013

Au programme… Introduction au Java

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

É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)

KWrite

Emacs

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

Console

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

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

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

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

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

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;

Overflow : int nb1 = ; int nb2 = 1; int res = nb1 + nb2; // donne !!! 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

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

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.

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

Opérations arithmétiques + addition a 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

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

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

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

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% !!!

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

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

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);

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;

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;

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

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.

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

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

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.

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 = ; if (Math.abs(a - 0.3) < 0.001) { System.out.println(" est égal à 0.3"); } a = !!!

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"); }

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

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

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

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

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

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

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

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)

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)

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)‏

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)‏

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); }

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.

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.

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.

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);

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.

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! }

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

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.

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.

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); }

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).

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.

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); }

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.

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"};

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.

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.

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

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

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

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

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

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";

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

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