Sekundarstufe II

Einstieg in Canvas

In dieser Woche haben wir uns die grundlegenden Canvas-Methoden angesehen.

Zum Einstieg haben wir zuallererst eine einfache Zeichnung auf einem Din A4 Blatt erstellt. Die Eckpunkte dieses Blattes haben wir mit den Koordinaten (0,0),(700,0),(0,500),(700,500) beschriftet, welche später am Computer für Pixel stehen.

Diese Zeichnung sollten wir dann mit Delphi erstellen. Hierbei hat es sich als sinnvoll dargestellt, wenn man schon vorher auf dem Papier alle Eckpunkte innerhalb der Zeichnung mit Koordinaten versehen hatte, um ein Gefühl für die Proportionen zu bekommen. Falls die eigene Papierzeichnung sich nicht zur Darstellung eignete, konnte man stattdessen auch das "Haus vom Nikolaus" erstellen; wer wollte sogar mit Anbau.
Das Programm für die Zeichnung sollte so aussehen, dass die ganze Zeichnung beim Klick auf einen Button "Zeichnen" erstellt wird -> sodass sich also alle folgenden Methoden in diesem Button konzentrierten:

Canvas.pen.color :=clRed //Ändert die Farbe des Stift-Objekts Pen
Canvas.pen.width :=2 //Ändert die Strichstärke des Stift-Objekts Pen
Canvas.moveto (x,y) //Setzt die aktuelle Position auf die Koordinaten (x,y)
Canvas.lineto(x,y) //Zeichnet eine Linie von der aktuellen Position bis zum Punkt (x,y); (x,y) wird die neue aktuelle Position
Canvas.Rectangle(x1,y2,x1,y2) //Zeichnet ein Rechteck mit den gegenüberliegenden Eckpunkten P(x1,y2) und Q(x1,y2)
Canvas.Ellipse(x1,y1,x2,y2) //Zeichnet eine Ellipse innerhalb des imaginären Rechteck mit den Eckpunkten P(x1,y1) und Q(x2,y2); ist dieses ein Quadrat, wird ein Kreis gezeichnet.


Schiffe auf der Nordsee

Aufgabe

Um 7 Uhr morgens befindet sich das Schiff "Loveline" genau 40 sm (Seemeilen,1 sm = 1,852 km) östlich des Kreuzfahrtschiffes "Seedog". Die "Loveline" fährt mit einer Geschwindigkeit von 10 Knoten ( 1 Knoten = 1 sm/h) in nördlicher Richtung, die "Seedog" auf einem Kurs in östlicher Richtung mit einer Geschwindigkeit von 15 Knoten. Beide Schiffe halten Kurs und Geschwindigkeit über einen längeren Zeitraum exakt bei.

  1. Um wie viel Uhr ist der Abstand zwischen den beiden Schiffen am geringsten?
  2. Wie groß ist der minimale Abstand? Welche Strecke haben die beiden Schiffe seit 7 Uhr bis zu diesem Zeitpunkt zurückgelegt?
Zur Veranschaulichung habe ich die Aufgabenstellung skizziert. Die "Loveline" kann bewegt werden.

Sorry, the GeoGebra Applet could not be started. Please make sure that Java 1.4.2 (or later) is installed and active in your browser (Click here to install Java now)


Erstellt mit GeoGebra

Bildquelle Schiffe: www.historic-maps.de

Lampenspiele erstellen mit der random-Funktion, Prozeduren, Arrays und Variablen

Die Woche im Überblick:
Wir haben mit einem neuen Projekt begonnen: das Lampenspiel.
Ziel des Spiels ist es, alle Felder in einer Farbe zu bekommen.
Wir haben insgesamt 2 Versionen.

Version 1:
Man hat 7 Felder im Kreis angeordnet. Beim Klicken auf einem Feld wird die Farbe des Feldes und der umliegenden Felder umgekehrt.
Version 2: Man hat 4*4 Felder, also insgesamt 16 Felder. Beim Klicken auf einem Feld wird die Farbe des Feldes und die Felder mit der Position (relativ zum geklicktem Feld) -4, -1, +1 und +4 umgekehrt.
Beim Ausführen des Programms wird verständlich, was gemeint ist.

In dieser Woche gab es eine Menge an Theorie. Wir hatten einmal die random-Funktion und einen "Crash-Kurs" in Sachen Prozeduren, Arrays und Variablen.

Die random-Funktion:

Die random-Funktion ist vom Typ Integer (Zahlen, wie z.B. 0,1,2,...). Es werden "Zufallszahlen" aus gegeben, aber nicht irgendwelche. Man grenzt die Zahlen durch eine Zahl in der Klammer hinter dem random ein. Ein Beispiel: random(2). Die 2 bedeutet das die random 2 Möglichkeiten stellt, entweder gibt sie 0 oder 1 aus.

Wichtig ist das man die random-Funktion zuvor mit randomize; einleiten muss. Dies ist nur einmal am Anfang notwendig. So wird der Funktion gesagt, dass es den "Zufallsgenerator" einschalten soll.

Für unser kleines Programm mussten wir die random-Funktion in einer Bedingung einbauen. Beispiel:
if random(2) = 1
then .....
Die random-Funktion gibt ja 0 oder 1 aus, und wenn 1 ausgegeben wird ist diese Bedingung true. Es wird then ausgeführt.

