Alien (4) - Boucles bornées

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é, ou d'écrire le programme permettant de reproduire le cheminement proposé.

Lorsqu'il s'agit d'écrire le programme, il ne faut modifier que les ... présents dans le code :

  • avec une valeur,
  • avec une instruction complète,
  • si ... est le seul contenu d'une ligne, il ne faut les remplacer que par une seule ligne de code (sauf mention contraire).
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.

Attention : mode de déplacement

Dans les exercices où l'on doit déplacer l'alien, les appels de fonction comme haut(4) signifient que l'alien se déplace de 4 cases en une fois, et non 4 fois de une case. Ne cliquer que sur la case d'arrivée.

Consignes

Dans cet exercice, on trouve deux types de questions :

  • Dessinez le parcours : 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.

  • Codez le parcours : écrire le code nécessaire pour obtenir le déplacement souhaité (les numéros correspondent aux différentes étapes).

Attention

Le code ne devra pas dépasser les \(10\) lignes.

Boucle bornée

Une instruction itérative, ou boucle, permet de répéter plusieurs fois une séquences d'instructions.

🐍 Script Python
for compteur in range(2) :
    haut(3)
Le nombre entre parenthèses dans range(nombre) indique le nombre de répétitions des instructions. Dans cet exemple, on répète \(2\) fois un déplacement de l'alien de \(3\) cases vers le haut.

Les instructions répétées dans la boucle (corps) doivent être décalées à l'aide de la touche tabulation.

Dans cet exemple, une variable compteur est définie. Elle deviendra utile dans la suite de l'exercice (inutile de s'en préoccuper pour le moment).

Question 1 : Dessinez le parcours
🐍 Script Python
1
2
3
for compteur in range(5) :
    gauche()
    haut()

Dessinez le parcours

L'image est en train de se charger

Question 2 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
gauche(5)
for compteur in range(3) :
    haut()
    droite(2)
bas(4)

Dessinez le parcours

L'image est en train de se charger

Question 3 : 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

