009
16.01.2008, 18:29 Uhr
Hans
Library Walker (Operator)
|
Hi,
Du haust da die Begriffe durcheinander. Ich kenne zwar Haskel nicht, aber da scheint es andere Konventionen für Bezeichnungen zu geben. In C und in C++ ist ein Header die Datei, die mittels #include eingebunden wird. Deshalb spricht man dabei auch von header-Dateien.
In den Headerdateien von C/C++ stehen grundsätzlich nur Deklarationen, aber KEINE Definitionen. (Erklärung des Unterschiedes unten.)
Und die Fakultät ist doch eine rekursive Funktion, d.h. eine, die sich selbst aufruft. Deshalb haben Userabfragen wie cin darin nichts verloren. In Deinem Beispiel: Wenn die Funktion sich 10 mal aufruft, fragt sie den Benutzer 10 mal, nach der Zahl dessen Fakultät berechnet werden soll. Kann das der Sinn der Funktion sein?
Zitat: |
kann mir bitte jemand die beidem datein (main und header) so berichtigen das das programm läuft?
|
Sieh Dir das Programm von ao an, das ist die korrekte Art und Weise, wie man es in C++ macht. Funktionen in eigene Dateien auslagern ist noch mal ein eigenes Kapitel; das brauchen wir noch nicht. Würde hier auch nur noch mehr verwirren.
Zitat: |
am besten so das alle ein un ausgaben in der funktion stattfinden(also im header) nur der aufruf in der main steht?
|
Diese Aufteilung ist jetzt noch nicht nötig. Es geht doch um die Grundlagen von Funktionen, da reicht es aus, wenn Ein- und Ausgaben in main stattfinden. Das ist in C++ schliesslich auch eine Funktion. Nur für die Berechnung der Fakultät ist eine eigene Funktion zuständig, die in Deinem Fall fak heisst.
Und jetzt zum Unterschied zwischen einer Deklaration und einer Definition: Eine Deklaration ist eine Mitteilung an den Compiler, die ihm sagt, das es etwas gibt. Im Falle einer Funktion bedeutet dies das eine Funktion X existiert, und welche Parameter sie hat. Das ist alles, mehr macht eine Deklaration nicht. Sobald auch nur die geschweiften Klammern für die Funktion X dazu komm, ist es keine Deklaration mehr, sondern eine Definition.
C++: |
int fak (int x); // Deklarration
int fak (int x) // Definition; - diese Funktion tut nichts { }
|
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |