Alien (3) - Instructions conditionnelles

Série d'exercices

Cet exercice fait partie d'une série :

Les règles sont simples : l'alien 👽 se situe au départ au centre de la grille et peut être déplacé avec les fonctions haut, bas, gauche et droite.

L'objectif est de trouver la case finale de l'alien (et donc son parcours) après exécution du programme donné.

Les différentes instructions
  • haut(4) déplace l'alien de 4 cases vers le haut ;
  • haut(-2) déplace l'alien de 2 cases vers le bas ;
  • haut() déplace l'alien de 1 case vers le haut (c'est donc équivalent à haut(1)).

Le principe est similaire avec les trois autres fonctions.

Nouvelles fonctions !

Trois autres fonctions permettent de situer l'alien dans la grille :

  • case() renvoie la case sur laquelle se trouve l'alien, de "A01" à "O15" ;
  • ligne() renvoie la ligne de la case sur laquelle se trouve l'alien, de "A" à "O" ;
  • colonne() renvoie la colonne de la case sur laquelle se trouve l'alien, "01" à "15".

Pour les questions suivantes, dessinez le parcours de l'alien en cliquant sur la case d'arrivée de chaque instruction exécutée. Vous pourrez ensuite valider votre parcours pour vérifier s'il est correct.

Instruction conditionnelle

Une instruction conditionnelle, ou instruction de test, permet de faire des choix en fonction de la valeur d'une condition. On parle souvent d'une instruction « si ... alors », ou « if ... else » en anglais.

🐍 Script Python
if condition_1:
    bloc_instructions_1
elif condition_2:
    bloc_instructions_2
else:
    bloc_instructions_3

Le code ci-dessus indique que si la condition_1 est vraie, on n'exécute que bloc_instruction_1, sinon on regarde si condition_2 est vraie, on n'exécute que bloc_instruction_2, et si les deux conditions sont fausses, on n'exécute que bloc_instruction_3

Les mots-clés « if », « elif » (contraction de else if) et « else » sont les traductions respectives de « si », « sinon si » et « sinon ».

Comparaison

Une condition est une instruction qui est soit vraie, soit fausse. On dit qu'il s'agit d'une expression booléenne.

Pour tester des inégalité larges (comme \(a \leqslant b\) et \(a \geqslant b\)) ou la différence (comme \(a\neq b\)) on utilise les syntaxes suivantes :

  • le signe <= pour inférieur ou égal ;

  • le signe >= pour supérieur ou égal ;

  • le signe != pour n'est pas égal à.

On peut résumer les tests possibles dans le tableau ci-dessous :

Test Syntaxe Python
\(a=b\) a == b
\(a\neq b\) a != b
\(a<b\) a < b
\(a\leqslant b\) a <= b
\(a>b\) a > b
\(a\geqslant b\) a >= b
\(a<b<c\) a < b < c
\(a\leqslant b \leqslant c\) a <= b <= c
\(a<b\leqslant c\) a < b <= c
Examples
>>> 15 >= 10
False
>>> 5 < 10
True
>>> 32 < 32
False
Comparaison de chaines de caractères

Lorsque l'on compare deux chaines de caractères entre elles, on les compare selon l'ordre alphabétique, caractère par caractère.

Examples

>>> "A" >= "B"
False
>>> "01" < "15"
True
>>> "code" < "mode"
True
>>> "2" < "15"
True
Source d'erreur classique

Le test d'égalité entre deux variables se fait avec un double égal == (car le simple = a un rôle différent : celui d'affecter une valeur à une variable).

Question 1 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
7
gauche(2)
bas(3)
if case() == "K06":
    droite(5)
else:
    haut(5)
haut(2)

Dessinez le parcours

L'image est en train de se charger

Question 2 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
7
8
haut(4)
if ligne() < "E" :
    droite(6)
    bas(3)
gauche(3)
if colonne() < "06" :
    haut(2)
gauche(2)

Dessinez le parcours

L'image est en train de se charger

Question 3 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
7
droite(4)
if colonne() < "05":
    haut(3)
    gauche(4)
else:
    haut(4)
bas(2)

Dessinez le parcours

L'image est en train de se charger

Question 4 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
7
8
9
gauche(4)
if case() == "H05":
    haut(2)
    gauche(3)
elif case() == "H04":
    haut(3)
    bas(2)
else:
    haut(2)

Dessinez le parcours

L'image est en train de se charger

Pour les questions suivantes écrire le code nécessaire pour obtenir le déplacement souhaité (les numéros correspondent aux différentes étapes).

Question 5 : Codez le parcours

Figure attendue

