Syntax und Semantik

In der Sprachwissenschaft steht der Begriff "Syntax" für die Lehre vom Satzbau. Die "Semantik" befasst sich mit der Bedeutung von Zeichen. In der Programmierung gibt es auch solche Regelsysteme für das Bilden von Ausdrücken, Algorithmen usw.

Die grundlegende Syntax besteht aus einer Abfolge von Anweisungen. Jede Anweisung beschreibt einen eigenen Verarbeitungsschritt. Dabei wird üblicherweise jede Anweisung in eine eigene Zeile geschrieben und mit einem Semikolon beendet. In C gibt es verschiedene Typen von Anweisungen. Darunter fallen die Funktionsaufrufe, Deklarationen, Wertzuweisungen und Kontrollstrukturen.


Funktionsaufrufe

Funktionsaufrufe bestehen aus dem Namen der aufgerufenen Funktion und den dazugehörigen Argumenten.

Funktionsaufruf

printf("Hallo");

Deklaration

Variablendeklarationen bestehen aus einem "Datentyp" und einem "Bezeichner" (frei wählbarer Name). Variablen können bereits bei der Deklaration einen Wert erhalten.

Funktionsdeklaration

int zahl; // Deklaration ohne Wertzuweisung
int zahl = 123; // Deklaration mit Wertzuweisung

Funktionsdeklarationen bestehen wie die Variablen auch aus einem Datentyp und einem Bezeichner. Funktionen können aber optional beliebig viele Parameter erhalten, die als Variable mit Datentypangabe in Klammern hinter dem Funktionsnamen geschrieben werden. Die Funktionsanweisungen werden im "Codeblock" innerhalb eines geschweiften Klammerpaares angegeben.

Funktionsdeklaration

int main () {
 int a = 3; 
 int b = 5;
 int summe = a + b;
 printf("Die Summe ist: %i", summe);
}

Wertzuweisungen

Wertzuweisungen dienen dazu, einer Variable einen Wert zuzuweisen. Eine Zuweisung hat immer die gleiche Syntax: "Variable = Ausdruck;" Zuerst wird der Ausdruck ausgewertet und danach wird sein Wert in der Variable gespeichert.

Wertzuweisung

int a = 3;
int doppel = a * 2; 

Kontrollstrukturen

Kontrollstrukturen dienen der Flusskontrolle des Programms. Kontrollstruktur ist der Überbegriff für "Schleifen" und "Fallunterscheidungen", die den Programmablauf beeinflussen können.

Kontrollstruktur

int main() {
 int a = 4;
 if (a > 0) {
  printf("%i ist eine positive Zahl", a);
 }
}

Zeichen, Kommentare und Begrifflichkeiten

Programmiersprachen sind Schriftsprachen und benötigen Zeichen, die für sich alleine oder in einem Kontext für eine Bedeutung stehen.

Der Basiszeichensatz umfasst die Dezimalziffern:

  • 0123456789

Die Buchstaben des englischen Alphabets:

  • abcdefghijklmnopqrstuvwxyz
  • ABCDEFGHIJKLMNOPQRSTUVWXYZ

Die Sonderzeichen:

  • !"%/\()[]{}=?'#*+-_;,:.~|<>^

Das $-Zeichen gehört nicht zum Standardsatz.

Die Whitespace-Zeichen:

  • Leerzeichen, neue Zeile, neue Seite und Tabulator

Zusätzlich zu dem Basiszeichensatz gehört noch der Steuerzeichensatz:

Steuerzeichen Bedeutung
\a BEL (bell) - akustisches Warnsignal.
\b BS (backspace) - der Curser bewegt sich um eine Position nach links.
\f FF (formfeed) - initiiert einen Seitenvorschub (Druckerrelevant).
\n NL (newline) - der Cursor bewegt sich zum Anfang der nächsten Zeile.
\r CR (carriage return) - der Cursor bewegt sich zum Anfang der aktuellen Zeile.
\t HT (horizontal tab) - der Curser bewegt sich zum nächsten Tabulatorpunkt (8 Leerzeichen).
\v VT (vertikal tab) - der Curser bewegt sich zum nächsten vertikalen Tabulatorpunkt.
\0 Endmarkierung eines Strings (letztes Zeichen).
\" " wird ausgegeben (Displayausgabe für String o.Ä.).
´  wird ausgegeben.
\? ? wird ausgegeben.
\\ \ wird ausgegeben.
\xhh Ein Hexadezimalwert ausgeben (hh steht für den Hexwert)
\nnn Ein Oktalwert ausgeben (nnn steht für den Oktalwert)

Jedes Zeichen besitzt ein eindeutiges Bitmuster, welches durch den "ASCII"-Standard (American Standard Code for Information Interchange) festgelegt wurde.


Kommentare

Wie auch in anderen Programmiersprachen gibt es in C die Möglichkeit, Kommentare im Code zu hinterlassen. Kommentare werden mit "/*" eingeleitet und können über mehrere Zeilen geschrieben werden. Der Compiler ignoriert alle Zeichen, bis er auf die Zeichenfolge "*/" trifft. Ab dieser Stelle ist der Kommentar beendet und der Compiler nimmt seine Arbeit wieder auf.

Mehrzeilige Kommentare

/* Kommentare können über
mehrere Zeilen geschrieben werden */

Für kurze einzeilige Kommentare gibt es die Schreibweise "//". Die Zeichenfolge "//" kommentiert den Rest der Zeile aus und der Compiler springt direkt in die nächste Zeile.

Einzeilige Kommentare

// Kommentar bis zum Zeilenende 

Leere Zeilen werden vom Compiler ebenso ignoriert wie Leerzeichen vor Anweisungen oder zwischen einzelnen Elementen einer Programmzeile.

Einzeilige Kommentare

a + b;
a+b;

Die Ausdrücke sind daher beide gültig.


Bezeichner

Bezeichner für Variablen und Funktionen dürfen aus Buchstaben, Ziffern und dem Unterstrich bestehen. Das erste Zeichen darf allerdings nicht mit einer Ziffer beginnen. Bei Bezeichner wird zwischen groß- und Kleinschreibung unterschieden und der Bezeichnername sollte an den ersten 31 Zeichen eindeutig erkennbar sein. Wenn erst das 32te Zeichen ein anderes ist, kann es sein, das der Compiler dies für den gleichen Bezeichner hält.


Begrifflichkeiten

"Bezeichner" sind Namen für Objekte wie Variablen oder Funktionen. Sie können aus Buchstaben, Ziffern oder dem Unterstrich bestehen, aber nicht mit einer Ziffer beginnen. Zudem dürfen Bezeichner auch nicht nach reservierten Schlüsselwörtern benannt werden.

"Schlüsselwörter" sind vorgegebene Wörter mit einer bestimmten Bedeutung. Wenn der Compiler auf die Wörter im Code trifft, handelt er nach einem bestimmten Schema. Wenn ein Bezeichner den gleichen Namen wie ein Schlüsselwort trägt, wirft der Compiler einen Fehler.

"Begrenzer" sind Zeichen, die bestimmte Anweisungen und Programmstrukturen abgrenzen.

  • Das Semikolon ; schließt eine Anweisung ab.
  • Das Komma , trennt Argumente in einer Parameterliste.
  • Runde Klammern () begrenzen Ausdrücke in Kontrollstrukturen.
  • Geschweifte Klammern {} umschließen Funktionsblöcke / Anweisungsblöcke.
  • Eckige Klammern [] werden bei Tabellenelementen angewendet.
  • Das Gleichheitszeichen = wird für Wertzuweisungen verwendet. Achtung, für einen Vergleich wird das doppelte Gleichheitszeichen verwendet ==.

Weiter mit Daten und Datentypen