Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Rückgabe eines Wertes bei einer Funktion!!!! (http://www.informatikerboard.de/board/thread.php?threadid=685)


Geschrieben von Canadierprincess am 14.04.2010 um 15:36:

  Rückgabe eines Wertes bei einer Funktion!!!!

Meine Frage:
Hallo!

Ich habe in der Schule (12. Klasse) Informatik. Morgen schreibe ich Klausur, ich verstehe aber noch nicht, was damit gemeint ist ,

: Funktionen geben den Wert zurück?

Das macht doch eine Prozedur auch, z.B. bei einer Werteübergabe oder auch Variablenübergabe?
Das ist doch der Hauptunterschied zwischen Prozeduren und Funktionen!

Wäre nett, wenn mir jemand helfen könnte!

Canadierprincess

Meine Ideen:
Ich denke, dass damit gemeint ist, dass die aktuellen Paramter bei dem Aufruf der Funktion im Hauptprogramm an die formalen Parameter in der Prozedur zugewiesen werden?

Stimmt das?, sicherlich nicht! smile smile



Geschrieben von David_pb am 18.04.2010 um 15:02:

 

Hi,

sorry ist zwar schon zu spät aber trotzdem! Augenzwinkern

In einigen Sprachen (z.B. Pascal) gibts eine strikte trennung zwischen den Begriffen Funktion und Prozedur. Karakteristisch für Funktionen ist eben das sie einen Wert zurückgeben, was Prozeduren eben nicht tun.

Eine Prozedur ist quasi ein in sich abgeschlossenes Stück Code das ausgeführt wird ohne das ein direktes Resultat erwartet wird:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure mywrite(xyz : string)
{
  writeln('xyz = ', xyz);
}

function add(a : integer, b : integer) : integer
{
  add := a + b;
}

program test;

var
  x : integer;

begin
  mywrite('test'); 
  x := add(32, 10);
  writeln( 'ergebnis = ', x );
end.


(Falls Fehler im Code sein sollten, ich hab schon ewig kein Pascal mehr gecoded, also bitte etwas Nachsicht! Augenzwinkern )

Wie du siehst liefert add dir einen Wert zurück mit dem du weiter arbeiten kannst.

Das gleiche Konzept lässt sich auf C/C++ anwenden. Da haben "Prozeduren" einfach den Rückgabetyp void:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
void mywrite(const char* xyz)
{
  printf( "xyz = %s\n", xyz);
}

int add(int a, int b)
{
  return a+b;
}

int main()
{
  mywrite("test");
  int x = add(32, 10);
  printf( "ergebnis = %d\n", x);
}



Geschrieben von ed209 am 18.04.2010 um 15:40:

 

Zitat:
Original von David_pb
Falls Fehler im Code sein sollten, ich hab schon ewig kein Pascal mehr gecoded, also bitte etwas Nachsicht! Augenzwinkern

Ja die guten alten 90er smile

Ich wuerde behaupten die geschweiften Klammern müssen durch begin und end; ersetzt werden und program test; darf weiter nach vorne.
Aber ich bin mir auch nicht mehr sicher mit der Syntax.

Gruß,
ED


Forensoftware: Burning Board, entwickelt von WoltLab GmbH