Aufgabenblatt f�r Vertretung by 5eL1H3

VIEWS: 7 PAGES: 11

									                                                Kontrollstrukturen
Einführung der Kontrollstrukturen über Verbalstrukturen ................................................ 2
Block ................................................................................................................................. 2
Vergleichsoperatoren......................................................................................................... 2
Verzweigungen in Javascript (mit Struktogramm) ........................................................... 3
           Verzweigung nur mit bedingter Anweisung .......................................................... 3
           Verzweigung mit bedingter und alternativer Anweisung ...................................... 3
           Beispiele: ............................................................................................................... 3
           Aufgaben (Verzweigungen): ................................................................................. 3
           Lösungen: .............................................................................................................. 4
Schleifen in Javascript (mit Struktogrammen) .................................................................. 6
           Schleife mit Eingangsbedingung ........................................................................... 6
           Schleife mit Ausgangsbedingung .......................................................................... 6
           Zählschleife ........................................................................................................... 6
           Aufgaben (Schleifen):............................................................................................ 6
           Aufgaben (Schleifen und Verzweigungen): .......................................................... 6
           Lösungen: .............................................................................................................. 7




 Griepentrog / SZ Blumenthal                                       Seite 1                                                     26. Juni 2012
Einführung der Kontrollstrukturen über Verbalstrukturen
über einen Alltagsalgorithmus, z.B. „Anleitung zum Telefonieren in der Telefonzelle“.
Kontrollstrukturen:
        - abgeschlossene Anweisung (Folge, Sequenz, closed statement)
        - bedingte Anweisung / alternative Anweisung (Verzweigung, Selektion, conditional
        statement):
               wenn <BEDINGUNG> dann <ANWEISUNG>
               wenn <BEDINGUNG> dann <ANWEISUNG> sonst <ANWEISUNG>
        - wiederholende Anweisung (Schleife, Repetition, repetitive statement):
               solange <BEDINGUNG> tue <ANWEISUNG>
               für <VARIABLE>von <WERT> bis <WERT> tue <ANWEISUNG>

Block
mehrere Befehle können durch geschweifte Klammern zu einem Block zusammengefasst
werden, z.B.

         {
             <ANWEISUNG>
             <ANWEISUNG>
             ...
             <ANWEISUNG>
         }

Vergleichsoperatoren
Mit den Vergleichsoperatoren

             == , < , > , <= (für ) , >= (für ) , != (für )
lassen sich zwei beliebige Ausdrücke zu einer Bedingung zusammensetzen, wie z.B.:

         zahl >= 0 oder zahl1 - zahl2 == 5                        oder
         25 / zahl - 3 != (zahl + 5) * 2




 Griepentrog / SZ Blumenthal               Seite 2                               26. Juni 2012
Verzweigungen in Javascript (mit Struktogramm)
Verzweigung nur mit bedingter Anweisung
                                                                   Bedingung
         if (<Bedingung>) {
              <Anweisungen>                                   ja                nein
         }
Verzweigung mit bedingter und alternativer
Anweisung

         if (<Bedingung>) {
           <Anweisungen>
         }
         else {
           <Anweisungen>
         }


Beispiele:
        nur mit bedingter Anweisung:

         if (zahl > 0) {
           alert(zahl + ' ist positiv')
         }
        mit bedingter und alternativer Anweisung:

         if (zahl > 0) {
           alert(zahl + ' ist positiv')
         }
         else {
           alert(zahl + ' ist nicht positiv');
         }
Aufgaben (Verzweigungen):
v1) Bei der ganzzahligen Division soll durch eine entsprechende Prüfung das Teilen durch
    Null verhindert werden.
