Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.

Ähnliche Präsentationen


Präsentation zum Thema: "PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen."—  Präsentation transkript:

1 PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen Typ. Konzepte für Variablen: Vereinbarung, Initialisierung, Zuweisung, Wertabfrage

2 PKJ 2005/2 Stefan Dissmann Zusammenfassung der Vorwoche While-Schleife wiederholt eine Anweisung oder einen Block von Anweisungen aufgrund einer Bedingung. Syntax: while(Bedingung)while(Bedingung) { Anweisung; Anweisungen } Bedingung liefert bei ihrer Auswertung true oder false.

3 PKJ 2005/3 Stefan Dissmann Ein neues Problem: Bestimmung von Primzahlen Aufgabe: Bestimme alle Primzahlen bis zu einer vorgegebenen Obergrenze, beispielsweise bis 64. Erinnerung: Primzahlen sind natürliche Zahlen und immer nur durch 1 und sich selbst ganzzahlig teilbar. Beispiele: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, … Lösungsansatz: Primzahlbestimmung durch hinreichend viele Teilbarkeitsprüfungen.

4 PKJ 2005/4 Stefan Dissmann Primzahlbestimmung – Sieb des Eratosthenes Vorgehen Sieb des Eratosthenes: (1) Schreibe alle natürlichen Zahlen (>1) bis zur Obergrenze als Liste auf. (2) Wähle die erste Zahl z aus. (3) Streiche alle (echten) Vielfachen von z aus der Liste aller Zahlen. (4) Falls das Ende der Liste noch nicht erreicht ist, wähle die nächste nicht gestrichene Zahl als z und beginne bei (3). (5) Sonst ist die Aufgabe erfüllt. Beispiel: Schreibe Zahlen auf (1) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Wähle z = 2 und streiche Vielfache ((2) und (3)) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 3 5 7 9 11 13 15 17 19 21 23 25 Wähle z = 3 und streiche Vielfache ((4) und (3)) 2 3 5 7 9 11 13 15 17 19 21 23 25

5 PKJ 2005/5 Stefan Dissmann Primzahlbestimmung – Sieb des Eratosthenes Vorgehen Sieb des Eratosthenes: (1) Schreibe alle natürlichen Zahlen (>1) bis zur Obergrenze als Liste auf. (2) Wähle die erste Zahl z aus. (3) Streiche alle (echten) Vielfachen von z aus der Liste aller Zahlen. (4) Falls das Ende der Liste noch nicht erreicht ist, wähle die nächste nicht gestrichene Zahl als z und beginne bei (3). (5) Sonst ist die Aufgabe erfüllt. Bestandsaufnahme: Natürliche Zahlen auflisten (1): while -Schleife Häufiges Wiederholen von (3) und (4): while -Schleife Vielfache über Division ermitteln (3): wird schon gehen Liste von Zahlen aufbewahren:? (einfache Variable ungünstig)

