Wissensspeicher 17

  • 🎆 Frohes neues Jahr! 🎆
  • Letztes Jahr bei EidP

Evaluation

Lehreevaluation Wintersemester 24/25

Bitte nehmt teil und füllt die Umfrage aus!

🎓 Klausurtermine 🎓

    1. Klausurtermin
    • Mittwoch, 05.02., von 17-20 Uhr
    • HSG II, HS 1, 3, 6 und 7
    1. Klausurtermin
    • Dienstag, 18.03., von 08-11 Uhr
    • Audimax, E28, E29 und CT HS ZE02
  • Wichtig: Wir berücksichtigen bei den Anmeldefristen ggf. verspätete Studienleistungen
  • Weitere Informationen, wie z. B. die Anmeldefristen oder Hilfsmittel, folgen noch

Nachtrag zur Weihnachtsvorlesung

Quiz 7

Welchen Wert hat die Variable b?

unsigned int a = 4294967296;
unsigned int b = a + 3;
  • 3

Quiz 7 – Erläuterung

  • Variable a ist bereits größer als der maximale Wert eines vorzeichenlosen Integers
  • Jeder weitere Addition um 1 führt zu weiterem Überlauf in der Binärdarstellung
  • Maximaler Wert eines Integers mit 32bit:
  •     4294967295=2321= b 0 11111111 11111111 11111111 11111111
  • a: 4294967296=232+0= b 1 00000000 00000000 00000000 00000000
  • b: 4294967296=232+3= b 1 00000000 00000000 00000000 00000011

Quiz 8

Welchen Wert hat die Variable b?

int a = 2147483648;
int b = a + 1;
  • -2147483647

Quiz 8 – Erläuterung 1

  • Variable a ist bereits größer als der maximale Wert eines vorzeichenbehafteten Integers
  • Jeder weitere Addition um 1 führt zu weiterem Überlauf in der Binärdarstellung
  • Max: 2147483647=2311= b 01111111 11111111 11111111 11111111
  • Konvertierung des Zweikomplements
    • Verzeichenbit merken
    • 1 subtrahieren
    • alles invertieren
    • in Dezimal umwandeln

Quiz 8 – Erläuterung 2

  • 2147483647+0= b 01111111 11111111 11111111 11111111
  • 2147483647+1= b 10000000 00000000 00000000 00000000
  • Umrechnen
    • b 10000000 00000000 00000000 00000000 → MSB ist 1 → negative Zahl
    • b 01111111 11111111 11111111 11111111
    • b 10000000 00000000 00000000 00000000 → 2147483648
    • Vorzeichenbit berücksichtigen → -2147483648
  • 2147483648+1=2147483647

Virtuelle Methoden

Live-Demo - Statisches Binden

#include <iostream>
#include <list>

using namespace std;

class A {
public:
    void print() { cout << "Hello!" << endl; }
};

class B : public A {
public:
    void print() { cout << "Bye!" << endl; }
};

class C : public A {
public:
    void print() { cout << "Ciao!" << endl; }
};

int main() {
    list<A*> elements;
    A a;
    B b;
    C c1, c2;

    elements.push_back(&b);
    elements.push_back(&c1);
    elements.push_back(&c2);
    elements.push_back(&a);

    for (A *elem : elements) {
        elem->print();
    }

	return 0;
}
compiler

pages/Kapitel11-page-01.svg

pages/Kapitel11-page-02.svg

pages/Kapitel11-page-03.svg

pages/Kapitel11-page-04.svg

pages/Kapitel11-page-05.svg

pages/Kapitel11-page-06.svg

pages/Kapitel11-page-07.svg

pages/Kapitel11-page-08.svg

pages/Kapitel11-page-09.svg

pages/Kapitel11-page-10.svg

pages/Kapitel11-page-11.svg

pages/Kapitel11-page-12.svg

pages/Kapitel11-page-13.svg

pages/Kapitel11-page-14.svg

pages/Kapitel11-page-15.svg

pages/Kapitel11-page-16.svg

pages/Kapitel11-page-17.svg

pages/Kapitel11-page-18.svg

pages/Kapitel11-page-19.svg

pages/Kapitel11-page-20.svg

pages/Kapitel11-page-21.svg

pages/Kapitel11-page-22.svg

pages/Kapitel11-page-23.svg

pages/Kapitel11-page-24.svg

pages/Kapitel11-page-25.svg

pages/Kapitel11-page-26.svg

pages/Kapitel11-page-27.svg

pages/Kapitel11-page-28.svg

pages/Kapitel11-page-29.svg

pages/Kapitel11-page-30.svg

pages/Kapitel11-page-31.svg

pages/Kapitel11-page-32.svg

pages/Kapitel11-page-33.svg

pages/Kapitel11-page-34.svg

