PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie ist das eindlich mit dem Funktion(en) ?



localhost
17-08-2005, 09:01
Hallo
Ich hab in jeamdn buch bis jetzt immer die Funktion gesehen obs jetzt php oder c++ oder sonst was war.
Aber ich hab noch nie eine geschriebn oder verwendet.
Weil ich nicht weis wie das geht weil da immer nur so beispiele mt a b c waren die ich nicht verstanden hab für was sind die den gut bis jetzt kamm ich immer ohne aus aber die sind ja bestimmbt nicht um sonst da.

SeeksTheMoon
17-08-2005, 09:45
Funktionen brauchst Du um Deinen Code übersichtlicher, kürzer und wiederverwendbarer zu halten.
Wenn Du ständig wiederkehrende Operationen in Deinem Code hast, dann ist das schon ein Grund daraus eine Funktion zu machen und nicht den gleichen Code immer wieder aufzuschreiben.
Das hat auch den Vorteil, dass Du Fehler oder Verbesserungen nur an einer einzigen Stelle vornehmen kannst, nämlich in der Funktion.
Außerdem kannst Du Deine Funktionen in eine Bibliothek kopieren und kannst diese auch in anderen Projekten benutzen oder weitergeben.

Ich weiß nicht was Du für ein schlechtes Buch gelesen hast, Funktionen sind normalerweise einfach zu erklären.

Ich mach ein Beispiel, das sich vielleicht leichter verstehen lässt. Aus einer Textdatei werden IP-Adressen ausgelesen und diese Zeichenketten werden dann in die Klasse IP umgewandelt.
Ich schreibe hier kein korrektes C++ hin, es soll eher um das Verständnis gehen.



//die Klasse in der die IP-Adressen in der Form XXX.XXX.XXX.XXX gespeichert werden.
class IP{
public:
short teil1;
short teil2;
short teil3;
short teil4;
};

// diese Funktion wandelt aus einem String unsere IP-Adresse
IP stringToIP(string ip);

int main() {
FILE* datei;
vector<IP> ipfeld;
string dateizeile;

open(datei, "ipadressen.txt");

while(readline(datei, zeile)) {
ipfeld.add(stringToIP(zeile));
}

//... tu irgendwas mit den IPs damit das Programm einen Sinn bekommt =)

close(datei);
}

IP stringToIP(string ip) {
IP ip_objekt;
//splitte "string ip" bei den Punkten der Adresse
//schreibe die Splits in teil1-4 des Objekts
return ip_objekt;
}

so, jetzt haste gesehen wie man eine Funktion benutzt, die etwas praktisches macht.
Mir ist jetzt kein Beispiel eingefallen bei dem man eine Funktion mehrfach verwendet, aber dass man die Funktion beliebig oft aufrufen kann, ist ja wohl klar :D

quinte17
17-08-2005, 10:10
wo man eine funktion mehrfach verwenden kann :D
immer da wo du sie aufrufst wird sie auch verwendet ;)

wenn wir mal php ansehen:
dort machst du ja auch recht viel über funktionen:
printf echo mysql_query....

dies sind auch nur funktionen, welche zwar nicht von dir geschrieben wurden, die du aber verwenden kannst wenn du sie brauchst. wenn du nun eine funktion hast, die du brauchst, die es aber nicht gibt, dann ist es an dir diese zu schreiben.

hoffe noch ein wenig klarheit reingebracht zu haben :D
greetz

localhost
17-08-2005, 10:23
sorry aber hab ich nichtverstanden also die anwendung

aber aufrufen tuht man die doch mit return ip_objekt; wobei ip_objekt der funktionsname ist oder?

anda_skoa
17-08-2005, 10:55
Nein, der Aufruf ist in der while Schleife.

Das return ist das Ende der Funktion, dort kehrt sie zurück.

Übrbigens hast du bei jedem noch so minimalen C oder C++ Programm immer schon Funktionen verwendet und geschrieben, nämlich die Funktion
int main(int, char**)

Ciao,
_

SeeksTheMoon
17-08-2005, 12:53
ok, mal ein einfacheres und umfangreicheres Beispiel, das Du auch ausführen kannst:


#include <iostream>
using namespace std;

//Funktion addiert zwei Zahlen und liefert das Ergebnis zurück
int addiere(int zahl1, int zahl2) {
return zahl1 + zahl2;
}

int main() {
//normaler Aufruf der Funktion, ergibt 11 (was wir aber nicht benutzen):
addiere(5,6);
//Funktionen lassen sich schachteln:
addiere(addiere(5,2),7);
//hier wird zuerst das innere addiere() aufgerufen, das 5+2 = 7 liefert
// da steht also nach der inneren Auswertung addiere(7,7), was dann 14 liefert.

//jetzt lassen wir ihn mal mit Variablen rechnen:
int wert = 2;
int ergebnis;
ergebnis = addiere(wert, wert-10);
//wir wollen sehen was das Ergebnis ist
cout<<"Ergebnis war: "<<ergebnis<<endl;

//und jetzt spielen wir damit ein bissel in einer Schleife rum:
for(wert=0;wert<10;wert++)
cout<<addiere(wert, wert+1)<<endl;
}