6 PKJ 2005/6 Stefan Dissmann Liste der natürlichen Zahlen (>1) public class listeVonZahlen { public static void main(String[] args) { int obergrenze = 20; int zähler = 2; while (zähler <= obergrenze) { System.out.print(zähler + " "); zähler = zähler + 1; } Ausgabe: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

7 PKJ 2005/7 Stefan Dissmann Aufbewahren vieler Zahlen Benötigt wird: Eine Variable, die für viele Werte des gleichen Typs steht. Passendes Konstrukt in JAVA: Variable, die Feld (Array) von Werten speichert Nun für Felder betrachten: Vereinbarung, Initialisierung, Zuweisung, Wertabfrage

8 PKJ 2005/8 Stefan Dissmann Vereinbarung von Feldern Erinnerung: int i; vereinbart einen Bezeichner i, der für genau eine Zahl stehen kann. Felder: int f[]; vereinbart einen Bezeichner f, der eine Anzahl von Zahlen beinhaltet. Neue Sonderzeichen: [] Die Anzahl gehört nicht zur Vereinbarung! Auch möglich: int[] feld1, feld2; entspricht: int feld1[], feld2[]; int feld1[], zahl, feld2[];

9 PKJ 2005/9 Stefan Dissmann Initialisierung von Feldern Initialisierung eines Feldes umfasst: Festlegen der Anzahl der Elemente (Größe des Feldes) Festlegen der Werte für die Elemente Beide Varianten sind möglich: int[] f = new int[5]; Initialisieriert die Größe des Feldes auf 5 Elemente. Neues Schlüsselwort: new Neue Verwendung von […] int[] g = {17,2,4,122,0,-3} Initialisieriert die Größe des Feldes auf 6 Elemente. Belegt diese 6 Elemente mit den vorgegebenen Zahlen. Neue Verwendung von { … }

10 PKJ 2005/10 Stefan Dissmann Zuweisung an felder Zuweisung ist möglich für Größe des Feldes int[] f; f = new int[7]; wie bei Initialisierung Einzelne Elemente des Feldes f[0] = 22; erstes Element erhält den Wert 22 f[1] = -3; zweites Element erhält den Wert - 3 int elem = 4; f[elem] = 0; viertes Element erhält den Wert 0 f[elem+1] = 34; fünftes Element erhält den Wert 34

11 PKJ 2005/11 Stefan Dissmann Zuweisung an Felder Anmerkungen: Die Nummer eines Elements heißt Index. f[1] bezeichnet das zweite Element von f mit dem Index 1. Der Index muss immer zwischen 0 und der Größe-1 des Feldes liegen. int[] g={3}; g[1]=5; führt zu Fehler! Neue Verwendung von […]: ermöglicht die Zuweisung an Elemente. Vorsicht: Erneutes Zuweisen der Größe führt zu Verlust der alten Elemente. Zuweisung von ganzen Feldern führt zu (noch) unerklärbaren Seiteneffekten. int[] f, g={3}; f=g; Nicht verwenden! Statt dessen elementweises Kopieren durch f[0]=g[0];

12 PKJ 2005/12 Stefan Dissmann Wertabfrage bei Feldern Abfrage ist möglich für Größe des Feldes über length -Abfrage: int[] f = {5,6,7,8}; System.out.println(f.length); druckt 4 aus! Werte der einzelnen Elemente des Feldes int[] f = {5,6,7,8}; System.out.println(f[1]); druckt 6 aus! System.out.println(f[1]+f[3]); druckt 14 aus! Noch eine Verwendung von […]: ermöglicht die Abfrage der Elemente.

13 PKJ 2005/13 Stefan Dissmann Beispiele mit Feldern Aufgabe war: Lege Liste mit den natürlichen Zahlen>1 bis zu einer vorgegebenen Obergrenze an! Erste Lösung mit Initialisierung eines int-Feldes: int[] f={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; Viel Schreibarbeit bei großer Grenze Wenig flexibel, wenn Grenze geändert wird unbrauchbar

14 PKJ 2005/14 Stefan Dissmann Beispiele mit Feldern Zweite Lösung mit Zuweisung in einer Schleife: int obergrenze = 64; int[] f = new int[obergrenze-1]; int zähler = 0; while (zähler < f.length) { f[zähler] = zähler+2; zähler = zähler+1; } Und die zugehörige Testausgabe: zähler = ; while (zähler < f.length) { System.out.print(f[zähler] + " "); zähler = zähler+1; }

15 PKJ 2005/15 Stefan Dissmann Sieb des Eratosthenes Vorstufe zur Primzahlenbestimmung: int obergrenze = 64; int[] zahlen = new int[obergrenze-1]; int zähler = 0; while (zähler < zahlen.length) { zahlen[zähler] = zähler+2; zähler = zähler+1; } int testwert = zahlen[0]; // das ist die 2! zähler = 1; while (zähler < zahlen.length) { // zahlen[zähler] teilbar durch testwert? zähler = zähler+1; } Unzureichend:- nur für Vielfache von 2 - Kommentar muss in JAVA ausformuliert werden

16 PKJ 2005/16 Stefan Dissmann Zusammenfassung Feld (auch Array, Feld- oder Array-Variable) steht für eine nummerierte Folge von Werten (Elemente), der sich im Programmablauf ändern können. Das Feld besitzen einen Typ, der für die einzelnen Elemente gilt. Der Zugang zu Elemente erfolgt über ihren Index. Konzepte für Felder: Vereinbarung, Initialisierung von Größe und Werten, Zuweisung von Größe und Werten, Abfrage von Größe und Werten


Herunterladen ppt "PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen."

Ähnliche Präsentationen


Google-Anzeigen