Übung

Werbung
Übung:
Erstes Programm
Seite 1
Aufgabe 1 – Grundrechenarten
a) Schreiben Sie ein Programm, das die Summe und die Differenz von zwei ganzen Zahlen
ausgibt.
Beispiel-Bildschirmausgabe:
b) Erweitern Sie Ihr Programm um Multiplikation und Division. Außerdem soll der Rest aus
der Division der beiden Ganzzahlen ausgegeben werden. (Sie erhalten diesen durch den
Modulo-Operator %.)
Aufgabe 1b – Die Datentypen short und int
Erstellen Sie ein Programm, welches einer Variable zahl vom Typ short den Wert 32 zuweist und
geben Sie sie aus mit
System.out.println("Die Zahl lautet "+zahl);
Testen Sie das Programm. Nun vergrößern Sie die Zahl, indem hinten immer wieder eine 0 anfügt
wird. Was passiert, wenn die Zahl zu groß für den Datentyp short wird? Ersetzen Sie im nächsten
Schritt short durch int und prüfen, welche Zahlen hiermit noch darstellbar sind.
Übung:
Einfache Berechnungen
19. September 2013
Seite 1
Aufgabe 4 – Swap
Schreiben Sie ein Programm, das die Inhalte zweier Variablen des Typs int vertauscht. Eine Eingabe ist nicht erforderlich.
Aufgabe 5 – Fahrplan
Ein Zug fährt in Köln um 14:40 Uhr ab und erreicht Frankfurt um 15:20 Uhr. Nach dem Ausbau
der Strecke ist die Fahrtzeit um 15% geringer. Erstellen Sie hierzu eine Klasse namens Fahrplan,
die die neue Fahrtzeit berechnet und die neue Ankunftszeit ausgibt.
Das Programm soll die beiden vorgegebenen Zeiten in 24-Stunden-Notation als Ganzzahlen verarbeiten (z.B. Abfahrt: 1440). Nach der Berechnung soll das Ergebnis auch in diesem Format
augegeben werden.
(Hinweis: Zur Vereinfachung der Rechnung sollen die Zeiten in Minuten umgerechnet werden.
Dies geht besonders gut mit dem Modulo-Operator.)
Seite 1
Aufgabe 2 – Gleichungen
Es interessieren die verschiedenen Funktionswerte der Gleichung
3x2 − 8x + 4
Bei x=0.0 hat die Gleichung den Wert 4.0
PS: Bei x=2.0 und x=2/3 sollte y=0 sein.
Aufgabe 3a – Benzinverbrauch1
Ein Auto muss zum Tanken, nachdem es eine Strecke von 548 km zurückgelegt hat. Der Fahrer
entnimmt der Tankquittung, dass sein Fahrzeug für diese Strecke 41.3 Liter Benzin verbraucht hat.
Er wüsste gerne, wie viel sein Auto auf 100 km verbraucht.
Schreiben Sie ein Programm das den Durchschnittsverbrauch (in Liter pro 100 km) berechnet.
Aufgabe 3b – Benzinverbrauch2
Ein Auto verbraucht auf normalen Straßen 8 Liter Benzin auf 100 km, auf weniger guten Straßen
15% mehr. Schreiben Sie ein Programm zur Ausgabe der Entfernung, die das Auto auf normalen
und schlechten Straßen mit einem vollen 40-Liter-Tank fahren kann.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Eingaben von der Tastatur lesen
19. September 2013
Seite 1
Aufgabe 8 – Benzinverbrauch3
Erstellen Sie zum Programm aus Aufgabe 3 (Benzinverbrauch1) eine Version, die die Angaben
zur gefahrenen Strecke und der für diese Strecke benötigten Benzinmenge vom Benutzer erfragt
und diese dann von der Tastatur einliest.
Testen Sie Ihr Programm mit verschiedenen Eingaben.
Aufgabe 9 – BodyMassIndex1
Erstellen Sie zum Programm aus Aufgabe 7 (BodyMassIndex) ebenfalls eine Version mit einer
Benutzereingabemöglichkeit für die Angaben zu Körpergewicht und -größe.
Aufgabe 10 – Widerstand
Für einen elektrischen Widerstand gilt: R = U/I.
R - Widerstand des Leiters
U - Spannung am Leiter
Beispiel-Bildschirmausgabe:
Startzeit: 1440
Alte Ankunftszeit: 1520
Neue Ankunftszeit: 1514
I - Stromstärke im Leiter
Der Benutzer soll Spannung und Stromstärke eingeben können.
Berechnen Sie daraus den Widerstand und geben Sie ihn aus.
Aufgabe 6 – Zubringerbus
Zwischen zwei Terminals eines Flughafens verkehrt ein Zubringerbus, der jeweils zur halben und
zur vollen Stunde abfährt. Schreiben Sie ein Programm, das eine Uhrzeit in Form einer initialisierten Variablen erhält (in 24-Stunden-Notation) und berechnet, wie lange es bis zur Abfahrt des
nächsten Busses noch dauert.
(Hinweis: Es werden keine Verzweigungen benötigt, nur der Modulo-Operator)
Aufgabe 7 – BodyMassIndex
Schreiben Sie ein Programm, das den Body-Mass-Index (BMI) einer Person berechnet. Dieser
ergibt sich nach folgender Formel:
M asse
BM I =
Größe2
wobei M asse das Körpergewicht in Kilogramm und Größe die Körpergröße in Metern ist.
Der berechnete BMI-Wert ist vor der Ausgabe auf den nächsten ganzzahligen Wert auf- bzw. abzurunden.
Beispiel-Bildschirmausgabe:
Gewicht in kg: 64
Groesse in cm: 172
BMI: 22
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Erstes Programm
Schreiben Sie ein Programm mit einer Variablen x vom Typ double und weisen Sie der Variablen
nacheinander die Werte 0, 1/3, 2/3, 1., 2. und 3. zu. Berechnen Sie den Funktionswert y an der
Stelle x und geben für jedes x den entsprechenden y-Wert wie folgt aus:
Das Ergebnis der Addition 23+4 ist 27.
Das Ergebnis der Subtraktion 23-4 ist 19.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
19. September 2013
Beispiel-Bildschirmausgabe:
U (Volt) = 10.0
I (Ampere) = 4.0
R (Volt/Ampere) = 2.5
Aufgabe 11 – Preisnachlass
Ein Geschäftsinhaber plant ein Aktionswochenende, an dem auf alle Artikel ein Preisnachlass von
20% gewährt werden soll. Zum Berechnen der neuen Preise benögt er ein Programm, das nach Eingabe des bisherigen Preises den reduzierten Preis und außerdem die in diesem Betrag enthaltene
Mehrwertsteuer von 19% auf den Nettopreis ausgibt.
Erstellen Sie ein entsprechendes Java-Programm.
Beispiel-Bildschirmausgabe:
alter Preis: 39.90
neuer Preis: 31.92
Mwst: 5.10
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
Übung:
Berechnungen von Formeln
Seite 1
Aufgabe 12 – Einstein
Die berühmte Formel von Einstein für die Energie in Joule lautet: E = m · c2 .
Die Lichtgeschwindigkeit sei ungefähr c = 300 000 000 m/s.
Für die Masse m soll der Benutzer eine Anzahl an Tafeln Schokolade eingeben (eine Tafel wiegt
100 g = 0.1 kg).
Nun soll mit der obigen Formel berechnet werden, wieviel PetaJoule an Energie entstehen würden,
wenn man die Schokolade vollständig in Energie auflösen könnte.
Peta bedeutet dabei 1015 .
Um sich die Energiemenge besser vorstellen zu können, soll das Ergebnis mit dem Jahresenergieverbrauch Deutschlands von 15 000 PJ verglichen werden.
Geben Sie die Ergebnisse ausführlich aus.
Beispiel-Bildschirmausgabe:
Anzahl Tafeln Schokolade: 50
Loesen sich die 50 Tafeln Schokolade vollstaendig in Energie auf,
so erhaelt man 450.0 PJ.
Das sind 3.0 % des Jahresenergieverbrauchs von Deutschland.
Aufgabe 13 – Punktabstand
Schreiben Sie ein Programm, das den Abstand von zwei Punkten(P1=(x1,y1); P2=(x2,y2)) nach
Eingabe der x-, y-Werte berechnet und ausgibt.
(Wurzelberechnung in Java: Math.sqrt(4); // ergibt 2)
Abstand (P1,P2) =
q
(x1 − x2 )2 + (y1 − y2 )2
Übung:
Fallunterscheidungen (1)
Seite 1
Aufgabe 15 – Bestellung
Eine Firma liefert bei einem Bestellwert ab 200,- Euro porto- und verpackungsfrei. Für Aufträge
unter 200,- Euro beträgt die Versandpauschale 5,50 Euro. Ein Programm soll den Rechnungsbetrag
in Abhängigkeit vom Bestellwert ausgeben. Der Bestellwert soll vom Benutzer einzugeben sein.
Beispiel-Bildschirmausgabe:
Berechnung des Rechnungsbetrages
Bestellwert in Euro: 150
Rechnungsbetrag: 155.5 Euro
Aufgabe 16 – Gleichung
Die Gleichung ax + b = 0 soll für einzulesende Werte a und b vom Computer gelöst werden.
Denken Sie daran, dass sowohl a als auch b den Wert 0 annehmen kann.
Beispiel-Bildschirmausgabe:
Gleichung ax+b=0
a = 3
b = 6
Loesung = -2
Aufgabe 17 – char
Ein Wort und eine Zahl sollen eingelesen werden. Das Programm soll den Buchstaben, der an der
entsprechenden Stelle des Wortes steht oder eine passende Fehlermeldung ausgegeben.
Beispiel-Bildschirmausgabe:
Der Punktabstand von P1(3|4), P2(1|2) betraegt: 2.8284271247461903
Aufgabe 14 – Windchill
Eine tiefe Temperatur fühlt sich für den Menschen noch kälter an, wenn dazu ein Wind bläst.
Dieser Effekt wird Windchill-Effekt genannt. Die gefühlte“ Temperatur wct berechnet sich aus
”
der Windgeschwindigkeit v (in km/h gemessen) und der tatsächlichen Temperatur t (gemessen in
◦
C):
√
wct = 33 + (0.478 + 0.237 · v − 0.0124 · v)(t − 33)
Schreiben Sie ein Programm, das diese Berechnung für Sie durchführt.
Beispiel-Bildschirmausgabe:
Temperatur in Grad Celsius: 5
Windgeschwindigkeit in km/h: 66
die gefuehlte Temperatur ist: -11.4 Grad C
Geben Sie das Ergebnis auf eine Nachkommastelle gerundet aus.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Fallunterscheidungen (1)
19. September 2013
Seite 2
Aufgabe 18a – Switch
Erstellen Sie ein Programm, das ein Datum diesen Jahres (Tag und Monat als Zahlen) einliest und
ausgibt, wieviele Tage noch bis zum Monatsende vergehen.
Aufgabe 18b – Switch
Finden Sie die Fehler in der vorgegebenen Datei WievieleFehler.java.
Aufgabe 19 – JouleKal
Eine Kalorie entspricht 4.19 Joule.
Fragen Sie den Benutzer, ob er Kalorien in Joule oder Joule in Kalorien umrechnen möchte. Dann
soll er den umzurechnenden Wert eingeben.
Ermitteln Sie das Ergebnis und geben Sie es aus.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Fallunterscheidungen (3)
19. September 2013
Seite 1
Aufgabe 21a – BodyMassIndex2
Erweitern Sie das Programm aus Aufgabe 9 (BodyMassIndex1), so dass außer dem dem BMIWert auch ausgegeben wird, ob die Person Untergewicht, Normal- oder Übergewicht hat. Bei der
Bewertung des BMI ist das Alter der Person, das zusätzlich eingelesen werden soll, entsprechend
der folgenden Tabelle zu berücksichtigen:
Alter
(Jahre)
19-24
25-34
35-54
> 64
Normalgewicht
(BMI-Idealwert)
19-24
20-25
21-27
24-29
Aufgabe 21b – Schaltjahr
Schreiben Sie ein Programm, das nach Eingabe einer Jahreszahl ausgibt, ob es sich bei diesem Jahr
um ein Schaltjahr handelt oder nicht.
Beispiel-Bildschirmausgabe:
Moechten Sie
(1) Joule in Kalorien oder
(2) Calorien in Joule
umrechnen? 2
Kalorien: 2000
Joule : 8380
Die Regeln, die festlegen, ob ein Jahr ein Schaltjahr ist oder nicht, lauten wie folgt:
• Ist die Jahreszahl durch 4 (ohne Rest) teilbar, aber nicht durch 100, dann ist es ein Schaltjahr
mit 366 Tagen. Beispiele: 1980, 1972, 1720
Aufgabe 20 – Klimaklasse
Bei Kühlschränken mit Eisfach, besonders mit Tiefkühlfächern, ist auf die vom Hersteller angegebene Umgebungstemperatur des Aufstellorts, angegeben als Klimaklasse zu achten:
• Ist die Jahreszahl durch 100 (ohne Rest) teilbar, aber nicht durch 400, dann ist das Jahr kein
Schaltjahr und hat nur 365 Tage, z.B. in den Jahren 1700, 1800 und 1900 oder ferner 2100.
• Ist die Jahreszahl durch 400 (ohne Rest) teilbar, dann ist das Jahr ein Schaltjahr. Die Jahre
1600 und 2000 waren Schaltjahre.
N (Norm): Umgebungstemperaturen von +16 ◦ C bis +32 ◦ C
SN (Erweiterte Norm): Umgebungstemperaturen von +10 ◦ C bis +32 ◦ C
ST (Subtropen): Umgebungstemperaturen von +18 ◦ C bis +38 ◦ C
T (Tropen): Umgebungstemperaturen von +18 ◦ C bis +43 ◦ C
Lesen Sie vom Benutzer die minimale und maximale Umgebungstemperatur ein und geben Sie
aus, welche Klimaklassen dem entsprechen (können mehrere sein).
Entspricht dem keine Klimaklasse, soll dies auch ausgegeben werden.
Beispiel-Bildschirmausgabe:
Minimale Umgebungstemperatur: 17
Maximale Umgebungstemperatur: 28
Moegliche Klimaklassen:
N (Norm): Umgebungstemperaturen von +16 bis +32 Grad Celsius
SN (Erweiterte Norm): Umgebungstemperaturen von +10 bis +32 Grad Celsius
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
Übung:
Schleifen (1)
Seite 1
Aufgabe 22 – Quadratzahlen
Geben Sie die ersten n natürlichen Zahlen zusammen mit ihren Quadratzahlen aus. n soll eingelesen werden.
Aufgabe 23 – Summe
Lassen Sie den Rechner die Summe der folgenden Zahlen bis zu einem Grenzwert g berechnen
und geben Sie die Anzahl der benötigten Glieder aus.
Übung:
Schleifen (1)
Seite 2
Erstellen Sie eine zweite Version des Programms aus Aufgabe 24 (Quersummen), das anstelle
der einfachen Quersumme einstellige Quersummen berechnet. Dazu wird von einer mehrstelligen
Quersumme solange erneut die Quersumme gebildet, bis diese einstellig wird:
z.B. 67 → 6+7 → 13 → 1+3 → 4
1 + 2 + 3 + 4 + 5 + ... + n + ...
Beispiel-Bildschirmausgabe:
Berechnung der Summe 1 + 2 + 3 + 4 + ... bis zum Grenzwert 16
Nach 6 Gliedern ist 16 erreicht. Die Summe ist 21.
Aufgabe 24 – Quersummen
Schreiben Sie ein Programm, das einen ganzzahligen Wert einliest, und die Quersumme für diese
Zahl berechnet und ausgibt.
Beispiel-Bildschirmausgabe:
Ganzzahliger Wert: 1234
Die Quersumme der Zahl 1234 ist 1+2+3+4 = 10
Ganzzahliger Wert:
Hilfe:
1234 % 10 = 4
1234 / 10 = 123
123 % 10 = 3
Aufgabe 24b – Quersummen
Ändern sie das Programm, so dass es wiederholt ganzzahlige Werte einliest, und die Quersumme
für jede dieser Zahlen berechnet und ausgibt.
Aufgabe 25 – Statistik
Schreiben Sie ein Programm, welches eine double-Zahlenfolge einliest, das arithmetische Mittel,
die Varianz und die Standardabweichung der Zahlenfolge ermittelt und diese drei Werte ausgibt.
Die Anzahl der einzulesenden Folgenwerte soll als erstes eingelesen werden.
Zur Erinnerung hier noch die benötigten Formeln:
Mittelwert:
x=
Varianz:
σ2 =
Standardabweichung:
n
1X
xi
n i=1
n
1X
x2 − x 2
n i=1 i
√
σ = + σ2
Aufgabe 26 – EinstelligeQuersummen
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Schleifen (2)
19. September 2013
Seite 1
Aufgabe 27 – VollkommeneZahlen
Eine natürliche Zahl, die gleich der Summe ihrer positiven echten Teiler (d.h. aller Teiler außer
sich selbst) ist, wird vollkommene Zahl genannt. Die Zahl 6 ist die kleinste vollkommene Zahl,
denn die Summe der Teiler 1, 2 und 3 ergibt wiederum die Zahl 6.
Schreiben Sie ein Programm, das jede Zahl von 1 bis 10000 daraufhin untersucht, ob sie diese
Eigenschaft besitzt und alle auf diese Weise gefundenen vollkommenen Zahlen ausgibt.
Beispiel-Bildschirmausgabe:
Vollkommene Zahlen zwischen 1 und 10000:
6 28 496 8128
Aufgabe 28 – Primzahl
Lassen Sie prüfen, ob eine long-Zahl eine Primzahl ist. Dividieren Sie die zu prüfende Zahl x
durch i = 2, 3, usw. bis i2 > x ist und prüfen Sie, ob die Division xi einen Rest lässt.
Beispiel-Bildschirmausgabe:
Primzahlpruefung
Ganze Zahl eingeben: 66
66 ist keine Primzahl.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
19. September 2013
Schleifen (3)
Seite 1
Aufgabe 30 – Zahlendreieck
Schreiben Sie ein Programm, das mit for-Anweisungen und print- bzw. println-Anweisungen das
folgende Dreieck auf dem Bildschirm ausgibt. Lesen Sie die benötigte Zeilenanzahl (hier fünf) ein.
1
2
3
4
5
2
3 3
4 4 4
5 5 5 5
Passen Sie das Programm zur Ausgabe des Dreiecks so an, dass die Zahlen wie unten dargestellt,
zentriert werden:
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
Passen Sie es erneut an, um das Dreieck zentriert und auf dem Kopf stehend auszugeben:
Aufgabe 29 – Ausdruck
Schreiben Sie ein Programm, das einen Ausdruck der Form
zahl1 op zahl2 op ... op zahln
berechnet, wobei op für einen der folgenden Operatoren steht: + - * / %
Gestalten Sie die Eingabe derart, dass pro Zeile entweder eine Zahl oder ein Operator eingegeben wird. Der gesamte zu berechnende Ausdruck soll also über mehrere Zeilen verteilt eingelesen
werden. Die Eingabe des Ausdrucks soll durch Eingabe des Zeichens = beendet werden. Der berechnete Ergebniswert ist dann auszugeben.
Beispiel-Bildschirmausgabe:
14
/
7
*
2
+
3
= 7
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
Aufgabe 31 – Geburtstage
Die Wahrscheinlichkeit, dass zwei Menschen in einer Gruppe von n Personen am gleichen Tag
Geburtstag haben beträgt
p(n) = 1 −
365 364 363
365 − n + 1
·
·
· ... ·
365 365 365
365
Schreiben Sie ein Programm zur Berechnung dieser Wahrscheinlichkeit und zur Auswertung und
Ausgabe dieser Wahrscheinlichkeit für Gruppen von 2 bis 60 Personen.
Der Operator soll als folgendermassen eingelesen werden:
Scanner sc = ...
...
char op = sc.next().charAt(0);
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
Übung:
Gleitkommaarithmetik (1)
Seite 1
Aufgabe 34 – GleitkommaArithmetik
Überlegen Sie sich zunächst welche Ausgabe vom folgenden Programm erzeugt wird und überprüfen Sie anschließend die Richtigkeit Ihrer Annahmen. Was können Sie daraus schließen, in
Bezug auf die Verwendung eines Gleitkommatyps für Zählvariablen bei Schleifen?
Untersuchen Sie, welche Änderungen sich ergeben, wenn anstelle des Typs float der Typ double
verwendet wird.
(Die Quelldatei GleitkommaArithmetik.java ist im Verzeichnis /home/java zu finden.)
public class GleitkommaArithmetik {
public static void main(String[] args) {
Übung:
Gleitkommaarithmetik (1)
1. eingezahltes Kapital in Euro (Mindestanlagebetrag 100 EUR)
2. Zinssatz in %
3. Anlagedauer in Jahren
Die eingelesenen Werte sind auf Gültigkeit zu überprüfen. Bei korrekter Eingabe ist eine Tabelle
auszugeben, die die jährliche Entwicklung der Geldanlage auflistet.
Beispiel:
Für einen Anlagebetrag von 1.000 Euro, der bei einer Laufzeit von 6 Jahren mit 3% verzinst wird,
sollte z.B. folgende Ausgabe erzeugt werden:
Jahr
0
1
2
3
4
5
6
float a = 0.1f;
float b;
boolean skipLine = false;
for (int i = 1; i < 15; i++)
{
b = i*0.1f;
if (skipLine)
System.out.println();
System.out.println("i=" + i + "\ta=" + a + "\tb=" + b);
if (10*a != i)
{
System.out.println("
(i - 10*a) = " + (i - 10*a));
skipLine = true;
}
if (10*b != i)
{
System.out.println("
(i - 10*b) = " + (i - 10*b));
skipLine = true;
}
a += 0.1;
}
Seite 2
Zinsen
0.00
30.00
30.90
31.83
32.78
33.77
34.78
Guthaben
1000.00
1030.00
1060.90
1092.73
1125.51
1159.28
1194.06
}
}
Aufgabe 35 – Formel
Programmieren Sie die Formel
f (x) =
36(x − 1)14
5x − 9
und geben Sie im Bereich von -1 bis 2 eine Wertetabelle mit Schrittweite 0.1 aus. Berücksichtigen
Sie die Erkenntnisse aus Aufgabe 34 und überprüfen Sie Ihr Ergebnis!
Aufgabe 36 – Zinsen
Schreiben Sie ein Programm, das für eine Geldanlage Zinsen und Zinseszinsen berechnet. Die
Zinsen sollen am Ende jeden Laufzeitjahres dem Kapital zugeschlagen und in den Folgejahren
zusammen mit dem Kapital verzinst werden. Die folgenden Angaben, die für die Berechnung
benötigt werden, sind einzulesen:
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
19. September 2013
Gleitkommaarithmetik (2)
Seite 1
Aufgabe 37 – Pi
Die Bailey-Borwein-Plouffe-Formel ist eine 1996 entdeckte Reihendarstellung für die Zahl π (Pi):
π =
∞
X
k=0
mit den Summanden sk =
1
16k
4
2
1
1
−
−
−
8k + 1 8k + 4 8k + 5 8k + 6
Verwendet man diese Formel bei der Programmierung, dann kann die Berechnung der Summe nach
P
dem Aufaddieren der ersten n Summanden abgebrochen werden. Die Teilsumme Sn = nk=0 sk
kann als Näherungwert für π verwendet werden.
Die Anzahl n der Summanden ergibt sich einfach dadurch, dass man solange Summanden aufaddiert bis sich der Wert der Summe durch das Aufaddieren eines weiteren Summanden nicht mehr
ändert, also für zwei aufeinander folgende Teilsummen Si und Si+1 = Si + si+1 gilt: Si+1 = Si .
(Diese mathematisch unmöglich erscheinende Situation ergibt sich im Programm relativ schnell,
da Gleitkommawerte nur ungenau dargestellt werden können und die Werte der Summanden sehr
klein werden.)
Schreiben Sie ein Programm, das nach der beschriebenen Methode unter Verwendung des Typs
double die Zahl π näherungsweise berechnet. Das Programm soll neben dem Näherungswert für
π auch die Anzahl n der verwendeten Summanden ausgeben.
Aufgabe 38 – Quadratwurzel
Sei a eine positive reelle Zahl und eine Folge xi positiver reeller Zahlen rekursiv definiert durch
x0 = 1,
Übung:
Euklid/ Felder (Arrays)
19. September 2013
Seite 1
Aufgabe 39 – Euklid
Implementieren Sie den folgenden Algorithmus. Was wird berechnet?
void programm ()
sk
WS 2013/14, Übung zum Java-Vorkurs für MATSE
1
a
xi+1 =
für i = 0, 1, 2, . . .
xi +
2
xi
Es kann mathematisch gezeigt werden, dass gilt:
√
xi → a für i → ∞
a und b einlesen
b != 0
a> b
T
F
a=a-b
b=b-a
result=a
Aufgabe 40 – Fragen zu Arrays
Welche Zeilen in Abbildung 1 enthalten eine korrekte Definition eines Arrays? Kreuzen Sie die
korrekten Definitionen an.
a)
b)
c)
d)
e)
f)
g)
int
int
int
int
int
int
int
f1
f2
[]
[]
f5
f6
f7
[2] = {5,3};
[] = {7,1,9};
f3 = {5,3};
f4 = new int [2];
[2];
[] = new int [2];
[] = new int [] {f3[0], f3[1]};
Abbildung 1: potentielle Definitionen von Arrays in Java
Schreiben Sie ein Programm, das interaktiv Werte für a einliest und unter Verwendung der gegebenen Folge die Quadratwurzel von a näherungsweise berechnet. Als Näherungswert ist jeweils
das erste Folgenglied xn zu benutzen, für das gilt
|xn − xn−1 | ≤ 0.001
Geben Sie für jeden gelesenen Wert a, die Quadratwurzel q, a − q (Überprüfen der Genauigkeit)
und die Anzahl der Iterationen aus, die jeweils zur Berechnung benötigt wurden.
Für alle Rechnungen ist der Datentyp double zu verwenden. Testen Sie das Programm u.a. mit
den Werten a = 64, 9, 0.5, 1 und 0.01.
2
WS 2013/14, Übung zum Java-Vorkurs für MATSE
int result, a, b
19. September 2013
Aufgabe 41 – Umkehrung
Lesen Sie 10 Zahlen vom Benutzer ein und geben Sie diese anschließend in umgekehrter Reihenfolge wieder aus.
Aufgabe 42 – Ergänzung
Lesen Sie eine Menge von Zahlen vom Benutzer ein, und geben Sie die Zahlen von 1 bis 10 aus,
die er nicht eingegeben hat.
Aufgabe 43 – Sortieren
Lesen Sie maximal 25 Zahlen vom Benutzer ein und geben Sie diese anschließend aufsteigend
sortiert wieder aus.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
Übung:
Felder
Seite 1
Zusatzaufgabe – Schiffe versenken
Implementieren Sie eine einfache Version des Spiels “Schiffe versenken”. Dazu soll eine Eingabedatei mit einer Karte in ein zweidimensionales char-Feld eingelesen werden. Ein Schiff oder
Schiffsteil wird in der Karte mit 1 markiert, der Rest mit 0. Das Spielfeld ist 10x10 Felder gross.
Es existieren 5 Schiffe mit einer Länge von 1 bis 5.
Der Benutzer soll versuchen, die Schiffe des Computers zu versenken, indem er in jedem Schritt
eine Koordinate angibt. Nach dieser Eingabe wird die Karte mit Zeilen- und Spalternnummerierung ausgegeben, wobei versenkte Schiffsteile mit x markiert werden sollen und schon getestete
leere Stellen mit -. Versenkte Schiffe sollen mit grossen X markiert werden.
Wenn alle Schiffe versenkt wurden, soll die Anzahl der benötigten Versuche ausgegeben werden.
Das Lesen von einer Eingabedatei geht folgendermassen:
import java.io.File;
Übung:
Schleifen und Methoden
Seite 1
Aufgabe 32 – Primzahlentabelle - Methoden
Schreiben Sie zunächst das Programm aus Aufgabe 28 (Primzahl) in eine Methode um, die einen
boolean-Wert mit dem Ergebnis der Überprüfung zurückgibt. (In der Methode soll keine Ausgabe des Ergebnisses erfolgen.) Die zu prüfende long-Zahl soll beim Aufruf an die Methoden
übergeben werden.
Schreiben Sie dann unter Verwendung dieser Funktion ein Programm, das alle ungeraden Zahlen
in einem bestimmten Intervall daraufhin untersucht, ob es eine Primzahl ist und alle so gefundenen
Primzahlen ausgibt.
Beispiel-Bildschirmausgabe:
Untere Grenze: 5
Obere Grenze: 12
Primzahlen, die zwischen 5 und 12 liegen: 5 7 11
// Das Program fuer das Spiel "Schiffen versenken"
...
Aufgabe 33 – Kundennummer - Methoden
Die vorliegende Aufgabe ist unter Zuhilfenahme einer Funktion qsum zur Berechnung der Quersumme einer ganzen Zahl zu lösen, die unter Verwendung des Programms aus Aufgabe 24 (Quersummen) geschrieben werden soll.
static void main(String args[]) throws Exception {
Scanner sc = new Scanner(new File("Eingabe.txt"));
In der kommerziellen Datenverarbeitung ist es eine beliebte Methode, sogenannte Schlüsselzahlen
(Personalnumern, Kundennumern) mit einer zusätzlichen Prüfziffer zu versehen. Diese Prüfziffer
kann z.B. helfen, mögliche Übertragungsfehler zu erkennen.
...
Um die einzelnen Zeichen einzulesen verwenden sie sc.next().charAt(0)
Schreiben Sie ein Programm, das mehrere int-Werte einliest. Jede der eingelesenen Zahlen ist als
siebenstellige Kundennummer zu interpretieren, sofern sie positiv ist und nicht mehr als sieben
Dezimalziffern hat (z.B. steht der Wert 123 für die Kundennummer 0000123). Das Programm soll
die Kundennummer um die Prüfziffer erweitern und das Ergebnis ausgeben. Falls der eingelesene
Wert keine zulässige Kundennummer darstellt, ist eine Fehlermeldung auszugeben.
Seien ai , i ∈ {1, ..., 7} die Ziffern der Kundennumer, dann ist die Prüfziffer a8 so zu bestimmen,
P
dass 8i=1 ai ohne Rest durch 10 teilbar ist. Für 0000123 ergibt sich beispielsweise die erweiterte
Kundennummer 00001234.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Sortieren/ Felder als Parameter
19. September 2013
Seite 1
Aufgabe 44 – Reverse
Schreiben Sie eine Methode
public static void reverse(char text[])
welche die Reihenfolge der in dem übergebenen Feld text enthaltenen Zeichen umkehrt. Enthält
das an text übergebene Feld vor dem Aufruf von reverse z.B. die Zeichenfolge ’n’, ’e’, ’b’,
’e’, ’l’ so soll es anschließend die Zeichen in der Reihenfolge ’l’, ’e’, ’b’, ’e’, ’n’ enthalten.
Schreiben Sie die Methode so, dass Sie kein zusätzliches (Hilfs-)Feld verwenden.
Aufgabe 45 – Primzahlenfeld
Schreiben Sie eine Methode
public static int primzahlen(int grenze, int primvek[])
die alle Primzahlen, die kleiner oder gleich dem vorgegebenen Wert grenze sind, (in aufsteigender Reihenfolge) in dem Feld primvek abspeichert. Es ist davon auszugehen, dass das an
den Parameter primvek übergebene Feld hinreichend groß angelegt wurde (mindestens ⌊1.26 ·
grenze/log(grenze)⌋ Elemente).
Die Methode soll als Resultatwert die Anzahl der in das Feld eingetragenen Primzahlen zurückgeben.
Aufgabe 46 – Primfaktoren
Schreiben Sie ein Programm, das alle Primfaktoren einer Zahl findet, wie z.B.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
Übung:
Zusatzaufgaben
19. September 2013
Seite 1
Zusatzaufgabe 1 - Kleines 1x1
Schreibe ein Programm, welches das kleine Ein-Mal-Eins (bis 10 mal 10) berechnet und in einer
Matrix (einem zweidimensionalen Feld) speichert. Die Matrix soll dann mit Hilfe von zwei Schleifen tabellarisch auf dem Bildschirm ausgegeben werden. Um die Werte geeignet einzurücken kann
\t verwendet werden. Mit System.out.print(x) wird nach der Ausgabe von x keine neue Zeile
angefangen. Die Ausgabe sieht also etwa wie folgt aus:
1
2
3
4
5
6
7
8
9
10
2
4
6
8
10
12
14
16
18
20
3
6
9
12
15
18
21
24
27
30
4
8
12
16
20
24
28
32
36
40
5
10
15
20
25
30
35
40
45
50
6
12
18
24
30
36
42
48
54
60
7
14
21
28
35
42
49
56
63
70
8
16
24
32
40
48
56
64
72
80
9
18
27
36
45
54
63
72
81
90
10
20
30
40
50
60
70
80
90
100
Zusatzaufgabe 2 - Klammerung
Implementieren eine Java-Methode, die für eine Zeichenkette überprüft, ob die dort enthaltenen
runden Klammern korrekt gesetzt sind. Das heiss t: Für jede öffnende Klammer ( muss es eine
nachfolgende schliess ende Klammer ) geben. Es darf keine Klammer geschlossen werden, wenn
nicht die entsprechende Klammer vorher geöffnet wurde. Zeichen auss er den runden Klammern
sollen ignoriert werden.
Folgendes sind korrekt geklammerte Strings:
(), abc, (()(abc)( ()((def)))).
Diese Strings sind fehlerhaft:
27 = 3 * 3 * 3
11 = 11 (Primzahl)
15 = 3 * 5
((), )(.
Das Programm soll mehrere positive ganze Zahlen einlesen und jeweils die Zahl mit ihren Primfaktoren ausgeben.
Lösen Sie die Aufgabe unter Verwendung der Methode primzahlen aus Aufgabe 45 (Primzahlenfeld).
Die Methode soll einen booleschen Wert zurückgeben. In der main-Methode soll entsprechend
ausgegeben werden, ob der String korrekt oder fehlerhaft geklammert ist. Hinweis:
String str....
// liefert das 1. Zeichen des Strings als char
str.charAt(0);
// liefert das letzte Zeichen des Strings als char
str.charAt(str.length()-1);
Zusatzaufgabe 3 – Primzahlen - Das Sieb des Eratosthenes
Schreibe ein Programm, welches Primzahlen nach dem Algorithmus des Eratosthenes berechnet:
Zunächst werden alle Zahlen 2, 3, 4, usw. bis zu einer eingelesenen Obergrenze g aufgelistet.
Die zunächst unmarkierten Zahlen sind potenzielle Primzahlen. Die kleinste unmarkierte Zahl ist
immer eine Primzahl. Nachdem eine Primzahl gefunden wurde, werden alle Vielfachen dieser
Primzahl als zusammengesetzte Zahlen markiert. Es genügt dabei, mit dem Quadrat der Primzahl
zu beginnen, da alle kleineren Vielfachen bereits markiert sind. Sobald das Quadrat der Primzahl
gröss er als die Grenze g ist, sind alle Primzahlen kleiner oder gleich g bestimmt: Es sind die
nicht markierten Zahlen. Das Verfahren beginnt also damit, die Vielfachen 4, 6, 8,... der kleinsten
Primzahl 2 durchzustreichen. Die nächste unmarkierte Zahl ist die nächst gröss ere Primzahl, die
3. Anschliess end werden deren Vielfache 9, 12, 15,... durchgestrichen, usw.
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
WS 2013/14, Übung zum Java-Vorkurs für MATSE
19. September 2013
Herunterladen