Die Programmiersprache C
Kapitel 1: Das erste Programm

Hallo Welt!

Wie in vielen Tutorials zu Programmiersprachen üblich, will ich, dass unser erstes Programm ein Hallo-Welt-Programm wird. Ziel eines solchen ist es, eine einfache, stupide Textausgabe mit dem Inhalt "Hallo Welt!" zu erzeugen. An diesem Programm werden wir dann die ersten Erkenntnisse gewinnen.

Für den Lernerfolg ist es entscheidend, dass du die Beispiele, die ich hier gebe, abtippst und auch ausführst. Ein einfaches Kopieren-und-Einfügen bringt in der Regel gar nichts, zumal die Quelltexte ja doch eher kürzerer Natur sind. Am Ende vieler Kapitel habe ich auch Übungsaufgaben bereit gestellt, die das besprochene wiederholen, den Stoff vertiefen und auch deine Kenntnisse erweitern sollen. Ich rate dringend zur Bearbeitung der Übungen!

Legen wir aber nach diesen lehrerhaften, weisen Worten, sofort los: Öffne nun den Editor deines Vertrauens und gib bitte den folgenden Quellcode genau so ein, wie dargestellt (selbstverständlich ohne die Zeilennummern, die dienen nur der Orientierung):
Listing hallowelt.c

001 #include <stdio.h>
002 int main(void)
003 {
004   printf("Hallo Welt!\n");
005   return 0;
006 }
Speichere dein Programm, merke dir aber bitte unbedingt den Speicherort (das kann z. B. C:\Dokumente und Einstellungen\[benutzer]\Eigene Dateien\ unter Windows oder /home/[benutzer]/Dokumente/ unter Linux sein) und am Besten noch den Dateinamen. Du kannst den Namen deiner Datei prinzipiell beliebig wählen, es wird nur dringend geraten, dass du die Dateiendung .c verwendest, also z. B. hallowelt.c. Einige Compiler bestehen sogar auf diese Dateiendung.

Dein Programm muss nun übersetzt werden. Rufe dazu eine Konsole (oder Terminal oder Eingabeaufforderung) auf. Bist du mit der Verwendung einer Konsole noch nicht vertraut, lies bitte die kurze Einführung für dein entsprechendes Betriebssystem zuerst: Microsoft WindowsLinux und/oder Mac

Wechsle zu allererst ins Arbeitsverzeichnis, also dahin, wo du dein Programm gespeichert hast (darum solltest du das eben merken). Arbeitest du unter Linux, gib also z. B. cd /home/bla/blubb ein. Dort angekommen, kannst du dein Programm sofort übersetzen lassen. Je nach Compiler lautet der Befehl ein klein wenig anders. Benutzt du MinGW unter Windows, gib bitte folgendes ein (unter der Annahme, dein Programm heißt hallowelt.c):
gcc hallowelt.c
Unter Linux genügt der Befehl
cc hallowelt.c
Dabei sind gcc bzw. cc die C-Compiler, d. h. die Programme, die deinen Quelltext übersetzen. Sofern du alles richtig gemacht hast, kommt keine Fehlermeldung und dein Programm ist übersetzt.

Im Arbeitsverzeichnis sollte eine neue Datei entstanden sein: unter Windows oft a.exe oder a.out, unter Linux und Mac normalerweise a.out (mit dir unter Windows bzw. ls unter Linux und Mac kannst du den Inhalt des Verzeichnisses sehen).
Nach dem Compilieren
Das ist dein erstes C-Programm, das du auch ausführen kannst: tippe dazu den Namen der neu entstandenen Datei in die Konsole ein (unter Linux stellst du ein "./", ohne die Anführungszeichen, voran), und bestätige mit [Enter]: Die Ausgabe Hallo Welt! erscheint auf dem Bildschirm:
Nach dem Compilieren

Analyse: "Hallo Welt!"

Nachdem wir unser erstes Programm geschrieben, compiliert und ausgeführt haben, sollten wir uns nun damit beschäftigen, was wir überhaupt getan haben. An dieser Stelle sind unsere Kenntnisse leider noch nicht genügend ausgereift, um einen tatsächlichen Einblick zu bekommen welche Zeile welche konkrete Bedeutung hat. Ich werde mich daher kurz halten. Hier nochmal der Quellcode, so musst du nicht immer so weit hoch scrollen:
Listing hallowelt.c

