Unterschiede

Hier werden die Unterschiede zwischen der gewählten und der aktuellen Version gezeigt.

start:info:11if:09_arrays 30.01.2009 08:33 start:info:11if:09_arrays 11.06.2015 12:22 aktuell
Zeile 33: Zeile 33:
  - Ein Array ist ein Verweis auf eine Abfolge fester Länge von Variablen des gleichen Typs, genannt Fächer (engl. slots).   - Ein Array ist ein Verweis auf eine Abfolge fester Länge von Variablen des gleichen Typs, genannt Fächer (engl. slots).
  - Der Typ ''typ[]'' ist der Typ der Arrays mit Einträgen vom Typ ''typ''.   - Der Typ ''typ[]'' ist der Typ der Arrays mit Einträgen vom Typ ''typ''.
-  - Der Ausdruck ''new typ[n]'' liefert ein frisches Array vom Typ ''typ'' der Länge ''%%n%%'' zurück. Hier ist ''%%n%%'' ein Ausdruck vom Typ ''%%int%%''.+  - Der Ausdruck ''new typ[n]'' liefert ein frisches Array vom Typ ''typ'' der Länge ''%%n%%'' zurück. Hier ist ''%%n%%'' ein Ausdruck vom Typ ''%%double%%''.
Im Beispiel ist also ''data'' eine Arrayvariable, die ein frisches Array vom Typ ''double'' der Länge 10 enthält. Im Beispiel ist also ''data'' eine Arrayvariable, die ein frisches Array vom Typ ''double'' der Länge 10 enthält.
Zeile 96: Zeile 96:
  - Die Fächer eines Arrays werden durch Anfügen des in eckige Klammern gesetzten Index bezeichnet.   - Die Fächer eines Arrays werden durch Anfügen des in eckige Klammern gesetzten Index bezeichnet.
  - Ein auf diese Weise bezeichnetes Fach ist eine Variable. Man kann ihren Wert verwenden und ihr mit ''='' einen neuen Wert zuweisen.   - Ein auf diese Weise bezeichnetes Fach ist eine Variable. Man kann ihren Wert verwenden und ihr mit ''='' einen neuen Wert zuweisen.
-  - Arrayindizes beginnen immer bei 0.+  - Arrayindizes beginnen immer bei 0 (wie bei String).
  - Die Länge eines Arrays erhält man mit ''.length''   - Die Länge eines Arrays erhält man mit ''.length''
Zeile 165: Zeile 165:
Man kann nun etwa ''mittelwert(data)'' aufrufen. Wert ist der Mittelwert von ''data''. Man kann nun etwa ''mittelwert(data)'' aufrufen. Wert ist der Mittelwert von ''data''.
-====== Arrays als Methodenparameter ====== 
- 
-Es wird nur das Array übergeben, d.h. der Verweis auf das Array. Man kann daher (zuweilen unerwünschte) Seiteneffekte erhalten: 
- 
-<code java> 
-public double f(double[] zahlen) { 
-    if (zahlen.length == 0) { 
-        return 23; 
-    } else { 
-        zahlen[0] = 27; 
-        return 23; 
-    } 
-} 
-</code> 
-Der Aufruf ''f(data)'' hat stets den Wert 23, setzt aber gleichzeitig ''data[0]'' auf 27. 
====== Arrays als Rückgabewerte ====== ====== Arrays als Rückgabewerte ======
Zeile 204: Zeile 189:
====== Finden eines Wertes ====== ====== Finden eines Wertes ======
-Man möchte wissen, ob eins der eingelesenen Preise ''<= 1000'' ist:+Man möchte wissen, ob einer der eingelesenen Preise ''1000'' ist:
<code java> <code java>
Zeile 213: Zeile 198:
</code> </code>
-jetzt ist gefunden ''true'' genau dann, wenn ''data'' einen Eintrag ''<= 1000'' hat. Man möchte nun auch noch wissen, wie viele Preise ''<= 1000'' sind:+jetzt ist gefunden ''true'' genau dann, wenn ''data'' einen Eintrag ''1000'' hat. Man möchte nun auch noch wissen, wie viele Preise ''1000'' sind:
<code java> <code java>
Zeile 222: Zeile 207:
</code> </code>
-Jetzt ist ''count'' gleich der Anzahl derjenigen Preise, die ''<= 1000'' sind.+Jetzt ist ''count'' gleich der Anzahl derjenigen Preise, die ''1000'' sind.
====== Löschen eines Wertes ====== ====== Löschen eines Wertes ======
Zeile 231: Zeile 216:
<code java> <code java>
-data[pos] = data[dataSize-1]; +// Definition für die intern benutzte Länge: 
-dataSize = dataSize - 1;+dataSize = data.length; 
 + 
 +// Das zu löschende Element an der Stelle pos 
 +// mit dem letzten Element überschreiben 
 +data[pos] = data[dataSize-1];  
 + 
 +// die intern verwendete Längenangabe reduzieren 
 +dataSize = dataSize - 1; 
 + 
 +// Achtung: data.length hat sich nicht verändert!
