Comilieren in C++

Hallo
Ich habe einige Fragen zum Compilieren in C++.
Das hier sind nicht meine Hausaufgaben, sondern das sind alte Klausuraufgaben, zu denen es keine

Lösung gibt, dehalb poste ich das hier rein.

Aufg1)Sie haben einen Algorithmus zur Berechnung des Abriebs von Zahnrädern entwickelt und in der

Datei zahnrad.C mit der Headerdatei zahnrad.h implementiert. Zum Testen wollen Sie diesen

Algorithmus der Firma X zur Verfügung stellen ohne dabei Implementierundsdetails offen zu legen.
Welche dieser Aussagen sind korrekt:
a)Die Firma benötigt zum Testen die Datei zahnrad.C
b)Die Datei zahnrad.h darf nicht an die Firma X weitergegeben werden.
c)Die Firma X benötigt den Algorithmus mindestens in Form einer Biblitheksdatei

2)Sie haben ein Prgramm flugzeug.C geschrieben, das Funktionen aus einer Funktionsbibliothek cfl.o

zur Strömungsmechanik benutzt.
Welche Aussagen sind richtig=
a)Die Schnittstelle der Bibliotheksdatei cfl.o wird in einer separaten Headerdatei beschrieben.
b)Zum Übersetzen von flugzeug.C in ein audführbares Programm müssen die Namen aller verwendeten

Bibliotheken angegeben werden.
c) Die C++Quelldatei cfl.C muss die Headerdatei von flugzeug.C mit #include „flugzeug.h“

einbinden.

Meine Antworten, habe aber keine Ahnung:
1a) Firma X braucht nur die ausführbare Datei oder in Form einer Bibliothek
1b)?
1c)Richtig?

2a)Falsch, oder?
2b)Richtig?
2c)Umgekehrt: in flugzeug.C muss mit #inlcude"cfl.h" die Headerdatei cdfl.h eingebunden werden.

Vielen Dank für Antworten

Gruß
Martin

Meine Antworten, habe aber keine Ahnung:
1a) Firma X braucht nur die ausführbare Datei oder in Form
einer Bibliothek
1b)?
1c)Richtig?

Richtig, die Firma soll nur die Funktionen in der Bibliothek (.LIB, .DLL, …) verwenden können, aber nicht den Quellcode (.C, …) bekommen. Die Firma sollte allerdings auch die .H-Datei bekommen, oder zumindest die Schnittstellen kennen, sonst kann sie die Funktionen nicht verwenden. Also ist 1b falsch.

2a)Falsch, oder?

Wäre schön wenn die Schnittstellen der Biblithek cfl.o bekannt wäre, also sollte es auch eine cfl.h geben.

2b)Richtig?

Puh, keine Ahnung wie das nun gemeint ist. Der Linker braucht natürlich die Biblitheken/Objekte zum Binden, allerdings müssen die Dateien nicht speziell angegeben werden so lange sie im Bibliotheks-Pfad liegen (oder bin ich schon zu VisualStudio verseucht).

2c)Umgekehrt: in flugzeug.C muss mit #inlcude"cfl.h" die
Headerdatei cdfl.h eingebunden werden.

Jup.

Hier sind noch zwei Aufgaben, bei 1 hab ich keine Ahnung was gmeint ist, bei 2 bin ich mit unsicher.

Vielen Dank für deine Antwort Kim, das hat mir weitergeholfen.

Zusammen mit internatialen Partnern schreiben Soe ein Programm in C++.
Sie haben sich auf eine englischsprachige Doku verständigt und suchen einen sprechenden Bezeichner für eine Variable.
Welches sind korrekte Bezeichner in C++
1)
a)todo
b)toDo
c)2do
d)do
e)do2
f)doIt

a)awhile
b)aWhile
c)a while
d)while
e)while2
f)2while

Sie haben einen korrekten Algorithmus enworfen.
Welche Aussagen sind richtig:
a)Die vorbedingung muss nicht geprüft werden,weil der Algorithmus korrekt ist.
b)Die Nachbedingung muss nicht geprüft werden,weil der Algorithmus korrekt ist.
c)Vor- und Nachbedingung müssen nur überprüft werden, wenn bei der Interpretation des Algorithmus ein Fehler auftritt.

Meine Antwort:
2)Alle drei sind falsch Vor-und Nachbed. müssen immer überprüft werden

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Martin,

  1. Schmeiss doch das alten Zitat bitte raus, es bringt hier nichts deine erste Frage nochmals zu wiederholen. Das kostet nur Kapazität und ganz genial wird’s wenn man dann seinene eigenene ANtwort ganz am Ende anfügt :wink:

Vielen Dank für deine Antwort Kim, das hat mir weitergeholfen.

Zusammen mit internatialen Partnern schreiben Soe ein Programm
in C++.
Sie haben sich auf eine englischsprachige Doku verständigt und
suchen einen sprechenden Bezeichner für eine Variable.

Ist eine schlechte Übersetzung.
Gemeint ist eine in C gültiger Variablen-Bezeichner, welcher Aussagekräftig ist.
Also ToDO für etwas was hier noch getan werden muss.
Also du schreibst:

void f(void)
{
 int ToDo;
}

Der Compiler mosert dann, weil „ToDo“ nicht verwendet wird und du weisst dann, dass hier noch der Code fehlt…

Welches sind korrekte Bezeichner in C++
1)
a)todo
b)toDo
c)2do
d)do
e)do2
f)doIt

a)awhile
b)aWhile
c)a while
d)while
e)while2
f)2while

Also es geht rein darum, welche dieser Variablen-Namen in C gültig sind :wink:

Sie haben einen korrekten Algorithmus enworfen.
Welche Aussagen sind richtig:
a)Die vorbedingung muss nicht geprüft werden,weil der
Algorithmus korrekt ist.
b)Die Nachbedingung muss nicht geprüft werden,weil der
Algorithmus korrekt ist.
c)Vor- und Nachbedingung müssen nur überprüft werden, wenn bei
der Interpretation des Algorithmus ein Fehler auftritt.

Meine Antwort:
2)Alle drei sind falsch Vor-und Nachbed. müssen immer
überprüft werden

Also aus der Praxis giebt es keine eindeutige Antwort auf diese Frage !!

Wenn der Algorithmus auf alle möglichen Eingaben richtige Resultate liefert, bringt a) nichts.
Weiter kommt es auf die Umgebung an: Ist sichergestellt, dass beim AUfruf nur Werte übergeben, welche gültige Resultate liefern ist a) auch überflüssig.
Andernfalls ist a) nötig !

Kommt auch auf den Algotihmus an. Wenn z.B. Überläufe auftreten können, muss das Ergebnis überprüft werden, das kann allerdings schon durch a) geschehen sein wodurch b) überflüssig werden kann.

c) ist nur beim Debuggen oder zur Fehleranalyse zur Laufzeit angebracht. Weiterhin stellt sich die Frage, wie der Fehler erkannt wurde ??

Weiterhin kommt es sehr darauf an, was mit Algorithmus gemeint ist. Bei einer reinen Berechnung, kann meist durch eingrenzen der Eintrittsparameter überprüft werden ob z.B. der Zahlenenbereich überschritten wird. z.B. eine Fakultäts-Funktion ist da sehr einfach einzugrenzen.
Sind aber z.B. irgendwelche Peripherie-Geräte im Spiel, kann jederzeit ein Fehler auftreten, welcher nichts mit den Eingangsparametern zu tun hat (z.B. kein Papier mehr im Drucker oder Festplatte voll).

MfG Peter(TOO)