💻 Labor 1: Willkommen & Programmier-Auffrischung

Fortgeschrittene Algorithmen und Programmierung • Wintersemester 2025/26
⏱️ Dauer: 180 Minuten (3 Stunden)
🏠 Zurück zur Startseite

📋 Laborziele

🎯 Entwicklungsumgebung

Stellen Sie sicher, dass Ihr Compiler funktioniert

🔄 Programmier-Auffrischung

Wiederholen Sie die Grundlagen: Variablen, Schleifen, Funktionen

👋 Kennenlernen

Lernen Sie Ihre Kommilitonen kennen und bilden Sie Teams

ℹ️ Wichtige Hinweise

1 Hello World & Compiler-Check

Ziel: Stellen Sie sicher, dass Ihre Entwicklungsumgebung funktioniert.

📝 Aufgabenstellung:

  1. Erstellen Sie eine neue Datei hello.c
  2. Schreiben Sie ein "Hello World" Programm
  3. Kompilieren und führen Sie es aus
  4. Erweitern Sie es: Geben Sie auch Ihren Namen und Ihre Matrikelnummer aus
💡 Kompilieren:
  • gcc: gcc hello.c -o hello && ./hello
  • clang: clang hello.c -o hello && ./hello
  • IDE: Nutzen Sie den "Run" Button in VS Code, CLion, etc.

🎯 Erwartetes Ergebnis:

  • Programm kompiliert ohne Fehler
  • Ausgabe zeigt Ihren Namen und Matrikelnummer
🔒 Musterlösung
Falsches Passwort!
#include <stdio.h>

int main() {
    printf("Hello World!\n");
    printf("Mein Name: Alexandra Mikityuk\n");
    printf("Matrikelnummer: 987654\n");

    return 0;
}

Erklärung: Das Programm gibt drei Zeilen aus. Jede printf() Zeile gibt Text aus, gefolgt von einem Zeilenumbruch (\n).

2 Variablen & Berechnungen

Ziel: Auffrischung: Arbeiten mit Variablen und einfachen Berechnungen.

📝 Aufgabenstellung:

  1. Erstellen Sie Variablen für:
    • Ihren Vornamen (char[])
    • Ihr Alter (int)
    • Ihre Körpergröße in Metern (double)
  2. Berechnen Sie Ihr Geburtsjahr (2025 - Alter)
  3. Geben Sie alles übersichtlich aus
💡 Tipp: In C verwenden wir char[] für Strings.

🎯 Erwartetes Ergebnis:

  • Korrekte Verwendung verschiedener Datentypen
  • Berechnung funktioniert
  • Übersichtliche Ausgabe
🔒 Musterlösung
Falsches Passwort!
#include <stdio.h>

int main() {
    char name[] = "Alexandra";
    int age = 28;
    double height = 1.68;

    int birthYear = 2025 - age;

    printf("Name: %s\n", name);
    printf("Alter: %d Jahre\n", age);
    printf("Größe: %.2f m\n", height);
    printf("Geburtsjahr: %d\n", birthYear);

    return 0;
}

Erklärung: Variablen speichern Werte. char[] für Strings, int für Ganzzahlen, double für Dezimalzahlen. In printf() verwenden wir Formatierer: %s für Strings, %d für int, %.2f für double mit 2 Dezimalstellen.

3 Schleifen: Zahlen ausgeben

Ziel: Auffrischung: for- und while-Schleifen.

📝 Aufgabenstellung:

  1. Schreiben Sie eine for-Schleife, die die Zahlen von 1 bis 10 ausgibt
  2. Schreiben Sie eine for-Schleife, die die Zahlen von 10 bis 1 rückwärts ausgibt
  3. Schreiben Sie eine while-Schleife, die alle geraden Zahlen von 2 bis 20 ausgibt
  4. Bonus: Geben Sie die Summe der Zahlen von 1 bis 100 aus
💡 Tipp: Für gerade Zahlen prüfen Sie mit zahl % 2 == 0
Beispiel Output:
Zahlen 1 bis 10: 1 2 3 4 5 6 7 8 9 10
Zahlen 10 bis 1: 10 9 8 7 6 5 4 3 2 1
Gerade Zahlen: 2 4 6 8 10 12 14 16 18 20
Summe 1-100: 5050

🎯 Erwartetes Ergebnis:

  • Alle drei Schleifen funktionieren korrekt
  • Output ist übersichtlich formatiert
🔒 Musterlösung
Falsches Passwort!
#include <stdio.h>

int main() {
    // 1. Zahlen von 1 bis 10
    printf("Zahlen 1 bis 10: ");
    for (int i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    printf("\n");

    // 2. Zahlen von 10 bis 1 rückwärts
    printf("Zahlen 10 bis 1: ");
    for (int i = 10; i >= 1; i--) {
        printf("%d ", i);
    }
    printf("\n");

    // 3. Gerade Zahlen von 2 bis 20
    printf("Gerade Zahlen: ");
    int num = 2;
    while (num <= 20) {
        printf("%d ", num);
        num += 2;
    }
    printf("\n");

    // 4. Bonus: Summe 1-100
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum += i;
    }
    printf("Summe 1-100: %d\n", sum);

    return 0;
}

Erklärung: for-Schleifen haben einen Zähler. while-Schleifen laufen, solange die Bedingung wahr ist. i++ erhöht um 1, i-- verringert um 1.

4 Funktionen schreiben

Ziel: Auffrischung: Funktionen mit Parametern und Rückgabewerten.

📝 Aufgabenstellung:

