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.
    Dualzahlen (Binärzahlen, Zweiersystem)

    Unser Dezimalsystem hat die Stellenwerte Einer, Zehner, Hunderter, ... Jede Zahl läßt sich als Vielfaches dieser Zehnerpotenzen darstellen:

    256 = 2 • 100 + 5 • 10 + 6 • 1
    = 2 • 102 + 5 • 101 + 6• 100


    Ganz genauso funktioniert das Zweiersystem: die Stellenwerte sind hier die Potenzen der Zahl 2. Die Ziffern werden mit L und 0 bezeichnet, um eine Verwechslung mit 1 und 0 auszuschließen:

    tr>
    L0L = L • 4 + 0 • 2 + L• 1
    = L • 22 + 0 • 21 + L • 20


    Die Dualzahl L0L ergibt also die Dezimalzahl 4+0+1=5.


Auch über das Dividieren durch Zehner- bzw. Zweierpotenzen musst du informiert sein:

    Dividiert man eine Dezimalzahl durch 10, das Ergebnis wieder durch 10 usw., dann ergeben die Divisionsreste die Zahl rückwärts, d.h. beginnend mit Einern, dann Zehnern, ... :



    Erklärung:
    • Dividiert man 256 durch 10, so muss man den Einerrest erhalten, da 250 ein Vielfaches von 10 ist. Der Quotient 256:10 muss also den Rest 6 haben.

    • Dividiert man 25 durch 10, so muss man den Zehnerrest erhalten, da 20 ein Vielfaches von 10 ist. Der Quotient 25:10 muss also den Rest 5 haben.

    • Dividiert man 2 durch 10, so muss man den Hunderterrest erhalten, da 2 ein Vielfaches (das Nullfache) von 10 ist. Der Quotient 2:10 muss also den Rest 2 haben.


    Um die Reste zu sehen kann man das auch wie folgt darstellen:
    256 = [2•100 + 5•10] + 6
    =[(2•10 + 5)•10] + 6


    Dividiert man nun eine Dezimalzahl durch 2, das Ergebnis wieder durch 2, ... so erhält man die binäre Darstellung dieser Zahl beginnend mit 20, 21, 22, ...

    Führe dies mal am Beispiel 84 durch, dein Ergebnis ist dann: 84 = L0L0L00


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:


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:


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:



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










© 2010 Asti PoVRay-Site Mathematische Streiflichter