13 schwere Kurzfragen
-
zu 5) Ein Objekt ist eine Instanz einer Klasse !
zu 7) Kapselung bedeutet das Verbergen der Eigenschaften (Member-Variablen) einer Klasse durch z.B. dem Spezifizierer "private". Der Zugriff auf die Eigenschaften sollte nur über "public"-Methoden erdolgen. Zugriffs-Spezifizierer: private, protected, public.
zu
i++ : i wird nach dem Abarbeiten des Ausdrucks um 1 erhöht. ++i : i wird VOR dem Abarbeiten des Ausdrucks um 1 erhöht.
zu 11) wenn A ein "Freund" der Klasse B ist
zu 12) Der Konstruktor einer Klasse wird bei der Erzeugung eines Objekts dieser Klasse aufgerufen und soll der Initialisierung dienen. Der Destruktor wird bei der "Zerstörung" des Objektes aufgerufen und könnte evtl. dynamisch zugewiesenen Speicher wird frei geben...
-
-
Wieviel Speicherplatz belegt ein Zeiger bei einem 32-Bit breiten Adressbus?
mindestens 32 bit. üblich sind genau 32 bit für datenzeiger. üblich sind 8 bit pro char. sicher ist sizeof(char)==1. üblich ist also sizeof(void*)==4. funktionszeiger auf globale funktionen sind normalerweise genausolang. methodenzeiger auf nicht-static-methoden sind doppelt so lang oder dreimal so lang. solche auf static methoden werden ebhandelt wie zeiger auf globale funktionen.
edit: nee, kann nen 16-bit-compiler auf meinem 32-bit-prozessor benutzen. also kann der void* größer oder kleiner als 32 bit sein. -
Welche Dezimalzahl wird durch die hexzahl 0x1A2F dargestellt?
vermutlich 6703. -
Was versteht man unter einem rekursivem Algorithmus? Nennen SIe ein Beispiel.
einer, der sich selber aufruft. quicksort. -
Nach welchen Kriterien werden Algorithmen bezüglich ihrer Leistungsfähigkeit beurteilt?
meist nur nach zeitverbrauch, gelegentlich zusätzlich nach speicherverbrauch. selten nach was beliebig anderem, zum beispiel, cachelokalität, skalierbarkeit, parallelisierbarkeit, verteilbarkeit, robustheit, stabilität, einfachheit, codekürze. -
Unterschied zwischen Klassen und Objekten?
bei den leuten im umfeld des software-engeneerings zum teil keiner. das wort objekt steht je nach lehrbuch für klasse oder für instanz. -
Das 5bit des Integerwertes wPort soll auf den Wert der anderen Bits zu verändern. Schrieben Sie den c-Code
syntax error. -
Was versteht man unter Kapselung? Welche Zugriffspezfizierer gibt es in C++?
sachen vor zugriff schützen. private, protected, public. -
Wo liegt der unterschied zwischen i++ und ++i?
normalerweise keiner, weil man die dinger nicht auswertet. wertet man sie aus, sind sie wie (tmp=i,i=i+1,tmp) bzw (i=i+1,i). -
Beschreiben SIe drei Möglichkeiten Ergebniswerte einer Funktion an das aufrufende Programm zurückzugeben. Je ein Beisp.
rückgabewert, globale variable, zeigervariable, referenzvariabe, datei, benutzer,...
nur ein beispiel (benutzer):
void f(){
cout<<"der wert ist 5";
}
int main(){
f();
int wert;
cout<<"wie war der wert nochmal? ";
cin>>wert;
} -
Was versteht man unter "Lokalitätsprinzip"?
alles soll man so lokal halten wie möglich? ka. -
Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
friend. zugriffsfunktionen. reinterpret_cast auf klasse mit gleichem speicherlayout. -
Welche Aufgabe hat ein Konstruktor, welche ein Destruktor einer Klasse?
später zunehmend ressourcen zu allokieren/deallokieren. jetzt bauen und zerstören eines objekts. -
Was versteht man unter kooperativem Multitasking?
wenn jeder task mit yield() oder sleep() den prozessor freiwillig loslassen muß, damit alles klappt.
-
-
volkard schrieb:
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
[...] reinterpret_cast auf klasse mit gleichem speicherlayout.

