• Aucun résultat trouvé

Algorithmes conditionnels Licence 1 MASS Introduction à Java et à l'algorithmique Sébastien Verel [email protected] www.i3s.unice.fr/

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmes conditionnels Licence 1 MASS Introduction à Java et à l'algorithmique Sébastien Verel [email protected] www.i3s.unice.fr/"

Copied!
57
0
0

Texte intégral

(1)

Licence 1 MASS

Introduction à Java et à l'algorithmique Sébastien Verel

[email protected] www.i3s.unice.fr/∼verel

Équipe ScoBi - Université de Nice Sophia-Antipolis

30 janvier 2012

(2)

Votre travail ?

Combien d'étagères sont consacrées à la programmation en JAVA à la BU ?

14 ?

Choisir un livre qui vous semble en rapport avec cet enseignement

en java, en algorithmique ?

Trouver au moins un site web en rapport avec l'enseignement envoyez moi vos propositions par courriel que je mette sur le

site

Installer Processing sur votre ordinateur si vous en avez un Avoir travailler le cours et TP précédents !

(3)

Objectifs de la séance 2

1 Ecrire un algorithme avec des aectations

2 Ecrire un algorithme qui échange la valeur de deux variables

3 Savoir utilisés les entrées de la souris avec Processing

4 Ecrire un algorithme avec des tests simples

5 Ecrire un algorithme avec un test multiple

6 Ecrire des programmes java avec des tests simples ou multiples Question principale du jour :

Comment écrire des algorithmes qui prennent en compte des situations diérentes ?

(4)

Plan

1 Variables et aectations

2 Logique booléenne

3 Schéma conditionnel tests simples Tests multiples

(5)

Utilité des variables

Lors d'un calcul, pendant le traitement de données, quasiment toujours nécessaire destocker certaines valeurs provisoirement

Des exemples ?

Crible d'Erastothène : nombres rayés ou non Euclide : nombres a et b du pgcd

..., etc, ...

(6)

Utilité des variables

Pour stocker cette information, on emploie desvariables

12 A

remarque : L'étiquette est traduite en machine par une adresse binaire (0010010001000101)

(7)

Type des variables

Ces variables peuvent être de types diérents : nombre entier : int

nombre réel (approché) : oat, double caractères : char

chaîne de caractères : String

booléen (dont la valeur est VRAI ou FAUX) : boolean ...

Type: considéré comme un ensemble regroupant des valeurs auquel s'applique certaines méthodes spéciques.

(8)

Expression

Expression

Ensemble de valeurs, reliées par des opérateurs binaires, équivalent à une seule valeur.

Toute expression a un type.

(9)

Calcul de types

De quel type sont les expressions suivantes ? 5

int 16.3

oat 16.0

oat -3

int

(10)

Calcul de types

De quel type sont les expressions suivantes ? 5 + 12

int 18 / 3

int 15 −5.3

oat 5.4%2

oat

(11)

Déclaration de variable en java

type nomDeLaVariable ; Exemples :

int x ; float a, b;

char premierLettre ; int sumTotal ;

Toute variable utilisée doit être déclarée Convention d'écriture en java :

première lettre d'une variable est en minuscule et les "mots"

suivants commencent par une majuscule.

(12)

Arithmétique des nombres ottants

Combien d'entiers peut-on coder sur 4 octets ? 232 positifs ou 231 signés Dans un ordinateur, tout est de taille nie et les ottants sont codés sur 4 octets.

Quelle est en la conséquence ?

Précision des ottants

(13)

Aectation

Attribuer à une variable une valeur.

notation en pseudo-code :

var ←expr

A

12 12

A

en java :

var =expr

(14)

Exemples en pseudo-code

1. A←3 1. A←3 2. B ←A

1. A←3 2. B ←5 3. A←B 4. B ←A 1. A←3 2. B ←5 3. tmp ←A 3. A←B 4. B ←tmp

(ce dernier est à connaitre !)

(15)

Exemples en java

int a = 5 ; int b = a + 3;

