🏠 Zurück zur Startseite

💻 Labor 3

Schleifen und Git/GitHub Setup mit SSH
Fortgeschrittene Algorithmen und Programmierung • HTW Berlin • WiSe 2025/26

📋 Lernziele

In diesem Labor werden Sie:

⚠️ Pflicht: Digitale Laborunterweisung

Bevor Sie mit der Laborarbeit beginnen, müssen Sie die digitale Laborunterweisung für die Labore F202, F224, F225 und F226 absolvieren.

Ablauf:

  1. Unterweisungstext lesen
  2. Hinweise bestätigen
  3. Digital unterschreiben
  4. Nachweis wird automatisch per E-Mail verschickt

👉 https://lu.f1.htw-berlin.de/lab/klinf/
(HTW-Login erforderlich)

QR-Code Laborunterweisung

QR-Code scannen
(HTW-Netz erforderlich)

Teil 1: Schleifen-Übungen

1 Zahlen ausgeben mit for-Schleife

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das alle geraden Zahlen von 1 bis 20 ausgibt.

Erwartete Ausgabe: 2 4 6 8 10 12 14 16 18 20

📝 Schritt 1: Analysieren

  • Eingaben: Keine (fest definierter Bereich 1-20)
  • Ausgaben: Gerade Zahlen zwischen 1 und 20
  • Algorithm: for-Schleife von 1 bis 20, nur gerade Zahlen ausgeben

🎨 Schritt 2: Algorithmus (Pseudocode)

FÜR i VON 1 BIS 20 SCHRITT 1 WENN i % 2 == 0 DANN AUSGABE: i ENDE WENN ENDE FÜR ODER eleganter: FÜR i VON 2 BIS 20 SCHRITT 2 AUSGABE: i ENDE FÜR

💻 Schritt 3: Implementierung

Dateiname: zahlen.c

💡 Hinweise

  • Syntax der for-Schleife: for (int i = start; i <= end; i++)
  • Gerade Zahlen erkennen: i % 2 == 0
  • Alternative: Schleife von 2 bis 20 mit Schrittweite 2: i += 2
  • Ausgabe ohne Zeilenumbruch: printf("%d ", i);
🔒 Musterlösung
Falsches Passwort!
/* * zahlen.c * Gerade Zahlen von 1-20 mit for-Schleife ausgeben */ #include <stdio.h> int main() { printf("Gerade Zahlen von 1 bis 20:\n"); // Variante 1: Alle Zahlen prüfen for (int i = 1; i <= 20; i++) { if (i % 2 == 0) { printf("%d ", i); } } printf("\n\n"); // Variante 2: Nur gerade Zahlen durchlaufen (eleganter!) printf("Alternative Lösung:\n"); for (int i = 2; i <= 20; i += 2) { printf("%d ", i); } printf("\n"); return 0; }

✅ Erwartete Ausgabe

Gerade Zahlen von 1 bis 20: 2 4 6 8 10 12 14 16 18 20 Alternative Lösung: 2 4 6 8 10 12 14 16 18 20

2 Summenberechnung mit while-Schleife

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das Zahlen vom Benutzer einliest und ihre Summe berechnet. Die Eingabe wird beendet, wenn der Benutzer 0 eingibt.

📝 Schritt 1: Analysieren

  • Eingaben: Mehrere Zahlen (beliebig viele), Abbruch bei 0
  • Ausgaben: Summe aller eingegebenen Zahlen (ohne die 0)
  • Algorithm: while-Schleife mit Bedingung (zahl != 0)

🎨 Schritt 2: Algorithmus (Pseudocode)

summe = 0 zahl = 1 // Initialisierung mit Wert != 0 SOLANGE zahl != 0 EINGABE: zahl WENN zahl != 0 DANN summe = summe + zahl ENDE WENN ENDE SOLANGE AUSGABE: summe

💻 Implementierung

Dateiname: summe.c

💡 Hinweise

  • Syntax: while (bedingung) { ... }
  • Variable vor der Schleife initialisieren
  • Die 0 selbst soll nicht zur Summe addiert werden
  • Verwenden Sie int oder double für die Zahlen