v2) Zwei Zahlen prüfen, ob eine ein Teiler der anderen ist.
v3) Berechnung von Funktionswerten einer stückweise definierten Funktion.
v4) Für die Stromabrechnung gelten mehrere Tarife, z.B.
     mtl. Grundbetrag                  Preis pro kWh
     Normaltarif:                          10 DM                    0,17 DM
     Billigtarif:                          25 DM                    0,10 DM
     Das Programm soll den Stromverbrauch erfragen und dann den günstigeren Tarif
     ermitteln.
v5) Zwei eingegebenen Uhrzeiten (Std. / Min. / Sek.) oder Tagesdaten (Tag / Monat / Jahr)
    sollen in die richtige Reihenfolge gebracht werden.


 Griepentrog / SZ Blumenthal              Seite 3                             26. Juni 2012
Lösungen:                                                         Eingabe: Dividend
    Aufgabe v1)                                                   Eingabe: Divisor
         // Attribute
                                                                       Divisor = 0
         var dividend, divisor;
                                                      ja      nein
         // Dienst
         function teilenOhneNull() {              Ausgabe Ausgabe
           dividend = prompt(“Dividend“);         einer   des
           dividend = parseInt(dividend);         Warnung Quotienten
           divisor = prompt(“Divisor“);
           divisor = parseInt(divisor);
           if (divisor == 0)
             alert(“Teilen durch Null nicht möglich“);
           else alert(dividend + “ : “ + divisor + “ = “
                       + dividend / divisor);
         }
    Aufgabe v2)

         // Attribute
         var zahl, teiler, quotient;

         // Dienst
         function istTeiler() {
           zahl = prompt(“Zahl“);
           zahl = parseInt(zahl);
           teiler = prompt(“Teiler“);
           teiler = parseInt(teiler);
           quotient = zahl / teiler;
           if (quotient == Math.floor(quotient))
             alert(teiler + “ ist ein Teiler von “ + zahl);
           else
             alert(teiler + “ ist kein Teiler von “ + zahl);
         }
    Aufgabe v3)
        Exemplarisch für die Funktion
                                          x2 1    falls x  1
                                  F: x  
                                         2 x  2   falls x  1

         // Attribute
         var x, fx;

         // Dienst
         function funktion() {
           x = prompt(“An welcher Stelle soll die Funktion“
                 + “ berechnet werden?“);
           x = parseFloat(x);
           if (x > 1) fx = 2 * x – 2;
           else fx = x * x – 1;


 Griepentrog / SZ Blumenthal             Seite 4                             26. Juni 2012
             alert(“Der Funktionswert beträgt: “ + fx);
         }
    Aufgabe v4)

         // Attribute
         var verbrauch, normal, billig;

         // Dienst
         function stromtarif() {
           verbrauch = prompt(“Stromverbrauch in kWh“);
           verbrauch = parseFloat(verbrauch);
           normal = 10 + 0.17 * verbrauch;
           billig = 25 + 0.10 * verbrauch;
           if (billig < normal)
             alert(“Billigtarif: “ + billig);
           else
             alert(“Normaltarif: “ + normal);
         }
    Aufgabe v5)

         // Attribute
         var std1, std2, min1, min2, sek1, sek2;

         //Dienst
         function ordne() {
           std1 = prompt(“Stunde des ersten Zeitpunktes“);
           min1 = prompt(“Minute des ersten Zeitpunktes“);
           sek1 = prompt(“Sekunde des ersten Zeitpunktes“);
           std2 = prompt(“Stunde des zweiten Zeitpunktes“);
           min2 = prompt(“Minute des zweiten Zeitpunktes“);
           sek2 = prompt(“Sekunde des zweiten Zeitpunktes“);
           if ((std1==std2)&&(min1==min2)&&(sek1==sek2)) {
             alert(“Die Zeiten sind gleich“);
           } else if ((std1 < std2) ||
                       ((std1 == std2)&&(min1 < min2)) ||
                       ((std1==std2)&&( min1==min2)&&
                                           ( sek1<sek2))) {
             alert(“erst: “+std1+“:“+min1+“:“+sek1+
                       “\n dann: “+std2+“:“+min2+“:“+sek2);}
           else alert(“erst: “+std2+“:“+min2+“:“+sek2);
                       “\n dann: “+std1+“:“+min1+“:“+sek1);}
         }




 Griepentrog / SZ Blumenthal     Seite 5                 26. Juni 2012
