03.09.2013 Aufrufe

Variable

Variable

Variable

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!