🔒 Musterlösung
Falsches Passwort!
/* * summe.c * Summenberechnung mit while-Schleife */ #include <stdio.h> int main() { int zahl; int summe = 0; printf("Geben Sie Zahlen ein (0 zum Beenden):\n"); // Erste Eingabe vor der Schleife printf("Zahl: "); scanf("%d", &zahl); // Schleife läuft, solange die Eingabe nicht 0 ist while (zahl != 0) { summe += zahl; // Gleichbedeutend mit: summe = summe + zahl // Nächste Zahl einlesen printf("Zahl: "); scanf("%d", &zahl); } // Ergebnis ausgeben printf("\nDie Summe aller Zahlen ist: %d\n", summe); return 0; }

✅ Testfälle

Test 1: Eingabe: 5, 10, 15, 0 Ausgabe: Die Summe aller Zahlen ist: 30 Test 2: Eingabe: -5, 10, -3, 8, 0 Ausgabe: Die Summe aller Zahlen ist: 10 Test 3: Eingabe: 0 Ausgabe: Die Summe aller Zahlen ist: 0

3 Eingabevalidierung mit do-while

🎯 Aufgabenstellung

Schreiben Sie ein Programm, das eine Zahl zwischen 1 und 100 vom Benutzer einliest. Solange die Eingabe außerhalb dieses Bereichs liegt, soll eine Fehlermeldung ausgegeben und erneut nach einer Eingabe gefragt werden.

📝 Schritt 1: Analysieren

  • Eingaben: Eine Zahl (wiederholt bis gültig)
  • Ausgaben: Bestätigung der gültigen Eingabe
  • Algorithm: do-while-Schleife (mindestens eine Eingabe erforderlich)

🎨 Schritt 2: Algorithmus (Pseudocode)

WIEDERHOLE EINGABE: zahl WENN zahl < 1 ODER zahl > 100 DANN AUSGABE: "Fehler: Zahl muss zwischen 1 und 100 liegen!" ENDE WENN SOLANGE zahl < 1 ODER zahl > 100 AUSGABE: "Gültige Eingabe: " + zahl

💻 Implementierung

Dateiname: validierung.c

💡 Hinweise

  • Syntax: do { ... } while (bedingung); (Semikolon beachten!)
  • Die Schleife wird mindestens einmal ausgeführt
  • Bedingung für ungültige Eingabe: zahl < 1 || zahl > 100
  • Logische Operatoren: && (UND), || (ODER)
🔒 Musterlösung
Falsches Passwort!
/* * validierung.c * Eingabevalidierung mit do-while-Schleife */ #include <stdio.h> int main() { int zahl; printf("Geben Sie eine Zahl zwischen 1 und 100 ein:\n"); // do-while: Code wird mindestens einmal ausgeführt do { printf("Ihre Eingabe: "); scanf("%d", &zahl); // Prüfen, ob Eingabe gültig ist if (zahl < 1 || zahl > 100) { printf("Fehler: Die Zahl muss zwischen 1 und 100 liegen!\n\n"); } } while (zahl < 1 || zahl > 100); // Wiederholen, solange ungültig // Gültige Eingabe wurde gemacht printf("\nGültige Eingabe akzeptiert: %d\n", zahl); return 0; }

✅ Testfälle

Test 1: Erste Eingabe gültig Eingabe: 50 Ausgabe: Gültige Eingabe akzeptiert: 50 Test 2: Mehrere ungültige Eingaben Eingabe: 0 → Fehler Eingabe: 150 → Fehler Eingabe: -10 → Fehler Eingabe: 75 → Gültige Eingabe akzeptiert: 75 Test 3: Grenzwerte Eingabe: 1 → Gültige Eingabe akzeptiert: 1 Eingabe: 100 → Gültige Eingabe akzeptiert: 100

💡 Warum do-while?

Die do-while-Schleife ist perfekt für Eingabevalidierung, weil:

  • Mindestens eine Eingabe garantiert erfolgt
  • Die Bedingung erst nach der ersten Eingabe geprüft wird
  • Der Code kürzer und lesbarer ist als mit while

4 Multiplikationstabelle erstellen

🎯 Aufgabenstellung