int a = 5 ; int b = a + 3;

a = a + 1;

(16)

Dessin en Processing

Il existe 2 méthodes (fonctions) par défaut en Processing : setup : exécutée une seule fois, le code n'est exécutée qu'une seule fois

draw : exécutée tous les rafaichissements d'écran (par défaut 50 fois par seconde),

le code est exécuté f =50 fois par seconde

Remarque : Le paramètre f peut être modiée à l'aide de la méthode frameRate

Exemples : Toujours et Point

(17)

Souris en Processing

Il est facile de connaitre la position du pointeur de la souris avec Processing

2 variables de type int contiennent la position relativement aux dimensions de l'écran :

mouseX : abscisse mouseY : ordonnée

Exemple : Mouse

(18)

George Boole

Mathématicien et logicien anglais (1815 - 1864) but

Traduire des idées et des concepts en équations, leur appliquer des lois (des transformations) et

traduire inversement l'équation en termes de concepts et d'idées.

Il crée une algèbre binaire :

qui n'accepte que deux valeurs numériques 0 et 1 (faux, vrai), dénie dans un ensemble E muni de deux lois de compositions interne (et, ou)

satisfaisant un certain nombre de propriétés (associativité, distributivité).

−→algèbre de Boole

(19)

Notations

Il existe plusieurs types de notations : Vrai ←→ V←→1

Faux ←→F ←→ 0 NON ←→ e ET←→ ∧

OU ←→ ∨ (attention inclusif !) IMPLICATION ←→ ⇒

EQUIVALENT←→ ⇔

XOR←→ ⊕ (ou exclusif : fromage ou dessert)

(20)

Dénitions

Littéral

variable dont la valeur de vérité est soit VRAI soit FAUX.

Proposition

Enoncé auquel est associé une valeur de vérité (VRAI ou FAUX) Tautologie

Proposition qui est toujours VRAI quelque soit les valeurs de vérité de ces littéraux

(21)

Exemples

a OU b

(a OU b) XOR c a ET a

a OU VRAI b OU (NON b) NON( b OU a )

(a ET NON b) OU (b ET NON a)

(22)

Tables de vérité

ET Vrai Faux Vrai

Faux

OU Vrai Faux Vrai

Faux

XOR Vrai Faux Vrai

Faux

⇒ Vrai Faux

Vrai Faux

(23)

Tables de vérité

ET Vrai Faux

Vrai Vrai Faux Faux Faux Faux OU Vrai Faux Vrai Vrai Vrai Faux Vrai Faux

XOR Vrai Faux Vrai Faux Vrai Faux Vrai Faux

⇒ Vrai Faux

Vrai Vrai Faux Faux Vrai Vrai

(24)

Zoom sur l'implication

p q ⇒

Vrai Vrai Vrai Vrai Faux Faux Faux Vrai Vrai Faux Faux Vrai

A = "je plonge dans la piscine"

B = "je suis mouillé"

"SI je plonge dans la piscine ALORS je suis mouillé"

est un théorème VRAI.

A⇒B

Lorsque A est VRAI, la condition est réalisée, donc B est VRAI.

A peut aussi être FAUX et B restant VRAI.

Peut-on en déduire que le théorème devient FAUX dans ce cas ?

(25)

Zoom sur l'implication

L'implication est vraie si l'hypothèse est fausse.

p q ⇒

Vrai Vrai Vrai Vrai Faux Faux Faux Vrai Vrai Faux Faux Vrai

Lorqu'un théorème p ⇒q est vrai,

mais que l'on a pas l'hypothèse, alors on ne peut rien en déduire sur q.

Pierre Weis et Xavier Leroy on ne peut rien déduire d'un théorème dont l'hypothèse n'est pas vériée

un théorème reste vrai même quand il ne s'applique pas

(26)

Tables de vérité

Un connecteur logique booléen est déni par une table de vérité et réciproquement.

Il existe 16 connecteurs logiques binaires (pourquoi ?).

Vrai Faux

