kopf
brlogo
fensterobenrechts
   
   
fensteruntenblau
   
 

 

Visual Basic entstand in der Frühphase graphischer Benutzerschnitten für PCs und enhielt von vornherein richtungsweisende Grundkonzepte, z. B. visuelle Steuerelemente, Ereignissteuerung, Property-Konzept.

Vor allem die im Rahmen des Förderprogramms "Schulen ans Netz" kostenlosen Schullizenzen VB 5 und 6 sind nach wie vor geeignete Werkzeuge für den Unterricht.

Der Autor Albnin Buhl hat sich bereits zu einer Zeit, als auf PCs in der Schule noch das Betrioebssystem DOS dominiert, mit den Möglichkeiten dieser Programmierumgebung auseinandergesetzt.

Die ersten Versionen von Visual Basic hatten eine einfache Struktur und sind damit auch heute noch geeignete Werkzeuge für Unterricht. Neuere Versionen  von VB (aktuell und kostenlos: Visual Studio Express) sind in ihren Möglichkeitren deutlich gewachsen, aber auch deutlich komplexer. Ein Erfahrungsbericht über deren Einsatz im Informatikunterricht steht noch aus.

Peter Damann

 

VISUAL BASIC

Autor: Albin Buhl, Gymnasium Korschenbroich

 

Eine mögliche Kurssequenz in 9/10

 

Klassenstufe 9:

 

Umgang mit Standardsoftware:

 

Nutzung von Textverarbeitungssystemen

- Eingabe und Änderung von Texten

- Gestaltung von Texten

- Serienbriefe

- Veränderung von Arbeitsplätzen durch EDV im Büro

 

Nutzung von Tabellenkalkulationssystemen

- Entwurf und Analyse eines Rechenblattes auf der Basis eines konkreten Anwendungsproblems

- Datentypen in Rechenblättern

- Nutzung des Systems zur graphischen Darstellung

 

Nutzung von Datenbanksystemen

- Entwurf und Strukturierung von Dateien

- Datentypen in Dateien

- Elementare Operationen (Einfügen, Löschen,

Ändern, Suchen etc.)

- Datenschutz

 

 

Funkionsweise von Software

- Abgrenzung von Anwender- und Programmiersystemen

- Lösung von einfachen algorithmischen Problemen ( z. B. Selektion von bestimmten Datensätzen)

 

- Bearbeitung algorithmischer Problemstellungen mit Hilfe von VISUAL-BASIC

- Ereiginsgesteuerte Programmierung

- Graphiken mit elementaren (geom. Figuren)

- einfache Animationen

Klassenstufe 10:

 

Funkionsweise von Software

 

- Strukturierung von Algorithmen

- Datenstrukturen in VISUAL-BASIC

 

Bei der Bearbeitung der Problemstellungen (Zahlenraten, Wortsuche, Wortraten, etc.) erhalten die Schülerinnen und Schüler einen Einblick in folgende Methoden der Informatik:

 

- TOP-DOWN-Entwurfstechnik

- Methode der schrittweisen Verfeinerung (Strukturierung und Zerlegung in Module)

- Testen von Programmteilen

 

 

Funkionsweise von Hardware, Prozeßdatenverarbeitung

 

- Digitale Informationsdarstellung Bit, Byte

- Codierung von Zahlen und Zeichen

- Funktionsweise elementarer logischer Schaltungen

- Halbaddierer, Volladdierer, Schieberegister, digitale Speicherelemente etc.

 

Messen und Steuern bei technischen Prozessen

- Meßwerterfassung, Digitale Zähler, Längenmessung etc.

- Zeitplansteuerung einer Ampel

- Steuerung von Schrittmotore

- Steuerung von Förderbändern etc.

 

Zu Klassenarbeiten

 

Voraussetzung

Die Schüler haben mehrere Programme mit Schleifen und IF - Anweisungen bearbeitet. Die Schüler mußten bei den Aufgaben die notwendigen Eingaben und Variablentypen bestimmen. Obwohl mehrere gleichartige Aufgaben bearbeitet wurden, darf die Transferleistung nicht unterschätzt werden.

Für die Bearbeitung hatten die Schüler 45 Minuten Zeit.

 

Klassenarbeit:
 

Aufgabe 1:

Erstelle ein Programm in Visual-Basic, das folgende Eigenschaften hat:

Auf den Befehl "Start", soll ein Fenster um 10 Pixel nach oben verschoben werden und die Farbe von rot auf schwarz ändern. Wenn das Fenster den oberen Bildrand erreicht, dann soll es in die Mitte verschoben werden.

Auf den Befehl "Ende", soll das Programm beendet werden.

 

Aufgabe 2:

In einem Tarifvertrag ist die Zahlung des Weihnachtsgeldes wie folgt geregelt:

Derjenige, der mehr als 9 Monate im Betrieb arbeitet erhält das volle 13. Monatsgehalt, alle anderen erhalten für jeden Monat Betriebszugehörigkeit den 12 ten Teil des Monatsgehaltes.

Erstelle ein Programm in VISUAL-BASIC, das das Dezembergehalt berechnet.

 

Aufgabe 3:

Ein Kapital k wird zu einem Zinssatz von p % jährlich verzinst. Berechne die Anzahl der Jahre bis sich das Kapital verdoppelt hat.

 

 

Lösungsvorschlag und Punkteverteilung

 

Aufgabe 1:

 

image03

 

Festlegung des Formulars und der Komponenten (Namen etc.) 7 Punkte

 

Command Button Bildelement

  Name: bef_start picture1

  bef_ende Backcolor: Rot

 

Private Sub bef_ende_Click()

  End

End Sub

 

Private Sub bef_start_Click()

  If (Picture1.Top > 0) Then

    Picture1.Top = Picture1.Top - 10

    Picture1.BackColor = RGB(0, 0, 0) 15 Punkte

  Else

    Picture1.Top = Form1.ScaleHeight \ 2

  End If

End Sub

 

Aufgabe 2:

Formblatt mit den Objekten, 12 Punkte

Definition u. Datentyp der Variablen,

Prozedur zur Berechnung 20 Punkte

 

Aufgabe 3:

Formblatt mit den Objekten, 12 Punkte

Definition u. Datentyp der Variablen,

Prozedur zur Berechnung 20 Punkte

 

Hinweise zu diesen Seiten

Es ist nicht die Absicht hier eine grundlegende Einführung in die Programmiersprache VISUAL-BASIC vorzustellen, sondern es ist eine Sammlung von Arbeitsblättern und Aufgaben, die aus einer Unterrichtssequenz mit VISUAL-BASIC in der Sekundarstufe I entstanden ist.

Die einzelnen Abschnitte können auch in einer anderen Reihenfolge durchgeführt werden. So habe ich bereits sehr früh, im Zusammenhang mit den Graphiken, Prozeduren und Funktionen eingeführt.

 

Warum VISUAL-BASIC im Unterricht?

 

Alle Programme des MicroSoft-Officepaketes sind mit VISUAL-BASIC als Makrosprache ausgerüstet worden. Die hier gewonnenen Kenntnisse können von den Schülern in anderen Programmpaketen (EXEL, WORD, ACCESS) angewendet werden.

Durch die visuelle Programmierumgebung können die Schüler schnell und interaktiv ansprechende Programme schreiben. Allerdings zeigt sich sehr schnell, dass auch mit diesem mächtigen Werkzeug keine effiziente Programme erstellen kann ohne die Beschäftigung mit Problemlösungsstrategien, der graphischen Darstellung mit Programmierelemente.

 

Bearbeitung algorithmischer Problemstellungen mit Hilfe von VISUAL-BASIC

 