Erstellen Sie ein Programm, das eine formatierte Multiplikationstabelle (kleines 1x1) von 1 bis 10 ausgibt.

📊 Beispiel-Ausgabe (Auszug)

1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 ... 10 20 30 40 50 60 70 80 90 100

📝 Schritt 1: Analysieren

  • Eingaben: Keine (feste Größe 10x10)
  • Ausgaben: Formatierte Tabelle mit allen Produkten
  • Algorithm: Verschachtelte for-Schleifen (äußere: Zeilen, innere: Spalten)

🎨 Schritt 2: Algorithmus (Pseudocode)

FÜR zeile VON 1 BIS 10 FÜR spalte VON 1 BIS 10 produkt = zeile * spalte AUSGABE: produkt (formatiert) ENDE FÜR AUSGABE: Zeilenumbruch ENDE FÜR

💻 Implementierung

Dateiname: tabelle.c

💡 Hinweise

  • Verschachtelte Schleifen: Eine Schleife innerhalb einer anderen
  • Äußere Schleife: Zeilen (1-10)
  • Innere Schleife: Spalten (1-10)
  • Formatierte Ausgabe mit fester Breite: printf("%4d", produkt);
  • Nach jeder Zeile: printf("\n");
🔒 Musterlösung
Falsches Passwort!
/* * tabelle.c * Multiplikationstabelle mit verschachtelten for-Schleifen */ #include <stdio.h> int main() { printf("Multiplikationstabelle (1x1 bis 10x10):\n\n"); // Äußere Schleife: Zeilen (1 bis 10) for (int zeile = 1; zeile <= 10; zeile++) { // Innere Schleife: Spalten (1 bis 10) for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; // %4d = rechtsbündig mit Breite 4 Zeichen printf("%4d", produkt); } // Nach jeder Zeile: Zeilenumbruch printf("\n"); } return 0; }

✅ Erwartete Ausgabe

Multiplikationstabelle (1x1 bis 10x10): 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100

💡 Verschachtelte Schleifen verstehen

Bei verschachtelten Schleifen gilt:

  • Die innere Schleife läuft komplett durch für jeden Durchgang der äußeren Schleife
  • Beispiel: Bei Zeile 1 werden alle Spalten 1-10 durchlaufen, dann bei Zeile 2 wieder alle Spalten, usw.
  • Gesamt-Durchläufe: 10 (Zeilen) × 10 (Spalten) = 100 Iterationen

Teil 2: Git Installation & GitHub Setup mit SSH

5 Git installieren

🎯 Ziel

Git auf Ihrem Computer installieren und konfigurieren.

1 Git herunterladen

Besuchen Sie: https://git-scm.com/downloads

2 Installation (Windows)

⚠️ Wichtig für Windows

  • Installationspfad ohne Leerzeichen oder Umlaute wählen (z.B. C:\Dev\Git)
  • Bei der Installation "Git Bash" aktivieren
  • Option wählen: "Use Git from the Command Prompt"

3 Installation (macOS)

Git ist oft bereits installiert. Prüfen Sie mit:

git --version

Falls nicht installiert, lädt macOS automatisch die Xcode Command Line Tools herunter.

4 Installation (Linux)

# Ubuntu/Debian: sudo apt-get install git # Fedora: sudo dnf install git

5 Installation überprüfen

Öffnen Sie ein Terminal (oder Git Bash auf Windows) und geben Sie ein:

git --version

Sie sollten eine Versionsnummer sehen, z.B.: git version 2.42.0

6 Git konfigurieren

Setzen Sie Ihren Namen und E-Mail-Adresse:

git config --global user.name "Ihr Name" git config --global user.email "ihre.email@example.com" # Konfiguration überprüfen: git config --list
🔒 Musterlösung
Falsches Passwort!

✅ Checkliste für erfolgreiche Git-Installation

  1. Git heruntergeladen von https://git-scm.com/downloads
  2. Installiert (Windows: mit Git Bash aktiviert)
  3. Terminal/Git Bash geöffnet
  4. git --version ausgeführt → Versionsnummer sichtbar
  5. git config --global user.name "Ihr Name" ausgeführt
  6. git config --global user.email "ihre.email@example.com" ausgeführt
  7. git config --list ausgeführt → Name und E-Mail sichtbar