Schleifen in Javascript (mit Struktogrammen)
Schleife mit Eingangsbedingung
                                                                Eingangsbedingung
         while (<Bedingung>) {
           <Anweisungen>
         }




Schleife mit Ausgangsbedingung

         do {
           <Anweisungen>
         } while (<Bedingung>);                                 Ausgangsbedingung


Zählschleife                                                Für ... von ... bis ...
         for (var i=0; i < max; i++) {
           <Anweisungen>
         }


Aufgaben (Schleifen):
s1) Für den Halley-Kometen sollen die nächsten 20 Begegnungen mit der Erde berechnet
    werden.
s2) Für mehrere Kunden ist ein Nettobetrag einzugeben, um Mehrwertsteuer und
    Bruttobetrag zu berechnen. Eventuell sollen alle Bruttobeträge aufsummiert und Summe
    am Ende ausgegeben werden. Die Berechnung soll bei Eingabe von Null beendet
    werden.
s3) Fibonacci-Zahlen: Zu Beginn existiert ein nicht zeugungsfähiges Kaninchen. Nach
    einem Monat werden alle Kaninchen zeugungsfähig und jedes zeugungsfähige
    Kaninchen bringt ein neues, nicht zeugungsfähiges hervor.
Aufgaben (Schleifen und Verzweigungen):
m1) Eine Zahl prüfen, ob sie eine Primzahl ist.
m2) Alle Primzahlen von 2 bis 1000 berechnen.
m3) Primfaktorzerlegung einer ganzen Zahl berechnen.
m4) Für mehrere Kunden den günstigeren Stromtarif ermitteln und den Umsatz des
    Stromanbieters berechnen.




 Griepentrog / SZ Blumenthal               Seite 6                               26. Juni 2012