Votre tracé sera ici

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013nb1lu=h P4580SU7p9(6eyvfm)kcird;/3A:gats2o050F0v0N0M0D0e0O0i0C0e0M0O0O0g010N0D0r010406050O0f0z0z0M0E0w040o0Q0e0f0+0Q0b050H0=0@0_0{0:0r04141b051e0H1e1g1b0:0F0D0x0Z0#0%0)0h0D0L0h0e1u0h0N0.050U0c0e0v1p0$0(011t1v1x1v0N1D1F1B0N0c0Q0F0{1C0E1c0N0h0Z0~0O0r0M0b0)0P011H1r010y0W0v0b0M0z0v1B1)1+1:1J1?1F1_1{0.0a0i0j0E0Q0r0Q0O0D110b0i0S1%0E0E0v0C2g141~0b1c0H1#2t0N1Z1Y1!0F200)1x0b1^2d1B1m1o0!1I2D0D2F0b1V1n1B0r2m1c2r2t2X0;1*2h2L1;2Q0E0^0e0.0i0d2q2#0/2!1 2%1J2)2+2-0P2:1+2=2r2C012`0M2,040i0I2~2s0:312^0)34360i0k3a302#323g2-0l3k3c3m3e330Q2*352-0u3r2?2$1q2_3w2{370q3B3d3E3f3G3y370m3K3t3M3v3x3h0s3S2@3U3o040d0n3Z3D2M3V3H0d2/152;3s3!3,3$0d2}3;2 3?3+2(3O360d393|2s1d2V142J2w0F2A320C1V1|1c4a1f482Z451c4f0S2W3T3^0.0L0M0f0C0h0v3k3C320-040t4B3L3,0z0D0.3q4n4C3u4E0A3k0i4U4V4W4X4Y4U4P3U0C0d0.030i0p2F0i0O0~100D120i2c0%0D1E4A4n3~320B0.0D0y4T4#4t041N2F4H4s1;4E0t4S4n0i551;0Q0.020L0N0G544I1;0O1.04010J015q5b1J4E0K3r4W5i2_0.4|2X5h5r1J5k040g5z3@1;4K0.3{2X4~3u50040v0X5J2;5L5A0)5C5E4V5G3f5I5R3 5N0.5Q5g5:015U04445X5|0b0.0h4w0N5a5S5B0.4G4O5M5;5#685@5,0.5f616e330.0F2a2f5(2 5|5d6h325~3R6d5+014R3*4 51535{6n63044f0e12596B696j4F6l5)5|5O020e5o5?325t0.013(5y6J6C5-4}5F6K0.6I5K6X5_6$3u5~4N6m6C5!5$0O6t2s5*6S6D0.5D6:5/6=046@6W6n5O5`6^6n6z6F3u6L0c0$6x4Q6b7s3#6?7v3,6E4}626p6r0N744r776w6R6i5}4L045W2;6v6k3B0H4p0v2t2U7W491n4b2w2y2u1U1W2w0M4{2t4a0:0H0S0U0W0O04.

Tracé du parcours (le vôtre à gauche, la solution à droite)

Le parcours de votre code et la solution attendue s'afficheront ici

Question 6 : Codez le parcours

Figure attendue

Votre tracé sera ici

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013nb1lu=h P4580S7p(6eyvfm)kcird;/3:gats2o050D0t0K0J0B0e0L0i0A0e0J0L0L0g010K0B0q010406050L0f0x0x0J0C0u040o0N0e0f0(0N0b050F0/0;0?0^0-0q041118051b0F1b1d180-0D0B0v0W0Y0!0$0h0B0I0h0e1r0h0K0+050R0c0e0t1m0Z0#011q1s1u1s0K1A1C1y0K0c0N0D0^1z0C190K0h0W0{0L0q0J0b0$0M011E1o010w0T0t0b0J0x0t1y1$1(1-1G1:1C1?1^0+0a0i0j0C0N0q0N0L0B0~0b0i0P1!0C0C0t0A2d111{0b190F1Y2q0K1W1V1X0D1}0$1u0b1=2a1y1j1l0X1F2A0B2C0b1S1k1y0q2j192o2q2U0.1%2e2I1.2N0C0=0e0+0d2n2Y0,2X1|2!1G2$2(0+0M2,1(2.2o2z012?0J2)040G2`2p0-2}2;0$30320k352|2Y2~3b0+0l3e373g392 0N2%310+0s3l2/2Z1n2=3q2@040p3v383y3a3A3s040m3e1a2S112G2t0D2x2~0A1S1_193Q1c3O2W122-053V0P2T3n3G2 0+0J3e0i3w2~0N0+0g3=3@3o0x0B2^3E3-2J3/040c3|3F443_043{3%2{3?491.3 3j422:3.0b0+0I0J0f0A0h0t3M4h1G0*040r4w434i40042_4e2p3}3.4z0y4l3x440z0+0B0w484D2=0+3V0e0 2C4C4m444z0r4N4I044g4W0$4b020I0K0E4V4(1.0L1+04010n0k014%4P1.4z0H3l0i5a4/4{4X460Z542~4*5h3o4o465k4L0+4,2U3m5d0$4R040t0U4v4-4K4)0+584-065b5c555e0h4r0K5o5D4A5P2#0+475B4x0$4M4O3h0+0D272c5A2W5X015j5W4:453;5/5u5-5q3v0F3*0t2q2R5}3P1k3R2t2v2r1R1T2t0J1B600F3Q0-6d0Q0S0U04.

Tracé du parcours (le vôtre à gauche, la solution à droite)

Le parcours de votre code et la solution attendue s'afficheront ici

Question 7 : Codez le parcours

Figure attendue

Votre tracé sera ici

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013nb1lu=h P4580S7p9(6exyvfm)kcirdJ;/3:gats2o050F0u0N0M0D0e0O0i0C0e0M0O0O0g010N0D0q010406050O0f0z0z0M0E0w040o0Q0e0f0+0Q0b050I0=0@0_0{0:0q04141b051e0I1e1g1b0:0F0D0x0Z0#0%0)0h0D0L0h0e1u0h0N0.050U0c0e0u1p0$0(011t1v1x1v0N1D1F1B0N0c0Q0F0{1C0E1c0N0h0Z0~0O0q0M0b0)0P011H1r010y0W0u0b0M0z0u1B1)1+1:1J1?1F1_1{0.0a0i0j0E0Q0q0Q0O0D110b0i0S1%0E0E0u0C2g141~0b1c0I1#2t0N1Z1Y1!0F200)1x0b1^2d1B1m1o0!1I2D0D2F0b1V1n1B0q2m1c2r2t2X0;1*2h2L1;2Q0E0^0e0.0i0d2q2#0/2!1 2%1J2)2+2-0P2:1+2=2r2C012`0M2,040i0J2~2s0:312^0)34360i0k3a302#323g2-0l3k3c3m3e330Q2*352-0t3r2?2$1q2_3w2{370p3B3d3E3f3G3y370m3K3t3M3v3x3h0r3S2@3U3o040d0n3Z3D2M3V3H0d2/152;3s3!3,3$0d2}3;2 3?3+2(3O360d393|3b3C3n410.0d3j453l3@403W4a3q4d3~484h3%3A4k473u3_3J4q3L3^493%3R4v3T4x4n0d3Y4B4f3F4n0P3)4d1d2V142J2w0F2A320C1V1|1c4R1f4P2Z4N4W0S2W4C2(0.0L0M0f0C0h0u3k4r3U0-040s4^4w1;0z0D0.4c2Z4 1J4{0A3*3n0.0v3k0i4_3,0Q0.0g5e5g1;0O1.04010G015a3u0B0.0D0y5l563f0.1N2F4~4,570.0s594d5f5B015i04020e0N0H5A5H5C045d4N5O4{0K3r0i5*5N5X330.0c0$5G4I0)4{4}5#5-510.4j555-585u3U5w040u1x5z5M5m2_5D1u5F5`5?015^5L2X5,6g5Q020L5U5W6g0b5c5=3 5I045(4k5+6l6w5Y5:0O6v325^6H3u5|044p5 6g614H6D0164660O4@6f6T5%5)5+6a6E5;6Z6I5J6K3U6M4u6P6!0.6j3=4l4s0.0w6r6T5Q5k695O5o0.010n0k5t6S32645y6~5b044W0e126e6=6,4|6^2 6C326n5T5V725-6t046}6+3u6#6A6%5O7x0h4:0N6.3,6J7A6/52043{7l7B6@623,6V677e6{7g0~7j6Y7S4`5J7o2s7q3u6n6p7u6k6(5.7y7K1;7C2X066B7@7G7I7`6x5_7)3,6M7R2;7@6R7}7 7F0.0F2a2f7(8a5$6-7N877P892 8b7U7a5v0.6W8k8s8m6y6$5*808g8i0N8z2s8t4|830)888N6h8u8d7E7w0.7H108Q7M86508q8Z8S6_8F048h0Q8j8(8M8o8$0.8r8K8B7,2=0I4)0u2t2U8 4Q1n4S2w2y2u1U1W2w0M1E920I4R0:9f0T0V0X04.

Tracé du parcours (le vôtre à gauche, la solution à droite)

Le parcours de votre code et la solution attendue s'afficheront ici