Übungsaufgaben
Zehn Übungen zum Klicken, Zuordnen, Nachverfolgen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung; wenn du nicht weiterkommst, helfen dir die gestuften Tipps.
Jedes C-Programm besteht aus denselben Bausteinen. Ordne jedem Baustein seine Aufgabe zu.
#include für den Programmstart zu halten, weil es oben steht. Gestartet wird aber immer in main — egal, wie viele Zeilen davor stehen. \n ist kein Befehl, sondern ein Steuerzeichen im Text, das erst bei der Ausgabe wirkt.#, und was macht return in anderen Sprachen?/* … */ und // sind beides Kommentare — der eine endet erst bei */.Beim Befehl gcc wetter.c -o wetter passiert mehr, als man sieht. Gib die fehlenden Fachbegriffe an — ein Wort bleibt übrig.
Zuerst ersetzt der jede #include-Zeile durch den Inhalt der Header-Datei. Dann prüft der die Syntax und übersetzt den Text in Maschinencode; es entsteht eine (wetter.o). Der fügt den Maschinencode von printf aus der Bibliothek hinzu. Am Ende liegt die wetter vor, die du mit ./wetter startest.
printf dazu..o steht für „object“ — das Zwischenergebnis des Compilers.Fünf Behauptungen rund um das Übersetzen. Nenne jeweils, ob sie stimmt.
gcc ist nur eine Datei entstanden, ausgeführt wurde noch nichts. Wer danach den Quelltext ändert und nur ./wetter tippt, sieht weiterhin das alte Verhalten../name).Lina schreibt ein Programm uhr.c. Beim ersten Übersetzen meldet gcc einen Fehler. Stelle ihren Arbeitsablauf vom Schreiben bis zur richtigen Ausgabe in der richtigen Reihenfolge dar.
./uhr gehört ans Ende — vor dem zweiten Übersetzen würde es noch gar keine Datei uhr geben, weil der erste Versuch gescheitert ist.Jede Karte beschreibt einen Fehler in einem sonst korrekten Programm. Ordne jede Karte der Station ein, an der der Fehler auffällt.
mian ist die Falle: Syntaktisch ist das eine völlig korrekte Funktion, deshalb meckert der Compiler nicht. Erst der Linker merkt, dass es kein main gibt, und meldet undefined reference to `main'. Ein fehlendes \n oder ein zu großer Kommentar ist gar kein Fehler für gcc — das Programm läuft, gibt aber etwas anderes aus als geplant.#. Der Compiler prüft Schreibweise und Klammern.Das Programm der Schul-Mensa zeigt den Tagesplan an.
#include <stdio.h> int main(void) { printf("Mensa\n"); printf("Heute: "); printf("Nudeln\n\n"); printf("Preis: 3 Euro\n"); return 0; }
Bestimme, in welcher Zeile der Konsole der Text Preis: 3 Euro erscheint.
printf-Aufrufe = vier Zeilen. Eine neue Zeile entsteht aber nur durch \n: „Heute: “ hat keins, deshalb klebt „Nudeln“ dahinter — und \n\n erzeugt eine Leerzeile.\n eine neue Zeile.\n.Das Programm ampel.c soll die Zeile Ampel: gruen ausgeben. Ergänze den Quelltext und die beiden Befehle in der Konsole.
#include <> int (void) { printf("Ampel: gruen"); return ; }
$ gcc -Wall -o $
ampel.c, hinter -o der Name der neuen Datei. Wer gcc ampel -o ampel.c tippt, bekommt im besten Fall eine Fehlermeldung — im schlechtesten überschreibt er seinen Quelltext. Beim Zeilenumbruch zählt die Richtung des Strichs: \n mit Backslash.-o heißt „output“: Dahinter steht, wie die erzeugte Datei heißen soll../.Das Programm der Pflanzenbewässerung soll vier Statuszeilen ausgeben, lässt sich aber nicht sauber übersetzen. Überprüfe den Code — drei Zeilen sind fehlerhaft.
Zwei Programme mit derselben Ausgabe — links kennst du die Sprache schon.
print("Guten Morgen") print("Klasse 9b")
#include <stdio.h> int main(void) { printf("Guten Morgen\n"); printf("Klasse 9b\n"); return 0; }
Vergleiche die beiden Sprachen und markiere alle Aussagen, die zutreffen.
main; printf gibt nur aus, was im Text steht — ohne \n kein Umbruch../gruss läuft?gruss.c das \n — und warum braucht Python keins?Lina übersetzt ihre Uhr. Zuerst gibt uhr.c den Text Version 1 aus. Nach dem zweiten Befehl ändert sie im Editor Version 1 in Version 2 und speichert.
$ gcc -Wall uhr.c -o uhr $ ./uhr ← A (uhr.c ändern und speichern) $ ./uhr ← B $ gcc uhr.c $ ./uhr ← C $ ./a.out ← D
Analysiere die Sitzung: Welche Version meldet sich bei A, B, C und D?
Version 1 ein, Enter prüft.- Ausgabe bei A
- Ausgabe bei B
- Ausgabe bei C
- Ausgabe bei D
uhr ist die alte Datei. Bei C wurde zwar übersetzt, aber ohne -o uhr. Dann nennt gcc das Ergebnis a.out und lässt uhr unverändert. Die neue Version steckt also nur in a.out../…: Wann wurde genau diese Datei zuletzt erzeugt — und aus welchem Quelltext?-o schreibt gcc immer in die Datei a.out.