Lösungen zu den Rechenübungen

1) Verständnisfragen

  1. Wie sehen Matheformeln in Javascript aus bzw.
    wie benutzt man Variablen in Javascript-Rechenprogrammen? (links? rechts? Zuweisung? Wie?)
    Variablen stehen in Formeln immer auf der linken Seite mit einem Gleichheitszeichen dahinter. Das Ergebnis der Rechenoperation wird darin gespeichert.
  2. Wie sehen Formeln mit den vier Grundrechenarten im Javascript-Quelltext aus? Nennen Sie passende vier Beispiele!
    Addition: ergebnis = zahl1 + zahl2,Subtraktion: ergebnis = zahl1 - zahl2,
    Division: ergebnis = zahl1 / zahl2,
    Multiplikation: ergebnis = zahl1 * zahl2
  3. Wohin schreibt der Computer das Ergebnis der Rechnung
    (z.B. wenn im Programmtext einfach nur 2+3 oder 34*75 oder 9-1.5 steht)?Das Ergebnis steht im Arbeitsspeicher (RAM).
  4. Wie stellt der Programmierer sicher, dass das Ergebnis einer Rechenoperation zu einem späteren Zeitpunkt auf dem Bildschirm ausgegeben werden kann?
    Der Wert muss nach der Rechnung mit einer Zuweisung in eine Variable kopiert werden, z.B. ergebnis = 2+3, ergebnis = 34*75.
  5. Was passiert, wenn man zwei Eingaben (Zeichenketten) addiert? Wofür steht das '+'-Zeichen in diesem Fall?
    Die Addition von zwei Zeichenketten bedeutet, dass die Zeichen oder Wörter einfach aneinander gehängt werden.
  6. Was passiert, wenn man andere Rechenoperationen als + (z.B. -, /, *) auf Zeichenketten anwendet? Probieren Sie es doch einfach einmal aus mit Texten und dann noch einmal mit Zahlen!
    Die Zeichenketten werden automatisch in Zahlen gewandelt.

2) Zwei Kommazahlen addieren

  // V A R I A B L E N
 
  var zahl1;
  var zahl2;
  var summe;
 
  // E I N G A B E
 
  // Die Variable eingabe wird jeweils mit einer Zeichenkette gefüllt
  // entspr. der getätigten Tastatureingaben des Nutzers.
  // Die Kommazahlen müssen mit Punkt eingegeben werden.
  // Nach jeder Eingabe wird anschliessend jeweils die enthaltene
  // Kommazahl ermittelt mit parseFloat.
  eingabe = prompt( "Bitte geben Sie Zahl 1 ein:" );
  zahl1 = parseFloat(eingabe);
  eingabe = prompt( "Bitte geben Sie Zahl 2 ein:" );
  zahl2 = parseFloat(eingabe);
 
 // V E R A R B E I T U N G
 
 // Die beiden Zahlen werden addiert
 summe = zahl1 + zahl2;
 
 
 // A U S G A B E
 
 document.write("<br>Ergebnis ohne toFixed: " + summe);
 // Ein an das Ende der Variable gehängtes toFixed(2)
 // rundet die Ausgabe auf 2 Stellen hinter dem Komma.
 document.write("<br>Ergebnis mit toFixed: " + summe.toFixed(2) );

3) Temperaturumrechnung

...
  // Variablen
  var eingabe;
  var celsius;
  var fahrenheit;
  var kelvin;
 
  // Eingabe
  eingabe = prompt("Bitte geben Sie eine Temperatur in Celsius ein!");
  celsius = parseFloat( eingabe );
 
  // Verarbeitung
  fahrenheit = celsius * 9/5 + 32;
  kelvin = celsius + 273.15;
 
  // Ausgabe
  document.write( "Die Temperatur beträgt Celsius: " + celsius
                + " Fahrenheit: " + fahrenheit
                + " Kelvin: " + kelvin );
...

4) Bitcoin-Euro-Rechner

to do

Zusatzaufgabe Euro-Dollar-Rechner

Da es sich bei dieser Rechnung um eine Multiplikation handelt, wird der eingegebene Dollarbetrag in der Rechnung auch ohne parseFloat automatisch in eine Zahl gewandelt. Ich bevorzuge dennoch für ein besseres Verständnis der Arbeitsweise des Programms die vollständige Schreibweise.
    // Speicherplatz reservieren
    var eingabe;
    var euro;
    var dollar;
 
    // Eingabe
    eingabe = prompt("Bitte geben Sie einen Eurobetrag ein!");
    euro = parseFloat( eingabe );
 
    // Verarbeitung
    dollar = euro * 1.25;
 
    // Ausgabe
    document.write("<h2>Der Dollarbetrag lautet: " + dollar + "</h2>");