pages/Kapitel11-page-35.svg

pages/Kapitel11-page-36.svg

pages/Kapitel11-page-37.svg

pages/Kapitel11-page-38.svg

pages/Kapitel11-page-39.svg

pages/Kapitel11-page-40.svg

pages/Kapitel11-page-41.svg

pages/Kapitel11-page-42.svg

pages/Kapitel11-page-43.svg

pages/Kapitel11-page-44.svg

pages/Kapitel11-page-45.svg

pages/Kapitel11-page-46.svg

pages/Kapitel11-page-47.svg

pages/Kapitel11-page-48.svg

pages/Kapitel11-page-49.svg

pages/Kapitel11-page-50.svg

pages/Kapitel11-page-51.svg

pages/Kapitel11-page-52.svg

pages/Kapitel11-page-53.svg

pages/Kapitel11-page-54.svg

pages/Kapitel11-page-55.svg

pages/Kapitel11-page-56.svg

pages/Kapitel11-page-57.svg

pages/Kapitel11-page-58.svg

pages/Kapitel11-page-59.svg

pages/Kapitel11-page-60.svg

pages/Kapitel11-page-61.svg

pages/Kapitel11-page-62.svg

pages/Kapitel11-page-63.svg

pages/Kapitel11-page-64.svg

Live-Demo - Virtual vs. Non-Virtual

#include <iostream>
#include <list>

using namespace std;

class X {
public:
    void druck() { cout << "X"; }
};
    
class Y : public X {
public:
    void druck() { std::cout << "Y "; }
};      

class Z : public Y {};  

int main() {
    X* feld[3] = {new X, new Y, new Z};
    for (int i = 0; i < 3; ++i) {
        feld[i]->druck();
    }
    cout << endl;

    return 0;
}
compiler

Live-Demo - Statisches Binden – revisited

#include <iostream>
#include <list>

using namespace std;

class A {
public:
    void print() { cout << "Hello!" << endl; }
};

class B : public A {
public:
    void print() { cout << "Bye!" << endl; }
};

class C : public A {
public:
    void print() { cout << "Ciao!" << endl; }
};

int main() {
    list<A*> elements;
    A a;
    B b;
    C c1, c2;

    elements.push_back(&b);
    elements.push_back(&c1);
    elements.push_back(&c2);
    elements.push_back(&a);

    for (A *elem : elements) {
        elem->print();
    }

	return 0;
}
compiler

pages/Kapitel11-page-65.svg

pages/Kapitel11-page-66.svg

pages/Kapitel11-page-67.svg

pages/Kapitel11-page-68.svg

pages/Kapitel11-page-69.svg

pages/Kapitel11-page-70.svg

pages/Kapitel11-page-71.svg

pages/Kapitel11-page-72.svg

pages/Kapitel11-page-73.svg

pages/Kapitel11-page-74.svg

pages/Kapitel11-page-75.svg

pages/Kapitel11-page-76.svg

pages/Kapitel11-page-77.svg

pages/Kapitel11-page-78.svg

pages/Kapitel11-page-79.svg

pages/Kapitel11-page-80.svg

Live-Demo - Reine virtuelle Funktionen

#include <iostream>
#include <list>

using namespace std;

class A {
public:
    virtual void print() = 0;
};

class B : public A {
public:
    void print() { cout << "Bye!" << endl; }
};

class C : public A {
public:
    void print() { cout << "Ciao!" << endl; }
};

int main() {
    list<A*> elements;
    A a;
    B b;
    C c1, c2;

    elements.push_back(&b);
    elements.push_back(&c1);
    elements.push_back(&c2);
    elements.push_back(&a);

    for (A *elem : elements) {
        elem->print();
    }

	return 0;
}
compiler

pages/Kapitel11-page-81.svg

pages/Kapitel11-page-82.svg

pages/Kapitel11-page-83.svg

pages/Kapitel11-page-84.svg

pages/Kapitel11-page-85.svg

pages/Kapitel11-page-86.svg

pages/Kapitel11-page-87.svg

pages/Kapitel11-page-88.svg

pages/Kapitel11-page-89.svg

Live-Demo - Virtueller Dekonstruktor

#include <iostream>
#include <list>

using namespace std;

class Base {
protected:
    static int cnt;
    int id;
public:
    Base() : id(cnt++) { cout << " B(" << id << ")" << endl; }
    ~Base() { cout << "~B(" << id << ")" << endl; }
};

class Derived : public Base {
public:
    Derived() : Base() { cout << " D(" << id << ")" << endl; }
    ~Derived() { cout << "~D(" << id << ")" << endl; }
};

int Base::cnt = 1;

int main() {
    Base *b = new Derived();
    delete b;

    Derived *d = new Derived();
    delete d;

	return 0;
}
compiler

pages/Kapitel11-page-90.svg