Huelsse/Profil Nawi/Java/Java-Turtle - Funktionen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
'''Java-Turtle - Funktionen - funktionale Methoden '''
----

{|
 |-
 | Häufig werden zur Simaltion Zufallszahlen benötigt. Effektiv kann eine eine Funktion Schreibaufwand ersparen. <BR>Im Gegensatz zu einer Procedure gibt eine Funktionen gibt genau einen Wert zurück:
  <BR> '''Aufbau einer einfachen Funktion zur Addition von 2 Zufallszahlen a un b'''<BR>Die zufällig erzeuten Zahlen a und b werden an die Fuktion Summe übergeben: int summe(int a,b)<BR> Mit int summe wird der Wertebereich für die zu berechnende Summe festgelegt<BR>  return a + b; berechnet die Summe und gibt den Wert an das Hauptprogramm zurück 
 || <run id="4df79fc749f4a">int summe(int a, b)
{
  return a + b;
}
int a = Math.random() * 10;
int b = Math.random() * 10;

System.out.print("Zahl a: " + a ); 
System.out.print("Zahl b: " + b ); 
System.out.print("Summe: " + summe(a,b) ); 
</run> 
 |}

Eine funktionale Methode (Funktion) gibt genau einen Wert zurück. Im Gegensatz zur Procedure fehlt das Wort "void" :

* Java:
* int summe(int a, b) -  Funktion summe(int a,b) - Achtung: ohne Semikolon, a und b sind Übergabeparameter, int summe legt der Wertebereich für den Rückgabewert fest
* return a + b; -  mit return wird der berechnete Wert der Funktion summe an das Hauptprogramm zurückgegeben
* System.out.print("Summe: " + '''summe(a,b)''' );  - Aufruf der Funktion: '''summe(a,b)''' , Berechung der Summe in der Funktion summe, Ausgabe mit Println 
*                          
* Delphi:
* function summe(a, b: integer): integer; -  Funktion summe(a,b: integer):integer -  a und b sind Übergabeparameter, summe ( .. ) : integer; legt der Wertebereich für den Rückgabewert fest
* return a + b; -  mit return wird der berechnete Wert der Funktion summe an das Hauptprogramm zurückgegeben
* writeln('Summe: ' + '''summe(a,b)''' );  - Aufruf der Funktion: '''summe(a,b)''' , Berechung der Summe in der Funktion summe, Ausgabe mit writeln  


{|
 |-
 | Ein Stern soll aus einzelnen farbigen Quadraten erstellt werden. <BR>
Zum Zeichnen des Sterns wird die Procedure Quadrat genutzt: '''void quadrat()''' <BR> Die zufälligen Farben (RGB) werden mit der Funktion farbe() erstellt: '''long farbe()''' <BR>Positive Gleitkomma-Zufallszahlen zwischen größer gleich 0,0 und kleiner 1,0 liefert die Anweisung Math.random().<BR> Für die Farbenwerte werden aber int-Werte benötigt.<BR> Deshalb muss ein Casting durchgeführt werden: „Umwandeln“ von einem Datentyp in einen anderen. <BR> Eine Typanpassung auf (int) führt immer zum Ergebnis 0, d.h. es würde nur die Farbe schwarz erzeugt.<BR> Mit long farbe() können die Werte mit Math.round gerundet werden: return Math.round( Math.random() * 255);<BR>Anschließend muss noch der passende Wertebereich von long auf int angepasst werden: (int)farbe()<BR><canvas> </canvas> || <run id="4dd0206ebbf2b">
canvas.clear();
turtle.home();
turtle.penDown();

'''long farbe()
{
 return Math.round( Math.random() * 255);
}'''

void quadrat()
{
  for ( int i = 1; i < 5; i++ )
  {
    turtle.forward(50);
    turtle.left(90); 
  }
}

for ( int i = 1; i < 37; i++ )
{
turtle.penColor('''(int)farbe(),(int)farbe(),(int)farbe()''');
  quadrat();
  turtle.left(10);
 }
</run> 
|}


Erstellen Sie die obere Turtle-Grafik "Dreiecksblume" mit einer prozeduralen Methode dreieck():
* <span style="background-color:#80ff80">void dreieck(): </span>Teilprogramm zum Zeichnen eines einzelnen Dreiecks 
* <span style="background-color:#FFFF80">Hauptprogramm: </span> hier wird das Teilprogramm dreieck() aufgerufen
* Schrittweite für s: 100
* Startposition: Canvasmitte

{|- 
 |- 
 | '''_________________________Dreiecksblume______________________________________________'''                                                                ||  
 |- 
 | 

 |}