Systemprogrammierung - AIN/2
Sommersemester 2024


Übungsaufgabe 1: C Grundtypen

Abgabe bis 11./12.4.2024

Programmierung

Auf den Seiten 2-15 bis 2-19 der Vorlesungsunterlagen sind 15 Grundtypen aufgezählt.

Schreiben Sie ein C-Programm aufgabe1.c, das zu jedem Grundtyp je eine lokale Variable mit Initialisierung enthält. Zusätzlich soll das Programm eine Zeigerdefinition  char* s = "Hallo";  enthalten. Sie müssen also insgesamt 16 Variablen definieren.

Das Programm soll die Adresse, den Platzbedarf, den Typ, den Namen und den Wert dieser 16 Variablen ausgeben. Pro Variable soll genau eine Zeile mit den genannten fünf Spalten ausgegeben werden, immer mit der Variablenadresse beginnend.

Abschließend soll das Programm ausgeben, ob es mit dem C-Datenmodell "ILP32", "LP64" oder "LLP64" arbeitet, oder ob keines der drei Modelle vorliegt:

Hinweis:
Achten Sie bei den Werten auf die richtigen von C unterstützen printf-Formatangabe. Bei den Formatangaben für Zahlen brauchen Sie eine Kombination aus "length modifier" und "conversion specifier". Ein übersichtliche Darstellung dazu finden Sie unter https://en.cppreference.com/w/c/io/fprintf. Andere Quellen sind das Linux Manual (Kommando  man 3 printf ) oder einschlägige Internetseiten wie https://man7.org/linux/man-pages/index.html (siehe auch die Literaturseite der Vorlesung). Eine Beschreibung er C-Datenmodelle finden Sie unter https://en.cppreference.com/w/c/language/arithmetic_types


Test und Qualitätssicherung

Speichern Sie die Datei ⤵ Makefile in Ihr Arbeitverzeichnis der Aufgabe 1. Achten Sie auf den richtigen Namen Makefile ohne Endung. Falls beim Download eine Endung .txt ergänzt wurde, entfernen Sie diese Endung. Übersetzen und binden Sie dann Ihr Programm mit dem Befehl
Diesen und alle weiteren Befehle abtippen, nicht mit der Maus kopieren, wenn Sie etwas lernen wollen!

    make clean
    make

Das Programm make automatisiert mittels der Beschreibungen in Makefile das Übersetzen und Binden Ihres Programms.
Die Entsprechung dazu bei den Java-Übungen in Programmiertechnik 1 war das Automatisierungswerkzeug ant mit build.xml.

Führen Sie Ihr Programm aus und lassen Sie die Ausgaben auch mal vom sort-Kommando aufsteigend oder absteigend sortieren:

    ./aufgabe1
    ./aufgabe1 | sort
    ./aufgabe1 | sort -r

Betrachten Sie die Ausgaben und beantworten Sie folgende Fragen:

Prüfen Sie, ob das Analysewerkzeug cppcheck Probleme in Ihrem Quellcode meldet.
Versuchen Sie, wenn möglich, die Probleme zu beheben. Welche Problemen lassen sich nicht beheben?

    cppcheck --enable=warning,style --std=c11 aufgabe1.c
Sie können cppcheck auch vereinfacht über make aufrufen:
    make cppcheck

Die Entsprechung zu cppcheck bei den Java-Übungen in Programmiertechnik 1 war das Analysewerkzeug spotbugs.


Protokoll

Erstellen Sie ein Protokoll Ihres Test-Schritts. Öffnen Sie dazu eine neue Konsole oder setzen Sie Ihre aktuelle Konsole zurück (Konsolenmenü Terminal -> Zurücksetzen und leeren).

Rufen Sie in der neuen bzw. zurückgesetzten Konsole make clean auf und wiederholen Sie alle Kommandos aus dem Test-Schritt.

Markieren Sie die Konsolenausgabe abschließend per Menüpunkt Bearbeiten -> Alles markieren. Öffnen Sie einen Texteditor und kopieren Sie die markierte Konsolenausgabe durch drücken der mittleren Maustaste (des Rads) in das Editorfenster. Speichern Sie mit dem Editor die kopierte Konsolenausgabe als Datei protokoll-aufgabe1.txt im gleichen Verzeichnis wie Ihr Programm.

Ergänzen Sie mit dem Texteditor in protokoll-aufgabe1.txt Ihre Antworten auf die Fragen aus dem Test-Schritt.


Abgabe

Führen Sie Ihr Programm und Ihre Protokolldatei vor.
Zeigen Sie das ausgefüllte Teilnahmeprotokoll.

Hinweis:
Der Compiler gcc darf für Ihr Programm keine Fehler oder Warnungen mehr ausgeben.
Ihr Programm muss außerdem ordentlich formatierte sein. Bessern Sie die Formatierung gegebenenfalls mit astyle nach:
  astyle -p -H --style=ansi aufgabe1.c


Freiwillige Zusatzaufgabe (pro Spiegelpunkt 1 Bonuspunkt)



Prof. Dr. H. Drachenfels
Hochschule Konstanz - Impressum - Datenschutzerklärung
Letzte Änderung: 19.3.2024