Programmieren in ANSI-C Kapitel 4: Kommentare, Ein- und Ausgabe von Daten
4.1 Kommentare
Kommentare sollen den Programmtext beschreiben und für die Nachwelt verständlich machen. Sie sind
nur im Quelltext, nicht im fertigen Programm sichtbar. Ich empfehle, so ordentlich wie nötig und so knapp wie möglich
zu kommentieren. Der Kommentar soll den Code nicht zwischen dne Zeilen verschwinden lassen. Empfehlenswert ist, jede Funktion
und deren Rückgabewerte und Parameter direkt vor oder nach dem Funktionskopf genau zu beschreiben.
Es gibt zwei Sorten von Kommentaren: Einzeilige und mehrzeilige Kommentare.
// Dies ist ein einzeiliger Kommentar und muss nicht abgeschlossen werden
/* Beispiel für einen mehrzeiligen Kommentar der in
der nächsten Zeile weitergeht und wieder endet */
/* Noch ein Einzeiler */
/* FALSCH: kein Ende-Kennzeichen!!!!!!
|
4.2 Datenein- und Ausgabe
Es ist an der Zeit, sich über die Ein- und Ausgabe von Datenvon Tastatur bzw. auf dem Bildschirm Gedanken zu machen. Dazu benötigt
man lediglich die beiden Befehle 'printf' und 'scanf'. Beide werden von der Bibliothek <stdio.h> bereitgestellt.
Beide Funktionen haben einen Rückgabewert vom Typ int, der aber für unsere Zwecke vernachlässigt werden kann!
4.2.1 Ausgabe über 'printf'
int printf( const char *format [, argument]... );
Mittels der Printf-Anweisung werden Daten auf dem Bildschirm an die aktuelle Cursor-Position geschrieben. Dabei wird ihr ein
konstanter Text inklusive eventueller Formatangaben für die Argumente als auch die Argumentliste übergeben.
Für Beispiele: siehe Kapitel 4.4.1 - 4.4.3
4.2.2 Eingabe über 'scanf'
int scanf( const char *format [,argument]... );
Will man Daten von der Tastatur lesen, so benötigt man dazu die Funktion Scanf. Ihr wird als Format-Angabe der Typ
der einzulesenden Variablen angegeben. In der Argument-Liste stehen nacheinander die Variablen, die mit einem Wert zu
füllen sind. Es muss eine Formatangabe pro Wert vorhanden sein. Die Argumente werden duch Kommas getrennt und
mit einem Adress-Operator (&) versehen, da die Funktion nur mit der Adresse der Variablen arbeitet.
Für Beispiele: siehe Kapitel 4.4.2 - 4.4.3
4.3 Escape - Sequenzen und Formatangaben
Die Escape-Sequenzen
Escape-Sequenzen dienen zur Formatierung der Bildschirmausgabe, genauer zur Positionierung
des Cursors oder zur Ausgabe von Sonderzeichen. Sie werden in einer Zeichenkette mit einem
Backslash ('\') eingeleitet, gefolgt von einem Zeichen als Parameter:
Sequenz
|
Bedeutung
|
| \n |
Zeilenumbruch |
| \t |
Tabulator |
| \v |
vertikaler Tabul. |
| \a |
Alarmsignal (Beep) |
| \b |
eine Spalte zurück |
| \\ |
Backslash ausgeben |
| \? |
Fragezeichen drucken |
| \' |
Einfaches Hochkomma drucken |
| \" |
Anführungszeichen drucken |
Die Format-Angaben
Formatangaben dienen dazu, bei der Ausgabe von Variablen deren Typ anzugeben. Formatangaben
werden von einem %-Zeichen eingeleitet. Es gibt verschiedene Typen von Formatangaben. So kann
man zum einen nur den Variablentyp selbst angeben oder aber auch die Anzahl der auszugebenden
Stellen mit festlegen. Schlißlich kann man auch noch angeben, ob bei Zahlen immer ein Vorzeichen
angezeigt wird oder ob linksbündig formatiert wird.
Angabe der auszugebenden Stellen:
%10.2lf bedeutet ausgabe einer double-Zahl (long float) mit insgesammt 10 Stellen (incl.
Dezimalpunkt) und zwei Nachkommastellen!
Ich werde nun ein Paar Beispiele anführen, die zuhnemend komplexere Sachverhalte zeigen:
Beispiel
|
Bedeutung
|
| %f |
float-Zahl |
| %lf |
double-Zahl |
| %d |
Dezimalzahl (int) |
| %c |
Ein einzelnes Zeichen (char) |
| %s |
Eine Zeichenkette |
| %9.3f |
float-Zahl, 9 Stellen, 3 Nachkomma |
| %.3lf |
double-Zahl, soviele Stellen wie nötig, 3 Nk. |
| %+6d |
int-Zahl, 6 Stellen, Vorzeichen erzwingen |
| %-15d |
int-Zahl, 15 Stellen, Linksbündig |
Ersichtlich lassen sich diese Angaben kombinieren, nur macht es wenig Sinn, bei
einzelnen Zeichen Vorzeichen oder etwa Kommastellen anzugeben. Was der Prozessor
aus den Angaben macht, sieht man sich am besten selbst an!
ACHTUNG: Wenn auf dem Monitor nicht das steht, was man dort eigentlich erwarten würde,
so liegt dies häufig an falschen Format-Angaben!
4.4 Erste Programmbeispiele
Nun ist es also soweit. Wir haben das nötige Handwerkszeug, um uns ein paar vollständige
Listings anzusehen. Ich werde hier den Source-Code als Text-Files zur Verfügung stellen und
mir angewöhnen, ein paar Kommentare reinzuschreiben. Einfach die *.txt - Dateien in *.cpp -
oder *.c - Dateien umbenennen.
4.4.1 'Hallo Welt!'
Beginnen wir die Ausstellung mit einem Klassiker. Es geht ansich nur darum, einen beliebigen Text
auszugeben und fertig. Natürlich kann man schon mal mit Escape-Sequenzen arbeiten ohne
zu überfordern.
4.4.2 Kombinierte Ein- und Ausgabe
Nun wollen wir eine Zahl und ein Zeichen von der Tastatur einlesen und wieder Ausgeben. Das Ausgeben
soll jedoch eine Funktion übernehmen, die die eingegebenen Werte als Parameter mitbekommt.
Die Funktion rewind( stdio ); wird im Programm erläutert und darf auf keinen Fall vernachlässigt
werden!
4.4.3 Der Satz des Pythagoras
Dieser berühmte Satz beschreibt, wie man in einem rechtwinkligen Dreieck die Länge der
Hypotenuse ausrechnet, wenn die beiden anderen Seiten gegeben sind. Das Programm liest Ankathede
und Gegenkathede ein, berechnet die Hypotenuse und gibt diese wieder aus. Die Berechung übernimmt
eine Funktion. Um die Wurzel zu berechnen brauchen wir die Bibliothek math.h.
Nebenher möchte ich zeigen, wie man mit der define-Anweisung Makos definiert.
|