aber die 9) gibt extrapunkte und einen smiley
:xmas1:
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
-
Neuling005 schrieb:
Hallo, habe ein paar Fragen, vielleicht kann mir hier geholfen werden....?!
Ich versuch's mal
- Wieviel Speicherplatz belegt ein Zeiger bei einem 32-Bit breiten Adressbus?
sollte 32 Bit (=4 Byte) sein, aber konsultiere lieber deinen Compiler deswegen

- Welche Dezimalzahl wird durch die hexzahl 0x1A2F dargestellt?
Umrechnen dürfte nicht so schwer sein - zur Not fragst du den Windows-Rechner.
- Was versteht man unter einem rekursivem Algorithmus? Nennen SIe ein Beispiel.
Ein Algorithmus, der sich für Teillösungen wieder selber aufruft, z.B. QuickSort oder die Türme von Hanoi (letzteres ist schon fast der Klassiker).
- Nach welchen Kriterien werden Algorithmen bezüglich ihrer Leistungsfähigkeit beurteilt?
Das hängt wohl vom anwendungsfall ab: Laufzeitverhalten, Speicherbedarf, Skalierbarkeit,...
- Unterschied zwischen Klassen und Objekten?
Klasse = Datentyp (z.B. "Auto"), Objekt = konkrete Instanz eines Typs (z.B. "mein Auto")
- Das 5bit des Integerwertes wPort soll auf den Wert der anderen Bits zu verändern. Schrieben Sie den c-Code
Viel Spaß dabei

