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.
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.
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.
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.
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.
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.
/* 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.
// Kommentar bis zum Zeilenende
Leere Zeilen werden vom Compiler ebenso ignoriert wie Leerzeichen vor Anweisungen oder zwischen einzelnen Elementen einer Programmzeile.
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