Zum Inhalt

Parameter

Unsere neuen eigene Prozeduren erleichtern das Programmieren einiges. Dennoch sind sie bis jetzt etwas unflexibel. In den vorherigen Aufgaben haben wir einen sechseck() Befehl definiert. Wenn wir nun verschieden Grosse Sechsecke haben wollen, müssten wir ganz viele neue Befehle definieren. Wie z.B. kleinesSechseck(), mittleresSechseck(), grossesSechseck(), etc., das funktioniert zwar, aber ursprünglich wollten wir unnötige Tipparbeit vermeiden.

Es wäre doch viel praktischer, wenn wir nur einen Sechseck-Befehl bräuchten, der ganz flexibel, verschieden Grosse Sechsecke zeichnen könnte. Dafür brauchen wir Parameter.

{ }

Fachbegriff: Parameter

Ein Parameter ist eine spezielle Variable, mit der wir Informationen an einen Befehl übergeben können. Dazu muss der Befehl so definiert sein, dass er ein oder mehrere Parameter annimmt. Innerhalb des Befehls verhalten sich die Parameter wie Variablen.

Definition

Um Informationen an unsere neuen eigenen Befehle zu übergeben, können wir Parameter definieren. Dazu wird der Name von einem Parameter innerhalb der Klammer geschrieben.

Beispiel

In diesem Programm wird eine neue Prozedur mit dem Namen meineGrussProzedur definiert. Sowie einem Parameter nachname