5,6 to be done


7) Fläche eines Rechtecks

...
  <h1>Flächenberechnung eines Rechtecks</h1>
  Geben Sie nacheinander bitte die Seiten A und B eines Rechtecks ein
  (jeweils in der Einheit cm).
 
  <script type="text/javascript">
 
    // VARIABLEN
    var seiteA;
    var seiteB;
    var flaeche;
    var eingabe;
    var ergebnis;
    var ausgabetext;
 
    // EINGABE
    eingabe = prompt("Bitte geben Sie die Länge der Seite A in cm ein!");
    seiteA = parseFloat(eingabe);
 
    eingabe = prompt("Bitte geben Sie die Länge der Seite B in cm ein!");
    seiteB = parseFloat(eingabe);
 
    // VERARBEITUNG
    ergebnis = seiteA * seiteB;
 
    // AUSGABE
    ausgabetext = "<h3>Das Rechteck mit den Seiten A="
                + seiteA
                + "cm und B="
                + seiteB
                + "cm hat die Fläche "
                + ergebnis
                + "cm<sup>2</sup>.</h3>";
 
    document.write( ausgabetext );
 
  </script>
 ...

8) Quaderberechnung

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 
 <head>
 
   <title>Quaderberechnung</title>
   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 
   <style type="text/css">
 
     body
     {
       font-family: sans-serif;
       text-align: center;
       background-color: lightgrey;
     }
 
     h1, h2
     {
       color: blue;
     }
 
   </style>
 
 </head>
 
 
 <body>
 
   <h1>Quaderberechnung</h1>
 
   Es müssen nacheinander Länge, Breite und Höhe eines Quaders eingegeben werden.
 
   <script type="text/javascript">
 
     // Eingaben (Zeichenketten)
     var QuaderlaengeZK;
     var QuaderbreiteZK;
     var QuaderhoeheZK;
 
     // Zahlenwerte der Eingaben
     var laenge;
     var breite;
     var hoehe;
     var ergebnis;
 
     // E I N G A B E
 
     // Tastatureingaben, ZK steht für Zeichenkette
     QuaderlaengeZK = prompt( "Geben Sie bitte die Länge des Quaders ein!" );
     QuaderbreiteZK = prompt( "Geben Sie bitte die Breite des Quaders ein!" );
     QuaderhoeheZK  = prompt( "Geben Sie bitte die Höhe des Quaders ein!" );
 
     // Wandlung von Eingaben in Zahlenwerte
     laenge = parseFloat( QuaderlaengeZK );
     breite = parseFloat( QuaderbreiteZK );
     hoehe = parseFloat( QuaderhoeheZK );
 
     // V E R A R B E I T U N G
 
     // Berechnungen
     volumen = laenge * breite * hoehe;
     oberflaeche = 2*laenge*breite + 2*laenge*hoehe + 2*breite*hoehe;
     kantenlaenge = 4*breite + 4*hoehe + 4*laenge;
 
     // A U S G A B E
 
     // der Eingaben
     document.write( "<h2>Ihre Eingaben:</h2>Höhe: "
                   + hoehe
                   + "m <br>Breite "
                   + breite
                   + "m <br>Länge "
                   + laenge
                   + "m" );
     // der Berechnungen
     document.write( "<h2>Berechnet:</h2>Volumen: "
                   + volumen.toFixed(2)
                   + "m³, <br>Oberflächeninhalt: "
                   + oberflaeche.toFixed(2)
                   + "m² <br>Kantenlänge: "
                   + kantenlaenge.toFixed(2)
                   + "m" );
     // Hilfestellung für den Nutzer
     document.write( "<h2>Nochmal?<br>Drücken Sie die F5-Taste!</h2>" );
 
   </script>
 
 </body>
 
 </html>

9) Gesamtwiderstand zweier Widerstände in Reihen- und Parallelschaltung

a) to be done
b) Parallelschaltung
...
// Variablen
var r1;        // Widerstand 1
var r2;        // Widerstand 2
var rges;      // Gesamtwiderstand
var eingabe;   // Zwischenspeichern von Tastatureingaben
var ausgabe;   // Zwischenspeicher für auszugebende Texte
 
