Übung Turtle ◦ ?

Stoff des Curriculums Elementare Programmierung

- Modul
- Anweisungssequenz
- Schleife
- Prozedur
- Entscheidungsanweisung
- Datenfeld
- Debuggen

Wiederholungsfragen

Ein Klick auf den roten Hyperlink zeigt die richtige Lösung.

1. Gegeben sei das folgende Unterprogramm. Es zeichne ein Quadrat der Seitenlänge 100 an der angegebenen Position.

       Sub QuadratFesterLänge(X As Integer, Y As Integer)
         ... einige Anweisungen
       End Sub

   Welche der folgenden Programme melden einen Laufzeitfehler? (mehrere Antworten möglich)

   1.         Dim X As Integer
              Dim Y As Integer
              X = 100
              Y = 200
              QuadratFesterLänge X, Y        Antwort

   2.         Dim X As Integer
              Dim Y As Integer
              X = 100
              Y = 200
              QuadratFesterLänge 100, 200    Antwort

   3.         Dim A As Integer
              Dim B As Integer
              A = 100
              B = 200
              QuadratFesterLänge X, Y        Antwort

   4.         Dim A As Integer
              Dim B As Integer
              A = 100
              B = 200
              QuadratFesterLänge A, B        Antwort

   5.         Dim X As String
              Dim Y As String
              X = 100
              Y = 200
              QuadratFesterLänge X, Y        Antwort

   6.         Dim X As String
              Dim Y As String
              X = "100"
              Y = "200"
              QuadratFesterLänge Y, X        Antwort

2. Welchen Datentyp wählen Sie, wenn Sie Variablen für folgende Daten bereitstellen müssen?

   Hinweis: Überlegen Sie sich, welche Wertbereiche und welche Operationen Sie benötigen.

   1. ..... Zählvariable für Zählschleife
   2. ..... Passwort
   3. ..... Tramlinie
   4. ..... Anzahl Fahrgäste
   5. ..... Preis für ein Trambillet
   6. ..... Distanz zwischen zwei Haltestellen
   7. ..... Telefonnummer des Tramführers oder der Tramführerin
   8. ..... Geburtsdatum des Tramführers oder der Tramführerin
   9. ..... Vermerk, ob ein Fahrer oder eine Fahrerin auch sonntags eingesetzt werden kann

   1. Integer
   2. Single / Double
   3. Currency
   4. Boolean
   5. String
   6. Date

3. Der Mod-Operator gibt den Rest bei einer Ganzzahldivision zurück (z.B.: 7 / 2 = 3 Rest 1. Also ist 7 Mod 2 = 1). Gegeben sei eine Funktion, die prüft ob eine Ganzzahl gerade ist:

       Function istGerade(Zahl As Integer) As Boolean
         Zahl = Zahl Mod 2
         If Zahl = 0 Then
           istGerade = True
         Else
           istGerade = False
         End If
       End Function

   Welchen Wert hat die Variable t nach Ausführung des folgenden Programms?

       Dim t As Integer
       t = 128
       If istGerade(t) Then
         t = t + 1
       End If

   1. 1
   2. 65
   3. 128
   4. 129

4. Erklären Sie Funktion und Wirkung der folgenden Begriffe:

   Einzelschritt Variableninhalt Kennzeichenleiste Testen-Symbolleiste Prozedurschritt Entwurfsmodus | Makro ausführen Haltepunkt Beenden Codefenster Aktuelle Ausführungszeile Prozedur abschliessen

5. Wie oft wird die folgende Schleife durchlaufen?

       Dim t As Integer
       t = 128
       Do While t > 2
         t = t / 2
       Loop

   1. 6 Mal
   2. 7 Mal
   3. 8 Mal
   4. Endlosschleife

6. Gegeben sei das folgende Datenfeld:

       Private Personen(1 To 5) As String

   Ein Programm fülle in die Variable Personen die fünf Namen ["Carmen", "David", "Anna", "Elisabeth", "Beat"]. Danach führt es die folgende Schleife aus, wobei i ein Integer und temp ein String sind.

       For i = 1 To 4
         If Personen(i) > Personen(i + 1) Then
           temp = Personen(i)
           Personen(i) = Personen(i + 1)
           Personen(i + 1) = temp
         End If
       Next

   In welcher Reihenfolge befinden sich die Namen nach Ausführung des Programms im Datenfeld?

   1. ["David", "Carmen", "Elisabeth", "Beat", "Anna"]
   2. ["Anna", "Beat", "Carmen", "David", "Elisabeth"]
   3. ["Carmen", "David", "Anna", "Elisabeth", "Beat"]
   4. ["Carmen", "Anna", "David", "Beat", "Elisabeth"]

7. Wie oft muss man die Schleife in Aufgabe 6. im ungünstigsten Fall ausführen, damit ein beliebiges Datenfeld mit 5 Elementen danach sortiert ist?

   1. 3 Mal
   2. 4 Mal
   3. 5 Mal
   4. im ungünstigsten Fall geht das gar nicht

   Geben Sie ein Beispiel für einen ungünstigsten Fall.

