Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   C++ Funktionen (Hab Probleme damit) (https://www.delphipraxis.net/67354-funktionen-hab-probleme-damit.html)

g-hun 13. Apr 2006 13:58


Funktionen (Hab Probleme damit)
 
Hallo!
Guckt euch erst das mal an:

Code:
...
void Funktion ()
{
  cout<<"HALLO!"<<endl;
  getch();
}

int main (void)
{
  Funktion();
  return 0;
}

Ich verstehe ein nicht:

Ich weiß wie man Funktionen benutzt, aber was sind eigentlich Rückgabetypen oder Parameter????
Bitte erklärt mir das Richtig!
Ich habe in google.de überall nachgeguckt.
Aber ich habe nix gefunden.
Ich weiß nicht wöfür Parameter sind und wieso man einen Rückgabetyp braucht.

DANKE!
:-D :-D :-D :-D :-D

Airblader 13. Apr 2006 13:59

Re: Was sind Rückgabetypen??? ---HILFE!
 
Zitat:

Zitat von g-hun
Ich habe in google.de überall nachgeguckt.
Aber ich habe nix gefunden.

Sorry, aber die Aussage nehme ich dir nicht ab ;)

Allein auf wikipedia dürfte der Begriff Parameter im Informatikbereich zu genüge erklärt sein.

Edit:
Google 1. Ergebnis dafür übrigens:
http://de.wikipedia.org/wiki/Parameter_%28Informatik%29

Und ein Rückgabetyp ist einfach ein Variablentyp. Funktionen können bestimmte Wete zurückgeben und diese haben wie jede Variable eben auch einen Typ :)

g-hun 13. Apr 2006 14:02

Re: Was sind Rückgabetypen??? ---HILFE!
 
Kann sein das ich was gefunden habe aber:

Kann mir das mal einer Richtig verständlich erklären??

BITTE!!
Sonst weiß ich wirklich nicht weiter.

Danke!
:( :( :( :(

Airblader 13. Apr 2006 14:03

Re: Was sind Rückgabetypen??? ---HILFE!
 
Sorry, aber besser als auf wiki kann man das doch kaum erklären :gruebel:

Parameter in Funktionen sind einfach nur Platzhalter, so dass du die Funktion mit verschiedenen Werten aufrufen kannst. Wenn du Parameter aus der Mathematik kennst, dürfte es doch kein Problem sein, das ganze gedanklich zu übertragen ;)

air

g-hun 13. Apr 2006 14:06

Re: Was sind Rückgabetypen??? ---HILFE!
 
Danke Airblader aber:

Ich hatte das nie in der Mathematik.
Könntest du etwas Coden und mir erzählen wie das abläuft??
Ich zwing dich nicht dazu, versteh mich nicht falsch.
Aber es wäääääre sehr nett von dir!

freak4fun 13. Apr 2006 14:07

Re: Was sind Rückgabetypen??? ---HILFE!
 
Da Parameter und Rückgabewerte in C++ das gleiche bedeuten wie in Delphi, versuchs mal hier. ;)

MfG
freak

Airblader 13. Apr 2006 14:12

Re: Was sind Rückgabetypen??? ---HILFE!
 
Zitat:

Zitat von g-hun
Danke Airblader aber:
Ich hatte das nie in der Mathematik.

Darf man fragen, in welcher Schule solche Grundprinzipien nicht behandelt werden? :gruebel: ;)

Noch ein kleines Beispiel:

Code:
function Foo(Bar: Integer): Boolean;
begin
 if Bar = 5 then
   Result := TRUE
 else
   Result := FALSE;
end;
"Bar" ist hier ein Integer. Damit wird die Funktion dynamisch und du kannst sie mit verschiedenen Werten aufrufen (siehe Gegenbeispiel).
Das "Boolean" ist übrigens der Rückgabetyp. Die "Rückgabevariable" Result ist also vom Typ Boolean ;)

Gegenbeispiel:
Code:
function Foo: Boolean;
begin
 if 5 = 5 then
   Result := TRUE
 else
   Result := FALSE;
end;
Du siehst:
Du kannst keinen Wert übergeben, ergo auch nicht vergleichen. Diese Funktion würde immer TRUE liefern, während die obige nur dann TRUE liefert, wenn du sie mit "5" als Parameter aufrufst ;)

air

Thorben77 13. Apr 2006 14:25

Re: Was sind Rückgabetypen??? ---HILFE!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Du bist nicht der einzige, der hier Hilfe sucht :arrow: entfern mal das "HILFE!" aus dem Titel.

g-hun 13. Apr 2006 14:28

Re: Was sind Rückgabetypen??? ---HILFE!
 
Wenn ichs immer noch nicht richtig verstanden habe entferne ichs auch nicht.

freak4fun 13. Apr 2006 15:03

Re: Was sind Rückgabetypen??? ---HILFE!
 
Zitat:

Zitat von g-hun
Wenn ichs immer noch nicht richtig verstanden habe entferne ichs auch nicht.

