Autor Beitrag
applecoast
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 14:56 
Hallo! 8)
Ich bin noch relativ neu hier (war schon mal angemeldet, habe aber meinen damaligen nick vergessen)....
ich habe mal eine frage, und zwar schreiben wir morgen eine arbeit über Delphi.
Soweit komm ich ja eigentlich mit, nur sind mir die Unterschiede zwischen den Prozeduren und den Funktionen noch nicht so ganz klar.
Ich habe mir jetzt überlegt:

Prozedur: Methode des Formulars

Funktionen: Parameter sind Eingabeparamenter, es gibt einen Ausgabewert, Funktionen sind Therme, sie sind kombinierbar und verschachtelbar mit anderen funktion, und sie sind funktionen für objekte

Stimmt das so? Welche Unterschiede gibt es noch?
Wäre nett, wenn mir jemand helfen könnte....
Liebe Grüße, Ann-Kathrin :wink:


Moderiert von user profile iconUGrohne: Topic aus Sonstiges (Delphi) verschoben am Mi 30.05.2007 um 16:02
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 30.05.07 15:04 
Hallo!

Mit dem Formular hat das nix zu tun. Sowohl Prozeduren als auch Funktionen gibt es mit und ohne Formular. Eigentlich nennt man Prozeduren und Funktionen, die zu einer Klasse gehören (z.B. TForm1), sowieso Methoden.

Prozeduren und Funktionen unterscheiden sich eigentlich nur dahingehend, dass Funktionen einen Rückgabewert besitzen. Sonst ist's eigentlich dasselbe.

Grüße
Christian

P.S.: www.christian-stelzm...zedurenundfunktionen

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 30.05.07 15:04 
Es gibt eigentlich nur einen Unterschied: Funktionen haben einen Rückgabewert, Prozeduren haben keine, das wars.

Was meinst Du mit verschachtelbar? Gib mal bitte ein Beispiel ;)

Zu Deinem alten Nick: Wenn Du die EMail-Adresse hast, können wir den Account vielleicht ausfindig machen.
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mi 30.05.07 15:07 
zu den Grundlagen von Prozeduren und Funktionen siehe auch :Unterprogramme: Prozeduren und Funktionen
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 15:15 
Wow, das ging aber schnell^^
was genau meint ihr mit Rückgabewert?

Zitat:
Was meinst Du mit verschachtelbar?

in der schule haben wir das nicht gemacht, kann also leider kein konkretes Beispiel geben, bei mir im Buch steht aber: Funktionen können miteinander kombiniert und ineinander geschachtelt werden.

Mhh gibt es da wirklich nur den einen Unterschied? Mein Lehrer hat gesagt, dass wir für die Arbeit die Unterschiede von Prozeduren und Funktionen können müssen...nur leider weiß keiner aus unserem Kurs, welche Unterschiede es da groß gibt...Gibt es vielleicht in der Anwendung noch unterschiede? Oder ist mit Unterschied evt. die Parameterliste und der Ergebnistyp gemeint?

Liebe Grüße, Ann-Kathrin :D
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 30.05.07 15:18 
user profile iconapplecoast hat folgendes geschrieben:
Oder ist mit Unterschied evt. die Parameterliste und der Ergebnistyp gemeint?
Bei der Parameterliste gibt es keinen Unterschied zwischen Prozeduren und Funktionen. Und was den Ergebnistyp angeht: Prozeduren haben einen und Funktionen nicht.

zum Rückgabewert: Folge einfach mal den Links, die Dir gegeben wurden ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 30.05.07 15:23 
Ich glaube, ich weiß was Du mit Verschachteln meinst: Das Übergeben eines Funktionsrückgabewertes an eine neue Funktion, z.B.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var test:string;
begin
  test := IntToStr(StrToInt(Edit1.Text)));
end;