Vertiefungsfragen

Die Turtle-Grafik ist ein bekanntes Feature der Programmiersprache Logo. Logo wurde entwickelt, um Kinder spielerisch in das Programmierens einzuführen. Die Turtle-Grafik wurde später in die Sprachen wie Turbo Pascal aufgenommen. Diese Aufgabe verwendet die Turtle-Grafik, um die grundlegenden Sprachelemente von VBA zu repetieren.

Der erste Teil der Einführung in die Programmentwicklung hat im Beispiel QuadratProgrammiert.xls das Zeichnen von Linien unter einem Koordinatensystem vorgestellt. Die Turtle-Grafik kommt ohne Koordinatensystem aus. Gezeichnet wird, indem einer 'Schildkröte' (engl. turtle) Anweisungen gegeben werden, sich vorwärts zu bewegen oder sich an ihrer aktuellen Position nach links oder rechts zu drehen.

Die Arbeitsmappe TurtleSkelett.xls enthält ein Arbeitsblatt als Benutzerschnittstelle, ein Modul 'Turtle', das einige Befehle der Turtle-Grafik implementiert und ein Modul 'Prozeduren' mit den Prozedurköpfen für die Aufgaben.

Der kleine blaue Punkt auf dem Arbeitsblatt ist der Startpunkt der Schildkröte, unmittelbar nachdem die Schaltfläche 'Lösche' geklickt wurde. Er kann zuvor mit der Maus beliebig positioniert werden. Die Anfangsrichtung der Schildkröte ist Norden.

Das Modul 'Turtle' implementiert folgende Prozeduren:

- Start: Löscht alle Linien und positioniert die Schildkröte auf dem kleinen blauen Punkt. Wird beim Klick der Schaltfläche Lösche aufgerufen.
- geheVorwärts <Schritte>: Bewegt die Schildkröte um die angegebene Anzahl Schritte in die aktuelle Richtung.
- dreheLinks <Winkel>: Ändert die aktuelle Richtung der Schildkröte, um den angegebenen Winkel (0-360°).
- dreheRechts <Winkel>: Ändert die aktuelle Richtung der Schildkröte, um den angegebenen Winkel (0-360°).

Die obige Grafik wurde beispielsweise durch folgende Anweisungen gezeichnet:

    Start
    geheVorwärts 40
    dreheRechts 30
    geheVorwärts 70
    dreheLinks 110
    geheVorwärts 20

Laden Sie die Arbeitsmappe TurtleSkelett.xls und lösen Sie die folgenden Aufgaben in den bereitgestellten Prozedurskeletten des Moduls 'Prozeduren'.

Hinweis: | Sie brauchen den Programmcode im Modul 'Turtle' nicht anzuschauen.

1. Implementieren Sie in der Prozedur Nikolaus_Klick eine Sequenz von Anweisungen, welche "das Haus vom Nikolaus" zeichnet. Eine Skizze mit Längen- und Winkelangaben zeigt das nächste Bild.

2. Implementieren Sie in der Prozedur Pentagramm_Klick ein Programm, welches das im folgenden Bild gezeigte Pentagramm zeichnet. Verwenden Sie eine Schleife.

3. Implementieren Sie in der Prozedur Spirale_Klick ein Programm, das die im folgenden Bild gezeigte Spirale zeichnet. Jede Linie ist 0.8 Mal so lang wie die vorhergehende. Die letzte Linie soll etwa vier Schritte lang sein. Verwenden Sie eine Schleife.

4. Implementieren Sie in der Prozedur Sparrenfenster_Klick ein Programm, welches das im nächsten Bild gezeigte Sparrenfenster zeichnet. Implementieren Sie zunächst ein Unterprogramm, das ein Quadrat zeichnet. Als Argument soll ihm die Kantenlänge übergeben werden können. Verwenden Sie das Unterprogramm zum Zeichnen des Sparrenfensters.

5. Die Schildkröte hat Hunger. Der grosse grüne Punkt neben der 'suche Salat'-Schaltfläche stellt einen Salat dar. Sie können den Punkt mit der Maus beliebig auf dem Arbeitsblatt platzieren. Die Schildkröte soll diesen Salat nun selbständig finden. Das Modul Turtle stellt hierfür vier weitere Funktionen zur Verfügung.

   - istSalatVorne: Gibt True zurück, falls sich der Salat vor der Schildkröte befindet.
   - istSalatLinks: Gibt True zurück, falls sich der Salat links hinter der Schildkröte befindet.
   - istSalatRechts: Gibt True zurück, falls sich der Salat rechts hinter der Schildkröte befindet.
   - istSalatGefunden: Gibt True zurück, falls sich die Schildkröte auf dem Salat befindet.

   Die grauen Bereiche im letzten Bild veranschaulichen, welche Funktion wann True zurück gibt. Was 'vorne', 'links' und 'rechts' bedeutet, hängt von der aktuellen Richtung der Schildkröte ab.

   Überlegen Sie sich eine Suchstrategie und implementieren Sie diese.

LTurtle.xls

LVariantenSucheSalat.xls

©abo