Vrai ? ?

Faux ? ?

D'où 2×2×2×2=16 connecteurs logiques binaires.

(27)

Logiquement équivalent

Logiquement équivalent

F est logiquement équivalent à G si et seulement si F ⇔G est une tautologie.

Logiquement équivalent

F est logiquement équivalent à G si et seulement si F et G ont la même table de vérité.

(28)

Exemple

a b a ET NON b b ET NON a (a∧eb)∨(b∧ea) Vrai Vrai

Faux Vrai Vrai Faux Faux Faux

(29)

Exemple

a b a ET NON b b ET NON (a∧eb)∨(b∧ea)

Vrai Vrai Faux Faux Faux

Faux Vrai Faux Vrai Vrai

Vrai Faux Vrai Faux Vrai

Faux Faux Faux Faux Faux

( (a ET NON b) OU (b ET NON a) ) logiquement équivalent à

(a XOR b)

(30)

Propriétés algébriques

Associativité :

p∨(q∨r)⇔(p∨q)∨r p∧(q∧r)⇔(p∧q)∧r Commmutativité : p∨q ⇔q∨p p∧q ⇔q∧p Distributivité :

p∨(q∧r)⇔(p∨q)∧(p∨r) p∧(q∨r)⇔(p∧q)∨(p∧r) Loi de De Morgan :

e(p∨q)⇔eq∧ep e(p∧q)⇔eq∨ep

Contraposée :(p⇒q)⇔(eq⇒ep) (p⇒q)⇔(ep∨q)

Preuve par l'absurde : eep⇒p

(31)

Une application en biologie

C(x) est VRAIE lorsque x est une cellule V(x) est VRAIE lorsque x est un virus I(x,y) est VRAIE lorsque x est infecté par y.

R(x,y) est VRAIE lorsque x a reconnu y

Toutes les cellules infectées par un virus ne le reconnaissent pas

∀x∃y,(C(x)∧V(y)∧I(x,y))⇒eR(x,y)

Il n'existe pas de virus qui peuvent infecter toutes les cellules 6 ∃y, V(y)⇒(∀x C(x)∧I(x,y))

−→technique de model checking : vérication de la formule logique par parcours astucieux des états possibles

(32)

Quand utiliser un test ?

"SI j'ai tes clés ALORS je vais pouvoir rentrer tout seul chez toi."

"SI la voie rapide est bouchée ALORS je prends la prom."

"SI il y a de la neige ALORS je ne viens pas SINON je passe te prendre."

"SI b6=0 ALORS calculer ab SINON la division est impossible."

test

Exécution d'un morceaux d'algorithme selon la situation

(33)

Tests simples

si booléen alors morceaux d'algo 1 n si

si booléen alors morceaux d'algo 1 sinon

morceaux d'algo 2 n si

booléen est une expression dont la valeur est soit Vrai soit Faux Cette expression peut être :

une variable booléenne une condition

une suite nie de booléens relier par des connecteurs logiques

(34)

Tests simples

en Java

if (boolean) {

morceaux de prog 1 }

if (boolean) {

morceaux de prog 1 } else {

morceaux de prog 2 }

'Boolean' est une expression qui peut être :

true : dans ce cas le morceau de programme 1 s'exécute false : dans ce cas le morceau de programme 2 s'exécute

(35)

Bloc en java

if (a < 0) { println("un");

println("nombre");

println("négatif");

}

if (a < 0)

println("negatif");

else

println("positif");

Les accolades servent à créer un bloc d'instructions (=

suite d'instructions) Lorsqu'il y a une seule instruction, on peut omettre les accolades.

Remarque : décalage et alignement des instructions d'un même bloc (indentation) pour éviter les erreurs classiques d'accolades

(36)

Conditions

T <100

Une condition est composée de trois éléments :

une expression ayant une valeur dans un ensemble ordonné un opérateur de comparaison sur cet ensemble

une expression ayant une valeur dans le même ensemble Les opérateurs de comparaison sont :=,6=,<,>,≤,≥, etc.