001 #include <stdio.h>
002 int main(void)
003 {
004   printf("Hallo Welt!\n");
005   return 0;
006 }

In Zeile 001 haben wir #include <stdio.h> geschrieben. Diese Anweisung wird uns noch einige Male begegnen. Die Raute # signalisiert eine so genannte Präprozessor-Direktive. Diesem neuen Wort stellen wir uns so furcht- und ahnungslos wie nur möglich, nehmen diese Information aber auch nur hin, denn an dieser Stelle den Präprozessor zu erklären führt viel zu weit. Es folgt das Schlüsselwort include, das dem Präprozessor sagt, er soll die Datei in spitzen Klammern laden, nämlich stdio.h. In dieser Header-Datei (daher die Endung .h) sind Funktionen gespeichert, die für die Standard-Ein- und -Ausgabe (daher stdio: standard input/output) zuständig sind. Die Standard-Ausgabe ist in den meisten Fällen der Monitor, die Standard-Eingabe die Tastatur. Den Grund für das Einbinden dieser Header-Datei erfahren wir, wenn wir Zeile 005 besprechen.

Beliebter Anfänger-Fehler: bitte verwechsele nicht stdio.h mit studio.h, das eine hat mit dem anderen nichts zu tun: std steht für Standard, io für input und output!

Zeile 003 ist einerseits verwirrend, andererseits in höchstem Grade wichtig. Die main-Funktion ist diejenige Funktion, die als erste ausgeführt wird, wenn das Programm aufgerufen wird. Der Rumpf der main-Funktion wird umschlossen von dem Paar geschweifter Klammern in den Zeilen 004 und 007. Alles zwischen diesen geschweiften Klammern { und } ist Bestandteil der main-Funktion (hier nur zwei Zeilen). Was es mit dem int vor dem main und dem (void) nach dem main auf sich hat, erfahren wir, wenn wir uns etwas eingehender mit Funktionen befassen. Hier führt es wieder mal zu weit.

Die Zeile 005 ist von zentraler Bedeutung für uns. Sie beginnt mit printf. Diese Funktion sagt: gib das, was in den Klammern () übergeben wird, formatiert aus (daher das -f am Ende: es handelt sich um eine formatierte Ausgabe). Das Argument der Funktion, also das, was in den runden Klammern () übergeben wurde, ist in unserem Fall "Hallo Welt!\n". Die Bedeutung davon ist: gib den Text Hallo Welt!, gefolgt von einem Zeilenumbruch (das ist das \n, n wie new line), aus. Ohne den Zeilenumbruch sähe unsere Ausgabe etwas komisch aus, wir sollten uns das \n so schnell wie möglich angewöhnen. Bitte beachte, dass der gesamte Text, mitsamt Anweisung für den Zeilenumbruch, in Anführungszeichen stehen muss! Das Ende von Zeile 005 ist ein Semikolon (;). Das bedeutet, dass der Befehl (hier printf()) beendet ist und ein neuer Befehl kommt.

Beliebter Anfänger-Fehler: ein vergessenes Semikolon führt zu einer Fehlermeldung. Das ist mit Abstand der häufigste Fehler, den man beim Programmieren machen wird.

Zu guter Letzt noch Zeile 006: diese Zeile hängt eng mit dem int von Zeile 003 zusammen, soll daher hier noch nicht eingehend erklärt werden. Vorerst geben wir uns damit zufrieden, dass es sich um den Befehl handelt, dass das Programm zurückmelden soll: "Alles erfolgreich ausgeführt, Programm ohne Probleme beendet!"

Übungen zu Kapitel 1

Bitte bearbeite nun die Übung zu diesem Kapitel, um dein Wissen und Verständnis zu prüfen. Danach kannst du mit Kapitel 2 fortfahren. Solltest du bei der Übung auf Probleme stoßen, kannst du einerseits im Forum, andererseits per Mail Fragen stellen.