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 Simulation Zufallszahlen benötigt. Effektiv kann eine Funktion Schreibaufwand ersparen. <BR>Im Gegensatz zu einer Procedure gibt eine Funktion genau einen Wert zurück:
  <BR> '''Aufbau einer einfachen Funktion zur Addition von 2 Zufallszahlen a und 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)''' , Berechnung 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>Die Anweisung Math.random() liefert positive Gleitkomma-Zufallszahlen zwischen größer gleich 0,0 und kleiner 1,0.<BR>Diese Werte werden mit 256 multipliziert:  Math.random() * 255: Werte zwischen 0,0 und 255,0.<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><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> 
|}