Les ensembles ordonnées peuvent être par exemple les nombres entiers, les nombres réels, les mots,...

Attention !60<T <100 n'est pas une condition.

(37)

Opérateur binaire logique en java

Les opérateurs de comparaison :

pseudo-code java

= ==

6= ! =

< <

> >

≤ <=

≥ >=

Les connecteurs logiques :

pseudo-code java AND &&

OR ||

(38)

Tests simples

Exemple

Algorithme valeurAbsolue(x : réel) : réel début

si x <0 alors écrire(−x) sinon

écrire(x) nn si

(39)

Tests simples

Exemple

Algorithme comparaison(a, b : entier) : rien début

si a<b alors

écrire(a est strictement plus petit que b) sinon

écrire(b est plus petit que a) nn si

(40)

Tests simples

Exemple java

int a = 5;

int b = 12;

if (a < b) {

print("a est strictement plus petit que b") ; } else {

print("b est plus petit que a") ; }

a est strictement plus petit que b

(41)

Une équivalence

Algorithme test1(x : réel) : booléen

début

si x ≥10 alors écrire(Vrai) sinon

écrire(Faux) nn si

Algorithme test2(x : réel) : booléen

début

écrire(x ≥10) n

Les deux algorithmes test1 et test2 sont strictement équivalents.

Puisqu'ils produisent les mêmes résultats pour les mêmes données, pourtant l'un est plus court à écrire que l'autre.

(42)

Tests multiples

Test multiples imbriqués

si booléen1 alors partie a

sinon

si booléen2 alors partie b

sinon partie c n sin si

lorsque booléen1 est vrai, la partie a s'exécute (quelque soit la valeur de booléen2) lorsque booléen1 est faux et que booléen2 est vrai, la partie b s'exécute

lorsque booléen1 est faux et que booléen2 est faux, la partie c s'exécute

(43)

Tests multiples

Attention: ce n'est pas équivalent à la succession de 2 tests simples si booléen1 alors

partie a

n sisi booléen2 alors partie b

sinon partie c n si

lorsque booléen1 est vrai, la partie a s'exécute

Par contre la partie b s'exécute seulement lorsque booléen2 est vrai (quelque soit la valeur de booléen1)

(44)

Tests multiples / imbriqués

Exemple

Algorithme degreDeCorpulence(T : réel, m : réel) : début

im/T2 si i<20 alors

écrire( "poids inférieur à la normale") sinon

si i<25 alors écrire( "poids normal") sinon

si i<30 alors

écrire( "surcharge pondérale") sinon

si i<40 alors écrire( "adiposité") sinon

