• Aucun résultat trouvé

Algorithmes conditionnels Licence 1 MASS, parcours SEMS et ESD Introduction `a Java et `a l’algorithmique

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmes conditionnels Licence 1 MASS, parcours SEMS et ESD Introduction `a Java et `a l’algorithmique"

Copied!
58
0
0

Texte intégral

(1)

Licence 1 MASS, parcours SEMS et ESD Introduction `a Java et `a l’algorithmique

S´ebastien Verel verel@i3s.unice.fr www.i3s.unice.fr/∼verel

´Equipe ScoBi - Universit´e Nice Sophia Antipolis

8 f´evrier 2013

(2)

Votre travail ?

Avez-vous trouv´e un livre en rapport avec java et/et le cours ? Avez-vous trouv´e au moins un site web en rapport avec l’enseignement

Avez-vous install´e Processing sur votre ordinateur si vous en avez un

Avoir travailler le cours et pr´eparer !

(3)

Synth` ese

El`eves de synth`ese du jour ?

(4)

Objectifs de la s´ eance 2

1 Ecrire un algorithme avec des affectations

2 Ecrire un algorithme qui ´echange la valeur de deux variables

3 Savoir utilis´es les entr´ees 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 ´ecrire des algorithmes qui prennent en compte des situations diff´erentes ?

(5)

Plan

1 Variables et affectations

2 Logique bool´eenne

3 Sch´ema conditionnel Tests simples Tests multiples

(6)

Utilit´ e des variables

Lors d’un calcul, pendant le traitement de donn´ees, quasiment toujours n´ecessaire de stockercertaines valeurs provisoirement

Des exemples ?

Crible d’Erastoth`ene : nombres ray´es ou non Euclide : nombres a et b du pgcd

..., etc, ...

(7)

Utilit´ e des variables

Pour stocker cette information, on emploie desvariables

12 A

remarque : L’´etiquette est traduite en machine par une adresse binaire sur 8, 32, 64, 128 bits (0010010001000101)

(8)

Type des variables

Ces variables peuvent ˆetre de types diff´erents : nombre entier : int

nombre r´eel (approch´e) : float, double caract`eres : char

chaˆıne de caract`eres : String

bool´een (dont la valeur est VRAI ou FAUX) : boolean ...

Type: consid´er´e comme un ensemble regroupant des valeurs.

Sur les ´el´ements de cet ensemble s’appliquent certaines op´erations sp´ecifiques.

(9)

Expression

Expression

Ensemble de valeurs, reli´ees par des op´erateurs binaires, ´equivalent

`a une seule valeur.

Toute expression a un type.

(10)

Calcul de types

De quel type sont les expressions suivantes ? (int, float, double, String, char, boolean, etc.)

5

int 16.3

float 16.0

float -3

int

(11)

Calcul de types

De quel type sont les expressions suivantes ? 5 + 12

int 18 / 3

int 15 −5.3

float 5.4 % 2

float

(12)

D´ eclaration de variable en java

type nomDeLaVariable; Exemples :

int x ; float a, b;

char premierLettre ; int sumTotal ;

Toute variable utilis´ee doit ˆetre d´eclar´ee Convention d’´ecriture en java :

premi`ere lettre d’une variable est en minuscule et les ”mots”

suivants commencent par une majuscule.

(13)

Arithm´ etique des nombres flottants

Combien d’entiers peut-on coder sur 4 octets ? 232 positifs ou 231 sign´es Dans un ordinateur, tout est de taille finie et lesfloat sont cod´es sur 4 octets

(lesdoublesur 8 lorsque possible) Quelle est en la cons´equence ?

Pr´ecision des flottants

(14)

Affectation

Attribuer `a une variable une valeur.

notation en pseudo-code :

var ←expr

A

12 12

A

en java :

var =expr

(15)

Exemples en pseudo-code

Quelle la valeur des variables apr`es ex´ecution ?

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 `a connaitre !)

(16)

Exemples en java

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

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

a = a + 1;

(17)

Dessin en Processing

Il existe 2 m´ethodes (fonctions) par d´efaut en Processing : setup : ex´ecut´ee1 seule fois initialement.

Le code de la m´ethode n’est ex´ecut´ee qu’une seule fois draw : ex´ecut´eef fois par seconde.

Par d´efaut, le code est ex´ecut´e f = 50 fois par seconde Remarque : Le param`etref peut ˆetre modifi´ee `a l’aide de la ethodeframeRate

Exemple

voir programmes Toujours et Point

(18)

Souris en Processing

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

2 variables de typeintcontiennent la position relativement aux dimensions de l’´ecran :

mouseX: abscisse mouseY: ordonn´ee

Exemple

voir programmes Mouse

(19)

George Boole

Math´ematicien et logicien anglais (1815 - 1864) but

Traduire des id´ees et des concepts en ´equations, leur appliquer des lois (des transformations) et

traduire inversement l’´equation en termes de concepts et d’id´ees.

Il cr´ee une alg`ebre binaire :

