Alien (5) - Fonctions

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.

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.

Les fonctions

Jusqu'à présent, nous avons utilisé des fonctions prédéfinies : haut, bas...

Il est également possible de créer ses propres fonctions, avec la syntaxe suivante :

🐍 Script Python
def ma_fonction():
    ...
    ...

Ce code crée une fonction nommée ma_fonction. Les actions que doit réaliser cette fonction sont ensuite codées là où on voit les ..., qui sont décalés de 4 espaces vers la droite (ce qui indique que les instructions appartiennent à cette fonction).

Déclarer une fonction ne déclenche aucune action. Il faut appeler la fonction pour que les actions qu'elle contient soient appliquées.

Question 1 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
def deplacement():
    gauche(3)
    haut(4)

deplacement()

Dessinez le parcours

L'image est en train de se charger

Appel d'une fonction

Une fois créée, une fonction peut être appelée autant de fois que l'on souhaite.

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

deplacement()
deplacement()

Dessinez le parcours

L'image est en train de se charger

Paramètres

Il est possible de rajouter des paramètres à la fonction, en ajoutant des noms de variables dans les parenthèses (séparés par des virgules).

La valeur de chaque paramètre est fournie lors de l'appel de la fonction.

Les "paramètres" sont aussi appelés "arguments".

Question 3 : Dessinez le parcours
🐍 Script Python
1
2
3
4
5
6
def deplacement(x):
    gauche(x)
    haut(x)

deplacement(2)
deplacement(3)

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 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(5e3m=p)rhkuoiscb/6S1vtdg:ay24Pfl050B0g0A0E0r0K0s0c0t0K0E0s0s0j010A0r0k010406050s0p0i0i0E0m0F040x0q0K0p0#0q0b050v0,0.0:0=0*0k040~1505180v181a150*0B0r0z0T0V0X0Z0n0r0C0n0K1o0n0A0(050O0u0K0g1j0W0Y011n1p1r1p0A1x1z1v0A0u0q0B0=1w0m160A0n0T0^0s0k0E0b0Z0G011B1l010J0Q0g0b0E0i0g1v1Z1#1*1D1-1z1:1=0(0a0c0I0m0q0k0q0s0r0{0b0c0M1X0m0m0g0t2a0~1^0b160v1V2n0A1T1S1U0B1`0Z1r0b1/271v1g1i0U1C2x0r2z0b1P1h1v0k2g162l2n2R0+1!2b2F1+2K0m0/0K0(0y2k2V0)2U1_2X1D2Z2#0(0G2)1#2+2l2w012:0E2$040h2@2m0*2`2.0Z2}2 0H322_2V2{380(0f3b343d362|0q2!2~0(0w3b172P0~2D2q0B2u2{0t1P1?163w193u2T0 2*053B0M2Q3k1k1D0o0(0M0J3s353Q0Z0d0(0c3W3P2G2|0J3T0g0k0V0t0g1=0b0A3%2-3Y010%040e0l0D3i0c423$3X3)0b0(0C0E0p0t0n0g3^2W3`3|0e4f2{0i0r2=4k3l3|0l41432,4g460(0n4a3@3J2^4v2{4i4p3`4m0(314C2m4E4q0(4s4M0)3j3_4x040M3.0E3:3=4B2T451+4i4R2R4U4w2Y3,4Z4#1/4%3K4)1D4+3i0~3M0g2n2O503v1h3x2q2s2o1O1Q2q0E1y530v3w0*5g0N0P0R04.

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

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

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