DOS- und Windowsprogrammierung

Windowsprogramme unterscheiden sich von DOS-Programmen vor allem durch folgende Eigenschaften:

  • Kommunikation zwischen Programm und Benutzer

Unter DOS sind Tastatur- und Mauseingaben voneinander getrennt. Die Verarbeitung folgt über das Abarbeiten der entsprechenden Interrupts. Das Programm steuert somit den Dialog und damit den gesamten Programmablauf.

Unter Windows ist die direkte Abfrage der Eingabegeräte nicht notwendig. Das Betriebssystem fängt alle Eingaben ab und wandelt sie in Nachrichten um. Diese Nachrichten stellen das zentrale Medium für die Kommunikation zwischen der Applikation und dem Betriebssystem dar. Alle aktiven Anwendungen werden über den sogenannten Message Dispatcher gesteuert.

DOS unterscheidet zwischen Graphik- und Textausgaben. In Windows erfolgen alle Ausgaben im Graphikmodus. Texte und Bilder können fast nach Belieben kombiniert werden, wobei Windows einen Großteil der Routinearbeiten übernimmt.

  • Multitasking

DOS ist ein typisches Single Task Betriebssystem. Erst durch die Fähigkeit von Windows mehrere Anwendungen gleichzeitig in verschiedenen Fenstern auf dem Bildschirm darzustellen, wird ein Multitasking möglich. Das bedeutet aber, daß sich die verschiedenen Anwendungen die erforderlichen Geräte und Resourcen wie Speicher Prozessorzeit, Tastatur, Maus, Bildschirm etc. teilen müssen. Das System ist darauf angewiesen, daß das aktive Programm von sich selbst aus die Steuerung an Windows zurückgibt. Daher Endlosschleifen vermeiden!

  • Speicherverwaltung

Eine der wesentlichsten Einschränkungen von DOS ist darin zu sehen, daß nur max. 1MB RAM direkt adressiert und verwaltet werden kann.

  • Dynamix Link Libraries (DLLs)

Mehrere geladene Programme können sich Code und Daten teilen. Werden Funktionen einer bestimmten Bibliothek von mehreren parallel laufenden Anwendungen genutzt, so muß diese Bibliothek nur einmal geladen werden. Die Programme können dann die Funktionen dann dynamisch aufrufen. Die Bibliotheksfunktionen müssen also nicht fester Bestandteil der jeweiligen Anwendung sein, sondern werden erst zur Laufzeit mit der Anwendung verbunden. Die Laufzeitbibliotheken von Windows mit den genannten Eigenschaften heißen DLLs und stellen die Grundbausteine von Windows dar.

 

Der Bildschirm

Wenn Visual-Basic gestartet wird, dann sind i.a. folgende Steuerelemente zu sehen:

 

image042

 

1) Form1

2) Werkzeugleiste

3) Eigenschaften des gewählten Objektes

 

Die Elemente der Werkzeugleiste und die Eigenschaften werden nach und nach erarbeitet.

 

Alle Projekte werden in dem Verzeichnis KURS9 gespeichert.Dazu wählt man

  • Datei Projekt speichern unter

Zuerst wird man dann gefragt, ob die Formdatei mit dem gewählten Namen gespeichert werden soll.

Es ist dann zuerst das Verzeichnis zu wählen und dann gegebenenfalls der Namen ändern. Auf keinem Fall den Namen FORM1 wählen.

Es werden hier alle zu dem Formular gehörigen Ereignis- und benutzerde- finierten Prozeduren gespeichert.

Dann muss noch die Projektdatei gespeichert werden. Dazu wählt man wählt man zweckmässig den gleichen Namen

 

Die Werkzeugleiste

Sie öffnen die Werkzeugsammlung, indem Sie aus dem Menü Ansicht den Befehl Werkzeugsammlung wählen.

Sie schließen die Werkzeugsammlung, indem Sie auf das Systemmenüfeld doppelklicken.

Die Werkzeugsammlung enthält 26 Basiswerkzeuge (in Klammern sind die zugehörigen Klassennamen für die Verwendung im Code angegeben). Im Unterricht benutze ich nur einige der 26 Objekte. Diese werden bei Bedarf eingeführt. Hier eine Auswahl:

 

image05  Zeiger


Das einzige Werkzeug, mit dem Sie kein Steuerelement erstellen können. Verwenden Sie den Zeiger, um ein Steuerelement zu verschieben oder seine Größe zu ändern, nachdem es in die Form gezeichnet wurde.

Wenn Sie den Zeiger auswählen, können Sie nur vorhandene Steuerelemente verschieben oder deren Größe ändern.

Wenn Sie eines der anderen Werkzeuge auswählen, können Sie nur neue Steuerelemente erstellen.

Nachdem Sie ein Steuerelement gezeichnet haben, wird automatisch wieder der Zeiger ausgewählt.

 

image06  Bildfeld-Steuerelement (PictureBox)

 

Zum Anzeigen von Abbildungen (als Dekoration oder aktives Element), als Container, der Ausgaben von Grafikmethoden erhält, oder als Container für andere Steuerelemente.

 

image07   Bezeichnungsfeld-Steuerelement (Label)

 

Für Text, den der Benutzer nicht ändern soll, z.B. die Bezeichnung einer Grafik.

 

image08  Befehlsschaltfläche-Steuerelement (CommandButton).

 

Zum Erstellen einer Schaltfäche, mit der der Benutzer einen Befehl ausführen kann.

 

image09  Zeitgeber-Steuerelement (Timer)

 

Zum Erzeugen von Zeitgeber-Ereignissen in festgelegten Zeitabständen. Dieses Steuerelement ist zur Laufzeit nicht sichtbar.

 

Eigenschaften des Objekts Form

Appearance-Eigenschaft:

0 Flat (Flach).

Steuerelemente und Formen werden ohne optische Effekte angezeigt.

1 (Voreinstellung) 3D. Steuerelemente werden mit 3D-Effekt angezeigt.

BackColor liefert die Hintergrundfarbe eines Objekts oder legt sie fest.

ForeColor liefert die Vordergrundfarbe eines Objekts, die zum Anzeigen von Text und Grafiken in einem Objekt verwendet wird, oder legt sie fest.

BorderStyle

0 None (kein Rahmen oder ähnliche Elemente)

1 Fixed Single (Nicht änderbar, einfach). Kann Systemmenüfeld, Titelleiste, Maximieren-Schaltfläche und Minimieren-Schaltfläche umfassen. Ändern der Größe ist nur mit den Maximieren- und Minimieren-Schaltflächen möglich.

2 Sizable (Voreinstellung, Größe veränderbar).

Mit jedem der für Einstellung 1 aufgeführten optionalen Rahmenelemente kann die Größe des Rahmens verändert werden.

Caption

Ein Zeichenfolgenausdruck, der den als Beschriftung angezeigten Text ergibt

Height, Width, Left und Top

die externe Höhe und Breite der Form, einschließlich Rahmen und Titelleiste

ScaleLeft, ScaleTop, ScaleHeight und ScaleWidth

Verwenden Sie die Eigenschaften Height, Width, Left und Top für Operationen oder Berechnungen, die sich auf die Gesamtfläche eines Objekts beziehen (z.B. das Vergrößern, Verkleinern oder Verschieben eines Objekts). Verwenden Sie die Eigenschaften ScaleLeft, ScaleTop, ScaleHeight und ScaleWidth für Operationen oder Berechnungen, die auf der Innenfläche eines Objekts basieren (z.B. das Zeichnen oder Verschieben eines Objekts innerhalb eines anderen Objekts).

Name

Diese Eigenschaft eines Objekts muß mit einem Buchstaben beginnen und kann maximal 40 Zeichen enthalten. Die Name-Eigenschaft darf Zahlen und Unterstreichungszeichen enthalten, aber Satzzeichen und Leerzeichen sind nicht zulässig. Sie können einer Form keinen der globalen Objektnamen (wie Clipboard, Screen oder App) geben.

Visible

legt (True, False) fest, der anzeigt, ob ein Objekt zur Laufzeit sichtbar oder ausge-blendet ist

 

Eigenschaften von CommandButton

Die folgenden Eigenschaften von dem Objekt "CommandButton" sind wie bei Form festgelegt.

Appearance-Eigenschaft

BackColor

Caption

Height, Width, Left und Top

ScaleLeft, ScaleTop, ScaleHeight und ScaleWidth

Name

Hier sollte ein inhaltsreicher Name entsprechend der Verwendung gewählt werden.

z.B.: cmd_berechne cmd steht für CommandButton oder

bef_berechne bef steht für Befehl

Visible

TabIndex

Eine Ganzzahl im Bereich von 0 bis (n-1). n gibt die Anzahl der Steuerelemente in der Form an, die eine TabIndex-Eigenschaft haben. Das Zuweisen eines TabIndex-Wertes, der kleiner als 0 ist, löst einen Fehler aus.

Anmerkung:

Standardmäßig legt Visual Basic eine Tabulatorreihenfolge für Steuerelemente in der Reihenfolge fest, in der sie auf einer Form positioniert werden. Jedes neue Steuerelement erhält jeweils die letzte Position in der Tabulatorreihenfolge.

TabStop

Ein boolescher Ausdruck, der angibt, ob ein Objekt ein Tab-Stop ist.

True (Voreinstellung) Kennzeichnet ein Objekt als Tab-Stop.

False Überspringt das Steuerelement, wenn der Benutzer die TAB-TASTE drückt, obwohl das Steuerelement den in der TabIndex-Eigenschaft festgelegten Platz in der eigentlichen Tabulatorreihenfolge beibehält.

Mit dieser Eigenschaft können Sie in einer Form ein Steuerelement in die Tabulatorreihenfolge einfügen oder daraus entfernen.

 

Eigenschaften des Objekts PictureBox

Die folgenden Eigenschaften von dem Objekt "PictureBox" sind wie bei Form festgelegt.

Appearance-Eigenschaft

BackColor

Caption

Height, Width, Left und Top

Name

Visible

TabIndex, TabStop

AutoRedraw

True Aktiviert das automatische Neuzeichnen eines Form-Objekts oder eines Bildfeld-Steuerelements (PictureBox). Grafik und Text werden auf dem Bildschirm und in ein im Speicher abgelegtes Bild ausgegeben. Das Objekt erhält keine Paint-Ereignisse; es wird bei Bedarf mit Hilfe der im Speicher abgelegten Abbildung neu gezeichnet.

False (Voreinstellung) Deaktiviert das automatische Neuzeichnen eines Objekts und gibt Grafiken oder Text nur auf dem Bildschirm aus.

BorderStyle

0 None (kein Rahmen oder ähnliche Elemente)

2 Sizable (Voreinstellung, Größe veränderbar). Mit jedem der für Einstellung 1 aufgeführten optionalen Rahmenelemente kann die Größe des Rahmens verändert werden.

ScaleMode

Objekt Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt.

Wert Ein Wert vom Typ Integer, der die Maßeinheit des Koordinatensystems angibt, wie unter Einstellungen beschrieben.

1 (Voreinstellung) Twip (567 Twips pro logischem Zentimeter, 1440 Twips pro logischem Zoll).

3 Pixel (die kleinste Einheit, die auf dem Bildschirm oder Drucker dargestellt werden kann).

 

Eigenschaften des Objekts Label

Alignment

0 Left Justify (Voreinstellung). Text wird links ausgerichtet.

1 Right Justify. Text wird rechts ausgerichtet.

2 Center. Text wird zentriert.

Die anderen Eigenschaften von dem Objekt "Label" sind wie bei Form festgelegt.

 

Gruppieren, ausschneiden und sperren von Komponenten

Um mehrere Komponenten auf dem Formular auszuwählen geht man folgendermaßen vor:

1) CTRL-Taste drücken

2) Komponente auswählen und auf dem Formblatt plazieren

3) Taste gedrückt halten und die weiteren Komponeten plazieren

 

Um mehrere Objekte im Formular zu verschieben:

1) SHIFT-Taste drücken

2) die Komponeten mit der Maus anklicken

3) Taste loslassen und auf eine Komponente mit der Maus zeigen und verschieben.

 

Entsprechend kann man mehrere Objekte löschen

Die Position der Elemente kann man vor versehentlichem verschieben, löschen etc. sperren. Dazu wählt man:

Bearbeiten

Steuerelemente sperren

Entsprechend hebt man die Sperrung wieder auf.

 

Allgemeine Hinweise

Kommentare können überall im Code eingefügt werden und beginnen mit dem Apstroph ( ‘ ).

 

Trennzeichen

In einer Zeile können mehrere Anweisungen geschrieben werden. Sie müssen durch einen Doppelpunkt voneinander getrennt werden.

 

Fortsetzungszeilen

Ab Version 4.0 kann eine Anweisung in der nächsten Zeile fortgesetzt werden. Dazu muss die erste Zeile mit den Zeichen Zwischenraum Unterstreichungszeichen beendet werden.

Beispiel:

neukapital = neukapital + neukapital * zinssatz /100

neukapital = neukapital + neukapital _

* zinssatz /100

 

Das erste Programm

 

image10

 

Dazu benötigen wir folgende Elemente aus der Werkzeugleiste:

 

1. Folgende Eigenschaften der Form werden geändert:

Caption: Farben

Name: farben1

BorderStyle verschiedene Möglichkeiten testen und Ergebnis notieren!

 

2. CommandButton (Befehlsschaltfläche)

Folgende Eigenschaften der Command-Buttons werden geändert:

Caption: &Rot

&Beenden

Name: bef_rot

bef_beend

 

Auf was sollen diese Buttons reagieren?

Click

Also auf den Button clicken, dann kommt man unmittelbar zu der entsprechenden Prozedur:

 

Private Sub bef_beend_Click()

  End

End Sub

 

Private Sub bef_rot_Click()

  ' Farben1.BackColor = &HFF&

  Farben1.BackColor = RGB(255, 0, 0)

End Sub

 

Farbe setzen durch die Funktion RGB

Gibt eine ganze Zahl zurück, die einen RGB-Farbwert repräsentiert.

RGB (red, green, blue)

red

Zahl im Bereich von 0 bis 255 (einschließlich), die die Rot-Komponente der Farbe repräsentiert.

green

Zahl im Bereich von 0 bis 255 (einschließlich), die die Grün-Komponente der Farbe repräsentiert.

blue

Zahl im Bereich von 0 bis 255 (einschließlich), die die Blau-Komponente der Farbe repräsentiert.

Anmerkungen:

Wenn der Wert für ein Argument der RGB-Funktion 255 überschreitet, wird 255 angenommen.

Die folgende Tabelle enthält einige Standardfarben mit den zugehörigen Rot-, Grün- und Blau-Anteilen:

Farbe Rot-Wert Grün-Wert Blau-Wert

Schwarz 0 0 0

Blau 0 0 255

Grün 0 255 0

Cyan 0 255 255

Rot 255 0 0

Magenta 255 0 255

Gelb 255 255 0

Weiß 255 255 255

 

Aufgabe:

Ergänze das Programm farben1 dahingehend, dass es 6 Befehlschaltflächen weiß, rot, gelb, grün, blau, schwarz enthält.

 

Zeichnen in einem Bildfeld (PictueBox)

 

image11

 

1) Bildelement (PictureBox)

Name: Figuren

 

2) Bildelement

Name: Bild

ScaleMode: 3-Pixel

 

3) 6 Befehlsschaltflächen

Name: bef_recht etc.

bef_end

 

Eigenschaften: Click

Bei dem Programm benötigen wir Befehle, um Kreise bzw. Rechtecke zu zeichnen:

 

CIRCLE-Anweisung

Zeichnet auf dem Bildschirm einen Kreis oder eine Ellipse.

CIRCLE [STEP] (x!,y!),Radius![,[Farbe%] [,[Start!] [,[Ende!] [,Aspekt!]]]]

STEP Gibt an, daß die Koordinaten relativ zu der aktuellen Grafik-

Cursorposition sind.

(x!,y!) Die Koordinaten für den Mittelpunkt des Kreises oder der Ellipse

Radius! Der Radius des Kreises oder der Ellipse in Einheiten des aktuellen Koordinatensystems, bestimmt durch die zuletzt ausgeführten SCREEN-, VIEW- und WINDOW-Anweisungen.

Farbe% Ein Farbattribut, das die Farbe des Kreises bestimmt. Die verfügbaren Farbattribute hängen von Ihrer Farbgrafikkarte und dem Bildschirmmodus, bestimmt mit der letzten SCREEN-Anweisung, ab.

Start! Der Anfangswinkel für den Kreisbogen, angegeben im Bogenmaß.

Ende! Der Endwinkel für den Kreisbogen, angegeben im Bogenmaß.

Aspekt! Das Verhältnis der Länge von der y-Achse zu der Länge der x-Achse;

verwendet zum Zeichnen von Ellipsen.

Die Umwandlung von Grad in Bogenmaß erfolgt durch die Multiplikation der Grad mit (PI / 180).

 

Beispiel:

CIRCLE (320, 100), 200

CIRCLE STEP (0,0), 100

 

Um einen Kreis auszufüllen benötigen wir zwei Eigenschaften:

1) FillColor

Objekt.FillColor (Zahl)

Objekt Ein Objektausdruck, der ein Objekt in der Liste unter Betrifft ergibt.

Zahl Ein Wert oder eine Konstante, der/die die Füllfarbe angibt, wie unter Einstellungen beschrieben.

2) FillStyle

Objekt.FillStyle(zahl)

Zahl ist eine Ganzzahl, die den Füllstil angibt:

0 Solid (Gefüllt).

1 (Voreinstellung) Transparent.

2 Horizontal Line (Horizontale Linie).

3 Vertical Line (Vertikale Linie).

4 Upward Diagonal (Aufwärtsdiagonal).

5 Downward Diagonal (Abwärtsdiagonal).

6 Cross (Kreuz).

7 Diagonal Cross (Diagonalkreuz)

 

Beispiel:

bild.FillColor = RGB(255, 0, 0)

bild.FillStyle = 0

bild.Circle (100, 100), 50, RGB(10, 255, 0)

 

Zeichnen von einer Linie oder einem Rechteck auf dem Bildschirm.

LINE [[STEP](x1!,y1!)]-[STEP](x2!,y2!) [,[Farbe%] [,[B | BF] [,Stil%]]]

STEP Gibt die Koordinaten relativ zu der aktuellen Position des Grafik-Cursors an.

(x1!,y1!) Die Bildschirmkoordinaten am Anfang der Linie und

(x2!,y2!) am Ende der Line.

Farbe% Ein Farbattribut, das die Farbe der Linie oder des Rechtecks bestimmt. Die verfügbaren Farbattribute hängen von Ihrer Farbgrafikkarte und dem Bildschirmmodus der zuletzt ausgeführten SCREEN-Anweisung ab.

B Zeichnet ein Rechteck anstatt einer Linie.

BF Zeichnet ein ausgefülltes Rechteck.

Stil% Ein 16-Bit Wert, dessen Bit-Wert bestimmt, welche Bildpunkte und welche nicht gezeichnet werden. Wird verwendet um gestrichelte oder gepunktete Linien zu zeichnen.

 

Beispiel:

SCREEN 1

LINE (110, 70)-(190, 120), , B

LINE (0, 0)-(320, 200), 3, , &HFF00

 

Damit ergeben sich nun die Prozeduren:

 

Private Sub bef_loesch_Click()

  bild.Cls

End Sub

 

Private Sub bef_kreisgef_Click(Index As Integer)

  bild.FillColor = RGB(255, 0, 0)

  bild.FillStyle = 0

  bild.Circle (bild.ScaleWidth / 2, bild.ScaleHeight / 2), 100, RGB(10, 255, 0)

End Sub

 

Private Sub bef_kreis_Click(Index As Integer)

bild.FillStyle = 1

bild.Circle (bild.ScaleWidth / 2, bild.ScaleHeight / 2), 100, RGB(255, 0, 0)

End Sub

Private Sub bef_rechteck_Click()

  bild.FillStyle = 1

  bild.Line (100, 200)-(200, 50), RGB(255, 255, 0), B

End Sub

 

Private Sub bef_rechtgef_Click()

  ' gelbes Recheck

  bild.Line (100, 200)-(200, 50), RGB(255, 255, 0), BF

End Sub

 

Weitere Aufgaben:

Erstelle ein Programm "Haus", das die Befehlsschaltflächen ‘haus’ und ‘beenden’ enthält. Durch Anklicken der Schaltfläche soll ein Haus in der Bildschirmmitte gezeichnet werden.

Erstelle ein Programm "Landschaft", das mit der Befehlsschaltfläche "start" eine Landschaft mit einem Haus, Baum und einer Straße zeichnet.

 

Form:

Caption: Landschaft

Name: Landschaft

ScaleMode: 3-Pixel

Start: Ende: Bild:

Caption: Start Caption: Beenden ScaleMode: 3-Pixel

Name: bef_start Name: bef_ende

TabIndex: 1 TabIndex: 2

 

Die Prozeduren:

 

Private Sub bef_start_Click()

  landschaft.bild.Line (0, 268)-(bild.Width, 268), RGB(0, 10, 10)

  landschaft.bild.Line (0, 360)-(bild.Width, 360), RGB(0, 10, 10)

  bild.DrawStyle = 3

  bild.Line (0, 315)-(bild.Width, 315), RGB(0, 10, 10)

  bild.DrawStyle = 0

  zeichne_haus

End Sub

 

Sub zeichne_haus()

  bild.Line (10, 230)-(100, 180), RGB(150, 150, 150), BF

  bild.Line (10, 180)-(55, 120), RGB(150, 150, 150)

  bild.Line (55, 120)-(100, 180), RGB(150, 150, 150)

End Sub

 

Ergänze das Programm "Landschaft", das zusätzlich die Befehlschaltfläche ‘tag’ und ‘nacht’ enthält. Durch Anklicken der Befehlsschaltfläche soll die Landschaft bei Tag bzw. bei Nacht erscheinen.

 

 

Der Timer

Mit dem Zeitgeber kann man Anweisungen in einem vorgegebenen Zeitintervall ausführen. Das Zeitintervall (Eigenschaft: Interval) kann zur Laufzeit geändert werden. Das Zeitmesser Steuerelement ist zur Laufzeit nicht sichtbar. Wird das Intervall auf 0 gesetzt, dann tritt das Zeitereignis nicht ein.

 

Eigenschaften des Timers

Enabled

legt fest, ob eine Form oder ein Steuerelement auf vom Benutzer ausgelöste Ereignisse reagieren kann.

True (Voreinstellung) Objekt kann auf Ereignisse reagieren.

False Objekt kann nicht auf Ereignisse reagieren.

Interval

Gibt die Anzahl der Millisekunden zwischen den Aufrufen des Timer-Ereignisses eines Zeitgeber-Steuerelements (Timer) zurück oder legt sie fest.

Objekt.Interval [= Millisekunden]

0 (Voreinstellung) Sperrt ein Zeitgeber-Steuerelement.

Der Wert für das Intervall muss zwischen 1 und 65535 liegen (Millisekunden). Eine Sekunde entspricht 1000 Millisekunden. Setzt man die Eigenschaft Enabled auf False, so wird der Zeitgeber deaktiviert.

Name.Interval = 100

Left und Top und Name

wie bei Form etc.

 

Beispiel für das Timer-Ereignis:

Das Fenster in dem Formblatt soll in bestimmten Zeiteinheiten die Farbe ändern.

In der Aufgabe wird ein Zufallsgenerator benötigt: Rnd[(Zahl)]

Das Argument Zahl kann ein beliebiger zulässiger numerischer Ausdruck sein.

Die Rnd-Funktion gibt einen Wert im Bereich von 0 (eingeschlossen) bis 1 (nicht eingeschlossen) zurück.

Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert:

Für jeden gegebenen Startwert wird dieselbe Zufallszahlenfolge generiert, weil bei jedem Aufruf der Rnd-Funktion die vorherige Zahl als Startwert für die nächste Zahl in der Folge dient.

Bevor Sie Rnd aufrufen, verwenden Sie die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert.

Verwenden Sie die folgende Formel, um ganzzahlige Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen:

Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)

Obergrenze steht für die größte und Untergrenze für die kleinste Zahl des Bereichs.

 

image12

 

Voreinstellung beim Objekt "Timer" Voreinstellung beim Objekt "Picture-Box"

Name: Timer1 Name: Bild

Enabled: True Position: wie gewünscht

Interval: 1000

 

Private Sub Timer1_Timer()

  bild.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

End Sub

 

Private Sub bef_end_Click()

  End

End Sub

 

Weitere Aufgaben:

Das Fenster soll nicht nur die Farbe, sondern jedesmal die Position ändern. Positioniere das Bildfenster zu Beginn in linken oberen Ecke.

 

Private Sub Timer1_Timer()

  bild.Left = bild.Left + 20

  bild.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

End Sub

 

 

Verzweigungen

In dem folgenden Programm wird eine Verzweigung benötigt, um zu entscheiden, ob das Fenster den oberen Bildrand erreicht hat.

Die IF-Anweisung führt eine oder mehrere Anweisungen in Abhängigkeit von den angegebenen Bedingungen aus.

 

Die IF-Anweisung hat die Form:

 

IF Ausdruck THEN Anweisung

 

IF Ausdruck THEN

  Anweisungsfolge

ENDIF

 

IF Ausdruck THEN

  Anweisungsfolge

ELSE

  Anweisungsfolge

ENDIF

 

IF Ausdruck THEN

  Anweisungsfolge

ELSEIF Ausdruck2 THEN

  Anweisungsfolge

ELSEIF

   ...

ELSE

  Anweisungsfolge

ENDIF

 

Das Fenster soll nun nicht mehr über den rechten Bildrand wandern, sondern wieder auf die linke Seite gesetzt werden.

 

Private Sub Timer1_Timer()

  If bild.Left + bild.Width > Form1.ScaleWidth Then

    bild.Left = 0

  Else

    bild.Left = bild.Left + 20

  End If

  bild.BackColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)

End Sub

 

Das Programm "landschaft" soll so ergänzt werden, dass auf der Straße Autos fahren.

PictureBox: auto

AutoSize True (autom. Größenanpassung)

BorderStyle 0 None (kein Rahmen)

Timer1, Timer2

keine Änderungen in den Eigenschaften

 

Private Sub bef_start_Click()

  landschaft.bild.Line (0, 268)-(bild.Width, 268), RGB(0, 10, 10)

  landschaft.bild.Line (0, 360)-(bild.Width, 360), RGB(0, 10, 10)

  bild.DrawStyle = 3

  bild.Line (0, 315)-(bild.Width, 315), RGB(0, 10, 10)

  bild.DrawStyle = 0

  zeichne_haus

  Timer1.Interval = 30

  auto1.Left = bild.Width

  Timer2.Interval = 30

End Sub

 

Private Sub Timer1_Timer()

  If auto.Left > bild.Width Then

    auto.Left = -10

  Else

    auto.Left = auto.Left + 5

  End If

End Sub

 

Private Sub Timer2_Timer()

  If auto11.Left < 0 Then

    auto11.Left = bild.Width - 10

  Else

    landschaft.Caption = bild.Width

    auto11.Left = auto11.Left - 15

  End If

End Sub

 

 

Variablenkonzept

 

BYTE Ganzzahlen 0 .. 255 1 Byte

INTEGER Ganzzahlen -32768 .. 32767 2 Byte

Als Typkennzeichen wird das Zeichen % angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS Integer

LONG Ganzzahlen -2.147.483.648 .. 2.147.483.647 4 Byte

Als Typkennzeichen wird das Zeichen & angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS LONG

SINGLE Fließkommazahlen -3,37E +38 .. 3,37E +38 4 Byte

Als Typkennzeichen wird das Zeichen ! angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS SINGLE

DOUBLE Fließkommazahlen -3,67D +308 .. 3,37D +308 8 Byte

Als Typkennzeichen wird das Zeichen # angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS DOUBLE

STRING Zeichenketten 0 .. 65535 Zeichen

Mit diesem Datentyp verwaltet man dynamische Zeichenketten. Die Länge ist variabel.

Als Typkennzeichen wird das Zeichen $ angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS STRING

STRING*N statische Zeichenketten feste Länge von 0 .. 65535 Zeichen

Mit diesem Datentyp verwaltet man statische Zeichenketten. Das N steht für die Anzahl der Zeichen, die in der Zeichenkette enthalten sein sollen.

DIM name AS STRING*N

Weitere Datentype stehen in Visual-Basic auch zur Verfügung und werden zu gegebener Zeit eingeführt.

 

Konstanten

Lokale Konstanten werden am Beginn einer Prozedur oder im Codeteil (allgemein) einer Form mit der CONST-Anweisung deklariert. Der Datentyp ergibt sich aus dem Wert der Konstanten.

 

Beispiel:

CONST meldung = "Hallo"

CONST phi = 3.14

 

Sollen Konstante im ganzen Projekt Gültigkeit haben, so müssen sie am Beginn eines Moduls mit dem Zusatz PUBLIC deklariert werden.

 

Arithmetische Operatoren

Der Operator "*"

Syntax: Ergebnis = Operand1*Operand2

Das Argument Ergebnis hat im allgemeinen den Datentyp des Operanden mit der größten Genauigkeit. Es gelten aber einige Ausnahmen. (Siehe Handbuch)

 

Der Operator "+"

Syntax: Ergebnis = Ausdruck1+Ausdruck2

Bei einfachen arithmetischen Additionen mit Operanden eines numerischen Datentyps hat Ergebnis im allgemeinen den Datentyp des Operanden mit der größten Genauigkeit. Es gelten aber einige Ausnahmen. (Siehe Handbuch)

 

Der Operator "-"

Syntax 1: Ergebnis = Operand1-Operand2

Ergebnis = -Zahl

Ergebnis hat im allgemeinen den Datentyp des Operanden mit der größten Genauigkeit. Es gelten aber einige Ausnahmen. (Siehe Handbuch)

 

Der Operator "/"

Syntax: Ergebnis = Operand1 / Operand2

Haben beide Ausdrücke den Typ Byte, Integer oder Single, so hat Ergebnis den Typ Single, solange nicht die Bereichsgrenzen für Single überschritten werden. Es gelten aber einige Ausnahmen. (Siehe Handbuch)

 

Der Operator "\"

Syntax: Ergebnis = Operand1 \ Operand2

Vor der Division werden die numerischen Ausdrücke in Ausdrücke der Typen Byte, Integer oder Long gerundet.

Ergebnis hat im allgemeinen den Datentyp Byte, Integer oder Long bzw. bei einem Variant den Untertyp Byte, Integer oder Long, auch wenn das Ergebnis keine ganze Zahl ist. Alle Nachkommastellen werden abgeschnitten.

 

Aufgabe

Mit einem Programm soll der Betrag einer Telefonrechnung berechnet werden!

Grundgebühr: DM 27.-

Gebühr für eine Einheit: DM 0,23

Erweiterung:Jeder Teilnehmer hat 10 Freieinheiten.

Mehrwertsteuer 16%

 

image13

 

 

Dim einheiten As Integer

Dim betrag As Single

 

Private Sub bef_berechnen_Click()

  einheiten = Val(einheit.Text)

  betrag = einheiten * 0.23 + 27

  rech_betrag.Text = Str(betrag)

End Sub

 

Erweiterung: Jeder Teilnehmer hat 10 Freieinheiten.

 

betrag = (einheiten - 10) * 0.23 + 27

betrag = betrag*16/100

 

2. Erweiterung: Jeder Teilnehmer hat 10 Freieinheiten. Die Freieinheiten gewährt die Telecom nur, wenn mindestens 20 Einheiten verbraucht wurden.

Um diese Erweiterung zu lösen, muss man die Anzahl der Einheiten überprüfen:

 

IF einheiten > 20 THEN

  betrag = (einheiten - 10) * .23 + 27

ELSE

  betrag = einheiten * .23 + 27

END IF

rech_betrag.Text = Str(betrag)

 

Das Programm "landschaft" soll so ergänzt werden, daß nun nicht nur Autos auf der Straße Autos fahren, sondern auch noch eine Befehlsschaltfläche "bef_nacht" ermöglicht, daß die "landschaft" in der Nacht erscheint und ein Blitz (litening.ico) gelegentlich aufleuchtet

 

PictureBox: Blitz

BorderStyle: 0-None

AutoSize: True

Visible: False

BackColor schwarz

 

Allgemein (Deklarationen:)

Dim nacht As Boolean

DIM nacht AS BOOLEAN

Timerblitz: wie die anderen Timer

 

Private Sub bef_nacht_Click()

  nacht = True

  bild.BackColor = RGB(50, 50, 50)

  ' Straße

  die anderen Anweisungen wie bisher

  Timer1.Interval = 30

  auto11.BackColor = RGB(0, 0, 0)

  auto.BackColor = RGB(0, 0, 0)

  auto1.Left = bild.Width

  Timer2.Interval = 30

  Timerblitz.Interval = 40

End Sub

 

Private Sub bef_start_Click()

  nacht = False

  Timerblitz.Interval = 0

  bild.BackColor = RGB(200, 200, 200)

  die anderen Anweisungen unverändert

End Sub

 

Private Sub Timerblitz_Timer()

  If nacht Then

    blitz.Visible = True

  End If

  blitz.Visible = False

End Sub

 
 
Aufgaben zur IF-Anweisung

Aufgabe 1:

Von zwei eingegebenen natürlichen Zahlen a, b soll geprüft werden, ob eine der folgenden Eigenschaften zutrifft:

a Teiler von b  oder b Teiler von a .

 

Aufgabe 2:

Es soll die kleinste (größte) von drei eingegebenen Zahlen bestimmt werden.

 

Aufgabe 3:

Ein Dreieck ist rechtwinklig, wenn für eine Zuordnung der Seiten zu a, b, c die Gleichung  a2 + b2 = c gilt.

 

Aufgabe 4:

Leider müßen in diesem Land fast alle Leute Steuern bezahlen. Wir nehmen an, daß sich die Steuersätze wie folgt ergeben :

Einkommen

 

ledig

0

verh

1

verh

2

verh

3

verh

>= 4

verheiratet

Kinder

bis 20000 20 % 18 % 15 % 12 % 10%  
10001 - 20000 25 % 20 % 22 % 18 % 15 %  
20001 - 40000 30 % 25 % 21 % 17 % 15 %  
40001 - 60000 35 % 30 % 27 % 22 % 20 %  

Wer weniger als 10000.-DM verdient braucht keine Steuern zu bezahlen.

Schreiben Sie ein Programm, welches nach Eingabe des Bruttogehaltes die zu bezahlenden Steuern und den Nettoverdienst ausgibt.

 

Aufgabe 5:

Jeder Vertreter einer Firma erhält am Ende des Jahres eine Prämie und zwar 2% Umsatzes der DM 100.000.- übersteigt. Für den über DM 300.000.- liegenden Umsatz erhält er zusätzlich 1% Prämie. Die Prämie soll nun mit Hilfe des Computers nach Eingabe des Umsatzes berechnet werden.

 

Aufgabe 6:

In einem Tarifvertrag ist die Zahlung des Weihnachtsgeldes wie folgt geregelt :

Derjenige, der mehr als 9 Monate im Betrieb arbeitet erhält das volle 13. Monatsgehalt, alle anderen erhalten für jeden Monat Betriebszugehörigkeit den 12 ten Teil des 13 ten Monatsgehaltes.

 

Aufgabe 7:

Eine Versicherung bezahlt die Prämienrückerstattung in Abhängigkeit von der Versicherungsdauer.

Es erhalten alle 5% der Versicherungsprämie zurück, deren Versicherungsdauer mindestens 5 Jahre beträgt. 8% erhalten alle diejenigen zurück, die mehr als 10 Jahre versichert sind.

 

Aufgabe 8:

Eine andere Versicherung berechnet die Rückerstattung wie folgt :

Versicherungsnehmer mit mehr als 5 Jahren Versicherungsdauer erhalten 10% der Prämie zurück. Versicherungsnehmer mit mehr als 3 aber weniger als 5 Jahren Versicherungsdauer erhalten 5%, und die Versicherungsnehmer mit weniger als 3 Jahren erhalten nichts.

 

Aufgabe 9:

Ein Versandhaus berechnet keine Portokosten, wenn der Rechnungsbetrag mehr als DM 100.- beträgt. Ist der Rechnungsbetrag größer als DM 50.-, so werden DM 3.50 und sonst DM 5.- berechnet.

 

Aufgabe 10:

Bei einem Schulwettkampf müssen von allen Schülern 5 Disziplinen absolviert werden. In jeder Disziplin erhalten die Schüler Punkte. Falls sie mehr als 150 Punkte erreichen erhalten sie eine Urkunde und bei mehr als 200 Punkten eine Ehrenurkunde. Es ist ein Programm zu entwickeln, das nach Eingabe der Punktzahlen für die einzelnen Disziplinen ausgibt, ob oder welche Art von Urkunde der Schüler erhält.

 

Aufgabe 11:

Arbeitnehmer erhalten für Überstunden 25% Zuschlag und an Sonn- und Feiertagen einen von 100%. Erstellen Sie ein Programm, das nach Eingabe der Wochenarbeitsstunden und den geleisteten Stunden an Sonn- und Feiertagen den Wochenarbeitslohn berechnet.

 

Aufgabe 12:

Bei einer Schadensversicherung mit Selbstbeteiligung hat der Versicherte im Schadensfall 20% der Schadenssumme, mindestens jedoch DM 100.- selbst zu tragen. Erstellen Sie ein Programm, das nach Eingabe der Schadenshöhe den Anteil des Versicherten und die Zahlung der Versicherung ausgibt.

 