Prozeduren:

Prozeduren werden mit procedure eingeleitet. Diese sind gefolgt vom Formulartyp, einem Punkt ("."), dem Namen der Methode und in Klammern die Parameter. Hinter der letzten Klammer muss ein Semikolon(";") gesetzt werden. In der neuen Zeile steht das begin, dass den Anfang der Anweisungen angibt, die ausgeführt werden sollen. Beendet werden Prozeduren mit einem end;. Unser Beispiel:
procedure TForm1.FarbeWechseln (LampenNr: Integer)

Die Prozedur muss auch im Kopf der Unit stehen, und zwar unter public, wo unsere eigenen Deklarationen eingefügt werden und das ganze Programm darauf Zugriff hat und unter implementation, wo unsere ganze Prozedur inklusiv Code steht.

Wenn man dies gemacht hat kann man dann beliebig oft auf diese Prozedur zugreifen und uns lästige Schreib- und Kopierarbeit sparen.

Das Array:

Ein Array ist ein Feld für einen Datentyp, indem man beliebig viele Daten speichern kann. Man kann sich ein Array wie einen Schrank mit Schubladen vorstellen. Man kann in jeder Schublade etwas abstellen.

Man deklariert Arrays unter var, wo der Typ einer Variable definiert wird.
Auch hier wieder ein Beispiel:
a: array [1..16] of TPanel;

Nun ist a ein Array mit 16 "Schubladen. In diesem Array dürfen nur Panelobjekte gespeichert werden, da wir dem Array den Datentyp TPanel zuweisen. Wichtig sind die Punkte innerhalb der eckigen Klammern. Es dürfen nur 2 sein, da sonst ein Fehler ausgelöst wird. Der Doppelpunkt(":") hinter dem a bedeutet "ist vom Typ".
Man könnte es also ungefähr so lesen:
a ist vom Typ array mit den Fächern 1 bis 16 in dem nur Panelobjekte gespeichert werden dürfen.

Man greift auf einem Fach im Array mit [Zahl] zu und weist es bei uns einem Panel durch ":=" zu. Unser Beispiel:
a[1] := Panel1;

Wie haben nun dem ersten Fach des Array ein Panelobjekt zugewiesen.

Zum besseren Verständnis stehen beide Lampenspiele im Anhang zur Verfügung.

Ich denke, dass damit die wichtigsten Sachen genannt worden sind, die in dieser theoriereichen Woche vorkam. Bei Fragen einfach Kommentar schreiben.

Alex M.


Flächeninhalt eines Rechtecks in einem Trapez

Auf der Fachtagung "Mathematik für alle" gab es wieder viel Anregung. Ich hatte den Workshop von Heinz Laakmann besucht. Thema: Wie kann der Computer helfen, vielfältige Lösungswege zu erhalten?

Meine Gruppe hat die folgende Aufgabe behandelt:

In einem Trapez mit den Eckpunkten A(0/0), B(0/6), C(5/2) und D(5/0) soll ein möglichst großes Rechteck gezeichnet werden, wobei A ein Eckpunkt des Rechtecks ist.

Wir haben diese Aufgabe mit Geogebra gelöst.


Ampelschaltung mit Panels

Inhalte der Woche:

 

In dieser Woche haben wir uns mit programmierten Ampel auseinandergesetzt. Am Dienstag, in unserer ersten Stunde haben es gegen Ende doch alle geschafft und wir hatten unsere erste Ampel, die man mit den 4 Buttons: "Rot", "Rot/Gelb", "Gelb" und "Grün" bedienen konnte.

Da wir natürlich alle zu faul sind alle 4 Buttons nacheinander zu drücken haben wir uns in der ersten Stunde der beiden Doppelstunden ein Programm ausgedacht mit dem wir mit dem einzigen Knopf "Schalten" unsere Ampel durchschalten konnten.

In der zweiten Stunde haben wir dann noch einen ein- und abschaltbaren Timer eingebaut, mit diesem wurde die Ampel in einem bestimmten Interval selbst umgeschaltet.

 

Neue Befehle:

Der wichtigste neuste Befehl dieser Woche war ganz sicher das altbekannte "Wenn ... dann ..." wie man es aus nahezu allen Programmierumgebungen kennt.
Wichtig hierbei sind die 3 Grundgerüste.

1. Einseitige Entscheidungen
if <Bedingung> then <Anweisung>


2. Zweiseitige Entscheidungen
if <Bedingung> then <Anweisung> else <Anweisung>


3. Mehrfache Entscheidungen
if <Bedingung> then <Anweisung> else if <Bedingung> then ...


Nicht ganz so wichtig, aber auch erwähnenswert ist die Verknüpfung "and" mit der man mehrere Bedingungen miteinander logisch verknüpfen konnte.

Schwierigkeiten:

Ab und wann gab es Schwierigkeiten, wie z.B. bei dem genauen Einsetzenvon Klammern, nahezu 50% hatte einen Fehler bei dem Aufschreiben der Bedingungen im Quelltext, da man diese einklammern musste.
Aber sonst hatten es doch alle geschafft zumindest ihre "Schaltampel" fertigzustellen.

Tobias


Inhalt abgleichen