.128013n w(5e3m=p)rhkuoiscb/6S1vtdg:ay24Pfl7050B0g0A0E0r0K0s0c0t0K0E0s0s0j010A0r0k010406050s0p0i0i0E0m0F040x0q0K0p0$0q0b050v0-0/0;0?0+0k040 1605190v191b160+0B0r0z0U0W0Y0!0n0r0C0n0K1p0n0A0)050P0u0K0g1k0X0Z011o1q1s1q0A1y1A1w0A0u0q0B0?1x0m170A0n0U0_0s0k0E0b0!0G011C1m010J0R0g0b0E0i0g1w1!1$1+1E1.1A1;1?0)0a0c0I0m0q0k0q0s0r0|0b0c0N1Y0m0m0g0t2b0 1_0b170v1W2o0A1U1T1V0B1{0!1s0b1:281w1h1j0V1D2y0r2A0b1Q1i1w0k2h172m2o2S0,1#2c2G1,2L0m0:0K0)0y2l2W0*2V1`2Y1E2!2$0)0G2*1$2,2m2x012;0E2%040h2^2n0+2{2/0!2~300H332`2W2|390)0f3c353e372}0q2#2 0)0w3j2-2X1l2:3o2=040L3c182Q0 2E2r0B2v2|0t1Q1@173G1a3E2U102+053L0N2R3l3w380)0n0E0{3C363!010(040e3*3Z2H010i0r0)323T2_3u2|3.0l3t3+3?0o0)0J3o3c0c3~3m0b0)3L0i0k0A0g0p0m494b3,0q0d0)2J4m432Z0u0)0m1$0C0g3;2.3,3.3:3|2n4n3?3^3`4C3v3?400D3j0c4T4a4u2:0)0C3(0t0n4B4H3Y4D4P0)4G2U4W0!4L042@4(4J1,40423=2Z3$3(0A4N3 4,513m4;3{4.4|1E4`4(3k4*1,4504474l4(4V593#044f4h4j5j2S5l5e1E4p4r0~5k4^2:4w044y0b4A544E534@4/3@3_043b5L5m3-0)0l4R5c4U5u4O4}040B252a4%585v0!4F5I4K5O573U5M5b2S5d5!4X040u0X5/4_5K5+5{4:5O5Q635204415c0 3W0g2o2P6f3F1i3H2r2t2p1P1R2r0E1z6i0v3G0+6v0O0Q0S04.

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

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

Question 4 : 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

.128013n w(5e38m=p)rhkuoiscb/6S1vtdg:ay24Pfl7050C0g0B0F0s0L0t0c0u0L0F0t0t0k010B0s0l010406050t0q0j0j0F0n0G040y0r0L0q0%0r0b050w0.0:0=0@0,0l041017051a0w1a1c170,0C0s0A0V0X0Z0#0o0s0D0o0L1q0o0B0*050Q0v0L0g1l0Y0!011p1r1t1r0B1z1B1x0B0v0r0C0@1y0n180B0o0V0`0t0l0F0b0#0H011D1n010K0S0g0b0F0j0g1x1#1%1,1F1/1B1=1@0*0a0c0J0n0r0l0r0t0s0}0b0c0O1Z0n0n0g0u2c101`0b180w1X2p0B1V1U1W0C1|0#1t0b1;291x1i1k0W1E2z0s2B0b1R1j1x0l2i182n2p2T0-1$2d2H1-2M0n0;0L0*0z2m2X0+2W1{2Z1F2#2%0*0H2+1%2-2n2y012=0F2(040h2_2o0,2|2:0#2 310I342{2X2}3a0*0f3d363f382~0r2$300*0x3k2.2Y1m2;3p2?040M3u373x393z3r040i3d192R102F2s0C2w2}0u1R1^183P1b3N2V112,053U0O2S3m3F2~0*0o0F0|3L3E2I010)040e3?3,3^0j0s0*3C3$2`3v2}3`0m3D3~2!0*0C262b0g3}2/3-3`3|442o463n40424i3w3^484a4j3^0p0*0K3p3d0c4p3-0b0*3U0j0l0B0g0q0n4E4G3^0r0d0*2K4R3@2!0v0*0n1%0D4h4n3+4y1-4l4t2}4r324:3n4w4+4F4Z1F3`0E3k0c514{4b2;0*0v0Y4@4k0*4m2V4|0#4=2^4+4S4.0*494+0652534-55040D3;0u0o4*5d540#4/5i5e014=3c5D5A3_5l50525j5s570t594v5b5S1-5g5V4}5L5n5p5O394d4f4N5Y5B5U5I5r5f414?5/4u5k045m2T3l5:3.043:3=5@475b5{2,0,0w3)0g2p2Q6b3O1j3Q2s2u2q1Q1S2s0F1A6e0w3P680O0Q0S0t04.

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

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

Compteur

Une boucle avec compteur permet de répéter des instructions un certain nombre de fois tout en mettant à jour automatiquement une variable compteur qui est initialisée à zéro.

🐍 Script Python
for compteur in range(3):
    droite(compteur)
La variable compteur est automatiquement initialisée à \(0\) et automatiquement augmentée de \(1\) à la fin de chaque tour de boucle (sauf au dernier). Elle prendra donc tour à tour les valeurs \(0\), \(1\) et \(2\).

Noter que l'on n'est pas obliger d'appeler cette variable de cette façon : on peut très bien lui donner d'autres noms !

Question 5 : Dessinez le parcours
🐍 Script Python
1
2
3
4
bas(7)
droite()
for compteur in range(3) :
    haut(compteur+1)

Dessinez le parcours

L'image est en train de se charger

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

.128013n w(5e3m=p)rhkuoiscb/S1vtdg:ay24P+fl050A0g0z0D0r0K0s0c0t0K0D0s0s0j010z0r0k010406050s0p0i0i0D0m0E040w0q0K0p0#0q0b050v0,0.0:0=0*0k040~1505180v181a150*0A0r0y0T0V0X0Z0n0r0B0n0K1o0n0z0(050O0u0K0g1j0W0Y011n1p1r1p0z1x1z1v0z0u0q0A0=1w0m160z0n0T0^0s0k0D0b0Z0F011B1l010J0Q0g0b0D0i0g1v1Z1#1*1D1-1z1:1=0(0a0c0H0m0q0k0q0s0r0{0b0c0M1X0m0m0g0t2a0~1^0b160v1V2n0z1T1S1U0A1`0Z1r0b1/271v1g1i0U1C2x0r2z0b1P1h1v0k2g162l2n2R0+1!2b2F1+2K0m0/0K0(0x2k2V0)2U1_2X1D2Z2#0(0F2)1#2+2l2w012:0D2$040h2@2m0*2`2.0Z2}2 0G322_2V2{380(0f3b172P0~2D2q0A2u2{0t1P1?163m193k2T0 2*053r0M2Q3d362|0(0A24290g3i351k1D0%040e3N3F3P0Z0i0r0(313z2^2,2W3W013R0l3b343V2G3H040n0D0`3U2-3*3R3T3$2m3(2{3Y0(3a3 3E3{3;3,3.413G0o0(0J0q0m3b0c4c3*0b0(0r4j4l3;0q0d4o0}464k3O3;0b0u0(0m1#0B3M464r1+3}3`3)3;4304452T4z4K0(3-4x4J3Q0(0C3.0c4%4y3:2Y0(0B3^0t0n4H4S4*4Z3S4M3e4o4_3G0q0(0I4|3*4P2(4I4T4@4W2R064(4)484+040u0W51490(3~4=5d2/4{554?0Z4~04505q5n3X3Z04545m4N4U04582*0*0v3C0g2n2O5L3l1h3n2q2s2o1O1Q2q0D1y5O0v3m5I0M0O0Q0s04.

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

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

Bornes

Il est possible d'indiquer la borne de début (incluse) et de fin (exclue).

🐍 Script Python
for compteur in range(2, 6):
    droite(compteur)
La variable compteur est automatiquement initialisée à \(2\) et automatiquement augmentée de \(1\) à la fin de chaque tour jusqu'à \(6\) exclu (il ne prendra pas cette valeur).

Question 7 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
gauche(7)
bas(7)
for a in range(1, 4) :
    droite(a)
    haut(a)
gauche(2)

Dessinez le parcours

L'image est en train de se charger

Question 8 : 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

.128013,n w(5e3m=p)rhkuoiscb/6S1vtdg:ay24P+fl050C0h0B0F0s0M0t0d0u0M0F0t0t0k010B0s0l010406050t0q0j0j0F0n0G040y0r0M0q0%0r0c050w0.0:0=0@0,0l041017051a0w1a1c170,0C0s0A0V0X0Z0#0o0s0D0o0M1q0o0B0*050Q0v0M0h1l0Y0!011p1r1t1r0B1z1B1x0B0v0r0C0@1y0n180B0o0V0`0t0l0F0c0#0H011D1n010L0S0h0c0F0j0h1x1#1%1,1F1/1B1=1@0*0a0d0J0n0r0l0r0t0s0}0c0d0O1Z0n0n0h0u2c101`0c180w1X2p0B1V1U1W0C1|0#1t0c1;291x1i1k0W1E2z0s2B0c1R1j1x0l2i182n2p2T0-1$2d2H1-2M0n0;0M0*0z2m2X0+2W1{2Z1F2#2%0*0H2+1%2-2n2y012=0F2(040i2_2o0,2|2:0#2 310I342{2X2}3a0*0g3d363f382~0r2$300*0x3d192R102F2s0C2w2}0u1R1^183y1b3w2V112,053D0O2S3m1m2;0*0v0Y3u373S0#0)040f3X3R2I010j0s2@3(2/3Z013#0m3k2.2Y3;0c0*0D0F0q0u0o0h3/3`3*3#3%3L2`3_2}3,3i442}3?3^3Y3*0p0*0L3p3d0d4b3n3|040s4p4r3;0r0e0*2K4w4j2!0v0*0n1%0D43492o4x460*482V4E1F4d042*4M3Q3:4P040b4f3n4V3c4Y4O1-4h4Y4q4T3!0*0E3k0d4`4;3)2!0*0o3 0B4(3;47533*4t4v4,4=3=0*3@4Y064{4|4!4~040C262b4L4S4}1F555a5r394B561-0r0*0K5y4U3-042^5u5j5s5d4i5v2~3U3W5I454.4Q5D0#4V5H5q5J4?045e2T0,0w3O0h2p2Q5,3x1j3z2s2u2q1Q1S2s0F1A5/0w3y5)0O0Q0S0t04.

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

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