Für sowas kann man die Frage als "offen" markieren. Dann hat sie in der Übersicht ein Fragezeichen. Wenn man dann mit den Antworten zufrieden ist, sein problem gelöst hat, oder alles verstanden hat, kann man die Frage als "geschlossen" markieren. Macht zwar kaum jemand, aber so war es gedacht. Ich weiß nicht ob du die Frage auch im nach hinnein noch als offen markieren kannst. Aber ich bin auch dafür, dass du das Hilfe entfernst. ;)

MfG
freak

Airblader 13. Apr 2006 15:09

Re: Was sind Rückgabetypen??? ---HILFE!
 
Zitat:

Zitat von g-hun
Wenn ichs immer noch nicht richtig verstanden habe entferne ichs auch nicht.

Darum geht es garnicht.
Sowas gehört einfach nicht zum ordentlichen Ton, da es überhaupt garnichts zum Thema sagt ;)

Würde vielen Leuten gut tun, den Kodex mal zu lesen :stupid: :)

air

ichbins 13. Apr 2006 15:15

Re: Was sind Rückgabetypen??? ---HILFE!
 
Eine Funktion ist bei Delphi eine Prozedur, die aus bestimmten Werten einen anderen Wert berechnet und diesen zurückgibt.

Delphi-Quellcode:
function summe(zahl1,zahl2:integer):integer;
begin
  result:=zahl1+zahl2;
end;
Die Funktion Summe gibt einen Integer-Wert zurück. Auf diesen kannst du dann folgendermaßen zugreifen:
Delphi-Quellcode:
label1.caption:=inttostr(summe(1,2));
//jetzt ist label1.caption = '3'.
Dies ist der Rückgabewert. Meine Funktion SUMME gibt in diesem Fall einen Integerwert zurück. Ich könnte auch einen String oder jeden beliebigen anderen Variablentyp zurückgeben (integer, real, byte, boolean, string, tbitmap, tpoint, tform1, hicon, tbutton, ...):
Delphi-Quellcode:
function sayhallo(name:string):string;
begin
  result:='Hallo '+name+'!';
end;
Auf diese Funktion kannst du folgendermaßen zugreifen:
Delphi-Quellcode:
label1.caption:=sayhallo('ichbins');
//Label1.caption ist jetzt = 'Hallo ichbins!';
Der Typ der Variable die zurückgegeben wird ist der Rückgabetyp.
Die Parameter sind die Variablen die beim Aufruf in die Klammern geschrieben werden.
'Ichbins' ist im unteren Beispiel der einzige Parameter der Funktion, ein String der Rückgabewert.
Eine Funktion kann beliebig viele Parameter eines beliebigen/unterschiedlichen Typs haben.

Unter C(++) und jeder anderen mir beakannten Programmiersprache ist es genauso.

Bei C wird nun der Rückgabetyp vor den Funktionsnamen geschrieben.

Code:
int xyz
bedeutet dass die Funktion xyz einen Int(eger) Wert zurückgibt.

Bei C ist speziell, dass da void angibt, dass die Funktion keinen Rückgabewert hat, also eine Prozedur ist.

g-hun 13. Apr 2006 15:35

Re: Was sind Rückgabetypen???
 
Also ich habe das in moment so verstanden:


Beispiel:



Code:
...

int main()
{
  Punkte=BerechnePunkte();
  cout<<Punkte;
  return 0;
}

int BerechnePunkte()
{
  int Punkte;
  int Bonus=500;
  cin>>Punkte;
  Punkte+=Bonus;
  return Punkte;
}
Also stelle mir das so vor: (hpffentlich liege ich richtig)

Bei der Funktion BerechnePunkte Wird der Wert (von Punkte) an die Funktion halt weiter gegeben, so dass BerechnePunkte
den Wert von Punkte hat.
Bei der Main-Funktion wird halt der Wert (beispielweise 600, der ja von Punkte stammt) an Punkte zugewiesen.

Und somit wird beispielsweise 600 angezeigt.

So stelle ich mir das vor.
Theoretisch ist die Funktion wie eine Variable.

IST das richtig wie ich gedacht habe???

Flare 13. Apr 2006 16:10

Re: Was sind Rückgabetypen???
 
Also ich würde es anders erklären als du g-hun, aber wenn du bei deinem Beispiel als Punkte 100 eingibst und als Ergebnis 600 herausbekommst dann dürftest du es verstanden haben :wink:


Flare

g-hun 13. Apr 2006 16:30

Re: Was sind Rückgabetypen???
 
DANKE! JUNGS!

Hier kommen aber noch andere Fragen.(später)

Aber noch was bevor die Frage erledigt ist:

Wenn ich cout<<BerchnePunkte;
eingebe.
Dann wird 1 Ausgegeben.
Man muss es immer erst einer Variable zuweisen oder??
Und woran liegt es??

Tubos 13. Apr 2006 16:33

Re: Funktionen (Hab Probleme damit)
 
Du musst das Ergebnis keiner Variable zuweisen. Einfach so schreiben:
Code:
cout << BerechnePunkte();
Nicht auf die runden Klammern vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz