Wissensspeicher 20

Ausnahmebehandlung

  • Signalisierung von auftretenden Fehlern an den aufrufenden Programmcode
  • Umsetzung
    • Werfen von Ausnahmen mittels throw std::exception()
    • Fangen von Ausnahmen mittels try { } catch (std::exception e) {}
  • Beispiel zum Einsatz von Ausnahmen

Maschinenraum

  • Einblick in die Aufgaben eines Betriebssystem
    • Abstraktion: Prozess und Speicher
    • Ressourceverwaltung
  • Toolchain GCC
    • Compiler besteht aus drei Schritten: Präprozessor, Übersetzer und Binder
    • Compiler betrachtet jede Datei (Überetzungeinheit) einzeln

pages/Kapitel13-page-01.svg

pages/Kapitel13-page-02.svg

pages/Kapitel13-page-03.svg

pages/Kapitel13-page-04.svg

pages/Kapitel13-page-05.svg

pages/Kapitel13-page-06.svg

pages/Kapitel13-page-07.svg

pages/Kapitel13-page-08.svg

pages/Kapitel13-page-09.svg

pages/Kapitel13-page-10.svg

pages/Kapitel13-page-11.svg

pages/Kapitel13-page-12.svg

pages/Kapitel13-page-13.svg

pages/Kapitel13-page-14.svg

pages/Kapitel13-page-15.svg

pages/Kapitel13-page-16.svg

pages/Kapitel13-page-17.svg

pages/Kapitel13-page-18.svg

pages/Kapitel13-page-19.svg

pages/Kapitel13-page-20.svg

pages/Kapitel13-page-21.svg

pages/Kapitel13-page-22.svg

pages/Kapitel13-page-23.svg

pages/Kapitel13-page-24.svg

pages/Kapitel13-page-25.svg

pages/Kapitel13-page-26.svg

pages/Kapitel13-page-27.svg

pages/Kapitel13-page-28.svg

pages/Kapitel13-page-29.svg

pages/Kapitel13-page-30.svg

pages/Kapitel13-page-31.svg

pages/Kapitel13-page-32.svg

pages/Kapitel13-page-33.svg

pages/Kapitel13-page-34.svg

pages/Kapitel13-page-35.svg

pages/Kapitel13-page-36.svg

pages/Kapitel13-page-37.svg

pages/Kapitel13-page-38.svg

pages/Kapitel13-page-39.svg

pages/Kapitel13-page-40.svg

pages/Kapitel13-page-41.svg

pages/Kapitel13-page-42.svg

pages/Kapitel13-page-43.svg

pages/Kapitel13-page-44.svg

pages/Kapitel13-page-45.svg

pages/Kapitel13-page-46.svg

pages/Kapitel13-page-47.svg

pages/Kapitel13-page-48.svg

pages/Kapitel13-page-49.svg

pages/Kapitel13-page-50.svg

pages/Kapitel13-page-51.svg

pages/Kapitel13-page-52.svg

pages/Kapitel13-page-53.svg

pages/Kapitel13-page-54.svg

pages/Kapitel13-page-55.svg

pages/Kapitel13-page-56.svg

pages/Kapitel13-page-57.svg

pages/Kapitel13-page-58.svg

pages/Kapitel13-page-59.svg

pages/Kapitel13-page-60.svg

pages/Kapitel13-page-61.svg

pages/Kapitel13-page-62.svg

pages/Kapitel13-page-63.svg

pages/Kapitel13-page-64.svg

pages/Kapitel13-page-65.svg

pages/Kapitel13-page-66.svg

pages/Kapitel13-page-67.svg

pages/Kapitel13-page-68.svg

pages/Kapitel13-page-69.svg

pages/Kapitel13-page-70.svg

pages/Kapitel13-page-71.svg

pages/Kapitel13-page-72.svg

pages/Kapitel13-page-73.svg

pages/Kapitel13-page-74.svg

pages/Kapitel13-page-75.svg

pages/Kapitel13-page-76.svg

pages/Kapitel13-page-77.svg

pages/Kapitel13-page-78.svg

pages/Kapitel13-page-79.svg

pages/Kapitel13-page-80.svg

pages/Kapitel13-page-81.svg

pages/Kapitel13-page-82.svg

pages/Kapitel13-page-83.svg

pages/Kapitel13-page-84.svg

pages/Kapitel13-page-85.svg

pages/Kapitel13-page-86.svg

pages/Kapitel13-page-87.svg

pages/Kapitel13-page-88.svg

pages/Kapitel13-page-89.svg

pages/Kapitel13-page-90.svg

pages/Kapitel13-page-91.svg

pages/Kapitel13-page-92.svg

Live-Demo - Funktoren

#include <iostream>
#include <algorithm>

using namespace std;

class PlusFunktor {
    int p;
public:
    PlusFunktor(int x) : p(x) {};
    int operator() (int x) { return x + p; }
};

