Arduino Forum

International => Deutsch => Topic started by: Katsumoto on Apr 19, 2019, 06:23 pm

Title: Re: was macht return?
Post by: Katsumoto on Apr 19, 2019, 06:23 pm
Nein, bin auch Anfänger und habe nichts verstanden...
WAS macht der Befehl "return"
Hier ein code-beispiel:

Code: [Select]

 
long microsecondsToCentimeters(long microseconds)
 
{
 
 
 return microseconds / 29 / 2;
 


Hier gehts um den Ultraschallsensor, wie ein Profi leicht erkennen kann, aber was genau tut  "RETURN microseconds"  in diesem Fall???
Title: Re: Re: was macht return?
Post by: Doc_Arduino on Apr 19, 2019, 06:40 pm
Hallo,


Quote
Hier gehts um den Ultraschallsensor, wie ein Profi leicht erkennen kann ...
Woran soll man das erkennen? Ist für die Frage auch völlig belanglos.

return alleine weißt den Programmablauf an, zum Aufrufer der Funktion umgehend zurückzukehren. Wirkt wie ein Abbruch.

In deinem Fall wird eine Funktion mit Parameterübergabe und einem long Rückgabewert aufgerufen.
Der Übergabeparameter ist vom Datentyp long und hat die lokale Variable microseconds
Diese wird durch 29 und durch 2 geteilt und das Ergebnis zum Aufrufer zurückgegeben. Der Rückgabewert ist ebenfalls vom Datentyp long.

Code: [Select]
long microsecondsToCentimeters (long microseconds)
{
   return microseconds / 29 / 2;
}


Title: Re: Re: was macht return?
Post by: uwefed on Apr 19, 2019, 11:55 pm
Hier gehts um den Ultraschallsensor, wie ein Profi leicht erkennen kann, aber was genau tut  "RETURN microseconds"  in diesem Fall???
Einem kommt der Verdacht wegen der 58 oder 29*2 da dies die Zahl um von µs auf cm umzurechnen.
Grüße Uwe
Title: Re: Re: was macht return?
Post by: postmaster-ino on Apr 20, 2019, 12:10 am
Hi

Die Funktion hat einen Rückgabewert - das 'long' vor dem Funktionsnamen ist der Typ der Rückgabe.
Danach kommt der Funktionsname - hier 'microsecondsToCentimeters' - der Funktion werden also µs übergeben, wie man in der Klammer auch sehen kann - zuerst der Typ - ebenfalls wieder long - und dann der Name der lokalen Variable - microseconds.
Um von µs auf cm zu kommen, muß die Zeit durch 58 geteilt werden (oder durch 29 durch 2).
Da Das keine größeren Rechenschritte benötigt, ist diese Rechnung direkt am return angehangen - dort wird also erst der Übergabewert durch 29 durch 2 geteilt und dann zurück gegeben.

Und, wie schon geschrieben, beendet return die Funktion - Zeilen Die hinter diesem return stehen, werden nicht abgearbeitet, da das return halt vorher schon die Funktion beendet hat.

Wer schon Mal mit dem HC-SR04 gespielt hat, hat wohl auch die /29/2 gesehen - viel Mehr Wiedererkennungswert liegt Da aber nicht drin.

MfG