Hier habe ich die beiden Funktionen IntToStr und StrToInt verschachtelt, d.h. der Rückgabewert von StrToInt wird direkt der Funktion IntToStr als Parameter übergeben. Das kannst Du mit Prozeduren natürlich nicht machen, weil sie keinen Wert direkt zurückgeben.

Aber Du solltest Dir wirklich die Links anschauen, da steht auch einiges drin. Bei den Parametern gibt es, wie gesagt, keine Unterschiede, da kommt es darauf an, wie die Parameter übergeben werden. Aber das dürfte jetzt zu tief gehen.


Zuletzt bearbeitet von UGrohne am Mi 30.05.07 15:34, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 30.05.07 15:26 
user profile iconUGrohne hat folgendes geschrieben:
Das kannst Du mit Funktionen natürlich nicht machen, weil sie keinen Wert direkt zurückgeben.
Du meinst Prozeduren.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 15:27 
ich bin grade am lesen der links^^ so könnte das bei uns im buch auch mal erklärt werden :? das versteht man wenigstens....

Zitat:
Und was den Ergebnistyp angeht: Prozeduren haben einen und Funktionen nicht.

Meinen wir bei den Ergebnistypen vll unterschiedliche sachen, denn die funktion hat doch einen, oder??
die allgemeine Form einer Funktion ist doch:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function <Funktionsname>(<Parameterliste>): <Ergebnistyp>;
 begin
  ...
  <Funktionsname> := <Ergebnisterm>;
  ...
 end;

liebe grüße, ann-kathrin
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 30.05.07 15:32 
user profile iconChristian S. hat folgendes geschrieben:
user profile iconUGrohne hat folgendes geschrieben:
Das kannst Du mit Funktionen natürlich nicht machen, weil sie keinen Wert direkt zurückgeben.
Du meinst Prozeduren.

Genau, korrigier das gleich.



user profile iconapplecoast hat folgendes geschrieben:
Zitat:
Und was den Ergebnistyp angeht: Prozeduren haben einen und Funktionen nicht.

Meinen wir bei den Ergebnistypen vll unterschiedliche sachen, denn die funktion hat doch einen, oder??
die allgemeine Form einer Funktion ist doch:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function <Funktionsname>(<Parameterliste>): <Ergebnistyp>;
 begin
  ...
  <Funktionsname> := <Ergebnisterm>;
  ...
 end;

liebe grüße, ann-kathrin

Ja, ich glaube, da gings ihm wie mir: Einfach zwei Sachen vertauscht ;)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 30.05.07 15:36 
user profile iconapplecoast hat folgendes geschrieben:
Meinen wir bei den Ergebnistypen vll unterschiedliche sachen, denn die funktion hat doch einen, oder??

Ich hab das einfach vertauscht. Scheint heute ansteckend zu sein. ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 17:39 
Also ich hab jetzt noch mal in meinem Buch gestöbert und doch noch was dazu gefunden:

Zitat:
Das Beispiel macht die Unterschiede zwischen Funktionen und Prozeduren bzw. Funktions- und Prozedurmethoden deutlich.
1. Prozeduren entsprechen selbständigen Anweisungen, Funktionen entsprechen Termen, Prozedurmethoden entsprechen Aufträgen, die das angesprochene Objekt selbstständig erledigt, Funktionsmethoden eptsprechen Anfragen an ein Objekt.

2. Funktionen und Funktionsmethoden liefern genau einen Ausgabewert, Prozeduren und Prozedurmethoden nur, wenn sie über Ausgabeparameter definiert werden.

3. Die Ausgabewerte von Funktionen und Funktionsmethoden werden über den Funktionsnamen zurückgegeben, die Ausgabewerte von Prozeduren und Prozedurmethoden über Ausgabeparameter (=Referenzparameter) in der Parameterliste.


stimmt das, was im buch steht???