// Eingabe
eingabe = prompt("Bitte geben Sie den ersten Widerstandswert ein!");
r1 = parseFloat(eingabe); // Wandlung der Eingabe in eine Kommazahl
eingabe = prompt("Bitte geben Sie den zweiten Widerstandswert ein!");
r2 = parseFloat(eingabe); // Wandlung der Eingabe in eine Kommazahl
 
// Verarbeitung
rges = 1/ (1/r1+1/r2);
 
// Ausgabe
ausgabe = "Der Gesamtwiderstand der beiden eingegebenen Widerstände R1="
        + r1
        + " Ohm und R2="
        + r2
        + " Ohm beträgt: "
        + rges.toFixed(1)   // rges auf eine Nachkommastelle genau anzeigen
        + " Ohm";
 
document.getElementById("ausgabe").innerHTML = ausgabe;
...

10)

to be done

11) Taschenrechner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 
 <head>
 
   <title>Taschenrechner</title>
   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 
   <style type="text/css">
 
     body
     {
       font-family: Verdana, Arial, sans-serif;
       text-align: center;
       background-color: yellow;
     }
 
     h1
     {
       color: red;
     }
 
   </style>
 
 </head>
 
 
 
 <body>
 
   <h1>Taschenrechner</h1>
 
   Es werden nacheinander zwei Zahlen eingelesen und ein Operator.
 
   <script type="text/javascript">
 
     var zahl1;
     var zahl2;
     var operator;
     var ergebnis;
 
     // Die Variablen werden hier alle mit Zeichenketten gefüllt entspr. der Tastatureingaben
     zahl1 = prompt( "Geben Sie bitte die erste Zahl ein!" );
     zahl2 = prompt( "Geben Sie bitte die zweite Zahl ein!" );
     operator = prompt( "Geben Sie bitte den Operator ein!" );
 
     document.write( "<p>Vielen Dank für Ihre Eingaben!" );
 
     // Hier entsteht eine neue Zeichenkette, welche die 3 obigen zusammenfügt
     rechnung = zahl1 + operator + zahl2; // dieses wird eine Zeichenkette
 
     // Jetzt wird die Rechnung mit eval ausgeführt
     // und das Ergebnis in der Variable ergebnis gespeichert
     ergebnis = eval( rechnung );
 
     // Ausgabe
     document.write( "<br>Zahl1: " + zahl1 );
     document.write( "<br>Zahl2: " + zahl2 );
     document.write( "<br>Operator: " + operator );
 
     document.write( "<br><h2>" + zahl1 + operator + zahl2 + "=" + ergebnis + "</h2>" );
     document.write( "Darstellung des Ergebnisses mit 2 Stellen hinter dem Komma (toFixed): "
                   + ergebnis.toFixed(2) );
     document.write( "<br><br>Nochmal?<br>Drücken Sie die F5-Taste!" );
 
   </script>
 
 </body>
 
 </html>
 
 

12) Zinseszins

  <h1>Zinseszins</h1>
  Dieses Programm führt eine Zinseszins-Rechnung durch.<br>
  Sie müssen zuerst Ihr Startkapital, den Zinssatz und die Anlagedauer eingeben:
  <br><br>
 
  <script type="text/javascript">
 
    var Startkapital;
    var Zinssatz;
    var Zeit; // in Jahren
    var Aufzins;
    var Endkapital;
 
    // E I N G A B E
    Startkapital = prompt("Startkapital in Euro:");
    Zinssatz = prompt("Zinssatz:");
    Zeit = prompt("Wie viele Jahre möchten sie Ihr Geld anlegen?");
 
    // V E R A R B E I T U N G
    Aufzins = 1 + parseFloat(Zinssatz)/100;
    Endkapital = Startkapital * Math.pow( Aufzins, Zeit );
 
    // A U S G A B E
    document.write( "Startkapital: "
                  + Startkapital
                  + " Euro, "
                  + Zinssatz
                  + " Prozent, "
                  + Zeit
                  + " Jahre<br>");
 
    document.write( "<h2>Nach "
                  + Zeit
                  + " Jahren beträgt Ihr Kapital "
                  + Endkapital.toFixed(2)
                  + " Euro</h2>" );
 
  </script>
 
 

13, to be done


...

15. Dreieck

Dem Computer werden drei natürliche Zahlen a, b und c eingegeben. Der Rechner soll prüfen, ob die drei Zahlen die Seiten eines Dreiecks bilden können.
Bedingungen dazu:
a+b>c und b+c>a und c+a>b
Musterlösung