qui n’accepte que deux valeurs num´eriques 0 et 1 (faux, vrai), d´efinie dans un ensemble E muni de deux lois de compositions interne (et,ou)

satisfaisant un certain nombre de propri´et´es (associativit´e, distributivit´e).

−→alg`ebre de Boole

(20)

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)

(21)

D´ efinitions

Litt´eral

variable dont la valeur de v´erit´e est soit VRAI soit FAUX.

Proposition

Enonc´e auquel est associ´e une valeur de v´erit´e (VRAI ou FAUX) Tautologie

Proposition qui est toujours VRAI quelque soit les valeurs de v´erit´e de ces litt´eraux

(22)

Exemples

a OUb

(aOU b) XORc a ETa

a OU VRAI b OU (NONb) NON(b OUa )

(aET NONb) OU (b ET NONa)

(23)

Tables de v´ erit´ e

ET Vrai Faux

Vrai Faux

OU Vrai Faux

Vrai Faux

XOR Vrai Faux Vrai

Faux

⇒ Vrai Faux Vrai

Faux

(24)

Tables de v´ erit´ e

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

(25)

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´e”

”SI je plonge dans la piscine ALORS je suis mouill´e”

est un th´eor`eme VRAI.

A⇒B

LorsqueA est VRAI, la condition est r´ealis´ee, doncB est VRAI.

(modum ponens, merci Aristote) A peut aussi ˆetre FAUX etB restant VRAI.

Peut-on en d´eduire que le th´eor`eme devient FAUX dans ce cas ?

(26)

Zoom sur l’implication

L’implication est vraie si l’hypoth`ese est fausse.

p q ⇒

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

Lorqu’un th´eor`emep ⇒q est vrai,

mais que l’on a pas l’hypoth`ese, alors on ne peut rien en d´eduire sur q.

Pierre Weis et Xavier Leroy

“on ne peut rien d´eduire d’un th´eor`eme dont l’hypoth`ese n’est pas v´erifi´ee”

“un th´eor`eme reste vrai mˆeme quand il ne s’applique pas”

(27)

Tables de v´ erit´ e

Un connecteur logique bool´een est d´efini par une table de v´erit´e et r´eciproquement.

Il existe 16 connecteurs logiques binaires (pourquoi ?).

Vrai Faux

Vrai ? ?

Faux ? ?

D’o`u 2×2×2×2 = 16 connecteurs logiques binaires.

(28)

Logiquement ´ equivalent

Logiquement ´equivalent

F est logiquement ´equivalent `a G si et seulement siF ⇔G est une tautologie.

Logiquement ´equivalent

F est logiquement ´equivalent `a G si et seulement siF et G ont la mˆeme table de v´erit´e.

(29)

Exemple

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

Faux Vrai Vrai Faux Faux Faux

(30)

Exemple

