TEIL 7: AUFGABENMIX, Aufgaben 39 bis 42
Aufgabe 39
Das Programm
DEZDUA soll Dezimalzahlen in Dualzahlen umwandeln:
Dazu brauchst du zunächst mal etwas Sachkenntnis über Dualzahlen.
Auch über das
Dividieren durch Zehner- bzw. Zweierpotenzen musst du informiert sein:
Wenn du nun diese beiden Infos durchgedacht hast, weist du, dass es nun noch notwendig ist, eine Zeichenkette (z.B. LOLL) umzukehren. Dazu brauchst du die ff. neuen Basic-Befehle:
- len (zeichenkette) liefert die Anzahl der Zeichen (engl.: length=Länge), z.B. len (EDV-Kurs) liefert die Zahl 8.
- mid (Zeichenkette, 3,1) liefert aus der Zeichenkette 1 Zeichen vom 3. Platz an, z.B. mid (EDV-Kurs,3,1) liefert V.
Denke nun mal die ff. Zählschleife mit Papier und Bleistift durch:
Wort_neu = " "
For i = Len(EDV-Kurs) To 1 Step -1
Wort_neu = Wort_neu + Mid(EDV-Kurs, i, 1)
Next i
Die Division kann gut mit einer While-Wend-Schleife (die solange ausgeführt wird, bis der ganzzahlige Teil der Division 0 ist) durchgeführt werden, auch hier brauchst du noch einen Basic-Befehl:
-
int (a/b) liefert den ganzzahligen Teil des Quotienten a:b, z.B. int (25/2) liefert 12.
So, noch mehr Hilfen gibt's nicht, nur noch eine Warnung: falls du eine Endlosschleife programmierst, stürzt der Rechner ab!!!!!
Viel Erfolg!
Aufgabe 40
Die abessinischen Bauern multiplizieren auf andere Art: der Multiplikand wird fortschreitend halbiert, der Rest bleibt dabei unberücksichtigt, der Multiplikator wird fortschreitend verdoppelt. Nun gibt es eine alte Bauernregel, nach der Zahlen, die auf der linken Seite einer Tabelle angeordnet sind, Unglück bringen. Diese Zeilen werden daher ignoriert, rechts werden die Ergebnisse addiert und man erhält so das Produkt:
Dein nächstes Programm soll
ABESS heißen und diese Bauernregel verdeutlichen. Es soll einen Informationstext zeigen, es soll nur Zahlen von 1 bis 999 zulassen, damit das Programmfenster nicht allzu groß wird. Bei Zahlen außerhalb dieses Intervalls sollen Multiplikand und Multiplikator auf 0 gesetzt werden, die Ergebnisfenster sollen unsichtbar werden, im Infofenster soll die Meldung "Nur Zahlen von 1 bis 999 benutzen !" erscheinen.
Ein paar neue Befehle lernst du dabei kennen:
- Mit Print Format$(Str(multiplikand), "0000"); wird der Multiplikand auf dem Formular ausgegeben, dabei werden 4 Plätze für ihn reserviert. Natürlich geht's auch ohne die Format-Funktion, dann entfallen die führenden Nullen und die Zahlentabelle wird linksbündig ausgegeben.
- Mit Form1.CurrentX = 5 (analog für Y) wird der Cursor an die gewünschte Stelle im Formular gebracht.
- Dann gibt's noch den Befehl mod (modulo), der den Rest einer Division angibt: 17 mod 5 = 2, denn 17: 5 = 3 Rest 2
Du kannst ihn dazu verwenden, um die geraden Zahlen in einer anderen Farbe darzustellen.
If multiplikand Mod 2 = 0 Then
Form1.ForeColor = RGB(199, 89, 166)
Else
Form1.ForeColor = RGB(55, 89, 150)
summe = summe + multiplikator
ausgabe = ausgabe + " + " + Str(multiplikator)
End If
Eine
While-Wend-Schleife für den berechnen-Knopf sollt ihr sorgfältig programmieren, denn bei einer Endlosschleife stürzt der PC ab. Also gut nachrechen, ob die Endbedingung auch erreicht wird !!!
Viel Erfolg!
Aufgabe 41
Auch das Verschieben von Steuerelementen während der Laufzeit eines Programmes ist möglich
: im ff. Programm
KNOPF soll eine Ikone aus einer ImageBox mit Mausklick auf einen Schaltknopf verschoben werden.
Dazu gibt es die Prozedur
DragDrop. Im Eigenschaftsfenster des zugehörigen Schaltknopfes muss die
DragMode-Eigenschaft auf 1 (automatisch) gesetzt werden. Für die
DownPicture-Eigenschaft muss eine geeignete Ikone (Dateinamen: *.ico) auf der Festplatte gesucht werden.
Private Sub command1_DragDrop(Source As Control, X As Single, Y As Single)
Command1.Caption = ""
Command1.Picture = Source.DragIcon
Image1.Visible = False
End Sub
Für den Rücksetzknopf gilt dann:
Private Sub Command2_Click() 'Rücksetzknopf
Image1.Visible = True
Command1.Picture = Nothing
Command1.Caption = "drück mich!"
End Sub
Aufgabe 42
Im Programm
SCHRIFT soll mal wieder der
Menügenerator eingesetzt werden. Vier bis fünf Schriften, die auf Deinem PC installiert sind, sollen zur Wahl gestellt werden, 3 verschiedene Schriftgrößen> sollen zur Verfügung stehen, außerdem die CheckBox-Optionen, die aus der Abbildung hervorgehen. Wenn bei Anwahl von Fettschrift die zugehörige CheckBox ein zweites Mal angeklickt werden, soll wieder Normalschrift erscheinen - genauso sollen auch die drei übrigen Checkboxen funktionieren.
Bei Betätigung des Rücksetzknopfes soll die Schriftart MS Sans Serif in der Schriftgröße 10, nicht fett, nicht unterstrichen, nicht durchgestrichen und nicht kursiv erscheinen.
Neue Befehle sind nicht nötig, nur neue Eigenschaften der TextBox, wie beispielsweise
:
Private Sub Check3_Click()
If Check3.Value = 1 Then
Text1.FontStrikethru = True
End If
If Check3.Value = 0 Then
Text1.FontStrikethru = False
End If
End Sub