Kategorie: C

  • C programmieren

    Logo der Programmiersprache C: ein großes weißes C auf einem blauen achteckigen Hintergrund.

    C ist eine universelle Programmiersprache, die 1972 entwickelt wurde, immer noch sehr populär ist und ständig weiterentwickelt wird. Die Programmiersprache ist grundlegend im Bereich der Informatik und Bestandteil eines jeden Informatik-Studiums.

    C wird für die Entwicklung von Betriebssystemen, Datenbanken aber auch für Endanwender-Programme verwendet.

    Wer C lernt erwirbt damit zugleich eine gute Grundlage für andere Programmiersprachen und erhält Einblicke in die Funktionsweise des Computers.

    Exkurs: C, C++, C# klingt ähnlich, tatsächlich aber drei unterschiedliche Programmiersprachen.
    C++ wurde im Jahr 2000 als eine Erweiterung von C entwickelt. Beide Sprachen haben fast die gleiche Syntax. Der Hauptunterschied zwischen C und C++ ist, dass C++ Klassen und Objekte unterstützt, während C dies nicht tut.
    C# ist eine vollständig objektorientierte Sprache. Sie wurde von Microsoft entwickelt, um eine einfache und sichere Programmierung zu ermöglichen, und bietet erweiterte Funktionen wie Garbage Collection.

    Voraussetzungen

    Zum Erlernen von C brauchen Sie keine vorausgehenden Programmierkenntnisse. Um C Programme auf Ihrem Computer zu schreiben und auszuführen benötigen Sie lediglich

    • einen Editor
    • einen Compiler

    Später ist noch ein Debugger hilfreich.

    Für Ihre C-Programme und Dateien sollten Sie ein eigenes Verzeichnis auf Ihrem Computer erstellen, z.B. „c-learning“ oder „c-projects“.

    Exkurs: Compiler und Debugger
    Ein Programm erstellt man im einfachsten Fall aus einer Textdatei. Der Compiler übersetzt den Inhalt dieser Datei in ein ausführbares Programm. Ein Debugger ist ein Programm, das bei der Fehlersuche im Programmcode hilft.

    Editor

    Für den Anfang genügt ein einfacher Texteditor, wie ihn z.T. die Betriebssysteme mitbringen. Komfortabler schreibt man Programme aber in einer IDE (Integrated Development Environment), wie z.B. Visual Studio Code (für alle Betriebssysteme) oder Xcode auf dem Mac.

    Einfache Editoren:

    • Linux: Texteditor
    • Mac: CotEditor
    • Windows: Editor

    Für Menschen mit Augenproblemen empfehlen wir wegen der guten Anpassbarkeit das Programm Visual Studio Code (VSCode). Eine Anleitung für Installation und Einrichtung finden Sie hier:

    VSCode steht für Linux, Mac und Windows zur Verfügung.

    Auf dem Mac bringt das Programm Xcode alle Tools mit, die Sie für C benötigen. Sie können es kostenfrei über den App-Store installieren.

    Tips zur konkreten Konfiguration folgen weiter unten.

    Hinweis: Oftmals werden auch die IDEs C::Make, NetBeans oder Eclipse empfohlen. Wir beschränken uns aber hier auf VSCode, der besseren Lesbarkeit wegen.

    Einrichtung auf Linux Betriebssystemen

    Am einfachsten ist der Start auf einem Linux- Betriebssystem wie Fedora, Ubuntu oder Linux-Mint. Hier ist ein Compiler (gcc = GNU Compiler Collection) bereits standardmäßig vorhanden. Sie können dies in einem Terminal prüfen mit der Eingabe von

    gcc --version

    Im Programm TextEditor wählen Sie die Formatierung „C“ , erstellen eine neue Datei mit der Endung .c und speichern sie in dem zuvor angelegten Verzeichnis. Für das erste obligatorische „Hello-world“- Programm also die Datei hello.c .

    Der Editor "Texteditor" unter Ubuntu, der Dateiname "hello.c" in der linken Seitenleiste; vom unteren Fensterrand noch oben ist ein Auswahlmenü ausgeklappt mit den Optionen für die Programmiersprache, C ist ausgewählt.
    Ubuntu, Texteditor

    In VSCode öffnen Sie zunächst Ihr Verzeichnis (Open Folder) und erstellen dann eine Datei.

    VSCode Startfenster
    VSCode Startfenster

    Drei Wege führen zu einer neuen Datei:

    • entweder über das Datei Symbol rechts neben dem Verzeichnisnamen,
    • mit der Tastenkombination Alt + Ctrl + N oder
    • über das Menü „File“.

    VSCode schlägt dann automatisch empfohlene Erweiterungen für die verwendete Programmiersprache vor, soweit diese noch nicht vorhanden sind. Hier die Erweiterung „C/C++ Extension Pack“. Nach einem Klick auf „Install“ sind Sie startklar.

    VSCode mit neu angelegter Datei "hello.c", am unteren Fensterrand ein PopUp-Fenster mit der Aufforderung zur Installation empfohlener Erweiterungen.
    VSCode

    Nun füllen Sie die hello.c Datei mit dem nachstehenden Inhalt und speichern.

    # include <stdio.h>
    
    int main() {
        printf("hello world in c\n");
        return 0;
    }

    Bisher ist das einfach nur Text, den man als „Quellcode“ bezeichnet. Damit er zu einem ausführbaren Programm wird, muss ein Compiler ihn für den Computer übersetzen. Dies können Sie entweder selbst in einem Terminal-Fenster anstoßen oder automatisiert in VSCode starten.

    Im Terminal

    Öffnen Sie ein neues Terminal-Fenster am Speicherort Ihrer hello.c Datei. Dies geht am schnellsten über das Kontextmenü. Klicken Sie mit der rechten Maustaste auf das Verzeichnis, das die Datei enthält, also z.B. c-learning und wählen Sie „Open in Terminal“.

    Der Ubuntu Datei-Manager, ein Kontext-Menü ist auf dem Verzeichnis "c-learning" geöffnet.
    Ubuntu Datei-Manager

    Im Terminal können Sie sich mit dem Befehl

    ls

    anzeigen lassen, welche Dateien sich im Verzeichnis befinden. Sie kompilieren die Datei mit dem Befehl:

    gcc hello.c

    Tip: Um nicht den Dateinamen in voller Länge eingeben zu müssen, nutzen Sie die automatische Textvervollständigung des Terminals. Dazu geben Sie die ersten Buchstaben des Dateinamens ein und betätigen die Tab-Taste (hier also „he“ und dann Tab-Taste drücken).

    Ihr Verzeichnis beinhaltet nach dem kompilieren eine weitere Datei mit dem Namen a.out.  Das ist das neue hello-world Programm, das Sie auch schon starten können.

    Besser ist es, einen eigenen Namen für das Programm zu vergeben. Dazu wird das Flag  -o, gefolgt vom Programmnamen an den Befehl zum Kompilieren angehängt:

    gcc hello.c -o hello
    Ein Ubuntu Terminal-Fenster mit den Befehlen zum anzeigen, kompilieren und ausführen der C-Datei hello.c.
    Ubuntu Terminal

    Das fertige Programm heißt nun also „hello“ – ohne Dateiendung. Sie starten es im Terminal ganz einfach durch Voranstellen eines Punktes und eines Schrägstriches vor den Programmnamen:

    ./hello

    Die printf – Anweisung, die wir oben im Code eingebettet haben, sorgt dafür, dass der Text in den anschließenden Klammern auf dem Bildschirm ausgegeben wird.

    In VSCode

    VSCode übernimmt alle erforderlichen Schritte – Kompilieren und Starten des fertigen Programmes – für Sie. Über die dreieckige Schaltfläche rechts am oberen Fensterrand starten Sie Compiler und Debugger.

    Verwenden Sie dann die erste Option des Auswahl-Menüs:

    In VSCode ist die Hello.c Datei geöffnet. Oben rechts am Fensterrand eine dreieckige Schaltfläche zum Start des Compilers.
    Ubuntu, VSCode

    Das Ergebnis sehen Sie im unteren Fensterbereich – einem integrierten Terminal.

    Anders als beim Kompilieren im Terminal des Betriebssystems, müssen Sie hier keinen Namen für das Programm vergeben, es wird automatisch nach dem Namen der zugrunde liegenden .c Datei benannt.

    Einrichtung auf dem Mac

    Für den Mac gibt es das Programm Xcode, das Sie kostenfrei über den App-Store installieren können. Xcode ist eine sog. Entwicklungsumgebung (IDE), bei deren Installation wird das Paket „Command Line Tools“ und damit auch der Compiler „clang“ gleich mitgeliefert. Zugegeben: beim ersten Öffnen des Programms wird man vom Funktionsumfang ein wenig erschlagen. Das gibt sich aber schnell, sobald Sie Ihr erstes Projekt erstellt haben. Xcode hat den Vorteil, gut auf die Bedienungshilfen des Mac abgestimmt zu sein.
    Wie Sie Xcode anpassen können, lesen Sie in unserem Beitrag zur Programmiersprache Swift:

    Alternativ können Sie die Apple Command Line Tools auch separat mit dem Paketmanager „Homebrew“ oder über das Terminal installieren. Dies benötigt nicht so viel Speicherplatz wie Xcode (5,56 GB).
    Eine ausführliche Anleitung bietet die Webseite FreeCodeCamp

    Ein C-Projekt in Xcode

    In Xcode erstellen Sie zunächst ein neues Projekt über den Start-Assistenten, über das Menü „File > New > Projekt“ oder mit der Tastenkombination Cmd + Shift + N. 

    • Plattform: macOS
    • Application: Command Line Tool
    • Projektname: c-learning (frei wählbar, bis auf einige Sonderzeichen)
    • Team: None
    • Organisation: com.example 
    • Bundle-Identifier: wird automatisch ergänzt
    • Language: C
    Xcode auf dem Mac, Start-Assistent mit der Option "Create new Project".
    Mac, Xcode Start


    Xcode erstellt automatisch eine erste C-Datei mit dem Namen main.c:

    Xcode auf dem Mac mit einem neuen C-Projekt, im Editor ist das Programm "main.c" geöffnet.
    Mac, Xcode

    Sie starten das Programm entweder über das Dreieck-Symbol am oberen Fensterrand, über das Menü „Product > Run“ oder per Tastenkombination Cmd + R. Über das Menü „Product > Build For“ oder nur über „Products > Build“ erstellen Sie eine Programmdatei. Die Ausgabe erscheint im unteren Fensterbereich 

    Xcode auf dem Mac mit einem C-Projekt, der Editorbereich zeigt das Hello-world-Programm. Im ausgeklappten Menü "Product" ist die Option "Build For" ausgewählt.
    Mac, Xcode

    Das neue C-Program landet nicht im selben Ordner, wie oben für VSCode gezeigt, sondern in einem speziellen Build-Folder. Den finden Sie über das Menü „Product > Show Build Folder in Finder“.

    Im Finder auf dem Mac wird das verzeichnis mit dem ausführbaren C-Programm gezeigt.
    Mac, Finder


    Das eigentliche Programm „c-learning-mac“ können Sie von hier aus in einem separaten Terminal (des Betriebssystems) starten. Am einfachsten öffnen Sie ein Terminal-Fenster beim Ordner „Debug“ über das Kontextmenü: Klicken Sie mit der rechten Maustaste (oder bei gedrückter option-Taste) auf den Ordner und wählen Sie die Option „Dienste > Neues Terminal beim Ordner“.
    Wie oben für Linux beschrieben, stellen Sie dem Programmnamen einen Punkt und einen Schrägstrich voran, um es zu starten.

    Terminal auf dem Mac mit dem ausführbaren C-Programm
    Mac Terminal

    Mit CotEdit und Terminal auf dem Mac

    CotEdit ist ein einfacher Editor, den Sie aus dem Mac App-Store laden können. Er bringt Syntax-Highlighting für alle gängigen Programmiersprachen mit, die Schrift im Editor lässt sich gut anpassen und er ist für VoiceOver zugänglich.
    Nach dem Öffnen des Editors befinden Sie sich in einer leeren Datei. Über das Auswahlmenü am oberen rechten Fensterrand wählen Sie die Programmiersprache. Den Namen für Ihre C-Datei vergeben Sie beim Speichern über das Menü „Ablage > Sichern“.

    Ein Fenster des Code-Editors "CotEditor" auf dem Mac mit einem Hello-World -C-Programm.
    CotEditor auf dem Mac

    Anschließend öffnen Sie das Verzeichnis mit der C-Datei in einem Terminal, wie oben beschrieben.
    Sie rufen den Compiler auf mit dem Befehl clang , gefolgt vom Dateinamen, dem Flag -o und dem (frei wählbaren) Namen für Ihr neues Programm:

    clang hello-mac-2.c -o hello-mac-2
    clangist hier also der Befehl zum Kompilieren
    hello-mac-2.c der Name der Quelltext-Datei,
    -odas Flag, um einen eigenen Programmnamen zu vergeben und
    hello-mac-2der Name des fertigen Programms

    Das Programm können Sie anschließend in einem Terminal ausführen durch Voranstellen von ./ vor den Programmnamen. Auch im Mac-Terminal zeigt der Befehl ls die Dateien im geöffneten Verzeichnis an.

    Einrichtung unter Windows

    Windows selbst hat keinen eigenen C-Compiler.
    Es gibt unterschiedliche Wege, C-Programme unter Windows zu erstellen und auszuführen:

    • im Windows Subsystem für Linux (WSL)
    • Cygwin, eine Emulations- Schicht zwischen Linux-Compiler und Windows 
    • MinGW: mit einem „umgebauten“ Linux-Compiler gcc
    Folie mit einer Darstellung des WSL

    WSL

    Mit dem WSL stellt Windows ein virtuelles Linux-Betriebssystem innerhalb von Windows zur Verfügung. Einmal eingerichtet, können damit alle Linux-Anwendungen genutzt werden, also auch der gcc-Compiler. Sie erstellen hier aber native Linux Anwendungen, die nicht unter Windows laufen, sondern nur im WSL oder auf einem Linux-Rechner.

    MinGW-w64

    MinGW MinGW-w64 enthält den für Windows „umgebauten“ Linux-Compiler gcc. MinGW hat nur einen eingeschränkten Funktionsumfang, der für umfangreichere C-Programme nicht ausreicht. Download von der Seite:  SourceForge. Die Homepage des Herstellers verweist u.a. auf die Projekte Cygwin und MSYS2.

    Cygwin

    Cygwin stellt eine Kompatibilitätsschicht bereit, mit der Linux-Programme unter Windows ausgeführt werden können. Hauptbestandteil ist eine DLL-Datei (DLL: Dynamic Link Library), in der sich für Windows übersetzte Linux-Befehle (sog. Systemaufrufe) befinden.

    Die Installation erfolgt mittels Setup-Programm von der Herstellerseite Cygwin. Während der Installation können Sie

    • den Installationsort so belassen wie vorgeschlagen
    • einen mirror wählen, z.B. „kernel.org“ oder einen Server in Ihrer Nähe
    • die Anwendungen wählen, die mitinstalliert werden sollen: make, gcc-core, gcc-g++, gdb
    • für alle die jeweils aktuelle Version wählen

    Nach der Installation muss noch die Umgebungsvariable(Environment Variable) für gcc gesetzt werden. Die Vorgehensweise entspricht der weiter unten erklärten für MSYS2.

    MSYS2

    MSYS2 ist eine Softwaredistribution und Erstellungsplattform, die es erlaubt, Software aus der Unix (Linux)-Welt auf Windows zu portieren. Es unterstützt, zusammen mit der Compiler-Portierung Mingw-w64, die Übersetzung von Unix-Quelltext in native Windows-Programme. MSYS2 bringt einen eigenen Paket-Manager mit, der es ermöglicht, nicht nur den Compiler gcc, sondern noch zahlreiche weitere Linux-Programme unter Windows zu benutzen.

    Die Setup-Datei erhalten Sie über die Herstellerseite MSYS2. Sie starten die Installation per Doppelklick, ein Assistent leitet Sie durch die weiteren Schritte.

    Installationsassistent von MSYS2, Start
    MSYS2 Installationsassistent

    Die vorgeschlagenen Einstellungen können Sie so beibehalten. In das Verzeichnis, das zu Anfang vorgegeben wird, werden auch später alle weiteren Anwendungen installiert.

    Anschließend öffnet sich ein Terminal-Fenster.

    Über das „Startmenü > Alle Apps“ finden Sie den Ordner mit den installierten Komponenten. Jeder Eintrag öffnet eine Terminal-Umgebung. Nach der Installation ist das letzte aus der Reihe unten geöffnet.

    MSYS2 im Windows Startmenü
    MSYS2 im Windows Startmenü

    Um das MSYS2 zu aktualisieren verwenden Sie im bereits geöffneten Terminal-Fenster (MSYS-UCRT64) den nachstehenden Befehl und bestätigen mit y.

    pacman -Suy

    Exkurs:

    pacman Grafig mit Arch-Linux Logo

    Pacman ist ein Paket-Manager und stammt von der Linux Distribution Arch-Linux. Pacman ist vergleichbar mit dnfunter Fedora, aptunter Ubuntu oder yumunter OpenSuse.

    Ein Paket-Manager ist ein Programm, mit dem man Anwendungsprogramme (genauer Programm-Pakete) auf dem Computer verwaltet, installiert, aktualisiert oder entfernt. Der zugehörige Befehl lautet dementsprechend ebenfalls pacman , gefolgt von verschiedenen Optionen (flags).
    So führt z.B. der Befehl (im Terminal) pacman -S eine Installation durch, mit pacman -R werden Programmpakete entfernt.

    • s : bewirkt eine Suche.
    • Ss: damit wird ein Paketname in der Paketdatenbank gesucht,
    • y : bewirkt eine Aktualisierung der Paketdatenbank (falls es tatsächlich Änderungen gibt)

    Weitere Informationen über die Befehle und Flags finden Sie auf der Webseite  Arch-Linux-Wiki – Pacman .

    Im Anschluss müssen Sie nun noch den Compiler gcc oder besser die Basis- Entwicklerwerkzeuge installieren. Eine Übersicht über die zur Verfügung stehenden Compiler-Pakete finden Sie auf der Herstellerseite im Bereich „Package index“ mit dem Suchbegriff „gcc“

    Screenshot der MSYS2 Herstellerseite mit einer Übersicht der gcc-Pakete.
    Übersicht der gcc-Pakete

    Sie installieren den gcc-Compiler im Terminal „MSYS2-MINGW64“ mit dem Befehl:

    pacman -S mingw-w64-ucrt-x86_64-gcc

    Oder (empfohlen) die Basis Entwicklerwerkzeuge insgesamt, im Terminal „MSYS2-UCRT64“:

    MSYS2 Terminal mit dem Befehl zur Installation des Compilers
    MSYS2 Terminal

    Die neu installierten Tools befinden sich auf Ihrem Computer im Verzeichnis
    C:\msys64\ucrt64\bin. Das Verzeichnis entspricht jeweils der gewählten Terminal-Komponente des Startmenüs: also bei der Installation von gcc über „MSYS2-MINGW64“ finden Sie den Compiler im Verzeichnis C:\msys64\mingw64\bin.

    Windows Explorer mit den Unterverzeichnissen von MSYS2.
    MSYS2 Unterverzeichnisse im Explorer

    Damit der Compiler systemweit gefunden werden kann, muss die Umgebungsvariable PATH für das bin-Verzeichnis, das den Compiler enthält, hinzugefügt werden.

    Umgebungsvariable setzen

    1. Kopieren Sie den Pfad zum bin-Verzeichnis. Am einfachsten geht dies über das Kontextmenü: klicken Sie in der oberen Fensterleiste mit der rechten Maustaste hinter die Pfadangabe und wählen Sie „Adresse kopieren“
    Windows Explorer, beim Verzeichnis bin der msys2-Installation ist ein Kontextmenü geöffnet mit der Option "Adresse kopieren"
    Windows Explorer, Kontextmenü
    1. Öffnen Sie die Systemsteuerung, tippen Sie „env“ in das Suchfeld.
    Das Windows Startmenü mit dem Eintrag für die Systemsteuerung, im Suchfeld oben die Buchstaben "env".
    Systemsteuerung über das Startmenü finden

    Im sich öffenenden Dialogfeld „Systemsteuerung > Erweitert“ wählen Sie die Schaltfläche „Umgebungsvariablen“.

    1. Im Bereich „Benutzervariablen“ wählen Sie PATH und fügen über die Schaltfläche „Bearbeiten“ die zuvor kopierte Adresse ein.
    Windows Systemsteuerung, PATH bearbeiten
    Windows Systemsteuerung

    Alle Dialoge mit OK bestätigen.

    Die erfolgreiche Installation testen Sie im Terminal mit den Befehlen:

    gcc --version
    g++ --version
    gdb --version

    und erhalten die Ausgabe der jeweils aktuellen Versionen.

    Ein Fenster des Windows-Terminal, in der Eingabeaufforderung der Befehl zur Ausgabe der Compiler-Version.
    Windows Terminal

    Sie können dazu das reguläre Windows Terminal benutzen.

    Editor oder IDE

    Wie bereits oben dargestellt, ist Visual Studio Code eine gute Wahl. Der Editor „Editor“, der bei Windows schon im Standard enthalten ist, eignet sich nicht wirklich zum Schreiben von Programmcode.
    Nach dem Download des Installers von der Herstellerseite Visual Studio Code und Installation wie gewohnt per Doppelklick, entspricht die Einrichtung der oben für Linux beschriebenen.

    Sie benötigen die Erweiterung „C/C++ Extension Pack“ (s.o.) und können dann eine erste C Datei erstellen und kompilieren.

    VSCode unter Windows, Im Editor ist die hello.c Datei geöffnet, darunter im Terminal das Ergebnis der Ausführung.
    Windows, VSCode

    Ausblick

    Zum Lernen ist es egal, auf welchem Betriebssystem Sie arbeiten. Am unkompliziertesten sind die gängigen Linux-Distributionen, gefolgt vom Mac. Unter Windows ist der Aufwand für die Einrichtung etwas höher. Alternativen sind die Verwendung einer Virtuellen Maschine (Virtual Box) mit einem Linux Betriebssystem oder der Einsatz eines Docker Containers.

    Für den Produktiv-Einsatz sollten Sie immer auf dem Betriebssystem programmieren, auf dem auch das Programm später laufen soll.


    Online lernen

    • Für den Einstieg gut geeignet und eine unbedingte Empfehlung: w3schools
    • C Programmierkurs in Textform:  TU Chemnitz
    • Schon etwas älter, aber immer noch aktuell, anspruchsvoll aber sehr gut erklärt: Vorlesungsvideos der Uni Insbruck, Justus Piater (WS 2014/2015) auf YouTube
    • Anspruchsvoll: Vorlesungsvideos der Uni Freiburg, vorbildlich mit begleitenden Unterlagen:  Uni Freiburg – Informatik 2021
    • ein Buch lesen:

    Lengendäres Buch, unbedingt lesen! Zu finden über: GitHub

    • oder