• Keine Ergebnisse gefunden

Übungsstunde 4

N/A
N/A
Protected

Academic year: 2022

Aktie "Übungsstunde 4"

Copied!
21
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übungsstunde 4

Einführung in die Programmierung I

(2)

Probleme bei Übung 3

[TODO Assistent]

(3)

Nachbesprechung Übung 4

(4)

static boolean isTriangle(int a, int b, int c) { if (a > b + c || b > a + c || c > a + b)

return false;

return true;

}

(5)

static void printPrimes(int n) { if (isPrime(n)) {

System.out.println("Primzahl");

} else {

System.out.println("Keine Primzahl");

} }

static boolean isPrime(int p) {

boolean[] sieb = new boolean[p + 1];

for(int i = 2; i < sieb.length; i++) sieb[i] = true;

for(int i = 2; i < p; i++) { if(sieb[i]) {

for (int v = 2 * i; v <= p; v += i) { sieb[v] = false;

} } }

return sieb[p];

}

Sieb.java von Ü3

(6)

static double squareRoot(int z) { double c = z;

double t = c / 2.0;

double eps = 0.000000000001;

while (Math.abs(t * t - c) > eps) { t = (c / t + t) / 2.0;

}

return t;

}

(7)

static boolean hasSortedEnd(int[] vector) { int len = vector.length;

boolean fall2 = len < 3

|| !(vector[len-3] <= vector[len-2] && vector[len-2] <= vector[len-1]

|| vector[len-3] >= vector[len-2] && vector[len-2] >= vector[len-1]);

return !fall2;

Bedingte ("short-circuit") Auswertung von ||

(8)

Vorbesprechung Übung 5

(9)

Aufgabe 1: Testen mit JUnit

Zweck des Programms:

● Wochentag eines Datums (nach 01.01.1900) ausgeben Beispiel: 21.10.2016 → Friday

Gibt fälschlicherweise aber “The 21.10.2016 is a Monday” aus.

● Berücksichtigt Schaltjahre (“Leap year”) Funktionsweise:

1. Überprüft, ob Datum OK ist

2. Zählt die Tage ab 1.1.1900 bis zum eingegebenen Datum 3. Wochentag = Tage % 7

(10)

Aufgabe 1: Testen mit JUnit

Tests in PerpetualCalendarTest.java

● Einzelne Tests prüfen Rückgabewerte von einzelnen Methoden des Programms PerpetualCalendar.java

● Tests sollten interessante Parameter für die Methoden testen

● Beispiel testCountDaysInYear():

assertEquals(366, PerpetualCalendar.countDaysInYear(1904));

1904 ist ein Schaltjahr, also sollte countDaysInYear() 366 Tage zurückgeben

DEMO

(11)

Distanz

Schreiben Sie eine Methode, die als Parameter die x und y kartesischen

Koordinaten eines Punktes (x | y) nimmt und die Entfernung des Punktes vom Ursprung liefert.

Überlegen Sie sich einige Testfälle: Wieviele wollen Sie und was für Eigenschaften sollten sie testen?

(12)

Aufgabe 2: Wett-Simulation

Simulation

● Start-Kapital: X

● Einsatz: 1

p=50% den Einsatz zu verdoppeln

● Wett-Reihe beendet, wenn bankrott oder Ziel-Kapital Y erreicht

(13)

Wett-Reihe

Bankrott Ziel-Kapital Y erreicht

(14)

Aufgabe 3: Wörter Raten

(15)

Aus Textdatei lesen

Scanner scanner = new Scanner(new File("woerter.txt"));

String[] woerter = new String[scanner.nextInt()];

for(int i = 0; i < woerter.length; i++) { woerter[i] = scanner.next();

} 8

wort

blasinstrument computer

schlange java

programmieren welt

sugus

woerter.txt Code zum Einlesen der Wörter:

Absoluter Pfad

● beginnt mit C:\… unter Windows oder /… unter Linux/macOS

Relativer Pfad

● ist relativ zum aktuellen Verzeichnis (“working directory”) des Programms (bei uns der Projektordner)

Liest das nächste Wort

Anzahl Wörter = 8

(16)

String-Vergleiche

String [] buchstaben = {"n", "o"};

String [] array = {"no"};

// wort = "no"

String wort = buchstaben[0] + buchstaben[1];

System.out.println((s == s4));

System.out.println((wort == array[0]));

System.out.println((wort.equals(array)));

System.out.println(wort.equals(array[0]));

System.out.println((wort.equals("no")));

(17)

Aufgabe 4: Datenanalyse

Anzahl Daten: 26 Minimum: 137 cm Maximum: 202 cm

Durchschnitt: 173 cm

Beispiel:

(18)

Histogramm

26 168 190 174 170 183 145 202

groessen.txt Wie viele Klassen soll das

Histogramm enthalten? 10 [100,115)

[115,130) | [130,145) ||

[145,160) |||||||

[160,175) ||||||||||||||||

[175,190) ||||||||||||||

[190,205) ||||||

[205,220) [220,235) [235,250)

(19)

Zusatzübungen

(20)

Postfix-Increment Operator

Was sind die Werte der Variablen (alles int)?

x = 0;

y = 0;

z = 1;

y = x++ + z - x;

x = 0;

y = 0;

z = 1;

y = x++ + z * x;

x = 0;

y = 0;

z = 1;

y = z * x + x++;

(21)

Arrays

Was gibt das folgende Code-Segment aus?

int [] a = new int [10];

for (int i = 0; i < 10; i++) { a[i] = 9 - i;

}

for (int i = 0; i < 10; i++) { a[i] = a[ a[i] ] ;

}

for (int i = 0; i < 10; i++) { System.out.print(a[i]);

}

Wie könnte man dieses Code-Segment flexibler formulieren?

Referenzen

ÄHNLICHE DOKUMENTE

cDNA Expression Array“-System der Firma CLONTECH GmbH (Heidelberg) verwendet, um die Ex- pressionsprofile menschlicher Gene bei Überexpression des APM-1-Gens im Vergleich mit

Mit Hilfe des p38-Inhibitors SB203580 konnte gezeigt werden, dass über die Phosphorylierung von p38 die Expression von Zytokinen wie IL-1, IL-6 und TNF-α reguliert wird und p38

DIE LEBERSPEZIFISCHEN ENZ\;'M-TESTS UND DER LAP-TEST Aus Punkt (1) ergibt sich, daß eine Erhöhung der Aktivität dieser Enzyme dann durchaus auch im Serum vorhanden sein

Meist kommunikativer Ablauf beobachteter Verhaltensweisen, interaktive Konstitution von Wirklichkeit, direkter Kontakt mit Feld nur durch Kommunikation, Akzep- tanz des

Wenn keine Parameter vorhanden, wird eine leere Parameterliste angegeben:. Parameterliste

Mit dem Befehl return erhält eine Methode einen Rückgabewert.. Die Methode nimmt diesen

[r]

des Neyman-Pearson Lemmas (Notwendigkeit) sagt, dass ein beliebiger anderer level α Test mit gleich großer Power in θ 1 wie Test 1, auch denselben Verwerfungsbereich wie Test 1