WEBVTT

00:00:00.900 --> 00:00:03.540 align:middle
Dans cette séquence,
j'aimerais attirer votre attention

00:00:03.740 --> 00:00:08.420 align:middle
sur l'usage des parenthèses et des
crochets et ne pas confondre les deux.

00:00:09.380 --> 00:00:12.540 align:middle
Les parenthèses servent à
changer la priorité d'exécution

00:00:12.740 --> 00:00:15.890 align:middle
dans les expressions ou
dans du code, tandis que les

00:00:16.090 --> 00:00:17.870 align:middle
crochets servent à
définir des blocks.

00:00:18.210 --> 00:00:20.510 align:middle
Je vous rappelle les
expressions contenues dans un block

00:00:21.000 --> 00:00:23.240 align:middle
au moment de la définition
ne sont pas exécutées, on

00:00:23.440 --> 00:00:25.570 align:middle
contrôle l'exécution
explicitement. Il faut envoyer le

00:00:25.770 --> 00:00:28.590 align:middle
message Value au block pour
déclencher l'exécution des

00:00:28.790 --> 00:00:29.630 align:middle
expressions qu'ils contiennent.

00:00:33.170 --> 00:00:35.800 align:middle
Si on revient sur les règles,
quand doit-on mettre des crochets?

00:00:36.000 --> 00:00:40.800 align:middle
On met des crochets autour
d'une expression si on ne

00:00:41.000 --> 00:00:44.260 align:middle
sait pas si les
expressions à l'intérieur vont être

00:00:44.460 --> 00:00:46.450 align:middle
exécutées, c'est-à-dire que
par exemple, elles sont dans

00:00:46.650 --> 00:00:49.410 align:middle
un If, dans une branche
d'une alternative ou pas.

00:00:50.560 --> 00:00:54.220 align:middle
Et puis, on met les crochets
également si on ne sait pas

00:00:54.420 --> 00:00:59.230 align:middle
combien de fois on va
devoir répéter l'exécution de

00:00:59.430 --> 00:01:01.660 align:middle
ces expressions
contenues dans un block.

00:01:03.000 --> 00:01:05.600 align:middle
Je vous donne un
exemple: n timesrepeat self

00:01:05.800 --> 00:01:10.170 align:middle
doSomething, c'est-à-dire
que self doSomething on l'a

00:01:10.370 --> 00:01:12.000 align:middle
bien encapsulé dans un block.

00:01:12.430 --> 00:01:16.000 align:middle
Pourquoi? Parce qu'on
sait qu'il va falloir répéter

00:01:16.200 --> 00:01:17.930 align:middle
plusieurs fois
l'exécution de ces expressions.

00:01:18.520 --> 00:01:20.590 align:middle
On est obligé de les mettre
dans un block pour pouvoir

00:01:20.790 --> 00:01:22.820 align:middle
envoyer plusieurs fois le
message Value à ce block.

00:01:26.170 --> 00:01:28.280 align:middle
Je vous donne un autre
exemple mais cette fois en

00:01:28.480 --> 00:01:33.180 align:middle
envoyant le message If True.
Suivant le receveur, suivant

00:01:33.790 --> 00:01:38.500 align:middle
si cette expression est
vraie ou fausse, on va exécuter

00:01:38.700 --> 00:01:40.420 align:middle
ou pas l'expression self doSomething.

00:01:41.610 --> 00:01:43.610 align:middle
Je ne peux pas la mettre
entre parenthèses puisque s'il

00:01:43.810 --> 00:01:46.120 align:middle
faut, potentiellement, elle
ne sera pas exécutée du tout.

00:01:47.570 --> 00:01:50.360 align:middle
Si je la mets dans un block,
on pourra contrôler, décider

00:01:50.560 --> 00:01:52.520 align:middle
si on envoie le message
Value ou pas à ce block.

00:01:55.260 --> 00:01:58.690 align:middle
Également la même chose en fait
mais cette fois sur le WhileTrue.

00:01:59.780 --> 00:02:02.820 align:middle
C'est la même chose avec
le block receveur et puis le

00:02:03.020 --> 00:02:07.840 align:middle
block passé en paramètres.
Suivant l'exécution, l'évaluation,

00:02:08.040 --> 00:02:11.340 align:middle
si ça me rend le booléen
Vrai ou Faux, on va devoir

00:02:11.540 --> 00:02:14.180 align:middle
exécuter une fois, plusieurs
fois, voire même zéro fois,

00:02:14.380 --> 00:02:17.700 align:middle
l'expression self doSomething. On
est obligé de la mettre dans un block.

00:02:19.640 --> 00:02:22.000 align:middle
Je vous propose de
faire un petit exercice.

00:02:23.150 --> 00:02:28.020 align:middle
Si je vous donne les 2
expressions suivantes: répéter de

00:02:28.220 --> 00:02:31.380 align:middle
1 à N self doSomething,
est-ce que je dois mettre des

00:02:31.580 --> 00:02:33.000 align:middle
parenthèses ou des crochets ?

00:02:33.270 --> 00:02:37.360 align:middle
Et si je fais x IfEmpty
self doSomething, est-ce que je

00:02:37.560 --> 00:02:42.000 align:middle
dois mettre des
parenthèses ou des crochets?

00:02:42.200 --> 00:02:43.350 align:middle
Je vous donne les réponses.

00:02:44.470 --> 00:02:47.540 align:middle
En fait, dans les deux cas,
ce sont des crochets puisque

00:02:47.740 --> 00:02:50.770 align:middle
dans le premier cas, si on veut
répéter plusieurs fois l'expression

00:02:51.000 --> 00:02:53.730 align:middle
self doSomething,
forcément il va falloir envoyer

00:02:53.930 --> 00:02:55.190 align:middle
plusieurs fois le
message Value à ce block-là.

00:02:56.170 --> 00:03:00.000 align:middle
Et puis dans le deuxième
cas, x IfEmpty, si x n'est pas

00:03:00.200 --> 00:03:02.760 align:middle
vide alors dans ce cas-là il
ne faut pas du tout exécuter

00:03:03.050 --> 00:03:06.510 align:middle
l'expression self
doSomething. Alors que si x est vide il

00:03:06.710 --> 00:03:07.470 align:middle
va falloir l'exécuter.

00:03:08.420 --> 00:03:10.670 align:middle
En résumé, on a vu dans
cette séquence qu'il ne faut

00:03:10.870 --> 00:03:14.580 align:middle
vraiment pas confondre les
parenthèses et les crochets.

00:03:14.780 --> 00:03:17.000 align:middle
Les parenthèses servent
vraiment à changer l'ordre de

00:03:17.200 --> 00:03:19.950 align:middle
priorité d'exécution au sein
d'une expression, alors que

00:03:20.150 --> 00:03:24.330 align:middle
les crochets servent à freezer, à

00:03:24.530 --> 00:03:28.800 align:middle
geler des expressions et
de contrôler ensuite leur

00:03:29.000 --> 00:03:31.120 align:middle
exécution, éventuellement
les exécuter plusieurs fois.