.128013n w(5e3m=p)rhkuoiscb/6S1vtdg:xay24Pfl7050B0g0A0F0r0L0s0c0t0L0F0s0s0j010A0r0k010406050s0p0i0i0F0m0G040x0q0L0p0%0q0b050v0.0:0=0@0,0k041017051a0v1a1c170,0B0r0z0V0X0Z0#0n0r0C0n0L1q0n0A0*050Q0u0L0g1l0Y0!011p1r1t1r0A1z1B1x0A0u0q0B0@1y0m180A0n0V0`0s0k0F0b0#0H011D1n010K0S0g0b0F0i0g1x1#1%1,1F1/1B1=1@0*0a0c0J0m0q0k0q0s0r0}0b0c0O1Z0m0m0g0t2c101`0b180v1X2p0A1V1U1W0B1|0#1t0b1;291x1i1k0W1E2z0r2B0b1R1j1x0k2i182n2p2T0-1$2d2H1-2M0m0;0L0*0y2m2X0+2W1{2Z1F2#2%0*0H2+1%2-2n2y012=0F2(040h2_2o0,2|2:0#2 310I342{2X2}3a0*0f3d363f382~0q2$300*0w3k2.2Y1m2;3p2?040M3d192R102F2s0B2w2}0t1R1^183H1b3F2V112,053M0O2S3m3x0#0o0*0O0K3D373#010d0*0c3+3!2I2~0K3(0g0k0X0t0g1@0b0A3=2/3-0)040e433w3@0b0*0E492}460l0D3k0c4l3;3,4b0*0C0F0p0t0n0g4f3n46483U2`3v3g4d4x450*0l4k4m4D3n4c040u0Y4G3@4z4S2!4F4B2o4M4H044J4Y0+3l444p040O3|0F3~40424(4!4T0*4A2V4o1-0i0r2)4V1F4h3u4}2;3`4/4;1;4?4|3?1-4U4@560#4 2@520#544(4*4a4W4-3{3}3 5b5m015g5d4+4~50043c5h5e534I3u0v3X0g2p2Q5O3G1j3I2s2u2q1Q1S2s0F1A5R0v3H0,5(0P0R0T04.

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

.128013,n w5e9(38m=p)rhkuoiscb/6S1vtdg:ay24Pfl7050E0g0D0H0u0N0v0d0w0N0H0v0v0m010D0u0n010406050v0s0l0l0H0p0I040A0t0N0s0)0t0c050y0:0=0@0_0.0n041219051c0y1c1e190.0E0u0C0X0Z0#0%0q0u0F0q0N1s0q0D0,050S0x0N0g1n0!0$011r1t1v1t0D1B1D1z0D0x0t0E0_1A0p1a0D0q0X0|0v0n0H0c0%0J011F1p010M0U0g0c0H0l0g1z1%1)1.1H1;1D1@1_0,0a0d0L0p0t0n0t0v0u0 0c0d0Q1#0p0p0g0w2e121|0c1a0y1Z2r0D1X1W1Y0E1~0%1v0c1?2b1z1k1m0Y1G2B0u2D0c1T1l1z0n2k1a2p2r2V0/1(2f2J1/2O0p0?0N0,0B2o2Z0-2Y1}2#1H2%2)0,0J2-1)2/2p2A012@0H2*040j2{2q0.2~2=0%31330K362}2Z2 3c0,0f3f383h3a300t2(320,0z3m2:2!1o2?3r2^040O3w393z3b3B3t040k3F3o3H3q3s330h3f1b2T122H2u0E2y2 0w1T1`1a3Y1d3W2X132.053%0Q2U3O2K010r0,0Q0M3U3G3_0e0,0d3 3^2$0M3|0g0n0Z0w0g1_0c0D452;3P0+040i4i3y3_0c0,0H4o2 4l0b3f44402$0,0x4u3p4l0o0G3m0d4K4z462?0,0F0H0s0w0q0g4E4k0,4n3/2|3x3i4s4W3_4G4J4L4$3p4r040x0!4)1/4l4Z2X4A4O4;4@1H4+4!373n4j4q494b0H4d4f4h523@554^4Y4 0%0l0u0,3e5d4.4X044x5d4M5f1H5k3k5i01512V544p4B040E282d4V5o4|0%4_5z5x3D5z5B2.5D4%5G4a4c4e1?5c4{4N5N5h5L5(015Q2,5+5v5)5r4y5p3_5Q2`5:5E500,0o3N5;300,0q4R5$3:5M5A5*5%625Q3M5|4v5 615}3b575Z5b5S6b685,5Q3l6g4F0,5s2V5u6k5-5l045{6c6B5T2|0.0y3=0g2r2S6N3X1l3Z2u2w2s1S1U2u0H1C6Q0y3Y6K0Q0S0U0v04.

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

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