1 Theorie |
→ |
1.1 Die Programmiersprache
C |
1.1.1 Einführungsbeispiel
Beispielprogramm
cintro01.c
/** @file cintro01.c Ganz einfaches C-Programm als Einfuehrungsbeispiel. */
#include <stdio.h>
int
main(void)
{
printf("Hallo\n");
return 0;
}
Hinweis: Die Zeilennummern hier und in nachfolgend gezeigten
Quelltexten sind nicht Bestandteil des Programmes sondern wurden
hinzugefügt, um auf einzelne Zeilen verweisen zu können.
Grundsätzlicher Datei-Aufbau
- Kommentar
In Zeile 1 sehen Sie einen Kommentar, dieser beginnt mit "/*" und
endet mit "*/".
Es gibt noch eine andere Kommentar-Form, diese beginnt mit "//" und
endet am Zeilenende. Diese Form ist in C++ sowie in C ab Standard
C99 erlaubt.
- Header-Dateien
Am
Anfang einer Quelltextdatei (im Beispiel in Zeile 3) werden häufig
Header-Dateien mit einer Anweisung
#include <Datei.h>
eingebunden. Die Dateiendung *.h ist typisch für
Header-Dateien.
Header-Dateien enthalten hauptsächlich Prototypen bzw.
Deklarationen für die Funktionen, die in der Quelltextdatei benutzt
werden.
Header-Dateien werden später noch behandelt.
- stdio.h für Standardein- und ausgabe
Soll
ein Programm Standardeingabe und Standardausgabe nutzen, muss die
Header-Datei "stdio.h" eingebunden werden.
- Liste von Funktionen
Der C-Quelltext besteht aus einer Liste von Funktionen, optional
auch Variablen. Im Beispiel werden noch keine Variablen verwendet,
es ist nur eine Funktion enthalten.
- Funktionsaufbau
Funktionen werden später eingehender behandelt,
daher wird hier nur eine kurze Übersicht gegeben.
Eine Funktionsdefinition besteht aus Funktionskopf (hier Zeilen 5
und 6) und Funktionskörper (Zeilen 7 bis 10).
- Funktionskopf
- Rückgabetyp
Der
Ergebnistyp, den die Funktion liefert. Die Angabe int im
Beispiel bedeutet, dass die Funktion eine ganze Zahl als Ergebnis
liefert.
- Funktionsname
Im Beispiel ist der Funktionsname main.
- Argumente der Funktion
Die
Angabe void bedeutet, dass die Funktion keine Argumente
übergeben bekommt.
- Funktionskörper
- Block
Der Funktionskörper ist ein Block, der durch geschweifte
Klammern begrenzt wird.
- Variablendeklarationen
Am Anfang des Blockes werden lokale Variablen definiert.
Im Einführungsbeispiel werden noch keine Variablen verwendet, daher
sind hier noch keine Variablendeklarationen enthalten.
- Anweisungen
Das Beispiel enthält nur zwei Anweisungen. Die Funktion
printf() wird aufgerufen und erhält als Argument die
Zeichenkette "Hallo\n".
Die return-Anweisung legt fest, welchen Wert die Funktion
als Ergebis liefert (hier 0).
- printf sorgt für Ausgabe
Die Funktion printf() schreibt Daten in die
Standardausgabe.
Im Einführungsbeispiel wird der Text "Hallo" geschrieben, gefolgt
von einem Newline (Wechsel in eine neue Zeile).
Die Funktion printf() wird später noch behandelt.
- main ist das Hauptprogramm
Jedes
C-Programm muss eine Funktion main() haben, dies ist das
Hauptprogramm. Beim Programmstart beginnt die Ausführung mit dem
Funktionskörper der main()-Funktion.
Programm ausführen unter Windows
- Arbeitsumgebung einrichten
Richten Sie zunächst eine Arbeitsumgebung ein.
Gehen Sie dabei entsprechend Abschnitt "Praktische Hinweise, Screenshots" →
"MS Visual Studio" → "Arbeitsumgebung einrichten" vor.
- Programm abspeichern
Klicken Sie mit der rechten Maustaste auf den grünen Link
"cintro01.c" in der Quelltext-Box oben. Im Kontextmenü wählen Sie
den Eintrag "Ziel speichern unter..." und speichern die
Datei als C:\Temp\C\cintro01.c ab.
- Projekt anlegen
Legen Sie das Projekt "cintro01" an.
Gehen Sie dabei entsprechend Abschnitt "Praktische Hinweise, Screenshots" → "MS
Visual Studio" → "Projekt anlegen" vor. Zum Projekt muss nicht
eine neue Datei, sondern die vorhandene Datei cintro01.c
hinzugefügt werden.
- Ausführbare Datei erstellen und ausführen
Erstellen Sie die Datei cintro01.exe, siehe Abschnitt "Praktische Hinweise, Screenshots" → "MS
Visual Studio" → "*.exe-Datei erstellen".
Führen Sie das Programm aus, siehe Abschnitt "Praktische Hinweise, Screenshots" → "MS
Visual Studio" → "*.exe-Datei starten".
- Test mit Compilerfehler
Provozieren Sie einen Compilerfehler und testen Sie, was beim
Versuch, cintro01.exe neu zu erstellen, passiert (siehe Abschnitt
"Praktische Hinweise, Screenshots" → "MS Visual
Studio" → "Compiler-Fehler").
Programm ausführen unter Linux
Coding Standards
Quelle: CERT C Coding
Standard 〈1〉
Quelle: C-Standards
- Nur ASCII-Zeichen in C-Quelltexten
In C-Quelltexten sollten ausschließlich ASCII-Zeichen zu finden
sein. Nicht-ASCII-Zeichen - wie z.B. deutsche Umlaute und ß -
dürfen auch nicht in Zeichenkonstanten, String-Literalen oder
Kommentaren auftauchen.
Je nach verwendetem Zeichensatz haben die Nicht-ASCII-Zeichen eine
andere Codierung.
Code mit Nicht-ASCII-Zeichen kann nicht zwischen verschiedenen
Systemen (z.B. Windows, Linux, MacOS, Solaris) portiert werden.
Windows verwendet im Terminal-Fenster eine andere Codierung als im
Text-Editor von Visual Studio.
Auch akzeptieren nicht alle C-Compiler derartigen nicht
standardkonformen Code.
Quelle: GNU Coding
Standards 〈2〉
- Maximale Zeilenlänge: 79 Zeichen
Ich empfehle eher die Verwendung von noch weniger Zeichen, damit
Quelltexte auch ausgedruckt werden können.
Sind Zeilen so lang, dass im Editor oder in der
Entwicklungsumgebung auch horizontal gescrollt werden muss, ist
dies beim Bearbeiten des Quelltextes hinderlich.
- Kommentar am Dateianfang
Enthält eine *.c-Datei eine main()-Funktion, sollte ein
Kommentar am Zeilenanfang den Verwendungszweck des Programmes
angeben.
Empfehlungen
- Dateikommentar im Doxygen-Stil
Der Dateikommentar am Anfang der Datei sollte im Doxygen-Stil
gehalten werden:
- An den Kommentaranfang wird ein zusätzlicher Stern angehangen,
d.h. der Kommentar beginnt mit:
/**
- Daran schließt sich
@file Dateiname
an, durch Leerzeichen oder Tabulator abgetrennt.
- Der erste Satz - genauer gesagt der Text bis zum ersten Punkt -
gibt eine kurze Zusammenfassung. Optional darf ein längerer Text
folgen.
- Keine //-Kommentare nach Anweisungen
Werden //-Kommentare an Anweisungen angehangen, entstehen sehr
lange Textzeilen. Je nach Monitor und Schriftgröße kann dies dazu
führen, dass beim Lesen des Quelltextes für jede einzelne Zeile
horizontal hin- und hergescrollt werden muss.
Auch Kommentare mit // sind über der zu kommentierenden Anweisung
besser aufgehoben, sie sollten in der gleichen Einrückungstiefe
beginnen wie die Anweisung.
Aufgaben
- Arbeitsumgebung einrichten
Richten Sie Ihre Arbeitsumgebung ein, wie auf der Seite Arbeitsumgebung einrichten
beschrieben.
- Erstes Beispiel
Probieren Sie das erste Beispiel aus, folgen Sie hierzu den
Anweisungen für Übung 1 →
Einführungsbeispiel.
- Online-Hilfe
Probieren Sie die Online-Hilfe aus, siehe Übung 1 →
Online-Hilfe.
- Variation des Programmes
Ändern Sie das Programm so, dass es nicht "Hallo" ausgibt, sondern
Ihren Namen, beispielsweise
"Dies ist ein Programm von Max Mustermann.".
- Steuerzeichen in Zeichenkette
Setzen Sie Steuerzeichen-Codes \n \t und \a in die Zeichenkette ein
und finden Sie heraus, welche Auswirkung diese Steuerzeichen-Codes
haben.
- Reaktion auf Syntax-Fehler
Provozieren Sie einen Syntax-Fehler und machen Sie sich mit den
entsprechenden Fehlermeldung von Visual Studio vertraut, siehe
Übung 1 → Compiler-Fehler.
Externe Links
1 |
http://www.securecoding.cert.org |
2 |
http://www.gnu.org/prep/standards/standards.html |