💡 Troubleshooting

  • Windows: Falls "git" nicht erkannt wird, Terminal neu starten oder Git zum PATH hinzufügen
  • macOS: Falls Git nicht gefunden wird, xcode-select --install ausführen
  • Linux: Falls Installation fehlschlägt, mit sudo versuchen

6 GitHub Account erstellen

🎯 Ziel

Einen kostenlosen GitHub Account erstellen.

1 Registrierung

  1. Besuchen Sie https://github.com
  2. Klicken Sie auf "Sign up"
  3. Geben Sie Ihre E-Mail-Adresse ein
  4. Erstellen Sie ein sicheres Passwort
  5. Wählen Sie einen eindeutigen Benutzernamen

💡 Tipp: Benutzername

Ihr Benutzername wird Teil Ihrer GitHub-URL: github.com/IhrBenutzername

Wählen Sie einen professionellen Namen, den Sie auch später noch verwenden möchten!

2 E-Mail bestätigen

GitHub sendet Ihnen eine Bestätigungs-E-Mail. Klicken Sie auf den Link in der E-Mail.

3 Umfrage (optional)

GitHub fragt nach Ihren Interessen. Sie können die Umfrage ausfüllen oder überspringen.

🔒 Musterlösung
Falsches Passwort!

✅ Checkliste für erfolgreiche GitHub-Registrierung

  1. github.com besucht
  2. Auf "Sign up" geklickt
  3. E-Mail-Adresse eingegeben (am besten studentische E-Mail für GitHub Student Developer Pack)
  4. Sicheres Passwort erstellt (mindestens 15 Zeichen oder 8 Zeichen mit Zahl und Kleinbuchstaben)
  5. Eindeutigen Benutzernamen gewählt (professionell, keine temporären Namen!)
  6. E-Mail-Bestätigung erhalten und Link angeklickt
  7. Erfolgreich eingeloggt bei github.com

💡 Bonus: GitHub Student Developer Pack

Mit Ihrer studentischen E-Mail-Adresse können Sie das GitHub Student Developer Pack beantragen:

7 SSH-Schlüssel erstellen und einrichten

🎯 Ziel

SSH-Schlüssel für sichere Authentifizierung bei GitHub erstellen.

Warum SSH statt HTTPS? Mit SSH-Schlüsseln können Sie sich ohne Passwort oder Token authentifizieren. Das ist sicherer und bequemer!

1 SSH-Schlüssel generieren

Öffnen Sie ein Terminal (Git Bash auf Windows) und führen Sie aus:

ssh-keygen -t rsa -b 4096

2 Speicherort bestätigen

Bei der Frage nach dem Speicherort einfach Enter drücken:

Enter file in which to save the key (/home/username/.ssh/id_rsa): [Enter drücken]

3 Passphrase (optional)

Sie können ein zusätzliches Passwort für den Schlüssel erstellen:

Enter passphrase (empty for no passphrase): [Passwort eingeben oder Enter] Enter same passphrase again: [Passwort wiederholen oder Enter]

💡 Hinweis

Ein Passwort erhöht die Sicherheit, macht die Nutzung aber etwas umständlicher. Für den Anfang können Sie es leer lassen.

4 Öffentlichen Schlüssel anzeigen

Zeigen Sie den Inhalt Ihres öffentlichen Schlüssels an:

cat ~/.ssh/id_rsa.pub

5 Schlüssel zu GitHub hinzufügen

  1. Kopieren Sie die gesamte Ausgabe (beginnend mit ssh-rsa)
  2. Gehen Sie zu GitHub → SettingsSSH and GPG keys
  3. Oder direkt: https://github.com/settings/keys
  4. Klicken Sie auf "New SSH key"
  5. Geben Sie einen Titel ein (z.B. "Mein Laptop")
  6. Key type: "Authentication Key"
  7. Fügen Sie den kopierten Schlüssel in das Feld "Key" ein
  8. Klicken Sie auf "Add SSH key"

6 Verbindung testen

Testen Sie die SSH-Verbindung zu GitHub:

ssh -T git@github.com

Bei der ersten Verbindung werden Sie gefragt, ob Sie fortfahren möchten. Geben Sie yes ein.

✅ Erfolg!

Sie sollten eine Nachricht sehen wie:

Hi IhrBenutzername! You've successfully authenticated, but GitHub does not provide shell access.
🔒 Musterlösung
Falsches Passwort!

✅ Checkliste für erfolgreiche SSH-Einrichtung

  1. Terminal/Git Bash geöffnet
  2. ssh-keygen -t rsa -b 4096 ausgeführt
  3. Bei Speicherort-Frage Enter gedrückt (Standard: ~/.ssh/id_rsa)
  4. Passphrase eingegeben oder leer gelassen (Enter)
  5. Meldung "Your public key has been saved" erhalten
  6. cat ~/.ssh/id_rsa.pub ausgeführt
  7. Kompletten öffentlichen Schlüssel kopiert (beginnt mit ssh-rsa)
  8. Zu github.com/settings/keys navigiert
  9. Auf "New SSH key" geklickt
  10. Titel eingegeben (z.B. "Mein Laptop")
  11. Key Type: "Authentication Key" ausgewählt
  12. Öffentlichen Schlüssel eingefügt
  13. Auf "Add SSH key" geklickt
  14. ssh -T git@github.com ausgeführt
  15. Bei Fingerprint-Frage "yes" eingegeben
  16. Erfolgsmeldung "Hi [Username]! You've successfully authenticated" erhalten

⚠️ Häufige Fehler

  • "Permission denied": Falscher Schlüssel kopiert oder nicht zu GitHub hinzugefügt
  • "Could not resolve hostname": Tippfehler in git@github.com
  • "No such file or directory": SSH-Schlüssel wurde nicht erstellt oder an anderem Ort gespeichert

💡 Wichtige Dateien

  • ~/.ssh/id_rsa - Privater Schlüssel (NIEMALS teilen oder hochladen!)
  • ~/.ssh/id_rsa.pub - Öffentlicher Schlüssel (dieser wird zu GitHub hinzugefügt)
  • ~/.ssh/known_hosts - Liste bekannter Server (wird automatisch erstellt)

8 Erstes Repository mit SSH erstellen

🎯 Ziel

Ein Git-Repository erstellen und mit SSH zu GitHub pushen.

1 Repository auf GitHub erstellen

  1. Gehen Sie zu https://github.com
  2. Klicken Sie auf "New" (grüner Button) oder das + oben rechts
  3. Repository Name: fortgeschrittene-labor3
  4. Description: Meine Übungen aus Labor 3
  5. Wählen Sie Public
  6. ✅ Aktivieren Sie "Add a README file"
  7. Klicken Sie auf "Create repository"

2 SSH-URL kopieren

Auf der Repository-Seite:

  1. Klicken Sie auf den grünen "Code" Button
  2. Wählen Sie den Tab "SSH" (nicht HTTPS!)
  3. Kopieren Sie die URL: git@github.com:IhrBenutzername/fortgeschrittene-labor3.git

⚠️ Wichtig: SSH nicht HTTPS!

Die URL muss mit git@github.com: beginnen, nicht mit https://!

✅ Richtig: git@github.com:username/fortgeschrittene-labor3.git

❌ Falsch: https://github.com/username/fortgeschrittene-labor3.git

3 Repository klonen

Öffnen Sie ein Terminal und navigieren Sie zu Ihrem Arbeitsverzeichnis:

# Ins Arbeitsverzeichnis wechseln (Beispiel) cd ~/Dokumente # Repository klonen (mit Ihrer SSH-URL!) git clone git@github.com:IhrBenutzername/fortgeschrittene-labor3.git # In das Repository wechseln cd fortgeschrittene-labor3

4 Programme hinzufügen

Kopieren Sie Ihre fertigen C-Programme in diesen Ordner:

5 Änderungen committen und pushen

# Status prüfen git status # Alle Dateien zur Staging Area hinzufügen git add . # Commit erstellen git commit -m "Labor 3: Schleifen - Aufgaben 1-4" # Zum ersten Mal hochladen git push -u origin main # Danach reicht einfach: git push