- Was versteht man unter Kapselung? Welche Zugriffspezfizierer gibt es in C++?
Kapselung = Zugriffsschutz (wer darf auf meine Daten zugreifen) - in C++ gibt es private (nur für mich), protected (für mich und meine Nachkommen) und public (für jeden).
- Wo liegt der unterschied zwischen i++ und ++i?
Bei eingebauten Typen im Rückgabewert - bei deinen eigenen Klassen kann beides eine eigene Bedeutung bekommen.
- Beschreiben SIe drei Möglichkeiten Ergebniswerte einer Funktion an das aufrufende Programm zurückzugeben. Je ein Beisp.
Rückgabewert (int f(){return 4711;}), Pointer (void f(int*r) {*r=4711;}), Referenz (void f(int&r){r=4711;}).
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
friend, indirekt über öffentliche Methoden oder reinterpret_cast<> fällt mir auf Anhieb ein.
- Welche Aufgabe hat ein Konstruktor, welche ein Destruktor einer Klasse?
Konstruktor = Objekt ordentlich initialisieren, Destruktor = Objekt ordentlich vernichten (Betonung liegt auf "ordentlich" ;))
zu 6) wPort[4] = 1;
Ne, das kann so nicht funktionieren - du benötigst schon Bit-Operatoren (&,|,^,~) dafür.
zu 12) Konstruktor erzeugt eine Klasse, bevor mit ihr gearbeitet wird
destruktor zerstört sie wieder, wenn sie nicht mehr gebraucht wird, wird keines von beidem eingesetzt, gilt die klasse immer als bestehend und benötigt speicherplatz, richtig ???Konstruktor und Destruktor werden für jedes Objekt eingesetzt (OK, der Destruktor nicht für Objekte, die in ein Speicherleck gefallen sind).
-
Klingt ja wie ne schul arbeit :>
-
wo sind die türme von hanoi rekursiv?
-
verschiebe(n,von,nach,über): verschiebe(n-1,von,über,nach) setze_stein(von,nach) verschiebe(n-1,über,nach,von)Ist dir das nicht rekursiv genug?
-
die Türmchen gibts in beiden Varianten, rekursiv und iterativ
-
CStoll schrieb:
verschiebe(n,von,nach,über): verschiebe(n-1,von,über,nach) setze_stein(von,nach) verschiebe(n-1,über,nach,von)Ist dir das nicht rekursiv genug?
also gibt es einen algorithmus, der die türme von hanoi löst und der rekursiv ist. ich finde das rätsel leichter iterativ lösbar. sind deshalb die türme von hanoi rekursiv?
-
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)
-
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)//zielRichtung ist die richtung vom startturm zum zielturm if(istUngeradeGerade(anzahlDerTürme)) richtung:=zielRichtung else richtung:=dieAndereRichtung(zielRichtung) zieh die kleine scheibe zykisch nach richtung solange nicht fertig zieh den einzig möglichen zug, der nicht die kleine scheibe benutzt zieh den kleinsten zykisch nach richtunghab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
edit: zum testen http://www.mazeworks.com/hanoi/index.htm
-
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)auch wenn ich in der problemstellung eine rekursive definition benutze?
-
volkard schrieb:
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)auch wenn ich in der problemstellung eine rekursive definition benutze?
Wenn du dir daraufhin die Problemstellung nochmal iterativ verdeutlichst - hast du dann ein anderes Problem beschrieben?
-
finix schrieb:
Wenn du dir daraufhin die Problemstellung nochmal iterativ verdeutlichst - hast du dann ein anderes Problem beschrieben?
nicht, wenn es trotz der anderen beschreibung das gleiche problem ist.
also gehe ich mal von einem problem aus, das man nicht ohne rekursion beschreiben kann.
-
Wann kommen denn eigentlich die schweren Kurzfragen?
-
hab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
volkard schrieb:
auch wenn ich in der problemstellung eine rekursive definition benutze?
Für was für ein Problem willst du denn eine rekursive Beschreibung nutzen? (Ein Problem schreibt man normalerweise in der Form "ich habe A und will B erreichen - was muß ich tun?" - wenn du an der Stelle schon über Rekursion nachdenkst, machst du etwas falsch)
-
CStoll schrieb:
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
Dann werf ich einfach mal die Ackermann- oder Ulam-Funktion in den Raum ^^
Die Türme ließen sich afaik durch Permutationsbildung iterativ lösen. Mein Prof hatte mal ein Programm, dass das machte. Es geht auf jeden Fall.
-
CStoll schrieb:
hab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
das gilt nicht. gemeint war, daß es iterartiv nicht gehe, außer mit dem notfall-trick.
-
CStoll schrieb:
volkard schrieb:
auch wenn ich in der problemstellung eine rekursive definition benutze?
Für was für ein Problem willst du denn eine rekursive Beschreibung nutzen? (Ein Problem schreibt man normalerweise in der Form "ich habe A und will B erreichen - was muß ich tun?" - wenn du an der Stelle schon über Rekursion nachdenkst, machst du etwas falsch)
du sagst mir gerade, daß ich was falsch mache, nur weil ich mehr sachen kenne? respekt!
ich denke konkret an eine rekursive definition im buch über formale begriffsanalyse von wille und ganter. die war wirklich happig und da wäre es kein fehler, davon auszugehen, daß man iterartiv keinen ordentlichen zugang hat. das buch liegt mir im moment nicht vor und ich kann nicht nachblättern.
denken wir und erstmal ganz einfach die definition "ein elefant ist jemand, dessen beide eltern elefanten sind". das ist nicht irgend eine eine lösungsstrategie für die frage, ob jemand ein elefant ist, sondern es ist die definition. aber die läßt sich jetzt von eventuellen problemstellungen abkoppeln. daher denke ich weiter daran, die problemstellung (evtl ein wenig hintertückisch) miteinzubeziehen wie im berühmten "was ist die größte zahl, die sich nicht mit worten darstellen läßt?" (eine wort-darstellung einer zahl ist "die größte zahl, die sich nicht mit worten darstellen läßt" und schnell wird's absurd, was aber nix an der problemstellung ändert).
-
Hallo,
Volkard meinte der Zeiger auf eine nicht Klassenmethode ist 2/3 mal so groß wie ein Zeiger auf eine "normale"
Funktion.
Ich dachte das wäre ein ganz normaler Zeiger auf eine Funktion, die quasi implizit den this-Pointer als Parameter mitbekommt. Lass mich gerne belehren.