C-Programmierung: Über dieses Buch

Aus Wikibooks

Formatierung[Bearbeiten]

In diesem Dokument werden folgende Formatierungen unterschieden. Der Quelltext wird auf die folgende Weise dargestellt:

#include <stdio.h>
#include <stdlib.h>

int main()
{
        int *ptr;

        ptr = malloc(sizeof *ptr);

        if (!ptr) {
                printf("Speicher kann nicht bereitgestellt werden\n");
        } else {
                printf("Speicher bereitgestellt\n");
                *ptr = 70;
                free(ptr);
        }
  
        return EXIT_SUCCESS;
}

Bitte beachten Sie, dass die Zeilennummern nicht zum Programm dazugehören, sondern lediglich zur einfacheren Programmbesprechung dienen. Momentan gibt es noch keine Möglichkeit, die Beispielprogramme herunterzuladen. Wenn möglich, soll sich dies aber in Zukunft ändern.

Ausgaben eines Programms auf dem Bildschirm werden wie folgt dargestellt:

Speicher bereitgestellt

Neue wichtige Begriffe werden durch kursive Schrift hervorgehoben.

Was benötige ich, um dieses Buch zu lesen?[Bearbeiten]

Vorkenntnisse im Programmieren sind nicht erforderlich. Allerdings sollten Sie den Umgang mit Ihrem Betriebssystem sicher beherrschen. Es wird beispielsweise nicht mehr erklärt, was ein Editor ist und wie er funktioniert. Außerdem sollten Sie sich schon etwas mit der Hardware des Computers beschäftigt haben. Beispielsweise wird in diesem Buch nicht mehr erklärt, was eine Binärzahl (Dualzahl) ist oder was man unter dem Arbeitsspeicher versteht. Sie werden allerdings feststellen, dass die Anforderungen an Ihre Vorkenntnisse relativ niedrig gehalten werden.

Außerdem benötigen Sie natürlich einen Compiler, um die Beispiele zu übersetzen und selbst zu üben. Im Anhang finden Sie eine Liste von C-Compilern. Für die meisten Betriebssysteme finden Sie dort auch kostenlose Open-Source- oder Freeware-Software.

Auch die meisten C++-Compiler können C-Programme übersetzen. Allerdings unterscheiden sich C++ und C in einigen Punkten. Wir werden versuchen, auf diese Unterschiede einzugehen. Es kann jedoch sein, dass dies nicht vollständig geschieht. Unter Umständen wird das Erlernen von C erschwert, wenn der von Ihnen verwendete Compiler ein anderes Verhalten zeigt als das hier beschriebene.

Der C-Standard unterscheidet außerdem zwischen hosted environment und freestanding environment. Ein Programm, das in einem Freestanding Environment läuft, muss nicht von einem Betriebssystem aufgerufen werden, und der Startpunkt des Programms ist nicht festgelegt. (Wie wir im nächsten Kapitel noch sehen werden ist der Startpunkt in einem Hosted Environment immer main.) Außerdem ist es implementierungsabhängig, welche Funktionen der Standardbibliothek verfügbar sind. Freestanding Environments sind beispielsweise Embedded Systems oder das Betriebssystem selbst. Da diese Umgebungen kaum geeignet sind, um das Programmieren mit C zu erlernen, werden wir in diesem Buch nur auf Hosted Environments eingehen und auch die Unterschiede nicht weiter erörtern. Wir wollen an dieser Stelle lediglich aufzeigen, dass es einen Unterschied gibt, falls Sie im Zusammenhang mit C auf diesen Begriff stoßen.

Verwendete Begriffe in diesem Buch[Bearbeiten]

Viele Begriffe lassen sich ins Deutsche unterschiedlich übersetzen. Andere Begriffe werden überhaupt nicht übersetzt, weil das englische Wort auch in der deutschen Sprache gebräuchlich ist. In diesem Buch werden wir uns weitestgehend an die deutschsprachige zweite Auflage von "The C Programming Language" von Brian Kernighan und Dennis Ritchie halten, übersetzen jedoch einige Begriffe nicht, wenn diese auch in der deutschen Sprache verbreitet sind. Hier ist eine (unvollständige) Liste der in diesem Buch verwendeten Begriffe und eine kurze Begründung, warum diese verwendet worden sind:

  • Compiler: In der deutschsprachigen zweiten Auflage von "The C Programming Language" wurde der Begriff "Übersetzer" verwendet. "Compiler" wird in diesem Zusammenhang allerdings wesentlich häufiger gebraucht und eine Übersetzung des Begriffs erscheint eher künstlich.
  • Deklaration und Definition: Beide Begriffe werden streng unterschieden.
  • Vereinbarung: Wird wie in der deutschsprachigen Auflage von "The C Programming Language" als Überbegriff von Deklaration und Definition verwendet
  • Array: Die gebräuchlichsten Worte hierfür sind Feld, Vektor und Array. Wir verwenden den Begriff Array, da er im ANSI-C-Standard so verwendet wird und auch in der deutschen Sprache ebenfalls gebräuchlich ist.
  • Vorrang: Momentan wird noch der Begriff Rangfolge verwendet. Dies soll aber geändert werden, um in Zukunft der deutschsprachigen Ausgabe von "The C Programming Language" zu entsprechen.
  • Umwandlungszeichen: Für das i bzw. f in %i bzw. %f usw. wird das Wort Umwandlungszeichen wie in der deutschsprachigen Ausgabe von K&R benutzt. Der Standard spricht von einem conversion modifier was wörtlich übersetzt Konvertierungsmodifikator heißen würde, sich im Deutschen aber seltsam anhört.

Alle hier aufgelisteten Begriffe werden natürlich noch im Folgenden erklärt. Diese Liste soll nur aufzeigen, warum bestimmte Begriffe hier so und nicht anders verwendet worden sind.

Zusammenfassung des Projekts[Bearbeiten]

  • Zielgruppe: Das Buch richtet sich an Programmieranfänger. Erklärungen sollen deshalb möglichst leicht verständlich sein.
  • Projektumfang: Dieses Buch beschäftigt sich ausschließlich mit ANSI-C. Erweiterungen von C für ein bestimmtes Betriebssystem sollen hier keine Berücksichtigung finden, sondern vielmehr in einem eigenen Buch behandelt werden.
  • Themenbeschreibung: Einführung in ANSI-C.
  • Lernziele: Programmieren mit ANSI-C zu erlernen.
  • Abgrenzung zu anderen Wikibooks:
    • Das Buch ist keine Beschreibung des C-Standards. Dies ist Aufgabe des Buchs C-Sprachbeschreibung.
    • Außerdem sollen Algorithmen und Datenstrukturen nicht ausführlicher beschrieben werden. Diese Aufgabe übernimmt das Buch Algorithmen und Datenstrukturen in C, das auf die Grundlagen aufbaut, die in diesem Buch geschaffen wurden.
  • Policies:
    • Kommentare und Anregungen sind erwünscht. Diese sollten dann aber konkrete Verbesserungsvorschläge erhalten.
    • Auch Verständnisfragen von Anfängern zu diesem Buch sind erwünscht. Diese bitte auf die Diskussionsseite der entsprechenden Seite stellen.
  • Aufbau des Buches: Siehe Inhaltsverzeichnis. Allerdings kann das eine oder andere Kapitel noch hinzukommen oder später wieder wegfallen.