Lösungen:
    Aufgabe s1)

                      //Attribute
                    var jahr, letztes;
                    var fenster;

                      //Dienst
                    function komet(){
                      jahr=prompt("Sag mir das aktuelle Jahr!");
                      jahr=parseInt(jahr);
                      letztes = jahr - (jahr – 10)%76;
                      fenster = open();
                      for (var i=0; i<20; i++) {
                        letztes = letztes + 76;
                        fenster.document.write(i + “. Begegnung“
                                                 + letztes);
                      }
                      fenster.document.close();
                    }
    Aufgabe s2)
    Alternative 1

                      //Attribute
                    var netto, mwst, brutto, summe;

                    //Dienst
                function brutto()   {
                  summe = 0;
                  while (true) {
                    netto = prompt("Gib den Nettobetrag ein");
                    netto = parseFloat(netto);
                    if (netto == 0) break;
                    mwst = netto * 0.16;
                    brutto = netto + mwst;
                    summe = summe + brutto;
                    alert("Der Nettobetrag ist " + netto +
                      “\nDie Mehrwertsteuer ist: " + mwst +
                      "\nDer Verkaufspreis ist: " + brutto);
                  }
                  alert(“Summe: “ + summe);
                }




 Griepentrog / SZ Blumenthal        Seite 7                   26. Juni 2012
    Alternative 2

                      //Attribute
                    var netto, mwst, brutto, summe;

                    //Dienst
                function brutto()   {
                  summe = 0;
                  do {
                    netto = prompt("Gib den Nettobetrag ein");
                    netto = parseFloat(netto);
                    mwst = netto * 0.16;
                    brutto = netto + mwst;
                    summe = summe + brutto;
                    alert("Der Nettobetrag ist " + netto +
                      “\nDie Mehrwertsteuer ist: " + mwst +
                      "\nDer Verkaufspreis ist: " + brutto);
                  } while (netto != 0);
                  alert(“Summe: “ + summe);
                }
    Aufgabe s3)

                      //Attribute
                    var reif, nichtReif;

                    //Dienst
                function kaninchen()     {
                  reif = 0;
                  nichtReif = 1;
                  fenster = open();
                  fenster.document.write(
                                    “reif      nicht reif“);
                  while (reif < 1000000) {
                    reif = reif + nichtReif;
                    nichtReif = reif - nichtReif;
                    fenster.document.write(reif + “     “
                                               + nichtReif);
                  }
                  fenster.document.close();
                }




 Griepentrog / SZ Blumenthal        Seite 8                   26. Juni 2012
    Aufgabe m1)

                     //Attribute
                   var zahl, teiler, quotient;

                    //Dienst
                function prim() {
                  zahl = prompt(“eine Zahl“);
                  zahl = parseInt(zahl);
                  teiler = 2;
                  quotient = zahl / teiler;
                  while ((teiler < zahl) &&
                      (quotient != Math.floor(quotient))) {
                    teiler++;
                    quotient = zahl / teiler;
                  }
                  if (quotient == Math.floor(quotient)) {
                    alert(zahl + “ ist keine Primzahl“);
                  } else {
                    alert(zahl + “ ist eine Primzahl“);
                  }
                }
    Aufgabe m2)

                     //Attribute
                   var zahl, teiler, quotient, fenster;

                    //Dienst
                function allePrimzahlen() {
                  zahl = 2;
                  fenster = open();
                  while (zahl <= 1000) {
                    teiler = 2;
                    quotient = zahl / teiler;
                    while ((teiler < zahl) &&
                          (quotient != Math.floor(quotient))) {
                      teiler++;
                      quotient = zahl / teiler;
                    }
                    if (quotient != Math.floor(quotient)) {
                      fenster.document.write(zahl + “<br>“);
                    }
                    zahl++;
                  }
                  fenster.document.close();
                }




 Griepentrog / SZ Blumenthal       Seite 9                   26. Juni 2012
    Aufgabe m3)

                     //Attribute
                   var zahl, faktor, teiler, quotient, fenster;

                    //Dienst
                function allePrimzahlen() {
                  zahl = prompt(“eine Zahl“);
                  faktor = 2;
                  fenster = open();
                  fenster.document.write(zahl + “ = 1“);
                  while (faktor < zahl) {
                    teiler = 2;
                    quotient = faktor / teiler;
                    while ((teiler < faktor) &&
                          (quotient != Math.floor(quotient))) {
                      teiler++;
                      quotient = faktor / teiler;
                    }
                    if (quotient != Math.floor(quotient)) {
                      if (zahl/faktor ==
                               Math.floor(zahl/faktor)) {
                          fenster.document.write(“*“ + faktor);
                          zahl = zahl / faktor;
                      } else {
                          faktor++;
                      }
                    }
                  }
                  fenster.document.close();
                }




 Griepentrog / SZ Blumenthal       Seite 10                  26. Juni 2012
    Aufgabe m4)

         // Attribute
         var verbrauch, normal, billig, summe;

         // Dienst
         function stromtarif() {
           summe = 0;
           do {
             verbrauch = prompt(“Stromverbrauch in kWh“);
             verbrauch = parseFloat(verbrauch);
             normal = 10 + 0.17 * verbrauch;
             billig = 25 + 0.10 * verbrauch;
             if (billig < normal) {
               alert(“Billigtarif: “ + billig);
               summe = summe + billig;
             } else {
               alert(“Normaltarif: “ + normal);
               summe = summe + normal;
             }
           }
           while (verbrauch > 0);
           alert(“Umsatz: “ + summe);
         }




 Griepentrog / SZ Blumenthal   Seite 11                    26. Juni 2012

								
To top