Im letzten Labor haben Sie Ihr erstes printf-Programm geschrieben.
Heute machen wir zwei Dinge: (1) wir festigen die Hello-World-Grundlagen mit ein paar lockeren Ăbungen,
und (2) wir schauen uns an, was Sie in Vorlesung 3 ĂŒber Computer-Architektur gelernt haben â mit einem Quiz und einer Recherche-Aufgabe an Ihrem eigenen Rechner.
Wichtig: Variablen kommen erst nÀchste Woche dran. Hier reicht printf mit festem Text und Zahlen.
Mehrere Zeilen, Sonderzeichen, kreative Ausgaben
CPU, RAM, GPU, SSD â Quiz zur Vorlesung 3
Welche Hardware steckt in Ihrem Laptop?
Was passiert eigentlich beim Kompilieren?
Ziel: Den Compiler wieder zum Laufen bringen â und das Programm leicht erweitern.
hello2.cprintf("text\n"); gibt eine Zeile aus. Vergessen Sie nicht das \n fĂŒr den Zeilenumbruch.
Hello! Hallo! Bonjour!
#include <stdio.h>
int main() {
printf("Hello!\n");
printf("Hallo!\n");
printf("Bonjour!\n");
return 0;
}
Ziel: Eine schön formatierte Visitenkarte als Konsolen-Ausgabe.
Erstellen Sie visitenkarte.c und geben Sie mindestens diese Zeilen aus:
====================)======================================== Anna Beispiel Matrikelnr.: 587412 Studiengang: Angewandte Informatik Lieblings-Software: VS Code ========================================
printf("========================================\n");
#include <stdio.h>
int main() {
printf("========================================\n");
printf(" Anna Beispiel\n");
printf(" Matrikelnr.: 587412\n");
printf(" Studiengang: Angewandte Informatik\n");
printf(" Lieblings-Software: VS Code\n");
printf("========================================\n");
return 0;
}
Ziel: Mit printf ein kleines Bild auf den Bildschirm âmalen".
Erstellen Sie kunst.c und zeichnen Sie eines dieser Motive (oder Ihres):
***** * * * o o* * - * * ___* *****
** **
*******
*****
***
*
# ## ### #### #####
\ hat in C eine Sonderbedeutung. Wenn Sie z.B. \ ausgeben wollen, mĂŒssen Sie \\ schreiben.
Ihre eigene ASCII-Zeichnung erscheint auf dem Bildschirm. Werden Sie kreativ!
#include <stdio.h>
int main() {
printf(" ** **\n");
printf(" *******\n");
printf(" *****\n");
printf(" ***\n");
printf(" *\n");
return 0;
}
ErklĂ€rung: Jede Zeile ist nur eine printf-Ausgabe. Die Leerzeichen am Anfang sind wichtig fĂŒr die Form!
Ziel: Den Computer rechnen lassen â ohne Variablen, einfach direkt im printf.
Erstellen Sie rechnen.c und lassen Sie folgende Berechnungen ausgeben:
#include <stdio.h>
int main() {
printf("3 Tage = %d Stunden\n", 3 * 24);
return 0;
}
%d wird durch eine ganze Zahl ersetzt+ Plus, - Minus, * Mal, / Geteilt3 Tage = 72 Stunden 1 Stunde = 3600 Sekunden 7 Tage = 10080 Minuten 100 / 7 = 14
#include <stdio.h>
int main() {
printf("3 Tage = %d Stunden\n", 3 * 24);
printf("1 Stunde = %d Sekunden\n", 60 * 60);
printf("7 Tage = %d Minuten\n", 7 * 24 * 60);
printf("100 / 7 = %d\n", 100 / 7);
return 0;
}
Bonus: 100 / 7 = 14 (nicht 14,28âŠ) weil C bei zwei ganzen Zahlen den Rest abschneidet. Wir lernen nĂ€chste Woche, wie man das Ă€ndert (mit %f und Kommazahlen).
Ziel: Wiederholen, was Sie in Vorlesung 3 ĂŒber die Bauteile eines Computers gelernt haben.
Beantworten Sie die folgenden Fragen â ganz ohne Spickzettel zuerst, dann gerne in der Vorlesung nachschauen.
Ziel: Herausfinden, welche Hardware in Ihrem Laptop steckt.
Finden Sie die folgenden Werte fĂŒr Ihren Rechner heraus und notieren Sie sie auf einem Zettel oder in einer Textdatei:
msinfo32 Enter â oder Einstellungen â System â Infolscpu, free -h, df -h, uname -aMein Rechner: - CPU: Apple M2, 8 Kerne - RAM: 16 GB - SSD: 512 GB - OS: macOS 14.5 Sonoma - GPU: integriert (Apple M2 GPU, 10 Kerne)
Schauen Sie sich die Werte an. Wie viele Bytes RAM haben Sie ungefĂ€hr? (1 GB â 1 Milliarde Bytes)
Und wie groĂ ist Ihr Hello-World-Programm in Bytes (Datei hello nach Kompilieren)?
Beispielrechnung fĂŒr 16 GB RAM:
16 GB = 16 Ă 1.024 MB
= 16.384 MB
= 16.384 Ă 1.024 KB
= 16.777.216 KB
= 16.777.216 Ă 1.024 Bytes
â 17 Milliarden Bytes (17.179.869.184)
Ein Hello-World-Programm (kompiliert) ist meistens nur ~ 16 KB groĂ.
â Sie könnten ~ 1 Million Hello-World-Programme gleichzeitig in Ihren Arbeitsspeicher laden!
Ziel: Verstehen, was beim Kompilieren wirklich passiert â und das Terminal benutzen.
Diesmal kompilieren Sie Ihr Hello-World nicht ĂŒber den Editor-Knopf, sondern selbst im Terminal.
Mit diesen drei Befehlen bewegen Sie sich durch das Dateisystem:
pwd â zeigt, wo Sie gerade sind (âprint working directory")ls (Mac/Linux) oder dir (Windows) â listet Dateien im aktuellen Ordnercd ordnername â wechselt in einen Ordnercd .. â geht einen Ordner zurĂŒckNavigieren Sie zu dem Ordner, in dem Ihre hello.c aus Aufgabe 1 liegt.
gcc hello.c -o hello
Das bedeutet:
gcc = der Compilerhello.c = die Eingabedatei (Ihr Quellcode)-o hello = der Name der Ausgabedatei (das fertige Programm)./hello (Mac/Linux) hello.exe (Windows)
Ihr Programm gibt âHello World" aus â ohne IDE, nur ĂŒber die Kommandozeile.
hello.c) als Eingabe gegebengcc hat ihn in Maschinensprache (BinĂ€rcode) ĂŒbersetzthello oder hello.exe)Vergleichen Sie die GröĂe von hello.c (Quelltext) mit hello (kompiliert):
ls -la hello.c hello (Mac/Linux) dir hello.c hello.exe (Windows)
Welche Datei ist gröĂer? Warum?
Die kompilierte Datei (hello) ist gröĂer als der Quelltext, obwohl der Quelltext âmehr Zeichen" zu haben scheint.
Warum? Der Compiler bindet Code aus der C-Bibliothek mit ein (z.B. die echte Implementierung von printf). Diese Bibliothekcode landet ebenfalls in Ihrer ausfĂŒhrbaren Datei. AuĂerdem enthĂ€lt die Datei Header-Informationen, die das Betriebssystem braucht, um sie zu starten.
Typisch: hello.c â 100 Bytes · hello â 16.000 Bytes (auf macOS sogar mehr).
printf ausgebenprintf("%d", ...) ausgebengcc kompilierenSie wissen jetzt, was in Ihrem Rechner steckt â und können ihm einfache Aufgaben geben.
NĂ€chste Woche: Variablen â wir lernen, dem Computer Werte zu merken zu geben.
Probiert die Aufgaben zuerst selbst â die Lösungen sind zum Vergleichen, nicht zum Abschreiben.
| Aufgabe | Passwort |
|---|---|
| Aufgabe 1 | hallo |
| Aufgabe 2 | visit |
| Aufgabe 3 | kunst |
| Aufgabe 4 | rechnen |
| Aufgabe 5 | cpu |
| Aufgabe 6 | hardware |
| Aufgabe 7 | compiler |