liebe grüße, Ann-Kathrin :)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 30.05.07 17:48 
Das ist schon richtig, aber im Wettbewerb "Wie erkläre ich möglichst unverständlich" bekommt das bei mir den ersten Preis. :?

Man sollte jedoch beachten, dass man auch bei Funktionen und "Funktionsmethoden" Ausgabeparameter verwenden kann und nicht nur, wie es hier angedeutet wird, bei Prozeduren und "Prozedurmethoden".

Zu den Ausgabeparameter findest Du in dem Link von mir was unter dem Stichwort "call by reference".

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 17:57 
unser ganzes buch is so aufgebaut :roll: ....deswegen raffts auch keiner mehr :'( eigentlich macht mir informatik spaß, aber die projekte (die an sich nicht schwer sind) bekomm ich einfach nicht mehr hin..... :(
Zitat:
Zu den Ausgabeparameter findest Du in dem Link von mir was unter dem Stichwort "call by reference".

Irgendwie bin ich zu blöd, das zu finden...

oh man, ich schreib morgen die arbeit und raff die hälfte net... :(

Liebe Grüße, Ann-Kathrin

Edit: Kann mir vielleicht jemand das , was bei uns im Buch steht übersetzten? Wäre echt toal lieb, weil ich raff da nur die Hälfte...
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 30.05.07 19:08 
Zu Punkt Zwei & Drei:

Proceduren können nur über Referenzen Werte zurückgeben (Call By Reference):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure volumen(a,b,c: real; var v: real);
begin
 v := a*b*c;
end;

// aufruf mit
 volumen(1,2,3,d);
//sofern, 'd' eine globale variable vom typ real ist.

V ist nichts anderes als ein Zeiger auf "d" in unseren Beispiel.
D.h. nicht der Wert des V's wird verändert, sondern der Wert von "d".
V "zeigt" auf d.

Selbes Beispiel nur als Funktion:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function volumen(a,b,c: real): real;  // <= Rückgabe-Typ
begin
 volumen := a*b*c;
end;

//aufruf mit
 d := volumen(1,2,3);
//sofern, 'd' eine globale variable vom typ real ist.

Wie du an dem Beispiel gut erkennen kannst, wird die Funktion mit ihrem Namen aufgerufen und gibt einen Wert zurück. In diesem Falle das Volumen.


Hoffe, dass dir das weiter hilft.
grüße


Zuletzt bearbeitet von Marc. am Mi 30.05.07 19:42, insgesamt 1-mal bearbeitet
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 19:35 
so das hat mir bis jetzt schon ganz schön weiter geholfen! ihr seit echt total nett!!!
Ich habe allerdings noch eine Frage und zwar ob das stimmt...
Funktionen werden ohne Anweisungen aufgerufen, prozeduren jedoch mit Anweisungen.
Stimmt daS?

Liebe Grüße, Ann-Kathrin
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 30.05.07 19:41 
Was meinst du mit Anweisungen? Wenn du Parameter meinst, nein.

_________________
Markus Kinzler.
applecoast Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 30.05.07 19:46 
Zitat:
Was meinst du mit Anweisungen?

also damit meine ich:
Prozeduren unterscheiden sich von Funktionen, die in Ausdrücken (und nicht in Form einer eigenen Anweisung) aufgerufen werden...
mhh stimmt das oder ist das jetzt falsch?
lg, Ann-Kathrin
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mi 30.05.07 19:48 
Es handelt sich hier um eine komsiche leicht mißverständliche Erklärung.

_________________
Markus Kinzler.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 30.05.07 19:51 
Vllt wird sowas gemeint? (Im vorherigen Beispiel war Volumen eine Funktion):
ausblenden Delphi-Quelltext
1:
foo := power(Volumen(1,2,3),2);					

Also eine ineinander Schachtelung von Funktionen.
Eine Prozedur könnte ich ja nicht in "power" aufrufen. :roll: Sonst kp.

Aber irgendwie glaube ich nicht, dass das gemeint war.... :?