Aufgabe 13:

Ein Programm soll helfen, schnell und möglichst genau zu entscheiden, ob eine Person Normal-, Ideal-, Über- oder Untergewichtig ist. Als Eingabedaten werden Geschlecht, Alter, Größe und Gewicht verlangt.

Als Normalgewichtig bezeichnet man eine Person deren Gewicht in kg gleich der Körpergröße über 100 cm ist. Idealgewichtig sind Erwachsene, die ein Gewicht besitzen , das 10 % unter dem Normalgewicht liegt. Entsprechend ergeben sich die Unter - und die Übergewichtigen.

Als Toleranzgrenzen sind bei Frauen +4 % bis -7 % und bei Männern +- 5 % Abweichung von den Sollwerten zugelassen. Alle Aussagen treffen erst für Personen zu, deren Wachstum beendet ist, d.h. die älter als 17 Jahre und größer als 1,20 m sind.

Bei den übrigen Personen können keine Angaben gemacht werden.

 

Eingabe: geschlecht, groesse, alter, gewicht

 

normalgew = groesse - 100

idealgew = normalgew - normalgew / 100 * 10

normalplus = normalgew + normalgew / 100 * 5

normalmin = normalgew - normalgew / 100 * 5

idealmin = idealgew - idealgew / 100 * 5

idealplus = idealgew + idealgew / 100 * 5

 

IF (alter < 18) OR groesse < 120 THEN

  Ausgabe "Für Ihr Alter kann ich das Idealgewicht nicht berechnen"

ELSE

IF (geschlecht$ = "W") OR (geschlecht$ = "w") THEN

    (Berechnung wie geschlecht = M)

ELSE

IF gewicht < idealmin THEN

  Ausgabe: "Sie haben Untergewicht!!!"

  Ausgabe: "Wir wünschen weiterhin guten Appetit"

END IF

  IF (idealmin <= gewicht) AND (gewicht <= idealplus) THEN

    Ausgabe: "Gratuliere! Sie haben Idealgewicht !!"

    Ausgabe: "Behalten Sie Ihre Essgewohnheiten bei."

END IF

IF (normalmin <= gewicht) AND (gewicht <= normalplus) THEN

  Ausgabe: "Gratuliere! Sie haben Normalgewicht !!"

  Ausgabe: "Sie sollten allerdings nicht allzuviel essen!"

END IF

IF gewicht > normalplus THEN

  Ausgabe: "Sie haben Übergwicht !!"

  Ausgabe: "Sie sollten Ihre Essgewohnheiten umgehend ändern!!!"

END IF

END IF

END IF

END

 

In dem folgenden Unterrichtsblock werden Programme mit WIEDERHOLUNGEN verwendet. Dabei werden nicht alle möglichen Schleifenkonstruktionen, die VISUAL-BASIC bietet, im Unterricht verwendet. Ebenso werden EXIT FOR, EXIT DO nur in Ausnahmefällen zugelassen.

 

FOR NEXT Anweisung

FOR Zähler = Start TO Ende [STEP Schrittweite]

  [Anweisungsblock]

NEXT [Zähler]

Zähler Eine numerische Variable, die als Schleifenzähler dient.

Start und Ende Der Anfangs- und Endwert des Zählers.

Schrittweite Der Betrag, um den der Zähler bei jedem Schleifendurchlauf erhöht wird.

Hinweis:

Ich lasse es im Unterricht nicht zu, dass der Wert der Wert der Zählvariable innerhalb der Schleife. geändert wird. Dadurch wird Ihr Code komplizierter und schwerer zu testen.

 

Beispiel:

FOR i = 1 TO 15

  kapital = kapital + kapital*zinssatz/100

NEXT i

 

While Bedingung

DO WHILE Bedingung]

  [Anweisungsblock]

   [Anweisungsblock]

Wend

 

LOOP

DO

  [Anweisungsblock]

LOOP [UNTIL Bedingung]

Bedingung:

Numerischer Ausdruck oder Zeichenfolgenausdruck, der True oder False ergibt.

Anweisungsblock:

Eine oder mehrere Anweisungen, die ausgeführt werden, solange Bedingung den Wert True hat.

Hinweis:

Ich lasse es im Unterricht nicht zu, dass der Wert der Wert der Zählvariable innerhalb der Schleife. geändert wird. Dadurch wird der Code komplizierter und ist schwerer zu testen.

 

Aufgaben mit Schleifen

Ein spektakuläres Landgeschäft

Wie es heißt, verkauften - nein, verschleuderten - um 1827 Indianer die Insel Manhat-tan für den Spottpreis von 24 Dollar an den Niederländer Pieter Minnewit. Der gründete darauf das Fort Neu-Amsterdam und jeder weiss, was seitdem daraus geworden ist. Aber einmal abgesehen davon, dass sich die 24 Dollar für Minnewit und seine Nach-kommen ziemlich gut verzinst haben, liesse sich das auch von den 24 Dollar sagen, die die Herren Indianer damals bekommen haben - wenn es 1627 schon eine Bank in der Wall Street gegeben und die Indianer dort ein Konto angelegt hätten.

Eine derartige Aufgabe kann beliebig variiert werden.

1 Pfennig wird im Jahre 0 zu 3% Zinsen angelegt. Schätze den Betrag.

 

Ein Beispielprogramm für diesen Aufgabentyp:

 

image14

 

Dim kapital, Zinssatz, endkapital As Single

Dim jahre, i As Integer

 

Private Sub bef_rech_Click()

  kapital = Val(tx_kap)

  Zinssatz = Val(tx_Zins)

  jahre = Val(Tx_jahre)

  endkapital = kapital

  For i = 1 To jahre

    endkapital = endkapital + Zinssatz * endkapital / 100

  Next i

  tx_endk = Str(endkapital)

End Sub

 

Zahlenraten

Der Computer soll in möglichst wenigen Schritten eine Zahl erraten, die ein Partner sich in bestimmten Grenzen gewählt hat.

In dem Programm werden Zufallszahlen benötigt. Diese werden mit dem Zufallsgenerator ermittelt:

RANDOMIZE TIMER initialisiert den Zufallsgenerator, damit beim Start nicht immer dieselben Zahlen erzeugt werden.

RND gibt eine Zahl zwischen 0 und 1 zurück

INT schneidet die Nachkommastellen ab

Int(Rnd * 101) ermittelt eine ganze Zahl zwischen 0 und 100

 

image15

 

Private Sub Form_Load()

  Randomize

  untere_gr = 0

  obere_gr = 0

  While (obere_gr - untere_gr) < 25

    untere_gr = Int(101 * Rnd)

    obere_gr = Int(201 * Rnd)

  Wend

  tx_ugr.Text = Str(untere_gr)

  Tx_ogr.Text = Str(obere_gr)

  spiel untere_gr, obere_gr

End Sub

 

Sub spiel(untere_gr, obere_gr)

  mitte = (untere_gr + obere_gr) \ 2

  If (obere_gr - untere_gr) < 2 Then

    lab_wahl(0).Caption = "Ist es die Zahl "

    lab_frage.Caption = Str(mitte)

  Else

    lab_frage.Caption = Str(mitte)

  End If

End Sub

 

Private Sub bef_nein_Click()

  If (obere_gr - untere_gr) < 2 Then

    lab_wahl(0).Caption = "Es ist die Zahl "

    lab_frage.Caption = Str(obere_gr)

    lb_ausg.Visible = True

    lb_ausg.Caption = "Hurra ich habe gewonnen!"

    bef_nein.Visible = False 

    bef_ja.Visible = False

  Else

    obere_gr = mitte

    spiel untere_gr, obere_gr

  End If

