Posted on

Übung 1

Dynamische Speicherverwaltung

Folien (orga)Folien (lilo)Aufgabe (lilo)

Übungsablauf

Die Tafelübung findet wöchentlich am Dienstag statt (mit Ausnahme von Feiertagen natürlich). Nach Pfingsten werden sich Übungen in denen neue Aufgaben vorgestellt werden abwechseln mit Übungen in denen eure Abgabe besprochen werden. In diesen Besprechungsübungen werden dann ein oder mehrere Gruppen ihre Abgabe vorstellen und wir gehen zusammen über die häufigsten Fehlerquellen. Es gilt grundsätzlich Anwesenheitspflicht zu diesen Vorstellungsübungen, sonst kann eure Abgabe gegebenenfalls nicht gewertet werden. Solltet ihr mal verhindert sein ist das trotzdem kein Problem, solange ihr mir vorher eine E-Mail schreibt.

Was zu welchem Termin drankommt könnt ihr dem Semesterplan entnehmen.

Abgabesystem und Git

Es wird empfohlen eure Abgaben fürs erste im CIP zu bearbeiten. Der CIP ist das Referenzsystem und dort sind auch alle nötigen Tools installiert.

# Repository für neue Aufgabe erstellen
/proj/i4sp1/bin/mkrepo aufgabe1

# Repository mit dem Link, den ihr beim
# letzten Schritt bekommen habt clonen
#
# Hierzu müsst ihr gegebenenfalls erst
# ein neues Passwort im Gitlab einstellen.
git clone https://gitlab.cs.fau.de/i4sp/ss24/T04/wa94tiju/aufgabe1

# Nun habt ihr eine lokale Kopie.
# Mit `cd` kommt ihr in das Verzeichnis rein.
cd aufgabe1

# Mit `ls` könnt ihr euch nun die Dateien im Ordner anzeigen lassen.
ls

# Ihr könnt nun einen beliebigen Editor (hier `micro`) benutzen,
# um die Aufgaben zu bearbeiten. (Speichern mit Ctrl+s; Beenden mit Ctrl+q)
micro lilo.c

# Wenn ihr bereit für einen Testlauf seid
# könnt ihr das Programm mit `gcc` übersetzen.
# Vergesst dabei nicht die vorgeschriebenen Compilerflags.
gcc -c -std=c11 -pedantic -Wall -Werror -D_XOPEN_SOURCE=700 lilo.c -o lilo

# Das kompilierte Programm könnt ihr nun direkt ausführen:
./lilo

# Wenn ihr meint, dass soweit alles passt könnt ihr
# die Änderungen (in dem Fall in `lilo.c`) registrieren
# und einen Commit # mit einer passenden Nachricht erstellen.
git add lilo.c
git commit -m "insertElement() eingebaut"

# Damit eure Änderungen auch online sichtbar sind und als Abgabe
# gewertet werden müsst ihr sie noch auf den Server "pushen".
git push

# `mkrepo` und `git clone` braucht ihr nur einmal am Anfang ausführen.
# Alle anderen Schritte lassen sich natürlich beliebig oft wiederholen,
# bis ihr mit eurer Abgabe zufrieden seid.

Falls ihr euch auch mit den fortgeschrittenen Funktionen von git vertraut machen wollt kann ich https://learngitbranching.js.org/ sehr empfehlen.

SSH macht die Interaktion mit Gitlab wesentlich einfacher und ihr müsst nicht jedes mal euer Passwort eingeben. Wie ihr einen SSH-Schlüssel einrichtet könnt ihr auf der Gitlab-Seite nachlesen. Wenn ihr das erledigt habt könnt ihr von nun an eure Repos über ssh statt https clonen:

# Hier eigenen Nutzernamen/Übungsgruppe und richtige Aufgabe einfügen
git clone ssh://git@gitlab.cs.fau.de/i4sp/ss24/T04/wa94tiju/aufgabe1

Codebeispiel aus der Übung

Das folgende Programm (myecho.c) gibt alle Parameter zeichenweise aus:

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        for (int j = 0; j < strlen(argv[i]); j++) {
            printf("%c\n",argv[i][j]);
        }
    }
}