int main() {
    PlusFunktor plus(2);

    int constexpr n = 6;
    int feld[] = {1, 2, 3, 4, 5, 6};

    for (int i: feld) {
        cout << i << " ";
    }
    cout << endl;

    std::transform(feld, feld+n, feld, plus);

    for (int i: feld) {
        cout << i << " ";
    }
    cout << endl;    

	return 0;
}
compiler

pages/Kapitel13-page-93.svg

pages/Kapitel13-page-94.svg

pages/Kapitel13-page-95.svg

pages/Kapitel13-page-96.svg

pages/Kapitel13-page-97.svg

pages/Kapitel13-page-98.svg

pages/Kapitel13-page-99.svg

pages/Kapitel13-page-100.svg

Live-Demo - Sortieren

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main() {
    vector<int> v{4, 7, 2, 6, 10, 12, 1, 5};   

    sort(v.begin(), v.end());
    for (int i: v) {
        cout << i << " ";
    }
    cout << endl;
 
    sort(v.begin(), v.end(), std::greater<int>());
    for (int i: v) {
        cout << i << " ";
    }
    cout << endl;

	return 0;
}
compiler

pages/Kapitel13-page-101.svg

pages/Kapitel13-page-102.svg

pages/Kapitel13-page-103.svg

pages/Kapitel13-page-104.svg

pages/Kapitel13-page-105.svg

pages/Kapitel13-page-106.svg

pages/Kapitel13-page-107.svg

pages/Kapitel13-page-108.svg

Live-Demo - Sortieren mit eigenen Klassen

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct Punkt {
    int m_x;
    Punkt(int x) : m_x(x) {}

    bool operator<(Punkt const &p) const {
        if (m_x < p.m_x) {
            return true;
        }
        return false;
    }
};

int main() {
    vector<Punkt> v{{2}, {3}, {5}, {1}};   

    sort(v.begin(), v.end());
    for (Punkt i: v) {
        cout << i.m_x << " ";
    }
    cout << endl;

	return 0;
}
compiler

pages/Kapitel13-page-109.svg

pages/Kapitel13-page-110.svg

pages/Kapitel13-page-111.svg

pages/Kapitel13-page-112.svg

pages/Kapitel13-page-113.svg

pages/Kapitel13-page-114.svg

pages/Kapitel13-page-115.svg

pages/Kapitel13-page-116.svg

pages/Kapitel13-page-117.svg

pages/Kapitel13-page-118.svg

pages/Kapitel13-page-119.svg

pages/Kapitel13-page-120.svg

Live-Demo - Ausgabe von der eigenen Klasse

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

class Punkt2D {
private:
    double m_x, m_y;
public:
    Punkt2D(double x, double y): m_x(x), m_y(y) {}
    double getX() { return m_x; }
    double getY() { return m_y; }
//    friend ostream& operator<<(ostream& os, Punkt2D &p);
};
 
ostream& operator<<(ostream& os, Punkt2D &p) {
    return os << "Punkt: x = " << p.m_x << ", y = " << p.m_y;
}

int main() {
    Punkt2D p(5, 7);

    cout << p << endl;

	return 0;
}
compiler

pages/Kapitel13-page-121.svg

pages/Kapitel13-page-122.svg

pages/Kapitel13-page-123.svg

pages/Kapitel13-page-124.svg

pages/Kapitel13-page-125.svg

pages/Kapitel13-page-126.svg

pages/Kapitel13-page-127.svg

pages/Kapitel13-page-128.svg

pages/Kapitel13-page-129.svg

pages/Kapitel13-page-130.svg

pages/Kapitel13-page-131.svg

pages/Kapitel13-page-132.svg

pages/Kapitel13-page-133.svg

pages/Kapitel13-page-134.svg

pages/Kapitel13-page-135.svg

pages/Kapitel13-page-136.svg

pages/Kapitel13-page-137.svg

pages/Kapitel13-page-138.svg

pages/Kapitel13-page-139.svg

pages/Kapitel13-page-140.svg

pages/Kapitel13-page-141.svg

pages/Kapitel13-page-142.svg

pages/Kapitel13-page-143.svg

pages/Kapitel13-page-144.svg

pages/Kapitel13-page-145.svg

Abschlussarbeiten

  • Ihr schreibt bestimmt irgendwann einmal eine Abschlussarbeit 😀

    (Das wünsche ich Euch.)

  • Wenn Euch Hardware-nahe und/oder Betriebssystem-nahe Themen interessieren, denkt gerne an uns! 😀

  • Wir interessieren uns auch für Themen aus der E-Technik.

  • Meldet Euch dann gerne bei uns: https://sys.cs.tu-dortmund.de/

Tschüss! 😭

🤞 Viel Erfolg 🤞
und vielen Dank für die Aufmerksamkeit! 🙏