écrire( "obésité"") n sin si

n sin si n

(45)

Tests multiples

Exemple

Algorithme test(x : réel) : début

si 0x alors

écrire( "le nombre est positif") si i10 alors

écrire( "le nombre est compris entre 0 et 10.") sinon

si i15 alors

écrire( "le nombre est compris entre 10 et 15.") sinon

si i20 alors

écrire( "le nombre est compris entre 15 et 20.") sinon

écrire( "le nombre est strictement supérieur à 20.") n sin si

sinonn si

écrire( "le nombre est strictement négatif") nn si

(46)

Connecteurs logiques

Exemple

Algorithme ordonner ?(a,b,c : réel) : booléen début

si a≤b ET b≤c alors écrire(Vrai)

sinon

écrire(Faux) nn si

(47)

Connecteurs logiques

Exemple en java

int a, b, c;

a = 10;

b = 3;

c = 5;

if ((a <= b) && (b <= c)) println(true);

elseprintln(false);

(48)

Equivalence

Exemple en java

int a, b, c;

a = 10;

b = 3;

c = 5;

println((a <= b) && (b <= c));

(49)

Tests multiples

Exercice

Ecrire en java le programme suivant :

début rep : entier rep2 si rep=1 alors

écrire("Vous avez sélectionné le premier choix") si rep=2 alors

écrire("Vous avez sélectionné le deuxième choix") sinon

si rep=3 alors

écrire("Vous avez sélectionné le troisième choix") sinon

écrire("Votre choix est inconnu") n sin si

nn si

(50)

Traduction en java

int x = 2 ; if (x == 1)

println("Vous avez sélectionné le premier choix");

else

if (x == 2)

println("Vous avez sélectionné le deuxième choix");

else

if (x == 3)

println("Vous avez sélectionné le troisième choix");

else

println("Votre choix est inconnu.");

(51)

Equivalence avec switch

int x = 2 ; switch (x) {

case 1 : println("Vous avez sélectionné le premier choix");

break;

case 2 : println("Vous avez sélectionné le deuxième choix");

break;

case 3 : println("Vous avez sélectionné le troisième choix");

break;

default :

println("Votre choix est inconnu.");

}

(52)

Equivalence avec switch

instruction porte sur une variable de type byte, short, char ou int.

Lorsque la variable a la valeur indiquée après case : exécution à partir des " :"

jusqu'à l'instruction "break" qui permet la reprise d'exécution après le bloc

voir aussi : http://java.sun.com/docs/books/tutorial/java/

nutsandbolts/switch.html

(53)

Arbres de décision

Schema qui représente un algorithme avec des tests imbriqués Base des systèmes experts : applications médicales, conseils, ltrage, ...

Ces arbres s'établissent à l'aide d'algorithmes d'apprentissage

(54)

Exercice

a - Rappeler les deux lois De Morgan.

b - Démontrer que ces deux lois sont logiquement équivalentes à l'aide de tables de vérités.

(55)

Exercice

Dans un pays lointain, deux tribus existent. La tribu des purs qui disent toujours la vérité et la tribu des pires qui mentent toujours.

Un jours en voyageant dans ce pays un peu étrange, j'ai rencontré Alain et Bob. Alain m'a déclaré 2 choses :

"l'un de nous deux est au moins un pire"

"l'un de nous deux au plus est un pire"

Je les ai salué en partant et je me demande toujours de quelle tribu pouvait bien appartenir Alain et Bob ?

Questions :

a - Répondre à la question en résonnant de manière informelle.

b - Conrmer votre résultat à l'aide d'une table de vérité.

(56)

Objectifs de la séance 2

1 Ecrire un algorithme avec des aectations

2 Ecrire un algorithme qui échange la valeur de deux variables

3 Savoir utilisés les entrées de la souris avec Processing

4 Ecrire un algorithme avec des tests simples

5 Ecrire un algorithme avec un test multiple

6 Ecrire des programmes java avec des tests simples ou multiples Question principale du jour :

Comment écrire des algorithmes selon des situations diérentes ?

(57)

Travail pour la semaine prochaine

Fabriquer ses petits programmes d'exemple Explorer les exemples de Processing travailler le cours à l'aide du TP !

Références

Documents relatifs

La grotte de Tautavel était habitée toute l’année par les

Les formules données en a) et b) sont fausses. Seules les hypothèses de d) permettent de déduire la formule de l’égalité de la moyenne.. b) est faux car il manque l’hypothèse

Donc E est un sous-espace vectoriel de M 3 ( R ) ce qui équivaut au fait que E est non vide et stable par combinaison linéaire. Ensuite, au gré des différents programmes officiels, il

Tous

A partir d’une règle locale, Emergence d’un comportement global (synchronisation).. D’abord exemple

lorsque bool´ een1 est vrai, la partie a s’ex´ ecute (quelque soit la valeur de bool´ een2 ) lorsque bool´ een1 est faux et que bool´ een2 est vrai, la partie b s’ex´ ecute.

Un algorithme est un moyen pour un humain de présenter la résolution par calcul d'un problème à une autre personne physique (un autre humain) ou virtuelle (un calculateur). En eet,

si b est VRAI, alors &#34;morceau d'algorithme&#34; est exécuté si b est FAUX, alors &#34;morceau d'algorithme&#34; n'est pas exécuté, l'algorithme continue après &#34;n tant