</code> </code>
Zeile 238: Zeile 232:
<code java> <code java>
-for(int i = 0; i < dataSize - 1; i++)+// Elemente bis zur Position aufschieben 
 +for(int i = pos; i < dataSize - 1; i++)
    data[i] = data[i+1];     data[i] = data[i+1];
 +// die intern verwendete Längenangabe reduzieren
dataSize = dataSize - 1; dataSize = dataSize - 1;
</code> </code>
Zeile 302: Zeile 298:
  - Konstruiere ein 2D-Array von Booleans, das schachbrettartig vorbesetzt ist.   - Konstruiere ein 2D-Array von Booleans, das schachbrettartig vorbesetzt ist.
  - Schreibe eine Methode, die überprüft, ob zwei Arrays dieselben Elemente in derselben Reihenfolge enthalten.   - Schreibe eine Methode, die überprüft, ob zwei Arrays dieselben Elemente in derselben Reihenfolge enthalten.
-  - Felder.java: <code java> +  - Lade folgende Datei herunter und benenne Sie in "Felder.java" um: {{:start:info:11if:felder.txt|felder.txt}}
-import java.lang.Math.*; +
-/* +
- * @author  E. Alkan  +
- * @version 30.01.2009 +
- */ +
-public class Felder +
-+
-    // Instanzvariable +
-    int[] zahlenFeld; +
- +
-    /* +
-    * Konstruktor für Objekte der Klasse Felder +
-    * Erzeugt ein Zufallsfeld mit "anzahl" Integerwerten die maximal "maximum" gross sind +
-    */ +
-    public Felder(int anzahl, int maximum) +
-    { +
-        //Instanzvariable deklarieren +
-        zahlenFeld = new int[anzahl]; +
-        // Instanzvariable initialisieren +
-        for(int i=0;i<zahlenFeld.length;i++) { +
-            zahlenFeld[i]=(int)(maximum*(Math.random()))+1; +
-          } +
-    } +
- +
- +
-+
-</code> +
    - Öffne BlueJ.     - Öffne BlueJ.
    - Schließe evtl. bereits geöffnete Projekte.     - Schließe evtl. bereits geöffnete Projekte.
-    - Erstelle ein neues Projekt "Felder" (oder übernimm obiges Projekt)+    - Erstelle ein neues Projekt "Felder". 
-    - Erstelle darin eine Klasse "Felder" (oder übernimm obiges Klasse).+    - Erstelle darin eine Klasse "Felder".
    - Kopiere den Inhalt der oben angegebenen Klasse an Stelle der automatisch generierten Codezeilen in deiner soeben erstellten Klasse und speichere ab.     - Kopiere den Inhalt der oben angegebenen Klasse an Stelle der automatisch generierten Codezeilen in deiner soeben erstellten Klasse und speichere ab.
    - Fang an die Arbeitsaufträge abzuarbeiten (Methoden implementieren und kommentieren). Und ab geht's! :-)     - Fang an die Arbeitsaufträge abzuarbeiten (Methoden implementieren und kommentieren). Und ab geht's! :-)
start/info/11if/09_arrays.1233300803.txt.gz · Zuletzt geändert: 23.10.2013 10:12 (Externe Bearbeitung)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0