End Sub

 

Private Sub bef_ja_Click()

  If (obere_gr - untere_gr) < 2 Then

    lb_ausg.Visible = True

    lb_ausg.Caption = "Hurra ich habe gewonnen!"

  Else

    untere_gr = mitte + 1

    spiel untere_gr, obere_gr

  End If

End Sub

 

Weitere Aufgaben zu Wiederholungsanweisungen mit und ohne Fallunterscheidungen

Aufgabe 1:

Zu einer natürlichen Zahl bestimme man

i) die Menge

ii) die Anzahl

iii) alle ihre Teiler

 

Aufgabe 2:

Man erstelle ein Programm, das die Reihenfolge der Ziffern einer Zahl umkehrt.

Bsp.: 2195 ---> 5912

 

Aufgabe 3:

Zahlen lassen sich nicht nur im Zehnersystem, sondern auch in anderen Stellenwertsystemen darstellen. Erstelle ein Algorithmus, der eine Zahl im Zehnersystem in das Dualsystem überträgt.

 

Aufgabe 4:

Verallgemeinere den obigen Algorithmus, indem man eine Zahl von einem p-adischen in ein q-adisches Zahlensystem überträgt.

 

Aufgabe 5:

Ein Landwirt behandelt jedes Jahr unmittelbar nach der Ernte ein Feld mit derselben Dosis eines modernen Pflanzenschutzmittels zur Schädlingsbekämpfung. Aus Rückstandsanalysen weiß man, daß sich dieses Mittel in einem Jahr im Boden durchschnittlich auf die Hälfte der Anfangskonzentration abbaut. Nachdem man auf die Probleme des Umweltschutzes immer mehr aufmerksam wird, fragt man sich, welche Konzentration des Pflanzenschutzmittels unmittelbar vor der Ernte nach 5 Jahren, nach 10 Jahren, usw. zu erwarten ist.

 

Aufgabe 6:

Erstellen Sie eine Wertetabelle einer ganzrationalen Funktion n ten Grades mit Hilfe des Horner - Schemas.

 

Aufgabe 7:

Für ein Abzahlungsgeschäft gelten folgende Regeln:

Am Ende eines jeden Monats werden k DM bezahlt, solange der Restbetrag größer als k ist. Die Zinsen betragen z/12 % je Monat. Eine Abzahlungstabelle mit folgenden Werten soll ausgedruckt werden: Monat, Anfangsbetrag, Zinsen, Restbetrag, Anfangsbetrag - Restbetrag

Eingegeben werden Anfangsbetrag, monatliche Zahlung k und Zinssatz.

 

Aufgabe 8:

Von einer eingegebenen Zahl soll geprüft werden, ob es sich dabei um eine Primzahl handelt?

 

Aufgabe 9:

Eine natürliche Zahl ist in ihre Primfaktoren zu zerlegen.

 

Aufgabe 10:

Man bestimme das kleinste gemeinsame Vielfache (kgv) zweier natürlicher Zahlen.

Bem.: Ein effektiver Algorithmus ist folgendermaßen zu erhalten:

a * b

kgv(a,b) = -------------

ggt(a,b)

 

Aufgabe 11:

Innerhalb vorgegebener Schranken soll mit möglichst wenigen Entscheidungen die natürliche Zahl, die sich ein Gegenspieler gemerkt hat gefunden werden.

 

 

Der Datentyp STRING

 

STRING Zeichenketten 0 .. 65535 Zeichen

Mit diesem Datentyp verwaltet man dynamische Zeichenketten. Die Länge ist variabel.

Als Typkennzeichen wird das Zeichen $ angefügt. Alternativ ist die Deklaration über die folgende Anweisung möglich:

DIM name AS STRING

STRING*N statische Zeichenketten feste Länge von 0 .. 65535 Zeichen

Mit diesem Datentyp verwaltet man statische Zeichenketten. Das N steht für die Anzahl der Zeichen, die in der Zeichenkette enthalten sein sollen.

DIM name AS STRING*N

 
String-Funktionen und String-Prozeduren

ASC(x$)

Gibt den ASCII-Code des ersten Zeichens der Zeichenkette x$ zurück

ASC("A") Ergebnis 65

CHR(x)

Zeichen des ASCII Wertes von x

CHR$(65) Ergebnis A

LEFT(x$,n%)

Gibt n% Anzahl der äußerst links stehenden Zeichen der Zeichnfolge x$ zurück.

RIGTH(x$,n%)

Gibt n% Anzahl der äußerst rechts stehenden Zeichen der Zeichnfolge x$ zurück

LCASE(x$)

Wandelt die Zeichenfolge x$ in nur Kleinbuchstaben um

UCASE(x$)

Wandelt die Zeichenfolgen x$ in nur Großbuchstaben um

LEN(x$)

Länge des Strings x$

STR(x)

gibt die Zeichenfolgendarstellung eines numerischen Werts zurück

VAL(x$)

wandelt den String einer Zahl wieder in einen numerischen Wert um

MID(x$,Start%[,Länge%])

Die MID$-Funktion gibt eine Teilzeichenfolge zurück

MID(x$,Start%[,Länge%])=Stringausdr.

Die MID$-Anweisung ersetzt einen Teil einer Zeichenfolgenvariable durch eine andere Zeichenfolge

INSTR([anfang%,]zeichen$,suchnach$)

Gibt das erste Auftreten der Zeichenfolge suchnach$ innerhalb der Zeichenfolge zeichen$ nach anfang% zurück.

LTRIM(x$)

Entfernen der führenden Leerzeichen der Zeichenfolge x$.

RTRIM/x$)

Entfernen der nachfolgenden Leerzeichen der einer Zeichenfolge x$

STRING(nummer, zeichen)

 

Gibt eine Zeichenfolge der angegebenen Länge zurück, die aus einem einzigen sich wiederholenden Zeichen besteht.

STRING(5,"?") Ergebnis ?????

SPACE(n%)

N% Leerzeichen

a$ + b$

Zwei Zeichenketten werden zusammengesetzt.

 

Beispielprogramme für den Datentyp STRING

Zeichenhäufigkeit

Zeichenumkehr

Geheimschrift

 

Aufgaben zum Datentyp STRING

Aufgabe 1:

Welche Ergebnisse erzeugen die folgenden Funktionsaufrufe:

Sei x$ = "Kleineisenverwertungsgesellschaft"

a) LEFT$(x$,5)

b) MID$(x$, 6, 5)

c) UCASE$(MID$(x$, 6, 5))

d) STR$(2.89)

e) CHR(67)

 

Aufgabe 2:

Mit welchen Funktionsaufrufen kann man aus den Texten links die Ergebnisse rechts erzielen?

a) Lagerverwaltung VERWALTUNG

b) Betriebsbüro Betrieb

c) Statistik Länge des Textes

d) *+* *+**+**+*

 

Aufgabe 3:

Ein Geheimtext soll durch folgendes Verfahren verschlüsselt werden:

Jeder Buchstabe wird durch seinen k-ten Nachfolger in der alphabetischen Reihenfolge ersetzt. Die Zahl k ist nur dem Empfänger des Geheimtextes bekannt.

 

Aufgabe 4:

In einer Zeile Text soll jede Folge von Leerzeichen durch ein einziges Leerzeichen ersetzt werden.

 

 

Einige kleinere Projekte

 

1. Zahlenraten

2. Rechentrainer

3. Hangman

4. Funktionensgraphen zeichnen

 

 

 
 
Thursday, 23. November 2017 / 00:37:11