LF6 – ANW 1 LS6.3 Java-Programmierung Lineare Programme Einfaches Beispiel, in dem nacheinander zwei Zahlen eingegeben werden, die Summe berechnet und ausgegeben wird. package Summe ; import java . util .*; public class Summe { public static void main ( String [] args ) int iZahl1 , iZahl2 , iErgebnis ; { // Objekt input von der Scanner - Klasse erzeugen Scanner input = new Scanner ( System . in ); System . out . print ( " Geben Sie die erste Zahl ein : " ); // 1. Variante iZahl1 = Integer . parseInt ( input . nextLine () ); System . out . print ( " Geben Sie die zweite Zahl ein : " ); // 2. Variante iZahl2 = input . nextInt (); iErgebnis = iZahl1 + iZahl2 ; // Ausgabe System . out . println ( " Die Summe von " + iZahl1 + " und " + iZahl2 + " ist " + iErgebnis ); // Scanner wieder schliessen input . close (); } } Aufgaben: 1. Subtraktion Verändern Sie das Programm Summe, so dass es die Differenz der beiden eingegebenen ganzen Zahlen ausgibt. Subtraktion zweier Zahlen Zahl1: 23 Zahl2: 4 Das Ergebnis der Subtraktion 23 - 4 ist 19 2. Division Verändern Sie das Programm Summe, so dass es das Ergebnis der Division der beiden eingegebenen Zahlen ausgibt. Division zweier Zahlen Zahl1: 1 Zahl2: 2 Das Ergebnis der Division 1.0/2.0 ist 0.5 3. Benzin Schreiben Sie ein Programm, das nach Eingabe der gefahrenen Kilometer und der Menge des verbrauchten Kraftstoffes den Durchschnittsverbrauch auf 100 km berechnet und ausgibt. Java 4 U 1 LF6 – ANW LS6.3 Java-Programmierung Berechnung des Durchschnittsverbrauchs verbrauchter Kraftstoff in l: 52.5 gefahrene Strecke in km: 500 Der Durchschnittsverbrauch ist 10.5 l/100km 4. Ganzteil Das ganzzahlige Ergebnis und der Rest der Division von zwei einzugebenden ganzen Zahlen sollen mit einem Programm berechnet werden. Ganzzahlige Division mit Rest Dividend: 23 Divisor: 4 Das Ergebnis der Division 23:4 ist 5 Rest 3 5. Parallele Widerstände Der Gesamtwiderstand zweier parallelgeschalteter Widerstände soll nach der Eingabe der beiden Widerstandswerte berechnet werden. Rg = R1 ·R2 R1 +R2 Widerstands - Parallelschaltung R1 in Ohm: 12000 R2 in Ohm: 10000 Der Gesamtwiderstand ist 5454.5454 Ohm 6. Abstand zweier Punkte Der Abstand von zwei Punkten P1 = (x1 , y1 ) und P2 = (x2 , y2 ) soll nach Eingabe der x− und y−Werte berechnet und ausgegeben werden. (Wurzel → Math.sqrt(4); //ergibt 2) Punktabstand 1.Punkt x: 3 1.Punkt y: 3 2.Punkt x: 7 2.Punkt y: 6 Der Punktabstand: 5.0 7. Rechnen Schreiben Sie ein Programm welches den Benutzer zur Eingabe von zwei ganzen Zahlen auffordert. Bei Eingabe von 35 und 7 soll folgende Ausgabe erzeugt werden: Rechenoperatoren fuer ganze Zahlen 1. ganze Zahl: 35 2. ganze Zahl: 7 35 + 7 = 42 35 - 7 = 28 35 * 7 = 245 35 / 7 = 5 35 % 7 = 0 8. Paket In einem Versandhandel werden Pakete unterschiedlicher Größe versandt. Alle Pakete haben eine Breite, Höhe und Tiefe (gemessen in cm). Die Pakete sollen ringsum mit einer Paketschnur gesichert werden. Überlegen Sie sich, wieviel Paketschnur (in cm) je nach Breite, Höhe und Tiefe benötigt werden. Für die Schleife müssen zusätzlich 30 cm Schnur einkalkuliert werden! Java 4 U 2 LF6 – ANW LS6.3 Java-Programmierung Paketschnurberechnung Paket, Breite (in cm): 35 Paket, Hoehe (in cm): 15 Paket, Tiefe (in cm): 5 Schnurlaenge: 250 cm 2 Kontrollstrukturen 2.1 2.1.1 Auswahl Einseitige Auswahl public class Warnung { public static void main ( String [] args ) { int iGrenzwert = 50; int iWert = 320; if ( iWert > iGrenzwert ) { System . out . println ( " WARNUNG ! Grenzwert ueberschritten " ); } } } Aufgaben: 1. Bestellung Eine Firma liefert bei einem Bestellwert ab 200,- e porto- und verpackungsfrei. Für Aufträge unter 200.- e beträgt die Versandpauschale 5,50 e. Ein Programm soll den Rechnungsbetrag in Abhängigkeit vom Bestellwert ausgeben. Berechnung des Rechnungsbetrages Bestellwert in Euro: 150 Rechnungsbetrag: 155.5 Euro Berechnung des Rechnungsbetrages Bestellwert in Euro: 250 Rechnungsbetrag: 250 Euro 2. Dreieck Ein Dreieck lässt sich aus den Seiten a, b und c konstruieren, wenn die Dreiecksungleichungen a + b > c und a + c > b und b + c > a gelten. Schreiben Sie ein Programm, das bei einzugebenden Seiten überprüft, ob sich das Dreieck konstruieren lässt. Konstruierbarkeit eines Dreiecks pruefen Seite a: 12.5 Seite b: 12.5 Seite c: 12.5 Das Dreieck ist konstruierbar. Java 4 U 3 LF6 – ANW LS6.3 Java-Programmierung Konstruierbarkeit eines Dreiecks pruefen Seite a: 12.5 Seite b: 21 Seite c: 7.5 Das Dreieck ist nicht konstruierbar. 3. 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 können. Gleichung ax+b=0 A: 3 B: 6 Loesung: -2 2.1.2 Zweiseitige Auswahl public class Warnung { public static void main ( String [] args ) { int iGrenzwert = 50; int iWert = 320; if ( iWert < iGrenzwert ) { System . out . println ( " OK " ); } else { System . out . println ( " WARNUNG ! Grenzwert ueberschritten " ); } } } Aufgaben: 1. Benzin (Version 2) Schreiben Sie ein Programm, das nach Eingabe der gefahrenen Kilometer und der Menge des verbrauchten Kraftstoffes den Durchschnittsverbrauch auf 100 km berechnet und ausgibt. Die Berechnung darf aber nur erfolgen, wenn die gefahrenen Kilometer ungleich null sind, ansonsten soll eine (sinnvolle) Fehlermeldung ausgegeben werden. Berechnung des Durchschnittsverbrauchs verbrauchter Kraftstoff in l: 32.3 gefahrene Strecke in km: 0 Ungueltige Strecke eingegeben! 2. Bestellung (Version 3) Eine Elektrofirma erhebt für Bestellungen unter 100,- e einen Porto- und Verpackungsanteil von 5,50 e, von 100,- bis 200,- e einen Betrag von 3,- e, ab 200,- e werden keine Porto- und Verpackungskosten berechnet. Ein Programm soll bei eingegebener Auftragssumme den Rechnungsbetrag ausgeben. Java 4 U 4 LF6 – ANW LS6.3 Java-Programmierung Berechnung des Rechnungsbetrages Auftragssumme in Euro: 90 Rechnungsbetrag: 95,50 Euro Berechnung des Rechnungsbetrages Auftragssumme in Euro: 150 Rechnungsbetrag: 153,00 Euro Berechnung des Rechnungsbetrages Auftragssumme in Euro: 250 Rechnungsbetrag: 250,00 Euro 3. Geraden Der Schnittpunkt zweier Geraden ist gesucht. Gerade 1 wird durch die Punkte A(ax , ay ) und B(bx , by ), Gerade 2 durch die Punkte C(cx , cy ) und D(dx , dy ) angegeben. Denken Sie daran, dass die Geraden auch parallel sein können; dies muss besonders beachtet werden. Es gilt: (bx − ax) · y = (by − ay ) · x + (ay · bx –ax · by ) (dx − cx ) · y = (dy –cy ) · x + (cy · dx –cx · dy ) Die Geraden sind parallel, wenn gilt: (by − ay ) · (dx − cx ) − (dy − cy ) · (bx − ax ) = 0 Schnittpunktberechnung ax: 3 ay: 3 bx: 4 by: 4 cx: -3 cy: -3 dx: 4 dy: 4 Schnittpunkt x=0; y=0 4. Kehrwert Schreiben Sie ein Programm, das eine ganze Zahl (z.B. Typ int) über Tastatur einliest und den dazugehörigen Kehrwert ausgibt. Zusätzlich soll überprüft werden, ob die eingegebene Zahl 0 war. In diesem Fall soll eine Meldung ausgegeben werden, das kein Kehrwert gebildet werden kann. Kehrwert Zahl: 2 Kehrwert: 0.5 Kehrwert Zahl: 0 Bildung des Kehrwerts nicht moeglich! Java 4 U 5 LF6 – ANW LS6.3 Java-Programmierung 5. Kindergeld Eine Familie erhält nach folgender einkommensabhängiger Tabelle Kindergeld (Werte nicht realistisch). Einkommen für das 1.Kind für das 2.Kind für das 3.Kind ab dem 4.Kind <45000,70,130,220,240,- >=45000,70,70,140,140,- Ein Programm ist gesucht, das nach Eingabe der Kinderzahl und des Einkommens das zu zahlende Kindergeld berechnet. Kindergeldberechnung Ihr Jahreseinkommen: 47900 Anzahl der Kinder: 3 Ergebnis: 280 Kindergeld. Programmende Kindergeld 6. Vergleich Schreiben Sie ein Programm, das zwei ganze Zahlen (z.B. Typ int) über Tastatur einliest und den größeren eingegebenen Wert zuerst ausgibt Vergleich 1. Zahl: 12000 2. Zahl: 10000 Groesserer Wert: 12000 Vergleich 1. Zahl: -12000 2. Zahl: 10000 Groesserer Wert: 10000 7. Widerstand Wahlweise soll der Gesamtwiderstand (Rg ) zweier parallel oder in Reihe geschalteter Widerstände (R1 , R2 ) nach Eingabe der beiden Widerstandswerte berechnet werden. Parallelschaltung: Rg = R1 ·R2 R1 +R2 Reihenschaltung: Rg = R1 + R2 Widerstands-Schaltung(P)arallel- oder (R)eihenschaltung? P R1 in Ohm: 12000 R2 in Ohm: 10000 Der Gesamtwert der Parallelschaltung ist 5454,545 Ohm Widerstands-Schaltung(P)arallel- oder (R)eihenschaltung? R R1 in Ohm: 12000 R2 in Ohm: 10000 Der Gesamtwert der Parallelschaltung ist 22000,000 Ohm Java 4 U 6 LF6 – ANW LS6.3 Java-Programmierung 8. Zahlinfo Schreiben Sie ein Programm, das eine ganze Zahl (z.B. Typ int) über Tastatur einliest und danach prüft, ob sie größer, kleiner oder gleich 0 ist. Außerdem soll ausgegeben werden, ob es sich um eine gerade oder ungerade Zahl handelt. ZahlInfo Zahl: 2 Eingegebene Zahl ist groeßer 0 und gerade. ZahlInfo Zahl: -3 Eingegebene Zahl ist kleiner 0 und ungerade. ZahlInfo Zahl: 0 Eingegebene Zahl ist gleich 0 und gerade. 2.1.3 Mehrseitige Auswahl public class Warnung { public static void main ( String [] args ) { int iNote = 2; switch ( iNote ) { case 1: System . out . println ( " sehr gut " ); break ; case 2: System . out . println ( " gut " ); break ; case 3: System . out . println ( " befriedigend " ); break ; // und so weiter ... default : System . out . println ( " Note unbekannt . " ); } } } Aufgaben: 1. Körper Es sollen die Volumina und Oberflächen von Zylinder, Würfel, Quader, Kreiskegel oder Kugel berechnet werden. Erstellen Sie ein Programm, das die Eingabe der Körperform und der notwendigen Maße erlaubt und danach die Werte berechnet Hinweis: Die Kreiszahl Pi ist in Java über Math.PI benutzbar. Berechnung von Volumen/Oberflaeche div. Koerper Java 4 U 7 LF6 – ANW LS6.3 Java-Programmierung Bitte waehlen Sie((Z)ylinder, (W)uerfel, (Q)uader, (K)reiskegel oder K(u)gel): Ihre Wahl: W Kantenlaenge in cm: 5 Wuerfel Oberflaeche: 150 cm^2 Wuerfel Volumen: 125 cm^3 2. Monatsnamen Schreiben Sie ein Programm, das die Monatsnamen Januar bis Dezember ausgibt, wenn eine der Zahlen von 1 bis 12 eingegeben wird. Ausgabe des Monatsnamens Nummer des Monats (1..12): 4 Der 4. Monat heisst April. Ausgabe des Monatsnamens Nummer des Monats (1..12): 14 Fehler! 3. Quadratische Gleichung Die quadratische Gleichung ax2 + bx + c = 0 ist zu lösen. Denken Sie daran, dass die Lösungen imaginär sein können. Hinweis: Wurzeln werden in Java mit der Funktion Math.sqrt(x) berechnet (Bemerkung: x muss vom Typ double sein!) Quadratische Gleichung a*x^2+b*x+c=0 a: 2 b: 24 c: 22 x(1) = -11 ; x(2) = -1 Java 4 U 8 LF6 – ANW 2.2 LS6.3 Java-Programmierung Schleifen 2.2.1 Kopfgesteuerte Schleife import java . util .*; public class Zahlenreihe { public static void main ( String argv [] ) { int iZahl , i =0; Scanner input = new Scanner ( System . in ); System . out . print ( " Geben Sie eine Zahl ein : " ); iZahl = input . nextInt (); while ( i <= iZahl ) { System . out . println ( i ); i ++; } input . close (); } } Aufgaben: 1. Primzahl Lassen Sie prüfen, ob eine long-Zahl eine Primzahl ist. Dividieren Sie die zu prüfende Zahl durch i = 2, 3, usw. bis i > x ist und prüfen Sie, ob die Division x/i einen Rest lässt. Primzahlpruefung Ganze Zahl eingeben: 66 66 ist keine Primzahl. 2. Produkt über Addition Das Produkt zweier ganzer Zahlen ist mit Hilfe der Addition zu berechnen. Beachten Sie, dass die Zahlen auch 0 oder negativ sein können. Berechnung des Produktes ueber Addition Multiplikator: 3 Multiplikand : 5 Das Produkt ist 15. 3. Quotient und Rest über Subtraktion Der ganzzahlige Quotient a/b zweier ganzer Zahlen a und b und der entstehende Rest sollen über die Subtraktion berechnet werden. Überlegen Sie, welche Fehlerquellen es geben kann und berücksichtigen Sie diese im Programm. Berechnung des Quotient und Rest ueber Subtraktion Divident: 25 Java 4 U 9 LF6 – ANW LS6.3 Java-Programmierung Divisor: 3 Ganzahliger Quotient: 8 Ganzzahliger Rest: 1 4. SummeA 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. SumA Berechnung der Summe 1+2+3+4+... bis zum Grenzwert Grenzwert: 16 Nach 6 Gliedern ist 16 erreicht. Die Summe ist 21 5. SummeB 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. 1 − 2 + 3 − 4 + 5 . . . + (2n + 1) − 2n . . . Berechnung der Summe 1-2+3-4+... bis zum Grenzwert Grenzwert: 16 Nach 31 Gliedern ist 16 erreicht. Die Summe ist 16. 6. SummeC 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. Berechnung der Summe 1 +(1/2)+(1/3)+(1/4)+... bis zum Grenzwert Grenzwert: 1.5 Nach 2 Gliedern ist 1.5 erreicht. Die Summe ist 1.5 7. SummeD 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. Berechnung der Summe 1 + 4 + 9 + 16 +... bis zum Grenzwert Grenzwert: 16 Nach 4 Gliedern ist 16 erreicht. Die Summe ist 30. Java 4 U 10 LF6 – ANW 2.2.2 LS6.3 Java-Programmierung Fußgesteuerte Schleife import java . util .*; public class Zahlenreihe { public static void main ( String argv [] ) { int iZahl1 =3 , iZahl2 =5 , i =0; Scanner input = new Scanner ( System . in ); do { System . out . println ( " Die Summe von " + iZahl1 + " iZahl2 + " ist " + ( iZahl1 + iZahl2 ) ); und " + System . out . print ( " Erneut ausfuehren ? (1= ja ): " ); i = input . nextInt (); } while ( i == 1 ); input . close (); } } Aufgaben: 1. SummeUndDurchschnitt Lassen Sie eine beliebige Anzahl von Zahlen addieren, bis die Zahl 0 eingegeben wird. Danach wird die Gesamtsumme und der Durchschnitt ausgegeben. SummeUndDurchschnitt Zahl (Ende mit 0): 1.5 Zahl (Ende mit 0): 3 Zahl (Ende mit 0): 1.5 Zahl (Ende mit 0): 0 Summe: 6.0; Durchschnitt 2.0 2. Teiler Lassen Sie alle Teiler einer einzulesenden ganzen Zahl ausgeben. Benutzen Sie auch hier eine Division mit ganzzahligem Ergebnis. Beispiel: 8 hat die Teiler 1, 2, 4, 8. Teiler Geben Sie eine ganze Zahl ein: 63 63 ist durch: 1, 3, 7, 9, 21, 63 teilbar. Java 4 U 11 LF6 – ANW 2.2.3 LS6.3 Java-Programmierung Zählschleife public class Zahlenreihe { public static void main ( String argv [] ) { int iAnzahl =20 , i =0; for ( i =0; i <= iAnzahl ; i ++ ) { System . out . print ( " * " ); } } } Aufgaben: 1. Form1 Schreiben Sie ein Programm mittels einer Schleife, welches folgende Bildschirmausgabe erzeugt: Form1 xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx 2. Form2 Schreiben Sie ein Programm mittels zweier Schleifen, welches folgende Bildschirmausgabe erzeugt: Bemerkung: Werden mehr Zeilen/Zeichen eingegeben als erlaubt, wird die Zahl auf das zulässige Maximum begrenzt. Form2 Anzahl der Zeilen (max. 10): 6 Anzahl der Zeichen (max. 15): 4 xxxx xxxx xxxx xxxx xxxx xxxx 3. Form3 Schreiben Sie ein Programm mittels Schleifen, welches folgende Bildschirmausgabe erzeugt: Form3 x xx xxx xxxx xxxxx Java 4 U 12 LF6 – ANW LS6.3 Java-Programmierung xxxxxx xxxxxxx xxxxxxxx xxxxxxxxx xxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxx 4. Matrix Es soll eine Multiplikationsmatrix auf dem Bildschirm von 10 Zeilen/10 Spalten) angezeigt werden. Nach Eingabe einer Ziffer zwischen 2..9 werden alle Zahlen durch einen Stern gekennzeichnet, die diese Ziffer enthalten, oder durch die eingegeben Zahl ohne Rest teilbar sind. Matrix von 0 .. Zahl (2..9): 4 0 1 2 3 10 11 * 13 * 21 * 23 30 31 * 33 * * * * 50 ...... ..... 90 91 * 93 99 * * * * * 5 15 25 35 * 6 * 26 * * 7 17 27 37 * * 18 * 38 * 9 19 29 39 * * 95 * 97 98 99 5. Rechnen Es sollen die Quadratzahlen, die Kubikzahlen und die Kehrwerte der Zahlen zwischen zwei einzugebenden Grenzen ausgegeben werden. Rechnen Untere Grenze: 4 Obere Grenze: 5 (1)Quadratzahl;(2):Kubikzahl;(3) Kehrwert (1)16.0;(2)64.0;(3)0.25 (1)25.0;(2)125.0;(3)0.2 6. SummeNb Schreiben Sie ein Programm, das nach Eingabe von n die folgende Summe berechnet: 12 + 32 + 52 + . . . + (2n − 1)2 SummeNb Berechnung der Summe der Reihe: 1 * 1 + 3 * 3 + 5 * 5 + .. + (2*n-1)^2 Geben Sie eine pos. ganze Zahl ein (n): 3 Summe ist: 35 7. SummeNc Schreiben Sie ein Programm, das nach Eingabe von n die folgende Summe berechnet: 22 + 42 + 62 + . . . + (2n)2 Java 4 U 13 LF6 – ANW LS6.3 Java-Programmierung SummeNc Berechnung der Summe der Reihe: 2*2+4*4+6*6+..+(2*n)^2 Geben Sie eine pos. ganze Zahl ein (n): 3 Summe ist: 56 8. SummeNd Schreiben Sie ein Programm, das nach Eingabe von n die folgende Summe berechnet: 1 + 1/2 + 1/3 + . . . + 1/n SummeNd Berechnung der Summe der Reihe: 1 + 1/2+ 1/3 + .. 1/n Geben Sie eine pos. ganze Zahl ein (n): 3 Summe ist: 1.833334 9. Ungerade Lassen Sie den Computer die ungerade Zahlen zwischen zwei einzugebenden Werten ausdrucken. Ungerade Untere Grenze: 5 Obere Grenze: 12 Ungerade Zahlen die zwischen 5 und 12 liegen: Java 4 U 7 9 11 14