16. Kreis

Erstellen Sie ein Programm das bei Eingabe des Radius eines kreises dessen Kreisfläche und den Umfang auf 23 Stellen hinter dem Komma gerundet ausgibt.
Musterlösung

17. Messreihe

Es sollen 10 Messwerte einer Messreihe eingelesen und deren Mittelwert berechnet werden.
Musterlösung

18. Zufallszahl

Mit der Anweisung
zufallszahl = Math.ceil( Math.random()*6);
soll ein Würfel simuliert werden.
Dazu sollen zu den einzelnen Zahlen die passenden Würfelbilder angezeigt werden.
Musterlösung

19. XY-Schnittpunkte

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
             "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
 
<head>
 
  <title>X/Y-Schnittpunkte</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <style type="text/css">
    div
    {
      font-weight: bold;
    }
  </style>
 
</head>
 
<body>
 
  <h1>X/Y-Schnittpunkte</h1>
  Berechnen Sie die Schnittpunkte einer Geraden mit der X- und der Y-Achse!<br>
  Geben Sie zwei Punkte ein, welche Ihre Gerade beschreiben: x1/y1, x2/y2.<br>
  Vorüberlegungen:
  <ul>
   <li>Die allgemeine Geradengleichung lautet: y=m*x+t.
   <li>Zwei Punkte beschreiben im Koordinatensystem die Steigung einer Geraden.
   <li>Die Steigung m der Geraden kann wie folgt berechnet werden: (y2-y1) / (x2-x1)
   <li>z.B. x1=2 und y1=5, x2=7 und y2 = 11
   <li>d.h. Steigung m=(11-5)/(7-2)=
   <li>Grafik siehe <a href="http://de.wikipedia.org/wiki/Steigung">Wikipedia</a>
   <li>Den Schnittpunkt mit der y-Achse erhalten wir durch Umstellung der Geradengleichung.</li>
   <li>t=y-m*x und Einsetzen der bekannten Werte, z.B. x1=2 und y1=5
   <li>t=5-m*2, m wird durch den oben berechneten Wert ersetzt.
   <li>Den Schnittpunkt mit der x-Achse erhalten wir, indem y=0 in die Geradengleichung eingesetzt wird.
   <li>Formel: x=(t-y)/m
  </ul>
 
  <script type="text/javascript">
    var x1 = prompt("x1");
    var y1 = prompt("y1");
    var x2 = prompt("x2");
    var y2 = prompt("y2");
 
    document.write( "<div>" );
    document.write("Ihre Eingaben: x1=" + x1 + " y1=" + y1 + " x2=" + x2 + " y2=" + y2 + "<br>");
    if( (x1==x2) || (y1==y2) )
    {
     document.write("Fehlerhafte Eingabe, z.B. y1=y2, x1=x2, ...</div>");
    }
    else
    {
      var m=(parseFloat(y2)-parseFloat(y1)) / (parseFloat(x2)-parseFloat(x1) );
      document.write( "Die Steigung m ist (y2-y1)/(x2-x1): " + m.toFixed(2) + "<br>" );
      document.write( "Die allgemeine Geradengleichung lautet in diesem Fall also y=" + m.toFixed(2) + "*x+t" + "<br>" );
      document.write( "t kann berechnet werden durch Umstellen der Formel nach: t=y-m*x" + "<br>" );
      document.write( "Eingesetzt werden die bekannten Werte t=" + y1 + "-" + m.toFixed(2) + "*" + x1 + "<br>" );
      document.write( "Den zu t gehörigen x-Wert kennen wir, d.h. 0<br>" );
      // y=mx+t => t = y/mx => m wurde berechnet,
      // zwei Punkte kennen wir auch,
      // von denen wir einen auswählen
      t= y1-(m*x1);
      document.write( "Der Schnittpunkt mit der y-Achse ist: x=0, y=" + t.toFixed(0) + "<br>");
      document.write( "Der Schnittpunkt mit der x-Achse ist: x=" + ((t!=0)?((t-0)/m).toFixed(2):0) + ", y=0" );
      document.write( "</div>" );
    }
 
  </script>
 
</body>
 
</html>
 
 
 
 

Theorie-Test

Die im folgenden Test gestellten Fragen können Sie nach der Bearbeitung der Rechenübungen sicher problemlos beantworten!?
Javascript-Test1.pdf