Frage von Manleitner, 32

Programmieren-dringend Hilfe gesucht. Kann mir jemand helfen?

Hallo Leute, ich brauche dringend eure Hilfe.

Könntet ihr mir helfen zu erklären, was diese Programmzeilen bedeuten? Habe einen Test in Programmieren und ich kenn mich gar nicht aus? Wir programmieren in mbed also auf https://developer.mbed.org

Es geht um einen digitalen Funktionsgenerator. Könnt ihr mir bei diesen Zeilen helfen?

include "FuncGenFSST.h" //Inkludiert die Datei "FuncGenFSST.h"

// Konstruktor SignedRampGen::SignedRampGen() { val=0; SetPointsPerPeriod(10); }

void SignedRampGen::SetPointsPerPeriod(int aPoints) { _inc = 2.0/aPoints; }

void SignedRampGen::SetFrequ(float aFrequ) { SetPointsPerPeriod(1.0/aFrequ); }

void SignedRampGen::CalcOneStep() { val = val + _inc; if( val>=1.0 ) val = -1 + (val - 1.0); }

TriangleGen::TriangleGen() { val=0; _state=1; SetPointsPerPeriod(10); }

void TriangleGen::SetPointsPerPeriod(int aPoints) { _inc = 4.0/aPoints; }

void TriangleGen::SetFrequ(float aFrequ) { SetPointsPerPeriod(1.0/aFrequ); }

void TriangleGen::CalcOneStep() { if( _state==1 ) { val = val + _inc; if( val>1.0 ) { val = val - _inc; _state = 2; } } else if( _state==2 ) { val = val - _inc; if( val<-1.0 ) { val = val + _inc; _state = 1; } } }

RectGen::RectGen() { val=0; _inc=_phase=0; SetPointsPerPeriod(10); }

void RectGen::SetPointsPerPeriod(int aPoints) { _inc = 1.0/aPoints; }

void RectGen::SetFrequ(float aFrequ) { SetPointsPerPeriod(1.0/aFrequ); }

void RectGen::CalcOneStep() { _phase += _inc; if( _phase>=1.0 ) _phase = _phase - 1.0; if( _phase>0.5 ) val = 1.0; else val = -1.0; }


Spezielle Frage wäre noch:

Was bedueten diese zwei Doppelpunkte? " :: "

Danke für eure Hilfe!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von bookworm69, 30

Was links vom Doppelpunkt steht ist üblicherweise die Klasse (das Hauptobjekt) und hinter dem Doppelfunktion ist eine Funktion dieser Klasse.

Beispiel: "Mensch::Laufen()" "Mensch::Reden()" ...

Kommentar von Manleitner ,

Danke und weißt du zufällig was dieses Programm tut (vielleicht wenn ichs dir in einer normalen Formatierung schicke)?

Kommentar von bookworm69 ,

Das brauchst du bloß "ablesen", z.B.:

// Konstruktor SignedRampGen::SignedRampGen() { val=0; SetPointsPerPeriod(10); }

hier wird der globale Wert val auf 0 gesetzt. Danach wird die Funktion SetPointsPerPeriod mit 10 aufgerufen.

void SignedRampGen::SetPointsPerPeriod(int aPoints) { _inc = 2.0/aPoints; }

aPoints ist also 10: also wird in der Funktion berechnet

_inc = 2.0/10 = 0.2

usw.

Antwort
von PeterKremsner, 32

void RectGen::SetPointsPerPeriod definiert eine Memberfunktion des Objektes RectGen mit dem Namen SetPointsPerPeriod, dem Argument int aPoints und dem Rückgabewert void.

SignedRampGen::SignedRampGen() definiert den Konstruktor des Objektes SignedRampGen. Wichtig ist in dem Fall nur dass man für den Konstruktor keinen Rückgabewert definiert.

Antwort
von hotfix, 28

ich würde Sagen beim Aufruf RectGen::SetPointsPerPeriod

RectGen = Klasse

SetPointsPerPeriod ist die Methode dieser Klasse

Kommentar von PeterKremsner ,

Wenn das C++ ist was ich glaube dann sind das Definitionen von Memberfunktionen und keine Funktionsaufrufe.

Kommentar von Manleitner ,

Danke und weißt du zufällig was dieses Programm tut (vielleicht wenn ichs dir in einer normalen Formatierung schicke)? 
Jap ist glaub ich C++, wie gesagt ich hab keine Ahnung. es ist mbed bzw. m0board programmierung 

Keine passende Antwort gefunden?

Fragen Sie die Community