✅ Geschafft!

Ihre Programme sind jetzt auf GitHub! Besuchen Sie github.com/IhrBenutzername/fortgeschrittene-labor3 um sie anzusehen.

6 Workflow für weitere Änderungen

Wenn Sie später weitere Änderungen machen:

# 1. Änderungen vornehmen (Dateien bearbeiten) # 2. Status prüfen git status # 3. Geänderte Dateien hinzufügen git add . # 4. Commit mit aussagekräftiger Nachricht git commit -m "Multiplikationstabelle: Formatierung verbessert" # 5. Hochladen git push
🔒 Musterlösung
Falsches Passwort!

✅ Komplette Befehlsfolge

# 1. Repository auf GitHub erstellen (über Webinterface) # - Name: fortgeschrittene-labor3 # - Public # - Mit README initialisieren # 2. SSH-URL von GitHub kopieren (unter "Code" → "SSH") # Beispiel: git@github.com:IhrBenutzername/fortgeschrittene-labor3.git # 3. Ins gewünschte Verzeichnis wechseln cd ~/Dokumente # 4. Repository klonen (Ihre SSH-URL verwenden!) git clone git@github.com:IhrBenutzername/fortgeschrittene-labor3.git # 5. In das Repository wechseln cd fortgeschrittene-labor3 # 6. C-Dateien hineinkopieren # zahlen.c, summe.c, validierung.c, tabelle.c # 7. Status prüfen git status # 8. Alle Dateien zur Staging Area hinzufügen git add . # 9. Commit erstellen git commit -m "Labor 3: Schleifen - Aufgaben 1-4" # 10. Zum ersten Mal pushen git push -u origin main # 11. Repository auf GitHub ansehen # https://github.com/IhrBenutzername/fortgeschrittene-labor3

✅ Erwartetes Ergebnis

Nach erfolgreichem Push sollten Sie auf GitHub sehen:

  • README.md
  • zahlen.c
  • summe.c
  • validierung.c
  • tabelle.c
  • Commit-Nachricht: "Labor 3: Schleifen - Aufgaben 1-4"

⚠️ Häufige Fehler beim ersten Push

  • "Permission denied": SSH-Schlüssel nicht korrekt eingerichtet → Zurück zu Aufgabe 7
  • "fatal: 'origin' does not appear to be a git repository": HTTPS-URL statt SSH-URL verwendet
  • "Updates were rejected": Remote hat Änderungen, die lokal fehlen → git pull zuerst ausführen
  • Keine Commit-Nachricht: Text zwischen den Anführungszeichen vergessen

💡 Git Workflow für die Zukunft

Tägliche Arbeit:

  1. Code schreiben/ändern
  2. git status - Was hat sich geändert?
  3. git add . - Alle Änderungen stagen
  4. git commit -m "Beschreibung der Änderung" - Commit erstellen
  5. git push - Hochladen zu GitHub

Gute Commit-Nachrichten:

  • ✅ "Summenberechnung: do-while statt while verwendet"
  • ✅ "Multiplikationstabelle: Ausgabeformatierung auf 4 Zeichen angepasst"
  • ❌ "Update"
  • ❌ "asdf"
  • ❌ "fixes"

🎉 Labor 3 abgeschlossen!

✅ Checkliste - Haben Sie alles gemacht?

  • Gerade Zahlen mit for-Schleife ausgegeben
  • Summenberechnung mit while-Schleife implementiert
  • Eingabevalidierung mit do-while-Schleife erstellt
  • Multiplikationstabelle mit verschachtelten Schleifen programmiert
  • Git installiert und konfiguriert
  • GitHub Account erstellt
  • SSH-Schlüssel generiert und zu GitHub hinzugefügt
  • SSH-Verbindung erfolgreich getestet
  • Repository mit SSH erstellt und geklont
  • Programme committed und gepusht

📚 Weiterführende Ressourcen

🚀 Nächste Schritte

In der nächsten Vorlesung lernen Sie Arrays und Funktionen kennen!
Bis dahin: Üben Sie weiter mit Schleifen und experimentieren Sie mit Git!