def meineGrussProzedur(nachname):
    print("* Guten Morgen " + nachname)
    print("* * * *)

Probiere das Beispiel einmal aus, rufe den Befehl mit mit einem Parameter auf. Dazu schreibst du beim Aufruf zwischen den Klammern einen Wert, z.B. eine Zeichenkette.

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Beispiel 2

Wir können nun z.B. einen Befehl für ein Quadrat erstellen, welches eine beliebige Seitenlänge verwendet. Als Seitenlänge bezeichnen wir nun s.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Aufgaben

Sechsecke 2

Question

Ändere deinen Befehl sechseck() ab, damit neu mit einem Parameter die Seitenlänge an den Befehl übergebbar ist.

Zeichne drei Sechsecke mit verschiedenen Grössen.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013öesh98fTt2lv1760g3ndbcpmo(ari=)/wy:*Lk45 u050u0c0j0B0D0l0d0P0w0l0B0d0d0E010j0D0x010406050d0Q0y0y0B0C0I040L0b0=0t0r050G0=0@0_0{0:0x040519121c0G190:0u0D0m0Z0#0%0)0e0D0r0e0l1q0e0j0.050U0v0l0c1l0$0(011p1r1t1r0j1z1B1x0j0C1a0j0e0Z0z0X0x0B0t0)0k011D1n010h0W0c0t0B0y0c1x0d1X0t1%1F1*1B1-1/0.0a0P0}0 0r0d0m0z0C0d0w1s0B11131?1a0G1S2f1P1R1Q1y0u1^0)1t0t1,0z0d1x1i1k0!1E2p0D2r0t0z2w1x0x0C0c1a1=1Y2f2L0t2K1?2o012D0C0^0l0.0P0n122O0/0;2R2y1(2U2W2Y0k2#2e0:2O2S2,0B2X040P0s2:2M2=2)1m1F2^2`0P0N2~2P301Y2@262-2{0O382%2?2*333d2_2Y0p3h3a1@3k0)342Y0o3q2(3b3t2T3m350g3y3j323u3D2Y0f3G312z3C2V3n040n0q3N3A3I3Q3e0n2!2d2 3z3s3Y3v3T2/3%393)3c3R2`0n2}3/3i3O2+3K3T373`3r3=3!3g413;3B3,0n3p3`1d2I2f2w2i0u1R2n3B0w2E1:1a4g1b4e3)2N2e054m0S2Q3X3P0M0t0.0h0C0z0y3h0P473+4D040r0j0Q0C0j1B4J4L4B4N0D0y0x260j4V3H3P0z0.0K3q42480.0^0M0c0i4R4T0c3h4W1(0-040A0F4.4}1F0M0.0S0h4(3|330h0.0d0c295f0w0M4|4)4~0.0A5l5b3u5e0c0D0j4{4c5m1F4 0F0J3q0P5F4K5z0)56040h265a4A2+0.0D5O3*4*0H5R0t5T2@0v0.0C1Y0r5x2$540)4 5p5y5r010y0D0.4b5+5I015B5D415G605H5;4N5M0C0H0_0u5q5P5A5o6a5U5Q045f5v5*4v5{5B5E615F5,2T5$1u4%5:6b5-6d6w6f1F5?0.0s0p3V3`626x014+040G5Z3B6D045_6l5;6n41064/3+5t5h5g5k6A2S5.6e2S6R0N6H5`6V0.52465{4N0C6u6,3B6+6)6Q5@3-6:6U6K6W2$6Z3P4N5i0e5i6(6;766z7g6B0)6R6G6}3Y772;6r6`6|707p7i757k5=720n0k742M6r7q3(6_6#7d6%7o3P6 7j6-720f7E2P7G6?3W7z7t1K7N5n507$6C7B7D7)6y046@78124x2J4d7@0G4q2g4i122j7~0B1A7_4g0:7`0T0V0X04.

Sterne 2

Question

Definiere eine Prozedur stern(laenge) um einen Stern mit Strichlänge laenge zu zeichnen. laenge ist dabei ein Parameter, somit kannst du mit der selben Prozedur verschieden Grosse Sterne zeichnen.

Verwende deine Prozedur um die gezeigte Figur zu zeichnen.

Wenn du vor einer (Teil-)Zeichnung den Befehle begin_fill() aufrufst und nachher den Befehl end_fill(), dann wird deine Figure mit Farbe ausgefüllt. Die Füllfarbe kannst du mit fillcolor(FARBNAME) steuern.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Farbige Dreiecke

Question

Auch Farbnamen können als Parameter verwendet werden. Definiere einen Befehl, dreieck(farbe), welche ein gefülltes Dreieck mit der gegebenen Farbe zeichnet. Erstelle damit das nebenstehende Bild.

Du findest eine ausführliche Liste von Farben hier, bei vielen Farben musst du den "Hex-Code" verwenden.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

.128013öeshq;98fTt2lv17_60g3ndbcpmo(ari=)/wy:*Lk45 u050x0c0l0E0G0n0d0S0z0n0E0d0d0H010l0G0A010406050d0T0B0B0E0F0L040O0b0^0w0u050J0^0`0|0~0?0A04051c151f0J1c0?0x0G0o0$0(0*0,0e0G0u0e0n1t0e0l0;050X0y0n0c1o0)0+011s1u1w1u0l1C1E1A0l0F1d0l0e0$0C0!0A0E0w0,0m011G1q010j0Z0c0w0E0B0c1A0d1!0w1*1I1-1E1:1=0;0a0S10120u0d0o0C0F0d0z1v0E14161_1d0J1V2i1S1U1T1B0x1{0,1w0w1/0C0d1A1l1n0%1H2s0G2u0w0C2z1A0A0F0c1d1^1#2i2O0w2N1_2r012G0F0{0n0;0S0p152R0=0@2U2B1+2X2Z2#0m2(2h0?2R2V2/0E2!040S0v2?2P2^2,1p1I2{2}0S0Q312S331#2`292:2~0R3b2*2_2-363g2|2#0s3k3d1`3n0,372#0q3t2+3e3w2W3p380i3B3m353x3G2#0h3J342C3F2Y3q040p0t3Q3D3L3T3h0p2%2g323C3v3#3y3W2=3*3c3,3f3U2}0p303=3l3R2.3N3W3a3}3u3^3%3j443@3E3/0p3s493K3S4c3A4f3 3o3_0;0p3I4k3!4h410p3P4r3-4t4n040m3Y4x463V0m3)2)454b410m3;4J4a3.4M3|4P4g404A0m434U4l3M4X484!4s4W3h0m4e4)4y4+4G4j2)1g2L2i2z2l0x1U2q3E0z2H1?1d4{1e4_3,2Q2h05510V2T4*1I0P0w0;0j0F0C0B3k0S4Q4h5i040u0l0T0F0l1E5o5q1+5h0;0G0B0A290l5A4V1I0C0;0N3Z4:360;0{0P0c0k5w5y0c3k5B1I0:040D0I3t064K3#0P0;0V0j5K4#2W0j5;2L0G0c0z0P5#5L0,5(0D615^5s0j0|0y5!3}5$630;0I0M3t0S6k5p622W0;510n29665f6f5)6t5R3x5j6a6c4@6n5(5+446l6m670;6b0u2E0r1}0n6x2V646G4J6I6e015:040j6s3}6J6u6o040G5@6*0C0K5E0w6.6y2W0y0;0F1#0u6C5a6E0;656d6n0B0G0;4T705^6F6i6H6I6l6Y68290K0|0x6S3E647n3#764o0R4D6D7b6g6j7f6k7h6{1x5J747x6w7G6*7s3:7v7a6*6F5,6X6n5s1/0x6P0Z6R7J6^6U5,5.4h5{0c5}5 7q3S7p7!2V0d1(04020f0T0C0l0g2L0x7_7{7}7.1+7Q4E4b7D1N845%728b0,7L0h7N2P6Y864J7(2.7*7,607;7o8d8s3#7?0;817|0g296}0c8z838v7/7y873.891y8e017:7w7K77048h8O8l2@8n5S040x5|5~8r8R7#8u8*7=7@8F0g0u2L1/8:8W8J4/2`8M7F8-8t7I8 7r8T8V8H858`8Y7C8#8%7-968c917O6^8x7^7`8A1D0T8E9l8G928I046V2@9a0F7E8_9g8j75948i2S8k98328Z6z046q6%9s979B9G6n9j8:0z0L1#8^9e6v9v3+0J5c2M4^9*0J552j4}152m9;0E1D9,4{0?9-0W0Y0!04.

Spiralige Figur

Question

Das nebenstehende Bild entsteht, indem die Länge der Quadratseite ausgehend von 180 bei jedem nachfolgenden Quadrat um den Faktor \(0.95\) verkleinert wird. Es werden \(100\) Quadrate gezeichnet. Schreibe das Programm mit dem Befehl quadrat(s)

Eine verkleinerung um Faktor \(0.95\) bedeutet, dass der neue Wert nur noch \(95\%\) vom alten ist.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.

Olympische Dreiecke Version 3

Question

Zeichne nochmals die folgende Figur. Verwende diesmal Parameter für deine Befehle.

Es wird hier gezeichnet...

###(De-)Aktiviert den Code nach der Zeile # Tests (Groß-/Kleinschreibung wird nicht beachtet)
(Ctrl+I)
Ein- oder Ausstieg aus dem "Split-Screen"-Modus
(Alt+: ; Ctrl, um die Spalten zu vertauschen)
Ein- oder Ausstieg aus dem "Vollbildmodus"
(Esc)
Kürzen/nicht kürzen der Rückmeldungen im Terminal (Standardausgabe & Stacktrace / Starte das Programm erneut zum Anwenden)
Wenn aktiviert, wird der aus dem Terminal kopierte Text in eine Zeile umgewandelt, bevor er in die Zwischenablage kopiert wird.