Alien (8) - Instructions imbriqué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é.

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.

Autres 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".
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

En fonction de la question, il y aura une limitation du nombre de lignes.

Instructions imbriquées

Nous avons vu précédemment plusieurs structures algorithmiques différentes : instructions conditionnelles, boucles conditionnelles ou bornées et fonctions.
Nous les avons abordées séparément mais il est cependant possible d'imbriquer une instruction à l'intérieur d'une autre.

🐍 Script Python
for i in range(4):
    bas()
    if i > 1:
        haut()
Dans l'exemple précédent, le corps de la boucle s'exécutera quatre fois, mais l'instruction haut() que les deux dernières fois.

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

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
 9
10
11
def fonction(a):
    droite(3)
    for i in range(a):
        bas(2)
        gauche()

haut(4)
gauche(6)
fonction(2)
haut(5)
fonction(3)

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

.128013,:ag)1iUkn/S=vmsuhb84;y7e62odt c0(wr5P3plf050D0z0E0d0h0P0q0F0G0P0d0q0q0n010E0h0O010406050q0r0p0p0d0K0x040m0C0P0r0+0C0k050l0=0@0_0{0:0O04141b051e0l1e1g1b0:0D0h0o0Z0#0%0)0s0h0e0s0P1u0s0E0.050U0t0P0z1p0$0(011t1v1x1v0E1D1F1B0E0t0C0D0{1C0K1c0E0s0Z0~0q0O0d0k0)0B011H1r010Q0W0z0k0d0p0z1B1)1+1:1J1?1F1_1{0.0a0F0M0K0C0O0C0q0h110k0F0S1%0K0K0z0G2g141~0k1c0l1#2t0E1Z1Y1!0D200)1x0k1^2d1B1m1o0!1I2D0h2F0k1V1n1B0O2m1c2r2t2X0;1*2h2L1;2Q0K0^0P0.0g2q2#0/2!1 2%1J2)2+0.0B2/1+2;2r2C012_0d2,040N2}2s0:302@0)33350v382 2#313e0.0L3h3a3j3c320C2*340.0A3o2=2$1q2^3t2`040y3y3b3B3d3D3v040u3h1d2V142J2w0D2A310G1V1|1c3T1f3R2Z152:053Y0S2W3q3J010j0.0S0Q3P3I2M010J0.0F3`3:3|0k0Q0.0Q122o0h12412?3;0-040I4c3A430.0d4i314f0b3h403{2(0.0t4n3r4f0f0c4r0F4D4E4F4D3z3X0g0.030F0i2F0F0q0~104a2h2c0%0h1E0z3o4F4I3r0k0.0e0d0r0G0s4!3*2~4%4e0.4h4;2s4?4k044w4`3/4d3|4z4#4E4|1;3?040h3_504s424u044m5d571J0C0.020e0E0w4r5k0)0p0h3m4x4@044B50064G564t2^0.0s4,0E5y534^5M1;5v5x505t01545C3p525g470k494b5T5G0)4f4_2Z5*015R040H5P1J4p5s5/5;375)5f5^0.0f3H5 3d4v0$5@5+5O5~5Z1J5;3g6b4j1;5W2X5Y6h5H045#5%136g4o6a5.645:5w043x6s4y0.4q5j5{6y2|6B5z625C143-0z2t2U6P3S1n3U2w2y2u1U1W2w0d4Z2t3T0:0l0S0U0W0q04.

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

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

Question 4 : Dessinez le parcours
🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
haut()
etape = 0
while etape < 10:
    if etape < 4 :
        haut()
    elif etape < 7 :
        droite()
    elif etape < 9:
        bas()
    else:
        gauche()
    etape = etape + 1
gauche()

Dessinez le parcours

L'image est en train de se charger

Question 5 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
7
def fonction(n):
    haut()
    gauche(n)

droite(5)
for i in range(1, 4):
    fonction(i)

Dessinez le parcours

L'image est en train de se charger