Variable
Variable
Variable
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Variable</strong> (1/5)<br />
Das Konzept von <strong>Variable</strong>n ist eine wichtige Grundlage zum Verständnis jeder<br />
Programmiersprache.<br />
Dabei ist zu beachten, daß das Konzept von <strong>Variable</strong>n in der Informatik — in<br />
Programmiersprachen — sich von dem Konzept von <strong>Variable</strong>n aus der Mathematik<br />
unterscheidet.<br />
Das programmiersprachliche Konzept von <strong>Variable</strong>n kann man gut mit dem Begriff<br />
„Behälter” aus der Alltagswelt vergleichen: Einen Behälter (Gefäß, Kasten, usw.)<br />
beschriftet man mit einer Aufschrift, die anzeigt, was sich darin befindet. Wenn man<br />
dann über den Inhalt des Behälters sprechen will, verwendet man die Aufschrift, um<br />
sich auf den Inhalt zu beziehen. In solch einem Behälter kann zu unterschiedlichen<br />
Zeiten ein gleichartiger, aber unterschiedlicher Inhalt zu finden sein, z.B. in einem<br />
Brotkasten ein Mal ein Graubrot und ein anderes Mal ein Vollkornbrot.<br />
Für unterschiedliche Arten von Inhalten wählt man unterschiedliche Gefäße. Man<br />
kann z.B. nicht Flüssigkeiten in einen Brotkorb „legen” oder Brot in eine Milchkanne<br />
gießen.<br />
Horst Hansen FHTW Berlin 2008<br />
Deklaration von <strong>Variable</strong>n<br />
int n ;<br />
<strong>Variable</strong> (3/5)<br />
wird als Deklaration einer <strong>Variable</strong>n bezeichnet. Hier wird der <strong>Variable</strong>n der<br />
Bezeichner n zugeordnet und gesagt, daß sie vom Typ int sein soll. Außerdem<br />
wird Arbeitsspeicher für die Ablage ihres Wertes reserviert. Aber die <strong>Variable</strong> n<br />
erhält hier keinen Wert zugeordnet. Deshalb spricht man auch davon, daß ihr Wert<br />
noch „undefiniert” ist.<br />
Initialisierung von <strong>Variable</strong>n<br />
n = 0 ;<br />
Wenn dieses die erste „Zuweisung” eines Wertes an die <strong>Variable</strong> n ist, sagt man<br />
auch: Die <strong>Variable</strong> n wird hier initialisiert.<br />
Ein guter Brauch in der Programmierung ist, <strong>Variable</strong>n stets schon zusammen mit<br />
ihrer Deklaration zu initialisieren. Das nennt man Definition von <strong>Variable</strong>n. Dadurch<br />
kann es nie passieren, daß man im Programm mit undefinierten Werten von<br />
<strong>Variable</strong>n konfrontiert wird — was natürlich zu Fehlern führen kann.<br />
<strong>Variable</strong>n 1/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 3/13<br />
<strong>Variable</strong> (2/5)<br />
Programmiersprachliche <strong>Variable</strong>n besitzen die folgenden vier Eigenschaften:<br />
• Es gibt einen Bezeichner, mit dessen Hilfe sie angesprochen werden.<br />
• Sie sind von einem festen Typ.<br />
• Sie besitzen einen Wert. (Dieser kann sich im Laufe der Zeit ändern.)<br />
• Zu ihnen gehört ein „Speicherplatz” (der „Behälter”), in dem sie zu finden sind.<br />
Das soll hier durch die Definition einer <strong>Variable</strong>n in der Programmiersprache C<br />
beispielhaft gezeigt werden:<br />
int n = 0 ;<br />
Hier wird eine <strong>Variable</strong> mit dem Bezeichner n definiert. Sie ist vom Typ int (womit<br />
programmiersprachlich eine ganze Zahl gemeint ist) und erhält den Anfangswert 0.<br />
Für diese <strong>Variable</strong> wird (automatisch) so viel Speicherplatz (im Arbeitsspeicher des<br />
Rechners) reserviert, wie dies für Werte vom Typ int festgelegt ist. Der<br />
Anfangswert 0 wird in dem reservierten Speicherplatz abgelegt.<br />
Horst Hansen FHTW Berlin 2008<br />
Definition von <strong>Variable</strong>n<br />
int n = 0 ;<br />
<strong>Variable</strong> (4/5)<br />
Hier haben wir die Definition einer <strong>Variable</strong>n vor uns.<br />
Wie man sieht, ist es eine Kurzschreibweise für:<br />
int n ;<br />
n = 0 ;<br />
Somit kann man sich merken:<br />
Definition gleich Deklaration plus Initialisierung<br />
<strong>Variable</strong>n 2/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 4/13
<strong>Variable</strong> (5/5)<br />
Formal beschrieben sieht die Definition einer <strong>Variable</strong>n so aus:<br />
= ;<br />
Diese Beschreibung verwendet die Syntax von „Formalen Grammatiken”. Die in<br />
spitzen Klammern stehenden Wörter („nichtterminale Symbole”) müssen hierbei<br />
noch durch „terminale Symbole” ersetzt werden, um einen programmiersprachlich<br />
gültigen Ausdruck zu formen. Demgegenüber sind die Zeichen ’ ’, ’=’ und ’;’ bereits<br />
„terminale Symbole”, die unverändert im Programmtext auftauchen.<br />
Statt ist hier eines der Schlüsselwörter der Programmiersprache für Basisdatentypen<br />
einzusetzen, also int, long, float, double oder char.<br />
Als (im englischen id oder identifier) können wir uns eine fast<br />
beliebige Zeichenkette wählen: Sie muß mit einem Buchstaben beginnen und<br />
danach können beliebig viele Buchstaben und Ziffern folgen. Dies ist der „Name”<br />
unserer <strong>Variable</strong>n.<br />
Den geben wir in einer von der Programmiersprache erlaubten<br />
Darstellung an. Diese ist von Typ zu Typ unterschiedlich.<br />
Horst Hansen FHTW Berlin 2008<br />
Aufteilung von C-Programmen auf Dateien<br />
externe und interne <strong>Variable</strong>n und Konstanten<br />
Der Inhalt der vom C-Compiler übersetzten (zusammengebauten) Datei ist eine<br />
Folge (Liste) von Deklarationen und Definitionen von Funktionen, <strong>Variable</strong>n und<br />
Konstanten. Da der C-Compiler (aus Optimierungsgründen) diese Datei nur einmal<br />
sequentiell bearbeitet, gelten folgende Festlegungen:<br />
1. Jede Funktion, <strong>Variable</strong> und Konstante muß vor ihrer ersten Benutzung deklariert<br />
oder definiert sein. (Sonst weiß der Compiler mit dem Bezeichner nichts<br />
anzufangen!)<br />
2. Jede Funktion, <strong>Variable</strong> und Konstante ist von der Stelle ihrer Deklaration oder<br />
Definition bis zum Ende der Programmquelle (der Datei) bekannt. (Aber nicht<br />
davor!)<br />
Um diese Sachverhalte zu beschreiben, verwendet man in C die folgenden Begriffe:<br />
Alle in der genannten Liste auftauchenden Funktionen, <strong>Variable</strong>n und Konstanten<br />
werden als extern bezeichnet — im Gegensatz zu <strong>Variable</strong>n und Konstanten, die<br />
lokal in Blöcken im Rumpf von Funktionen auftreten. Letztere werden interne<br />
<strong>Variable</strong>n und Konstanten genannt. (Innere Funktionen gibt es in C ja nicht!)<br />
<strong>Variable</strong>n 5/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 7/13<br />
Aufteilung von C-Programmen auf Dateien<br />
Ein in der Programmiersprache C geschriebenes Programm kann textuell auf<br />
mehrere Dateien aufgeteilt werden. Am bekanntesten ist die Aufteilung in eine<br />
Headerdatei , die Deklarationen von Funktionen sowie Deklarationen<br />
und Definitionen von <strong>Variable</strong>n und Konstanten enthalten kann und die Programmdatei<br />
, die die zugehörigen Funktionsdefinitionen und weitere Definitionen<br />
von <strong>Variable</strong>n enthält. Der Präprozessor setzt die Headerdatei(-en) und die<br />
Programmdatei zu einer neuen Datei zusammen, die dann vom C-Compiler<br />
(hoffentlich ohne Fehler) übersetzt wird.<br />
Horst Hansen FHTW Berlin 2008<br />
Aufteilung von C-Programmen auf Dateien<br />
Statt des Adjektivs extern verwendet man auch das Adjektiv<br />
global.<br />
Somit kann man sagen: In einem C-Programm gibt es nur externe ( globale)<br />
Funktionen, aber externe ( globale)<br />
und interne ( lokale)<br />
<strong>Variable</strong>n und Konstanten.<br />
<strong>Variable</strong>n 6/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 8/13
Speicherklassen<br />
Um in C die Wirkung von Deklarationen und Definitonen von <strong>Variable</strong>n und<br />
Konstanten zu beschreiben, die an verschiedenen Stellen im Programm auftreten<br />
und die eventuell durch zusätzliche Schlüsselwörter qualifiziert sind, dienen die<br />
sogenannten Speicherklassen.<br />
Es gibt deren drei:<br />
• auto,<br />
• extern und<br />
• static.<br />
Alle internen (lokalen) <strong>Variable</strong>n besitzen die Speicherklasse auto,<br />
d.h. für sie wird<br />
zum Zeitpunkt der Deklaration rsp. Initialisierung automatisch der notwendige<br />
Arbeitsspeicher (auf dem Laufzeitstack) bereitgestellt.<br />
Alle externen (globalen) <strong>Variable</strong>n besitzen die Speicherklasse extern,<br />
d.h. für sie<br />
wird Arbeitsspeicher so zur Verfügung gestellt, daß alle Funktionen des Programms<br />
darauf zugreifen können. (In gewisser Weise ist dieser Arbeitsspeicher extern zu<br />
allen Funktionen.)<br />
Horst Hansen FHTW Berlin 2008<br />
Verwendung von statischen (internen) <strong>Variable</strong>n<br />
Beispiel<br />
Statische interne <strong>Variable</strong> können z.B. sinnvoll als einfache Zähler verwendet<br />
werden, wie das folgende kleine Programmbeispiel zeigt:<br />
int count()<br />
{ static int count = 0 ; // Beachte: Diese Anweisung wird<br />
}<br />
count++ ; // n i c h t bei jedem Aufruf der<br />
return count ; // Funktion count ausgeführt!<br />
int main()<br />
{ printf("count = %d\n", count()) ;<br />
}<br />
printf("count = %d\n", count()) ;<br />
int n = count() ;<br />
printf("n = %d\n", n) ;<br />
Mit jedem Aufruf der Funktion count wird der Zähler<br />
nie zwei gleiche Zählerwerte auftreten können.<br />
count um eins erhöht, so daß<br />
<strong>Variable</strong>n 9/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 11/13<br />
Die dritte Speicherklasse<br />
Speicherklassen<br />
static,<br />
ist etwas komplizierter.<br />
Sowohl interne als auch externe <strong>Variable</strong>n können mit dem Schlüsselwort static<br />
versehen werden.<br />
Für interne <strong>Variable</strong>n mit dem Schlüsselwort static gilt, daß der Arbeitsspeicher der<br />
<strong>Variable</strong>n nicht erst mit Eintritt des Blockes, in dem die <strong>Variable</strong> deklariert wird, zur<br />
Verfügung gestellt wird, sondern daß er permanent vorhanden ist und damit der<br />
Werte dieser <strong>Variable</strong>n zwischen zwei Funktionsaufrufen erhalten bleibt.<br />
Für externe <strong>Variable</strong>n mit dem Schlüsselwort static gilt, daß sie nur in der Quelldatei<br />
bekannt sind, in der sie deklariert werden, nicht aber in anderen Quelldateien.<br />
Dieses Prinzip kann auch auf Funktionen übertragen werden: Funktionen mit dem<br />
Schlüsselwort static sind nur in der Programmquelle bekannt, in der sie deklariert<br />
oder definiert werden.<br />
Somit dient das Schlüsselwort static zusammen mit externen Deklarationen dazu,<br />
gewisse <strong>Variable</strong>n und Funktionen vor der Verwendung in anderen Programmteilen<br />
zu schützen. Andererseits können so auch Namenskonflikte vermieden werden.<br />
Horst Hansen FHTW Berlin 2008<br />
Konstante (1/2)<br />
Programmiertechnisch kann man Konstanten als spezielle <strong>Variable</strong>n ansehen:<br />
Konstanten sind <strong>Variable</strong>n, deren Wert nach der Initialisierung nicht mehr verändert<br />
werden kann. Jeder Versuch der Zuweisung eines Wertes nach der Initialisierung<br />
wird vom Compiler bemerkt und als Fehler beanstandet.<br />
Konstanten dienen dazu, Werte, die an vielen Stellen eines Programm benötigt<br />
werden, mit einem verständlichen Bezeichner ansprechen zu können, ohne daß<br />
man den Wert dieser Konstanten an vielen verschiedenen Stellen des Programms<br />
immer wiederholen muß. (Siehe hierzu auch die Diskussion von Funktionen!)<br />
Wenn in einem Programm z.B. die Zahl<br />
chend durch<br />
const double PI = 3.141593 ;<br />
!<br />
häufig vorkommt, sollte man entspre-<br />
eine entsprechende Konstande definieren. Wo immer sie benötigt wird, tritt dann im<br />
Programm ihr Bezeichner ’ PI’<br />
anstelle der ständigen (fehleranfälligen) Wiederholung<br />
des Wertes 3.141593 auf. Damit ermöglichen Konstanten die Einhaltung<br />
des Prinzips „einmal definieren, häufig verwenden”.<br />
<strong>Variable</strong>n 10/13<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 12/13
Konventionen<br />
Konstante (2/2)<br />
In der Programmiersprache C hat es sich eingebürgert, Bezeichner von Konstanten<br />
mit Großbuchstaben zu schreiben. Wenn Sie sich auch daran halten, können<br />
andere in Ihrem Programm sofort sehen, ob ein Bezeichner ein Bezeichner für eine<br />
Konstante oder für eine <strong>Variable</strong> ist!<br />
Horst Hansen FHTW Berlin 2008<br />
<strong>Variable</strong>n 13/13