Optionen und weiterführende Links



In der Datenbank befinden sich derzeit 477 Specials. Alle Specials anzeigen...

Feldarbeit

Feldarbeit

Die meisten Sprachen kennen neben einfachen Variablen sogenannte Felder oder Arrays. Ein Array ist gewissermaßen eine Tabelle, die mehrere Einträge des gleichen Typs enthält.

Index Inhalt
0 -5
1 28
2 7
3 0

Dieses Integer-Array beispielsweise hat 4 Einträge. Diese Einträge könnt Ihr unter den Index-Nummern 0 bis 3 ansprechen (bei der Programmierung fängt man meistens bei Null zu zählen an). Mit Arrays könnt Ihr arbeiten wie mit «normalen» Variablen; Ihr müßt nur den Index in [ ] mit angeben

// setze den Eintrag mit dem Index 0 auf den Wert 5
das_array[0] = 5;
// gebe den Eintrag mit dem Index 2 aus
print das_array[2];

Arrays sind besonders dann praktisch, wenn der Index selbst eine Variable ist

// lasse die gewünschte Bildnummer eingeben
var bildnummer = input();
// hole das gewünschte Bild aus dem Array
var bigPic = bigPictures[bildnummer];
showPicture(bigPic); // zeige das Bild an

Arrays müssen in jedem Fall deklariert werden. Dabei müßt Ihr angeben, wieviele Einträge das Array haben soll

var das_array = new Array[10]; // definiert ein Array mit 10 Einträgen
String[] das_array = new String[10]; // andere Syntax-Variante
Das Schlüsselwort 'new' wird im Zusammenhang mit Klassen und Objekten noch eine Rolle spielen.

Unveränderlich

Variablen sind, wie der Name schon sagt, variabel, also veränderlich. In vielen Fällen jedoch soll ein Wert gerade nicht verändert werden. Dazu dienen Konstanten.

Konstanten sind im Prinzip Variablen mit einem festen Wert. In einigen Sprachen müssen Konstanten mit einem bestimmten Schlüsselwort deklariert werden

final int zahl = 5;

Der Versuch, eine so deklarierte Konstante zu verändern, wird mit einer Fehlermeldung quittiert. In anderen Sprachen sind Konstanten ganz normale Variablen, bei denen Ihr selbst darauf achten müßt, daß der Wert sich nicht ändert.

Die Vorteile von Konstanten soll das folgende Beispiel zeigen

var MAX = 10; // definiere die maximale Bildnummer als Konstante
...
var bildnummer = input(); // gewünschte Bildnummer eingeben
if (bildnummer > MAX) // wenn zu groß
  print "Diese Bildnummer gibt es nicht!"; // Fehlermeldung
else // sonst
  showPicture(bildnummer); // zeige Bild an

In diesem Fall wird eine Konstante dazu benutzt, die eingegebene Bildnummer zu überprüfen. Wenn später zusätzliche Bilder ergänzt werden, müßt Ihr nur die Deklaration der Konstante ändern

var MAX = 25; // neuer Wert

Da der Wert sonst nur über den Namen 'MAX' angesprochen wird, reicht diese Änderung völlig aus.

Außerdem werden Konstanten oft benutzt, um sich das Merken von Werten zu erleichtern. Das soll an einer erweiterten Version des bereits aufgetauchten Dateityp-Tests gezeigt werden. Diese Version prüft nicht nur, ob die Datei ein JPEG ist oder nicht. Diese Version liefert eine Zahl zurück, die den Dateityp angibt (0 -> JPEG, 1 -> GIF, 2 -> PNG etc.)

if (fileTyp(dateiname) == 0)
  print "Es ist ein JPEG!";
if (fileTyp(dateiname) == 1)
  print "Es ist ein GIF!";
...

Wenn jetzt aber für jeden dieser Werte bereits eine Konstante definiert ist (beispielsweise schon in der Programmiersprache integriert), wird der Code gleich deutlich lesbarer

if (fileTyp(dateiname) == TYPE_JPEG)
  print "Es ist ein JPEG!";
if (fileTyp(dateiname) == TYPE_GIF)
  print "Es ist ein GIF!";
...

Es ist üblich, die Namen von Konstanten durchgehend GROSSZUSCHREIBEN. Solche Vereinbarungen nennt man auch Konvention: Die Programme laufen auch ohne sie, aber sie verbessern die Lesbarkeit des Codes.

Aus der Bibliothek

Zwei Dinge habe ich Euch bisher kommentarlos untergejubelt: Funktionsaufrufe und eben noch if-Verzweigungen. Zunächst ein paar Worte zu den Funktionen.

Eine Funktion liefert einen Wert zurück, der an der Stelle des Aufrufs eingesetzt wird. Als Beispiel nehmen wir die Funktion 'random()'. Diese Funktion liefert einen zufällig ausgewählten int-Wert. In folgendem Codeschnippsel landet dieser Zufallswert in der Variablen 'zahl'