Schreiben Sie folgende Funktionen:

  1. int addiere(int a, int b) - gibt die Summe zurück
  2. int multipliziere(int a, int b) - gibt das Produkt zurück
  3. bool istGerade(int zahl) - gibt true zurück wenn Zahl gerade ist

Testen Sie alle Funktionen in main() mit verschiedenen Werten.

💡 Tipp: Funktionen werden vor main() definiert. return gibt einen Wert zurück.

🎯 Erwartetes Ergebnis:

  • Alle 3 Funktionen sind implementiert
  • Funktionen werden in main() getestet
  • Korrekte Verwendung von return
🔒 Musterlösung
Falsches Passwort!
#include <stdio.h>
#include <stdbool.h>

int addiere(int a, int b) {
    return a + b;
}

int multipliziere(int a, int b) {
    return a * b;
}

bool istGerade(int zahl) {
    return zahl % 2 == 0;
}

int main() {
    int zahl1, zahl2, testZahl;

    // Addition testen
    printf("Erste Zahl: ");
    scanf("%d", &zahl1);
    printf("Zweite Zahl: ");
    scanf("%d", &zahl2);
    printf("%d + %d = %d\n", zahl1, zahl2, addiere(zahl1, zahl2));

    // Multiplikation testen
    printf("\nErste Zahl: ");
    scanf("%d", &zahl1);
    printf("Zweite Zahl: ");
    scanf("%d", &zahl2);
    printf("%d * %d = %d\n", zahl1, zahl2, multipliziere(zahl1, zahl2));

    // istGerade testen
    printf("\nZahl zum Testen: ");
    scanf("%d", &testZahl);
    printf("Ist %d gerade? %s\n", testZahl, istGerade(testZahl) ? "Ja" : "Nein");

    return 0;
}

Erklärung: Funktionen nehmen Parameter entgegen und geben Werte zurück. return beendet die Funktion und gibt den Wert zurück. Für bool brauchen wir #include <stdbool.h>. Mit scanf("%d", &zahl) lesen wir Zahlen vom Benutzer (wichtig: & vor der Variable!).

5 Mini-Rechner bauen

Ziel: Alles kombinieren - ein kleines interaktives Programm!

📝 Aufgabenstellung:

Erstellen Sie einen einfachen Taschenrechner:

  1. Das Programm soll den Benutzer nach zwei Zahlen fragen
  2. Dann fragt es nach der Operation: +, -, *, /
  3. Das Programm führt die Berechnung durch und zeigt das Ergebnis
  4. Nutzen Sie scanf() für die Eingabe
  5. Verwenden Sie if/else oder switch für die Operationen
  6. Bonus: Das Programm läuft in einer Schleife bis der Benutzer 'n' eingibt
💡 Tipp: Verwenden Sie scanf("%lf", &zahl1); für double und scanf(" %c", &op); für char (Leerzeichen vor %c!)
Beispiel Interaktion:
===== MINI RECHNER =====
Erste Zahl: 10
Operation (+, -, *, /): +
Zweite Zahl: 5
Ergebnis: 10 + 5 = 15

Weiter rechnen? (j/n): j

Erste Zahl: 20
Operation (+, -, *, /): *
Zweite Zahl: 3
Ergebnis: 20 * 3 = 60

Weiter rechnen? (j/n): n
Auf Wiedersehen!

🎯 Erwartetes Ergebnis:

  • Programm kann Benutzereingaben verarbeiten
  • Alle 4 Grundrechenarten funktionieren
  • Schöne, übersichtliche Ausgabe
  • Optional: Wiederholungsschleife funktioniert
🔒 Musterlösung
Falsches Passwort!
#include <stdio.h>

int main() {
    char weiter;

    do {
        double zahl1, zahl2;
        char op;

        printf("\n===== MINI RECHNER =====\n");
        printf("Erste Zahl: ");
        scanf("%lf", &zahl1);
        printf("Operation (+, -, *, /): ");
        scanf(" %c", &op);
        printf("Zweite Zahl: ");
        scanf("%lf", &zahl2);

        printf("Ergebnis: %.2f %c %.2f = ", zahl1, op, zahl2);

        if (op == '+') {
            printf("%.2f\n", zahl1 + zahl2);
        } else if (op == '-') {
            printf("%.2f\n", zahl1 - zahl2);
        } else if (op == '*') {
            printf("%.2f\n", zahl1 * zahl2);
        } else if (op == '/') {
            if (zahl2 != 0) {
                printf("%.2f\n", zahl1 / zahl2);
            } else {
                printf("Fehler: Division durch 0!\n");
            }
        } else {
            printf("Ungültige Operation!\n");
        }

        printf("\nWeiter rechnen? (j/n): ");
        scanf(" %c", &weiter);

    } while (weiter == 'j' || weiter == 'J');

    printf("Auf Wiedersehen!\n");

    return 0;
}

Erklärung: scanf() liest Eingaben. %lf für double, %c für char. Das Leerzeichen in " %c" überspringt Whitespace-Zeichen! Die do-while Schleife wiederholt den Code, bis der Benutzer 'n' eingibt. Division durch 0 wird abgefangen!

🎯 Ziel des Labors

✅ Was Sie erreichen sollten

🎉 Willkommen im Kurs!

Dies ist nur eine Auffrischung - ab nächster Woche geht es richtig los mit Algorithmen!

💡 Wir programmieren in C - alle Musterlösungen sind in C!

Bei Fragen: Raum 308 • 📞 +49 30 5019-2664

🏠 Zurück zur Startseite