• Aucun résultat trouvé

02févie2008g É ieS Bi Uiveiédei eShia Ai

N/A
N/A
Protected

Academic year: 2022

Partager "02févie2008g É ieS Bi Uiveiédei eShia Ai"

Copied!
60
0
0

Texte intégral

(1)

Sébastien Verel

vereli3s.unie.fr

www.i3s.unie.fr/

verel

ÉquipeSoBi-UniversitédeNieSophia-Antipolis

02 février2008g

(2)

Travail

Personne ne m'a envoyé esréférenesbibliographique ou

webographique pour mettrelesite web àjour!

(3)

Travail de la semaine dernière

Fabriquer espetitsprogrammesd'exemple

Explorer les exemples de Proessing

Préparer leTP02!

Lirelafeuille

Repérer lespointsdeoursorrespondant

Commenerlesexeriessurfeuille,voirsurordinateur

(4)

Petit exemple ave swith et le lavier

Comment marhe lelavier?

keyPressed:vrailorsqu'une touheest enfonée

key:ontientlavaleurde ladernièretouhe enfonée (detype

har)

keyCode :donne le ode de ladernière touhe enfonée,

utiliséepourdéteterles touhes spéiales:

prend les valeurs UP,DOWN, LEFT,ENTER, RETURN,ESC,

RIGHT, et.

(5)

Petit exemple ave swith et le lavier

void setup() {

}

void draw() {

if (keyPressed)

print(key);

}

f. key

Problème: Controlerlafréquene d'aquisition

(6)

Petit exemple ave swith et le lavier

void setup() {

frameRate(5);

}

void draw() {

if (keyPressed)

print(key);

}

(7)

Petit exemple ave swith et le lavier

void draw() {

if (keyPressed) {

swith (key) {

ase 'a' :

println("lassique et déliieuse");

break;

ase 'b' :

println("hoix de gourmet");

break;

ase '' :

println("hoix de saison");

break;

}

}

}

f. hoix

(8)

Ave majusules

void draw() {

if (keyPressed) {

swith (key) {

ase 'A' : ase 'a' :

println("lassique et déliieuse");

break;

ase 'B' : ase 'b' :

println("hoix de gourmet");

break;

ase 'C' : ase '' :

println("hoix de saison");

break;

}

}

}

Mais répétitionpas terrible...

(9)

Objetifs de la séane 3

1

Erire unalgorithmeave uneitérationde type "pour"

2

Erire unalgorithmeave desitérationsimbriquéesde type

"pour"

3

Erire unalgorithmeave desl'itérationsde type "tantque"

4

Contrler lesévénements lavieraveProessing

5

Erire unalgorithmeorretd'au moins8 lignes

Question prinipaledujour :

Comment érirede longsalgorithmes sansavoirtoutà réérire?

(10)

Plan

1

Problématique

2

Shéma itératif ànombredéterminéd'itérations

3

Shéma itératif aveonditiond'arrêt

4

Itérationsmultiples

(11)

Exemple

Question :

Erire unalgorithmequidemande 12 nombresau lavieret alule

lamoyenne de es12 nombres.

(12)

Exemple

Algorithme moyenne():réel

début

variable m:réel

lire(a)

lire(b)

lire()

lire(d)

lire(e)

lire(f)

lire(g)lire(h)

lire(i)lire(j)

lire(k)lire(l)

m

← (

a

+

b

+

+

d

+

e

+

f

+

g

+

h

+

i

+

j

+

k

+

l

)/

12

retourner m

n

(13)

Exemple

Algorithme moyenne():réel

début

variable n0, n1,n2,n3, n4,n5,n6, n7,n8,n9, n10,n11:réel

variable m:réel

lire(n0)

lire(n1)

lire(n2)

lire(n3)

lire(n4)

lire(n5)

lire(n6)lire(n7)

lire(n8)lire(n9)

lire(n10) lire(n11)

m

← (

n 0

+

n 1

+

n 2

+

n 3

+

n 4

+

n 5

+

n 6

+

n 7

+

n 8

+

n 9

+

n 10

+

n 11

)/

12

retourner m

n

(14)

Exemple

Ce n'estpas tenable:

