Un peu de shell Unix (Terminal) ——————————————————————————————— cd — pour aller dans un cd .. — pour "remonter" d'un répertoire (aller à son parent) cat — pour afficher un cp — pour copier le vers mv — pour déplacer ou renommer le vers rm — pour supprimer le ⚠ATTENTION⚠ Pour aller plus loin : http://doc.ubuntu-fr.org/tutoriel/console_ligne_de_commande Opérateurs —————————— Une opération binaire est une opération à deux arguments, par exemple : x \ + |————→ le résultat (c'est-à-dire x+y) / y Une opération unaire est une opération à un argument, par exemple : - x ——————→ le résultat (c'est-à-dire -x) ou ! x ——————→ le résultat (la négation de x) Il y a des opérateurs qui seulement produisent une nouvelle valeur : arithmétiques (opérations binaires): +, -, /, *, % arithmétiques (opération unaire) : +, - logiques (opération binaires) : <, >, <=, >=, ==, !=, &&, ||, &, | logiques (opération unaires) : ! logiques (opération ternaire) : ?: sur les chaînes de caractères : + Il y a des opérateurs qui changent les valeurs des variables : =, ++, --, +=, -=, /=, *= Mais en fait, ces opérateurs (=, ++, --, +=, -=, /=, *=) non seulement changent les valeurs, mais également produisent les valeurs! On peut faire comme ça System.out.println (x = 3); et ça va afficher 3 ou bien on peut faire comme ça a = b = c = 0; Quelques explications ~~~~~~~~~~~~~~~~~~~~~ i = a++; ⇔ i = a; a = a + 1; i = ++a; ⇔ a = a + 1; i = a; System.out.print.ln(i++); ⇔ System.out.print(i); i = i + 1; System.out.print.ln(++i); ⇔ i = i + 1; System.out.print(i); i += a; ⇔ i = i + a; i -= a; ⇔ i = i - a; i *= a; ⇔ i = i * a; i /= a; ⇔ i = i / a; Logique ——————— true, false ^ — ou exclusif &&, & — et ||, | — ou ! — négation Évaluation stricte: &, | Évaluation paresseuse: &&, || Le résultat du "x^y" est "true" si un et un seul des arguments x et y est "true" x ^ y ⇔ x != y Évaluation paresseuse ~~~~~~~~~~~~~~~~~~~~~ public class Test { public static void main (String[] argc) { int a,b,c; boolean rep; a = 1; b = 1; rep = a > b && (1 / 0) == 0; System.out.println (rep); // ça marche bien et ça affiche "false" } } Évaluation stricte ~~~~~~~~~~~~~~~~~~ public class Test { public static void main (String[] argc) { int a,b,c; boolean rep; a = 1; b = 1; rep = a > b & (1 / 0) == 0; System.out.println (rep); // ça ne compile même pas!!! } } Exercices simples ————————————————— 0) Expliquer le programme suivante : public class Test { public static void main (String[] argc) { int a,b,c; a = 0; b = 0; a -= b += 3; System.out.println (a); System.out.println (b); } } 1) Donner une expression simpliée pour : a) x && !x b) x || !x c) x && x d) x && (x || y) 2) Écrire un programme qui permet d'exprimer un nombre de secondes saisi par l'utilisateur en heures, minutes et secondes. 3) Dans un sac noir il y a : n boules rouges k boules blanches On tire au hasard une boule. Écrire un programme qui qui demande à l'utilisateur les valeurs de n et k. et calcule la probabilité que la boule tirée soit rouge. 4) Écrire un programme qui permet de trouver les solutions d'une équation du second degré ax² + bx + c = 0 5) Écrire un programme qui permet de trouver les solutions de l'équation suivante : (a - x)(b - x) = 0 6) Écrire un programme qui permet de trouver les solutions de l'équation suivante : (a - x)(b - x)(c - x)(d - x) = 0 Exercices plus difficiles ————————————————————————— 1) Donner une expression simpliée pour : (x,y sont des booléens) a) ! (!x && !y) b) ! (!x || !y) (On appelle ceux-là les lois de De Morgan) 2) Dans un sac noir il y a : n boules rouges k boules blanches On tire au hasard 2 boules. Écrire un programme qui calcule la probabilité que les 2 boules tirées soient de différentes couleurs. Il faut afficher un message d'erreur si k < 1 ou n < 1.