a b a ET NON b b ET NON a (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 ´equivalent `a

(a XOR b)

(31)

Propri´ et´ es alg´ ebriques

Associativit´e :

p∨(q∨r)⇔(p∨q)∨r p∧(q∧r)⇔(p∧q)∧r Commmutativit´e : p∨q⇔q∨p p∧q⇔q∧p Distributivit´e :

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´ee : (p ⇒q)⇔(eq⇒ep) (p⇒q)⇔(ep∨q)

Preuve par l’absurde :eep ⇒p

(32)

Une application en biologie

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

R(x,y) est VRAIE lorsquex a reconnuy

Toutes les cellules infect´ees 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´erification de la formule logique par parcours astucieux des ´etats possibles

(33)

Quand utiliser un test ?

”SI j’ai tes cl´esALORS je vais pouvoir rentrer tout seul chez toi.”

”SI la voie rapide est bouch´ee ALORS je prends la prom.”

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

”SIb6= 0 ALORS calculer ab SINON la division est impossible.”

test

Ex´ecution d’un morceaux d’algorithme selon la situation

(34)

Tests simples

sibool´een alors morceaux d’algo 1 fin si

sibool´een alors morceaux d’algo 1 sinon

morceaux d’algo 2 fin si

bool´een est une expression dont la valeur est soitVrai soit Faux Cette expression peut ˆetre :

une variable bool´eenne une condition

une suite finie de bool´eens relier par des connecteurs logiques binaires

(35)

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 ˆetre :

true : dans ce cas le morceau de programme 1 s’ex´ecute false : dans ce cas le morceau de programme 2 s’ex´ecute

(36)

Bloc en java

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

println("nombre");

println("negatif");

}

if (a < 0)

println("negatif");

else

println("positif");

Les accolades servent `a cr´eer un bloc d’instructions (=

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

Remarque : d´ecalage et alignement des instructions d’un mˆeme bloc (indentation) pour ´eviter les erreurs classiques d’accolades

(37)

Conditions

T <100

Une condition est compos´ee de trois ´el´ements :

une expression ayant une valeur dans un ensemble ordonn´e un op´erateur de comparaison sur cet ensemble

une expression ayant une valeur dans le mˆeme ensemble Les op´erateurs de comparaison sont : =, 6=, <,>,≤,≥, etc.

Les ensembles ordonn´ees peuvent ˆetre par exemple les nombres entiers, les nombres r´eels, les mots,...

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

(38)

Op´ erateur binaire logique en java

Les op´erateurs de comparaison :

pseudo-code java

= ==

6= ! =

< <

> >

≤ <=

≥ >=

Les connecteurs logiques :

pseudo-code java AND &&

OR ||

NOT !

(39)

Tests simples

Exemple

Algorithme valeurAbsolue(x : r´eel) : rien d´ebut

six <0 alors

´ecrire(−x) sinon

´

ecrire(x) fin si fin

(40)

Tests simples

Exemple

Algorithme comparaison(a, b : entier) : rien d´ebut

sia<b alors

´

ecrire(“aest strictement plus petit que b”) sinon

´

ecrire(“b est plus petit que a”) fin si

fin

(41)

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

(42)

Une ´ equivalence

Algorithme test1(x : r´eel) : rien d´ebut

six ≥10 alors

´

ecrire(Vrai) sinon

´

ecrire(Faux) fin si

fin

Algorithme test2(x : r´eel) : rien d´ebut

´ecrire(x ≥10) fin

Les deux algorithmes test1 et test2 sont strictement ´equivalents.

Puisqu’ils produisent les mˆemes r´esultats pour les mˆemes donn´ees, pourtant l’un est plus court `a ´ecrire que l’autre.

(43)

Tests multiples

Test multiples imbriqu´es

sibool´een1 alors partie a sinon

si bool´een2 alors partie b

sinon partie c fin si fin si

lorsquebool´een1 est vrai, la partiea s’ex´ecute (quelque soit la valeur debool´een2) lorsquebool´een1 est faux et que bool´een2 est vrai, la partieb s’ex´ecute

lorsquebool´een1 est faux et que bool´een2 est faux, la partiec s’ex´ecute

(44)

Tests multiples

Attention: ce n’est pas ´equivalent `a la succession de 2 tests simples

sibool´een1 alors partie a fin si

sibool´een2 alors partie b sinon

partie c fin si

lorsquebool´een1 est vrai, la partiea s’ex´ecute

Par contre la partie b s’ex´ecute seulement lorsque bool´een2 est vrai (quelque soit la valeur debool´een1)

(45)

Tests multiples / imbriqu´ es

Exemple

Algorithme degreDeCorpulence(T : r´eel, m : r´eel) : aucun ebut

im/T2 sii<20alors

´ecrire( ”poids inf´erieur `a la normale”) sinon

si i<25alors

´

ecrire( ”poids normal”) sinon

si i<30 alors

´ecrire( ”surcharge pond´erale”) sinon

si i<40 alors

´

ecrire( ”adiposit´e”) sinon

´

ecrire( ”ob´esit´e””) fin si

fin si fin si fin si fin

(46)

Tests multiples

Exemple

Algorithme test(x : r´eel) : aucun ebut

si0xalors

´ecrire( ”le nombre est positif”) si i10alors

´

ecrire( ”le nombre est compris entre 0 et 10.”) sinon

si i15 alors

´ecrire( ”le nombre est compris entre 10 et 15.”) sinon

si i20 alors

´

ecrire( ”le nombre est compris entre 15 et 20.”) sinon

´

ecrire( ”le nombre est strictement sup´erieur `a 20.”) fin si

fin si fin si sinon

´ecrire( ”le nombre est strictement n´egatif”) fin si

fin

(47)

Connecteurs logiques

Exemple

Algorithme ordonner ?(a,b,c : r´eel) : aucun d´ebut

sia≤b ETb ≤c alors

´

ecrire(vrai) sinon

´

ecrire(faux) fin si

fin

(48)

Connecteurs logiques

Exemple en java

int a, b, c;

a = 10;

b = 3;

c = 5;

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

else

println(false);

(49)

Equivalence

Exemple en java

int a, b, c;

a = 10;

b = 3;

c = 5;

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

(50)

Tests multiples

Exercice

Ecrire en java le programme suivant :

ebut rep: entier rep2 sirep= 1alors

´ecrire(”Vous avez s´electionne le premier choix”) si rep= 2alors

´

ecrire(”Vous avez s´electionne le deuxi`eme choix”) sinon

si rep= 3 alors

´ecrire(”Vous avez s´electionn´e le troisi`eme choix”) sinon

´ecrire(”Votre choix est inconnu”) fin si

fin si fin si fin

(51)

Traduction en java

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

println("Vous avez selectionne le premier choix");

else

if (x == 2)

println("Vous avez selectionne le deuxieme choix");

else

if (x == 3)

println("Vous avez selectionne le troisieme choix");

else

println("Votre choix est inconnu.");

(52)

Equivalence avec switch

int x = 2 ; switch (x) {

case 1 : println("Vous avez selectionne le premier choix");

break;

case 2 : println("Vous avez selectionne le deuxieme choix");

break;

case 3 : println("Vous avez selectionne le troisieme choix");

break;

default :

println("Votre choix est inconnu.");

}

(53)

Equivalence avec switch

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

Lorsque la variable a la valeur indiqu´ee apr`escase : ex´ecution `a partir des ” :”

jusqu’`a l’instructionbreakqui permet la reprise d’ex´ecution apr`es le bloc

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

java/nutsandbolts/switch.html

(54)

Arbres de d´ ecision

Schema qui repr´esente un algorithme avec des tests imbriqu´es Base des syst`emes experts : applications m´edicales, conseils, filtrage, ...

Ces arbres s’´etablissent `a l’aide d’algorithmes d’apprentissage

(55)

Exercice

a - Rappeler les deux lois De Morgan.

b - D´emontrer que ces deux lois sont logiquement ´equivalentes `a l’aide de tables de v´erit´es.

(56)

Exercice

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

Un jours en voyageant dans ce pays un peu ´etrange, j’ai rencontr´e Alain et Bob. Alain m’a d´eclar´e 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´e en partant et je me demande toujours de quelle tribu pouvait bien appartenir Alain et Bob ?

Questions :

a - R´epondre `a la question en r´esonnant de mani`ere informelle.

b - Confirmer votre r´esultat `a l’aide d’une table de v´erit´e.

(57)

Synth` ese du jour

Aujourd’hui nous ´ecoutons...

...

(58)

Travail pour la semaine prochaine

Fabriquer ses petits programmes d’exemple,

m’envoyer un email pour les pr´esenter la semaine prochaine (eval ++)

Explorer les exemples de Processing Travailler le cours `a l’aide du TP !

Références

Documents relatifs

Rappelons que l’anneau des entiers de Gauss, Z[i] est euclidien, ce qui im- plique qu’il est factoriel : tout ´el´ement de cet anneau a une d’ecomposi- tion en

Exemples d’algorithmes de l’histoire et du quotidien Une tr` es courte histoire de l’algorithmique Une courte histoire de l’informatique et des ordinateurs D´

si b est VRAI, alors ”morceau d’algorithme” est ex´ ecut´ e si b est FAUX, alors ”morceau d’algorithme” n’est pas ex´ ecut´ e, l’algorithme continue apr` es ”fin

valeurs initiales des variables en param` etre : celles donn´ ees effectivement en ex´ ecutant l’algorithme (passage par valeur) impossible de modifier la valeur d’une variable

les [] : indique que la variable est de type tableau Toutes les valeurs des cases du tableau sont donn´ ees en

Tous

Dans une structure conditionnelle (If,Until,While), on peut avantageusement utiliser des bool´ eens sans sp´ ecifier sa valeur qui sera alors prise par d´ efaut ´ egale ` a