lorsqu'on passeàune éhellede 1000 notesou plus,

ilfaut érireunnouvel algorithmelorsqu'on veutmodierle

nombre de notes.

(15)

Exemple

instrution"lire"s'eetue 12 foisde suite,

Rightarrow répéter12 fois"lire"

Il faudraitquelque hose quiressembleà:

repeter 12 fois

lire(a)

fin repeter

m <- ????

Seulement,l'aetation danslavariablemn'est plusbiendénie....

(16)

Vers une solution

Caluler partiellement lasommeaufuret àmesurequeles

nombres sontlus.

Ce quidevrait ressembleràquelque hose ommeei:

repeter 12 fois

lire(a)

realuler la somme partielle

fin repeter

moyenne <- somme / 12

(17)

Vers une solution : enore mieux

Caluler partiellement lasommeaufuret àmesurequeles

nombres sontlus

Dénir le nombrede notesomme paramètre

n estunparamètre déni àl'extérieurde l'agorithme:

repeter n fois

lire(a)

ajouter a à la somme partielle

fin repeter

moyenne <- somme / n

−→

Plusbesoinde hanger l'agorithmepourhanger de nombrede notes.

(18)

Une autre atastrophe

DemanderuneréponseOuiouNon

Algorithme SaisirReponse():aratere

début

variable:aratere

érire("Donnervotreréponse(O/N)")

lire()

si

6=

O

ET

6=

N

alors

érire("Erreur,veuilleztaperOouN")

lire()

si

6=

O

ET

6=

N

alors

érire("Erreur,veuilleztaperOouN")

lire()

si

6=

O

ET

6=

N

alors

érire("Erreur,veuilleztaperOouN")

lire()

si

6=

O

ET

6=

N

alors

érire("Erreur,veuilleztaperOouN")

lire()

si

6=

O

ET

6=

N

alors

érire("Erreur,veuilleztaperOouN")

lire()

nsi

nsi

nsi

nsi

nsi

retourner

n

(19)

Une autre atastrophe

DemanderuneréponseOuiouNon

Ce n'estpas tenable:

Il existetoujours dessituationsoù lenombre detestsest

insusant

En plus, l'algorithmen'est pas faileàlire(surtouts'ily a12

tests!)

(20)

Une autre atastrophe

Versunesolution

instrutions "érire/lire"se répètentunertainde nombre de

fois

Rightarrow répéter"érire/lire"tantque laonditionreste valide.

tant que != 'O' ET != 'N'

érire ...

lire()

fin tant que

Après etteitération, on estsùr quelavariable ontientun

aratère quiest 'O'ou 'N'

(21)

Autres problèmes

"tant quejepourrais,jeviendraisàpied"

"Je vaismanger desrèpesjusqu'àe qu'ilvienne"

"Continuede ompter tantque jene suispasahé"

"Lireles 30 premières pages"

"Chantez tantqu'il vousplaira"

"Dormirjusqu'àe que leréveil sonne"

−→

Itération d'unesuited'opérationsdanslamesureoù une ondition n'estpas vériée

(22)

Autre exemple

Reherhed'unmotdansunditionnaire

Algorithme reherheIter(ible:mot): listedemots

début

Lirepremiermotduditionnaire

tantquemotlun'estpaslemotiblefaire

Lirelemotsuivant

ntantque

listedemots:dénitiondumotlu

n

Itération de laommande"lire"

Arrêt de l'itérationlorsque le"motlu est lemot ible"

(23)

Quand utiliser un shéma itératif?

La questionqu'il fautse poser:

Est-equ'il existeunesuited'opérationssimilaires(modulo

ertains paramètres) quiserépète?

Si oui,deux typesde shéma itératif:

shémaitératif ànombredéterminéd'itérations

shémaitératif àondition d'arrêt

(24)

Quand utiliser e shéma itératif?

Les questionsqu'il fautse poser:

Est-equ'il existeunesuited'opérationssimilaires(modulo

ertains paramètres) quiserépète?

Est-eque lenombre d'itérationsestdéterminé"à l'avane",

i.e. déterminéavantle débutdu shémaitératif?

Si oui aux deuxquestions:

−→

utiliserun shémaitératifànombre déterminéd'itérations

