|
veteran
|
veteran
Joined: Mar 2003
|
Bin in C zwar nicht mehr so fitt, stimme Xan aber 100% zu.
2.) ist zwar syntaktisch korrekt, aber vermutlich semantisch falsch, da das Ergebnis nicht in den beiden Variablen (produkt und summe) zu sehen ist. 4.) einzig m�gliche L�sung die sowohl syntaktisch alsauch semantisch richtig ist.
Vorausgesetzt die Funktion soll �berhaupt das machen was uns durch die benennung der Variablen vorgegaukelt wird. (Macht aber ansonsten keinen Sinn.)
Alle anderen varianten gehen einfach nicht. (Mal davon abgesehen das evtl. automatisch von float nach int konvertier wird. <schauder>)
Das mit R�ckgabewert ignorieren wenn man ihn nicht braucht bin ich von Java auch gewohnt. Kann es mir gar nicht mehr anders vorstellen. bzw. weiss nicht mal mehr ob es bei anderen Programmiersprachen (Pascal?) erforderlich ist den R�ckgabewert einer Variablen zuzuweisen.
Last edited by Tutamun; 12/02/06 02:02 AM.
|
|
|
|
old hand
|
old hand
Joined: Mar 2003
|
Hier mal der Quelltext meines Versuchs (Konsolenanwendung):
void prodsum (int k1, int k2, float x, float y)
//int prodsum (float k1, float k2, float x, float y)
//float prodsum (float &k1, float &k2, float x, float y)
//int prodsum (float k1, float k2, float &x, float &y)
//void prodsum (float k1, float k2, int x, int y)
{
// return 0;
}
int main(int argc, char* argv[])
{
float produkt, summe;
produkt=float(0.815); summe=float(47.11);
prodsum (float (1,45), float(5.97), produkt, summe);
// return 0;
}
Einfach nur jeweils auskommentieren.
Die ganzen float(s), weil die Konstanten automatisch als double angenommen werden und sonst immer eine Warnung
kommt, wenn es zu float verk�rzt wird.
Die einzige Version, die wirklich nicht funktioniert, ist Nr. 3 (Hi Ragon, wie geht's?), der Rest w�rde laufen, aber z.T.
mit Warnungen wegen Datenverlust, eben dem Abschneiden der Nachkommastellen.
@Xan: Woher wei�t du, dass produkt und summe nur Ausgabeparamter sind, durch diese �bergabe k�nnen sie beides sein? (der Compiler meckert z.b. an, wenn sie nicht initialisiert sind - bei Delphi so sch�n einfach mit var, out und const)
Ich w�rde vom Sinn her rangehen, beim Aufruf der Funktion interessiert der R�ckgabewert also nicht, da nirgends zugewiesen. Von den beiden ohne Datenverlust m�glichen Varianten macht nur Nr. 4 Sinn, dort werden Zeiger �bergeben und erm�glichen damit die �nderung der Variablen.
Also zusammengefasst:
3.) v�llig unm�glich
1.), 5.) m�glich, aber sicher nicht erw�nschter Datenverlust durch Abschneiden der Nachkommastellen und auch keinerlei M�glichkeit zur Datenr�ckgabe - Funktion ist void, Varible sind Konstanten
2.) m�glich, aber keinerlei Ergebnisr�ckgabe: das Ergebnis der Funktion wird nicht ausgewertet und die Parameter werden als Konstanten �bergeben
es bleibt also nur Nr. 4
Passt auch recht gut zu meinen Erfahrungen, ich verwende h�ufig Win API-Funktionen, deren R�chgabewerte, die
meistens tats�chlich nur einen Fehlercode bedeuten, werte ich eher selten aus. Die Ergebnisse finden sich in den
Variablen, die ich beim Aufruf als Zeiger �bergeben habe.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Es handelt sich um reine ausgabeparameter, da sie nicht initialisiert wurden... was nat�rlich bl�d ist wegen der compiler warnungen...
Last edited by Tutamun; 12/02/06 02:04 AM.
|
|
|
|
old hand
|
old hand
Joined: Mar 2003
|
Wegen der Warnungen hatte ich ja die Zeile mit der Initialisierung eingef�gt, d�rfte aber keine Rolle spielen - aber wie gesagt Delphi mit const, out und var ist da viel besser.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Ich glaube, wir sind uns einig, dass Pascal die beste Programmiersprache ist <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />
Ich w�rde aber auch sagen, dass produkt und summe die Ausgabeparameter sind, weil es u.a. zum Funktionsnammen prod(ukt)sum(me) passen w�rde. Die Funktion macht halt nix anderes als die beiden Eingabeparameter (ersten beiden) zu summieren bzw. zu multiplizieren und dann jeweils das Ergebnis zur�ckzuliefen.
Was die Initialisierung betrifft: ich w�rde da wahrscheinlich die Werte 0 nehmen <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />
Const gibt es in C auch - nennt sich nur "static" <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />
Xanlosch's Home - Fortombla hortomosch !Kein Support via Foren-PM - postet mehr im Forum.
|
|
|
|
old hand
|
old hand
Joined: Mar 2003
|
Ich glaube, wir sind uns einig, dass Pascal die beste Programmiersprache ist <img src="/ubbthreads/images/graemlins/smile.gif" alt="" /> Na, das ist doch wenigsten etwas. Nat�rlich sind produkt und summe Ausgabeparameter (jedenfalls bei Nr. 4), ich meinte nur, dass sie auch Eingabeparameter sein k�nnen - da k�nnte halt noch etwas zwischen der Deklaration und dem Funktionsaufruf sein. Die Funktion macht halt nix anderes als die beiden Eingabeparameter (ersten beiden) zu summieren bzw. zu multiplizieren und dann jeweils das Ergebnis zur�ckzuliefen. Vom Namen w�rde ich nicht ausgehen. Die eigentliche Funktion ist nun einmal unbekannt. Machen kann sie letztlich alles, unabh�ngig vom Namen. Wenn es um eine solche Frage geht, w�rde ich als Steller auf jeden Fall versuchen durch den Namen zu verwirren. Also Funktion Otto w�rde als Ergebnis eben Gustav haben. Aber wir stimmen doch wenigstens so weit �berein: Xanlosch, Tutamun und Steffen sagen Rei, die Antwort ist Nr. 4Weitere Zustimmungen oder Ablehnungen bitte in getrennten Posts.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Nat�rlich sind produkt und summe Ausgabeparameter (jedenfalls bei Nr. 4), ich meinte nur, dass sie auch Eingabeparameter sein k�nnen - da k�nnte halt noch etwas zwischen der Deklaration und dem Funktionsaufruf sein. Was nicht da steht, existiert nicht - bin ich der Meinung. Vom Namen w�rde ich nicht ausgehen. Die eigentliche Funktion ist nun einmal unbekannt. Machen kann sie letztlich alles, unabh�ngig vom Namen. Wenn es um eine solche Frage geht, w�rde ich als Steller auf jeden Fall versuchen durch den Namen zu verwirren. Also Funktion Otto w�rde als Ergebnis eben Gustav haben. Da magst du recht haben. Nur gehe ich von mir aus und da hat der Funktionsname schon noch was mit der eigentlichen Funktionalit�t, die die Funktion ausf�hren soll, zu tun. Sonst k�nnte ich ja anfangen, die benutzten Funktionen einfach nur durchzunummerieren (funkt0001, funkt0002, ..., funkt9999) <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" /> Ich glaube nicht, dass dies hier der Sinn sein soll, jemanden zu verwirren, der sich gerade damit besch�ftigt bzw. es erlernt <img src="/ubbthreads/images/graemlins/think.gif" alt="" />
Xanlosch's Home - Fortombla hortomosch !Kein Support via Foren-PM - postet mehr im Forum.
|
|
|
|
old hand
|
old hand
Joined: Mar 2003
|
Da magst du recht haben. Nur gehe ich von mir aus und da hat der Funktionsname schon noch was mit der eigentlichen Funktionalit�t, die die Funktion ausf�hren soll, zu tun. Klar, je mehr ich programmiert habe, umso l�nger (und damit deutlicher) sind meine Bezeichner geworden. Wenn jemand in einem einfachen Fall aber nur testen will (z. B als Dozent), wie zugeh�rt und das ganze beachtet wurde, und dann mehr oder weniger leicht hinterh�ltige Fragen verwendet, empfinde ich das durchaus als legitim.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Da ich die genaueren Umst�nde f�r die Aufgabe nicht kenne (Ersteller, Ort des Geschehens), kann ich nichts dazu sagen. Es kommt aber gut hin, wenn ein Vorlesender so die Aufmerksamkeit seiner Zuh�rer testen will.
Xanlosch's Home - Fortombla hortomosch !Kein Support via Foren-PM - postet mehr im Forum.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Ups sorry, mit den Variablen produkt und summe soll nat�rlich eine Summe bzw. ein Prdoult der beiden ersten Werte gebildet werden. Ob sie dabei zur�ckgegeben werden oder nicht, ist aus der Aufgabenstellung heraus nicht ersichtlich.
Auch kann es weiterhin nur eine void Funktion sein. Der Compiler w�rde zwar auch mit einem return Wert nat�rlich mitspielen, es geht hier aber nur um die grunds�tzliche Theorie und da kommt eben nur eine void Funktion in Frage, egal wie gro�z�gig der Compiler ist.
Das ist �brigens eine Frage aus einer fr�heren Informatikklausur. In dieser Klausur kommt es wirklich nur auf die Theorie an und hat mit Programmieren ehrlich gesagt absolut gar nichts zu tun.
Die Namen werden in der Klausur extra verwirrend gew�hlt (obwohl es unser Prof ab der ersten Stunde ausredet). Beispiel gef�llig? Klasse nennt sich zickzack mit mehreren private und public Variablen in main: Variablen nennen sich zick und zack, die als Datentyp die Klasse zickzack haben zus�tzlich gibt es einen Pointer in der Klasse, der sich next nennt und auf zuck (Datentyp zuck ist zickzack) zeigt. Und dann soll das Programm sogar noch was machen und man soll sagen, welche Zeile einen Fehler verursachen w�rde (das ist ein Spa�, sage ich euch)
|
|
|
|
old hand
|
old hand
Joined: Mar 2003
|
Das ist �brigens eine Frage aus einer fr�heren Informatikklausur. Ist ja nett, dass du uns dies auch schon sagst und Nein, die beiden Funktione ohne R�ckgabe w�rden keinen Sinn machen, bei beiden k�me es zu zu einer Verf�lschung, da bei float->int automatisch Nachkommastellen abgeschnitten werden.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Rei, wenn es wirklich eine theoretische Abhandlung ist, dann muss es L�sung Nr. 6 sein. Alle anderen passen einfach nicht - ausser man macht freiwillig und offensichtlich Fehler bei der Konvertierung der Datentypen.
Obwohl, so ohne weiteres Ginge dies auch nicht, da es in C - meines Wissens nach - keine automatische Datentypkonvertierung gibt. Da aber die Compiler alle an dieser Stelle gro�z�gig sind, kann ich dies nicht mit Gewi�heit sagen.
Xanlosch's Home - Fortombla hortomosch !Kein Support via Foren-PM - postet mehr im Forum.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Rei, wenn es wirklich eine theoretische Abhandlung ist, dann muss es L�sung Nr. 6 sein. Hast du das jetzt ernst gemeint ?
When you find a big kettle of crazy, it's best not to stir it. --Dilbert cartoon
"Interplay.some zombiefied unlife thing going on there" - skavenhorde at RPGWatch
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
@Rei: Eine der Void Funktionen ist es nicht. Glaub mir oder schau in der L�sung nach. Und wenn die L�sung nicht die Nummer 4 ist, dann ist sie falsch. Punkt, aus, ende der Diskussion.
<kopf sch�ttel> <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />
ps. bei returntyp int den man nicht verwendet handelt es sich um keine gro�z�gigkeit von einem Compiler sondern um eine Grundeigenschaft der Sprache.
Auf die gro�z�gigkeit des Compilers muss man bei allen M�glichkeiten ausser 2 oder 4 vertrauen, und somit sind sie falsch.
Last edited by Tutamun; 12/02/06 10:26 PM.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Und du kannst ja schreiben das Nummer 2 oder 4 m�glich w�ren. Man aber nur bei 4 etwas mit dem Ergebnis der Berechnung anfangen kann. Und du dich deswegen f�r 4 entschieden hast.
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
... Auf die gro�z�gigkeit des Compilers muss man bei allen M�glichkeiten ausser 2 oder 4 vertrauen, und somit sind sie falsch. Allermindestens aber schlechter Programmierstil! <img src="/ubbthreads/images/graemlins/suspicion.gif" alt="" /> <img src="/ubbthreads/images/graemlins/wave.gif" alt="" />
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Da es aber um Theorie geht sind sie falsch, nicht? <img src="/ubbthreads/images/graemlins/winkwink.gif" alt="" />
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Okay, zumindestens sch�n zu wissen, da� auch ihr an dieser Aufgabe zu knabbern habt. Die Infoklausur habe ich �brigens bestanden *juhu*
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
Trotz unserer `L�sungen�!? <img src="/ubbthreads/images/graemlins/confused.gif" alt="" />
Na dann - herzlichen Gl�ckwunsch, Rei! <img src="/ubbthreads/images/graemlins/up.gif" alt="" /> <img src="/ubbthreads/images/graemlins/delight.gif" alt="" />
Ragon, der Magier
|
|
|
|
veteran
|
veteran
Joined: Mar 2003
|
@Alrik: Na klar ! Wenn alle gebotenen L�sungen nicht stimmen, wird ne neue hinzugef�gt !
@Ragon: Schlechter Programmierstil f�ngt da an, wo man eindeutige Bezeichnungen f�r Variablen und Funktionen f�r �berfl�ssig h�lt und alle �hnlich benennt. <img src="/ubbthreads/images/graemlins/biggrin.gif" alt="" />
@Rei: Gl�ckwunsch ! Du kannst uns ja mal die richtige L�sung verraten, sobald du diese weisst !
Xanlosch's Home - Fortombla hortomosch !Kein Support via Foren-PM - postet mehr im Forum.
|
|
|
|
|