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 | } |
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 Windows – Linux 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).
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:
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.