−→

appelé aussisouvent "boulepour".

(25)

Nombre déterminé d'itérations avant le shéma itératif

pour var de aà b faire

moreaud'algorithme

npour

a etb :nombres entiers orrespondants aux bornes inférieure

et supérieure dushéma.

var :variable detype entierquidérit toutesles valeursentre

a etb

Fontionnement :

au débutde lapremièreitération, var apour valeura

àlan de haque itération,lavariableaest augmentéede 1

une nouvelle itérationest eetuéetant quelavaleur de aest

inférieure ou égaleàla borne supérieureb

(26)

Nombre d'itérations déterminé avant le shéma itératif

pour var de aà b faire

moreaud'algorithme

npour

Combien d'itérationseetuées?

Le "moreaud'algorithme"(lesommandes entre"POUR" et "FIN

POUR") est répétépour lesvaleurs entièresentre aàb omprises.

si a

b,alorsb

a

+

1itérationssonteetuées,

si a

>

b,alorsauune itérationn'est eetuée.

(27)

Exemple très simple

Dessinernarréssurladiagonale

Algorithme arres(n :entier) :rien

début

variable i :entier

pour i de 1 àn faire

retangle(10* i, 10* i,10, 10)

npour

n

Remarque :le nombred'itérationsest déterminéavant ledébut de

l'itération "POUR"

Que produisentles algorithmes suivants?

arres(4)

arres(0)

(28)

Exemple très simple

Dessinernarréssurladiagonale

Que produisentles algorithmes suivants?

arres(4)

et attention

arres(0)

(29)

Retour sur le alul de la moyenne

Algorithme moyenne():réel

début

variable a ,m:réel

n ,i :entier

n

12

m

0

pour i de1ànfaire

érire("taperlanote",i)

lire(a )

m

m

+

a

n pour

m

m

/

n

retourner m

n

Exeution de l'algorithmepar :moyenne()

(30)

Retour sur le alul de la moyenne

Le nombrede notepeut êtredonner en paramètre de l'algorithme:

Algorithme moyenne(n:entier):réel

début

variable a ,m:réel

i :entier

m

0

pour i de1ànfaire

érire("taperlanote",i)

lire(a )

m

m

+

a

n pour

m

m

/

n

retourner m

n

Calulde lamoyenne de 12notes:moyenne(12)

(31)

Utilisation d'un aumulateur

alul de lamoyenne :mémorisationd'un alulpartiel

nombreux d'algorithmes:mémorisationunrésultatpartiel

aumulateur

variablequipermetde mémoriserunrésultatpartiel.

ATTENTION!

Il faut toujoursaeter unevaleur initiale(initialiser)à

l'aumulateur avantle ommenement dualul.

(32)

Cas limites

Algorithme arres0( ) :rien

début

variable i :entier

pour i de 1 à1 faire

retangle(10* i, 10* i,10, 10)

npour

n

Uneseule itérationlorsqueles bornes sontidentiques.

(33)

Cas limites

Algorithme arresNeg() :rien

début

variable i :entier

pour i de 5 à2 faire

retangle(10* i, 10* i,10, 10)

npour

n

Auune itérationlorsque laseonde borne eststritement

inférieure àlapremière

(34)

En Java : le plus lassique

for(int var = a ; var <= b ; var = var + 1) {

"moreau de programme"

}

ou enore:

int var ;

for(var = a ; var <= b ; var = var + 1) {

"moreau de programme"

}

ou enorepourles plusfeinéants:

for(int var = a ; var <= b ; var++) {

"moreau de programme"

}

(35)

En Java : enore plus lassique

Répétition n fois:

for(int i = 0 ; i < n ; i++) {

"moreau de programme"

}

(36)

En Java : plus général

for(int var = a ; var <= b ; variation de var) {

"moreau de programme"

}

La variationde var estune aetationquihangelavaleur de var

Exemple :

for(int x = 1; x < width - 10 ; x = x + 10) {

ret(x, x, 10, 10);

}

Exemple multipliatif:

for(int x = 1; x < width - 10 ; x = x * 2) {

ret(x, x, 10, 10);

}

(37)

Exemples en Java

arres

arresClassiques

arresSeries

(38)

Quand utiliser e shéma itératif?

Les questionsqu'il fautse poser:

Est-equ'il existeunesuited'opérations(moduloertains

paramètres)quise répéte?

Est-eque lenombre d'itérationsestdéterminéà l'avane,

i.e. déterminéaumoinsavant ledébut dushémaitératif?

Est-equel'arrêtde l'itérations'exprimesousformed'un test?

Si oui,non, oui :

−→

utiliserun shémaitératifaveondition d'arrêt

−→

appelé aussisouvent boule"tantque".

(39)

Itération onditionnnelle

tant queb faire

moreaud'algorithme

ntant que

b est uneexpressionbooléennedontlavaleur est soitVrai soit

Faux (voirours préédent)

Le "moreaud'algorithme" est répété tantquel'expression

booléenne estVRAI:

si b est VRAI,alors "moreau d'algorithme" estexéuté

si b est FAUX, alors"moreau d'algorithme"n'est pas

exéuté, l'algorithmeontinue après "ntant que"

(40)

Itération onditionnnelle (exéution au moins une fois)

faire

moreau d'algorithme

tant que(b)

b est uneexpressionbooléennedontlavaleur est soitVrai soit

Faux (voirours préédent)

Le "moreaud'algorithme" est répété tantquel'expression

booléenne estVRAI:

si b est VRAI,alors "moreau d'algorithme" estexéuté

si b est FAUX, alors"moreau d'algorithme"n'est pas

exéuté, l'algorithmeontinue après "ntant que"

(41)

Exemple

Petitjeuoùl'ondoitdevinerunnombremystère

Algorithme deviner(n :entier) :rien

début

variable a:entier

a

n

1

tant quea

6=

n faire

érire("Proposer unnombre")

lire(a )

ntant que

érire("vousavez trouvé")

n

(42)

Retour sur l'algorithme qui demandeune réponse Oui ou

Non

Algorithme saisirDemande():aratere

début

variable :aratere

érire("Donner votreréponse(O/N)")

lire()

tant que

6=

O

ET

6=

N

faire

érire("Erreur,veuilleztaperOou N")

lire()

ntant que

retourner

n

(43)

Retour sur l'algorithme qui demandeune réponse Oui ou

Non

Algorithme saisirDemande():aratere

début

variable :aratere

faire

érire("Veuilleztaper Oou N")

lire()

tant que(

6=

O

ET

6=

N

)

retourner

n

(44)

Pourquoi onneteur ET?

6=

O

6=

N

Faire uneitération

Faux Vrai

Vrai Vrai

Faux Faux

Vrai Faux

(45)

Pourquoi onneteur ET?

6=

O

6=

N

Faire uneitération

Faux Vrai Non

Vrai Vrai Oui

Faux Faux Non

Vrai Faux Non

Correspondauonneteur logique ET

(46)

Condition ave onneteurs logiques

Problème:"Continuede omptertantquejenesuispasahéou alors

tantquetune dépassepas100"

Algorithme aher():rien

début

variable a:réel

n:entier

reponse:aratère

ahe:booléen

n

0 ahe

FAUX

tantquen

<

100??NONahefaire n

n

+

1

érire(n)

érire(Es-tuahé(O/N)?);

lire(reponse)

sireponse=Oalors

ahe

VRAI

nsi

ntantque

érire(J'arrive!)

n

(47)

Condition ave onneteurs logiques

ahe n

<

100 Nonahe Faire uneitération

Faux Vrai

Vrai Vrai

Faux Faux

Vrai Faux

(48)

Condition ave onneteurs logiques

ahe n

<

100 Nonahe Faire uneitération

Faux Vrai Vrai Oui

Vrai Vrai Faux Non

Faux Faux Vrai Non

Vrai Faux Faux Non

Correspondauonneteur logique ET

(49)

Condition ave onneteurs logiques

Algorithme aher():rien

début

variable a:réel

n:entier

reponse:aratère

ahe:booléen

n

0

ahe

FAUX

tantquen

<

100etNONahefaire n

n

+

1

érire(n)

érire(Es-tuahé(O/N)?);

lire(reponse)

sireponse=Oalors

ahe

VRAI

nsi

ntantque

érire(J'arrive!)

n

(50)

Equivalene entre une boule de type "pour" et une boule

de type "tant que"

Les shémaitératifssuivants sontéquivalents :

variable i:entier

pour i de aà b faire

moreau d'algorithme

npour

variable i :entier

i

a

tantque i

b faire

moreau d'algorithme

i

i

+

1

ntant que

ATTENTION :Laversion"tantque" est souventsoure d'erreurs:

oublie initialisation,inrémentation.

(51)

Une erreur omprise

Ne pasmodierlavaleur de lavariabled'itération dansune boule

"pour" :

variable i:entier

pour i de aà b faire

moreaud'algorithme

i

i

+

2

npour

Revient à inrémenterlavariablei de 3 àhaqueitération

(52)

Boule while

enJava

while (b) {

moreau de programme

}

b est uneexpression booléenne quipeut être:

true :danse asle moreau de programmes'exéute, puisle

test est de nouveau eetué

false :danse asle moreau de programmen'est pas exéuté

(53)

Exemple en java

size(200, 300);

bakground(255);

int i = 0;

while (i < 256) {

stroke(i);

line(0, i, width, i);

i++;

}

Donner l'équivalene avel'autre type de boule

(54)

Exemple en java

size(512, 200);

bakground(255);

int i = 0;

int a = 0;

int b = width;

while (a < b) {

stroke(i);

line(a, i, (int) b, i);

a = a + 1;

b = b - 1;

i++;

}

(55)

boules imbriquées

Boulesdetype"pour"imbriquées

variable i,j :entier

pour i de 1à n faire

pourj de 1àpfaire

algorithme A

npour

npour

si p ne dépend pas de lavaleurde i

alorsl'algorithmeAs'exéute n

×

p.

si p dépend de i,

alors l'algorithme As'exéute

P

n

i

=

1 p

(

i

)

(56)

Tests multiples

Attention:suessionde 2 boules

6=

boulesimbriquées

variable i,j :entier

pour i de 1à n faire

algorithmeA

npour

pour j de 1 àp faire

algorithmeB

npour

l'algorithmeAs'exéute n fois

Puis,

l'algorithmeB s'exéutep fois

(57)

Que vaut x à la n de haun des algorithmes suivants?

Algo1 :

x

0

pour i de 1à n faire

pour j de 1 à p faire

x

x

+

1

npour

npour

Algo2 :

x

0

pour i de 1à n faire

pour j de 1 à i faire

x

x

+

1

npour

npour

Algo3 :

x

0

pour i de 1à n faire

x

x

+

1

npour

pour j de 1 àp faire

x

x

+

1

npour

(58)

Boules imbriquées

Exempleenmaple

Erire unprogramme quidonnelatable de multipliation

(59)

Objetifs de la séane 3

1

Erire unalgorithmeave uneitérationde type "pour"

2

Erire unalgorithmeave desitérationsimbriqéesde type

"pour"

3

Erire unalgorithmeave desl'itérationsde type "tantque"

4

Contrler lesévénements lavieraveProessing

5

Erire unalgorithmeorretd'au moins8 lignes

Question prinipaledujour :

Comment érirede longsalgorithmes sansavoirtoutà réérire?

(60)

Travail de la semaine

Fabriquer espetitsprogrammesd'exemple

Explorer les exemples de Proessing

Préparer leTP03!

Lirelafeuille

Repérer lespointsdeoursorrespondant

Commenerlesexeriessurfeuille,voirsurordinateur

Références

Documents relatifs

Connaître les mots lefs d'un langage impératif simple.. Connaître les opérations de bases

booléen est une expression dont la valeur est soit Vrai soit Faux. Cette expression peut

−→ utiliser un shéma itératif à nombre d'itérations déterminé. −→ appeler aussi souvent

ne retourner auune valeur : on notera le type de retour rien. Algorithme deviner(n : entier)

Utilisation d'un aumulateur pour réaliser un alul dans

A l'aide d'un système physique dont l'état est aléatoire :.. Valeur préise d'une résistane, appartition des

les nombres plus petit que le nombre pivot sont à gauhe de

A-t-on besoin d'un traitement séquentiel des données. Le nombre de données est-il déterminé