var zahl = random();

Der Rückgabewert einer Funktion ist, ähnlich wie eine Variable, von einem bestimmten Typ. Prinzipiell kann ein Funktionsaufruf überall stehen, wo auch ein Wert dieses Typs stehen könnte

zahl = random() + 5; // bei einer Addition
zahl = random()++; // mit einem Inkrement-Operator
if (random() < zahl) // Vergleich
  ...

Vielen Funktionen kannst du einen oder mehrere Parameter mitgeben. Die Parameter stehen in den runden Klammern, mit Kommata getrennt. Bei unserer random-Funktion könnte das der Bereich sein, aus dem die Zufallszahl stammen soll

var zahl = random(0, 9); // liefert eine Zufallszahl zwischen 0 und 9

Die Anzahl, der Typ und die Reihenfolge der Parameter einer Funktion sind exakt festgelegt. Unsere neue Beispielfunktion hat zwei Parameter vom Typ int. Der erste ist die Untergrenze des Zufallsbereiches, der zweite die Obergrenze. Mit einem Aufruf wie

var zahl = random(9, 0); // 9 > 0 !

handelt Ihr Euch also eine Fehlermeldung ein. In einigen Fällen gibt es sogenannte optionale Parameter, die Ihr angeben oder auch weglassen könnt. In solchen Fällen ist die Funktion einfach mehrfach unter demselben Namen definiert, einmal mit und einmal ohne optionalen Parameter. Wie Ihr auch selbst Funktionen definieren könnt, wird später noch Thema sein.

Die Parameter können natürlich auch selbst Variablen sein

var unten = random(0, 4); // untere Grenze
var oben = random(5, 9); // obere Grenze
var ergebnis = random(unten, oben); // Zufallszahl aus diesem Bereich

Ihr könnt auch Funktionen verschachteln

var zahl = random(random(0, 4), random(5, 9));

Dabei müßt Ihr allerdings darauf achten, daß Ihr nicht aus der Syntax fallt und beispielsweise eine Klammer vergeßt.

Die meisten modernen Sprachen bringen eine umfangreiche Bibliothek von Funktionen mit, die Ihr benutzen könnt. Ein Buch zur serverseitigen Sprache PHP beispielsweise behandelt ausdrücklich nur die wichtigsten Funktionen - 700 an der Zahl. Im Anhang finden sich noch mal 900 weitere. Dabei gibt es für (fast) jeden Zweck etwas

  • Überprüfen, ob ein bestimmtes Zeichen in einem String enthalten ist.
  • Das aktuelle Datum in verschiedenen Formaten zurückliefern
  • Daten aus einer Datenbank abfragen
  • Zeichne ein Rechteck, eine Ellipse, ...

Derart viele Funktionen kann natürlich niemand im Kopf behalten. Darum gibt es für jede Sprache sogenannte Manuals, auch Referenzen genannt, mit Beschreibungen aller Funktionen. So etwas solltet Ihr beim Programmieren stets in Reichweite haben.

Ein Beispiel: Mal angenommen, Ihr braucht eine Funktion, die einen bestimmten Abschnitt eines Strings zurückliefert. Ihr schaut ins Manual im Kapitel String-Funktionen (darum geht es ja) und findet beispielsweise folgendes

string substr (string text, int start [, int length])

Substr returns the portion of text specified by the start
and length parameters.

If start is positive, the returned string will start
at the start'th position in text, counting from zero.
For instance, in the string 'abcdef', the character
at position 0 is 'a', the character at position 2 is 'c',
and so forth.
If start is negative, the returned string will start
at the start'th character from the end of text.
(...)

(die meisten Referenzen sind in Englisch).

Dieser Abschnitt enthält am Anfang die Signatur der Funktion. Das ist die Angabe von Rückgabetyp, Funktionsname und den verlangten Parametern. In unserem Fall bedeutet

string substr (string text, int start [, int length])

Die Funktion heißt 'substr' und liefert einen String zurück. An Parametern müßt Ihr einen String und ein int angeben, ein zweites int ist optional (zu erkennen an den eckigen Klammern).

Danach folgt eine Erklärung, was die Funktion tut und welche Bedeutung die Parameter haben. In diesem Fall liefert die Funktion den Teil von 'text' zurück, der mit dem Zeichen Nummer 'start' beginnt und 'length' Zeichen lang ist

var text = "Programmieren";
var teil = substr(text, 3, 5); // 'teil' enthält jetzt 'gramm'


Special vom: 16.01.2003
Autor dieses Specials: Henning Kockerbeck
Die weiteren Unterseiten dieses Specials:
Die reine Lehre - HTML
Stilvoll - CSS
Kleiner Grundkurs Programmieren
Jetzt wird's dynamisch - JavaScript
Die andere Seite der Dynamik - PHP
Neue Gefilde - XML
Weiterführende Links
Zurück zur Hauptseite des Specials


?>