Übungsaufgabe für alle :: Nr. 4 - Rekursion

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

wunderkind

Betreff: Übungsaufgabe für alle :: Nr. 4 - Rekursion

BeitragSa, Jan 01, 2005 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach der dritten kommen wir nun zur vierten Übungsaufgabe. Es geht um das Thema Rekursion.

Aufgabe
Erstelle ein BB-Programm, welches eine gegebene Zahl mehrmals durch 2 teilt.
  • Das Ergebnis soll als floating point (Gleitkommazahl) behandelt werden.
  • Das Ergebnis jeder Division muss angezeigt werden.
  • Das Teilen der Zahl ist per Rekursion umzusetzen.
  • Die maximale Rekusionstiefe ist 10.
  • Ist ein Ergebnis kleiner / gleich zwei, dann wird ebenfalls abgebrochen.
  • Globale Variablen sind verboten!

Extra
Wem die Aufgabe zu einfach ist, der kann sich mit dieser Erweiterung beschäftigen.
  • Die Ergebnisse der Division sollen in einem Koordinatensystem mit einfachen Punkten abgebildet werden.
  • Die Abmessungen (Stichwort Skala) des Koordinatensystems müssen sinnvoll gewählt werden, damit die Punkte auf dem Bildschirm angezeigt werden und nicht außerhalb liegen.

Zum Lösen der Aufgabe habt ihr eine Woche Zeit (bis zum 08.01.).

Eine Bitte
Wie immer die Bitte: Posted eure vollständigen Lösungen bitte nicht vor Sonnabend 08.01. damit alle eine Chance haben, selbstständig ihre Lösung zu finden. Fragen und Teillösungen sind natürlich wieder willkommen, damit jeder hier etwas lernen kann.

Die vergangenen Übungsaufgaben findet ihr hier:
Aufgabe Nr. 1 : Logische Operatoren
Aufgabe Nr. 2 : Menüstruktur unter Verwendung von Types
Aufgabe Nr. 3 : Umwandlung von Zahlen zwischen Binär-, Dezimal- und Hexadezimalsystem

Viel Erfolg!
  • Zuletzt bearbeitet von wunderkind am Fr, Jan 28, 2005 17:43, insgesamt einmal bearbeitet
 

Sound

BeitragSa, Jan 01, 2005 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll bei einem Abbruch wegen kleiner/gleich 2 das letzte Ergebnis, was also kleiner/gleich 2 ist, noch angezeigt werden, oder nicht?

wunderkind

BeitragSa, Jan 01, 2005 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, dieses Ergebnis braucht nicht angezeigt zu werden.

Waveblue

BeitragSa, Jan 01, 2005 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
^^bin fertig!
solltest aber unbedingt drauf hinweisen, das ohne die Rekursionstiefenbeschränkung der Computer hoffnungslos abstürzt Confused
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

wunderkind

BeitragSa, Jan 01, 2005 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Deshalb gibt es ja die Begrenzung Wink! Ansonsten hast du natürlich recht: wenn es keine Abbruchbedingung gibt, dann wird das Programm abstürzen. Das wäre ähnlich einer Endlosschleife...wenn man den steigenden Speicherplatzverbrauch mal außen vor lässt.
 

junky

BeitragSa, Jan 01, 2005 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm - wieso sollte des Programm eigentlich ohne Tiefenbeschränkung abstürzen ? Das kommt doch nur auf die Zahl an, die der User wählt...
bei mir stürzt zumindest nix ab, ohne Tiefenbeschränkung

noch ne Frage zur Aufgabenstellung:
sind globale Variablen in der Bonusaufgabe erlaubt ? - Also nur für's zeichnen vom Koordinatensystem, nicht bei der eigentlichen Lösung der Problemstellung. Man kann natürlich alle Werte statisch festlegen oder immer wieder der Funktion übergeben, ich persönlich fänds aber ziemlich unpraktisch...
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 01, 2005 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, werde mal meine FunctionSammlung durchforsten und mal schnell was basteln!
Setzte diese dann als Exe rein!
[BB2D | BB3D | BB+]

Clonker

BeitragSa, Jan 01, 2005 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Setze ich auch mal mein Programm hier als Exe rein:
http://www.clonkfactory.de/Tes...abeNr4.exe

edit: nochmal etwas verbessert
Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz.

Athlon XP 2800|Radeon 9600 Pro|512MB DDR RAM|240GB Festplatte
  • Zuletzt bearbeitet von Clonker am Sa, Jan 01, 2005 22:14, insgesamt einmal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 01, 2005 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
das sieht super aus, Clonker!
hier meins!
http://people.freenet.de/rallimen/Basic/
[BB2D | BB3D | BB+]
 

junky

BeitragSa, Jan 01, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
hm - warte zwar immer noch auf ne Antwort, aber ok ...
Zum Download

EDIT: @ Ralli - coole Sache des mit dem Farbdiagramm - nur, haste schonma versucht als Startzahl 1000 einzugeben? Wink
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 01, 2005 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Hinweis, hab da wohl die 0 weg rationalisiert!
da fehlt tatsächlich das = Zeichen
die 9 geht auch nicht! Embarassed

Jetzt geht es aber ........ Smile
[BB2D | BB3D | BB+]

wunderkind

BeitragSa, Jan 01, 2005 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Du ahnst es nicht! Sehr schöne Resultate. Und das nach wenigen Stunden. Ich hoffe ihr habt darauf geachtet, keine globalen Variablen zu verwenden Wink.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Jan 01, 2005 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei mir steht kein Global im Code drinne!

Die rekursive Function kommt da ganz ohne aus, nur mit Parameter und Rückgabewerte!

Nur das erstellen des Diagramms erfordert ein Dim Feld was eigens dafür erstellt wird in der Hauptschleife!
Und das will ich auch nicht mehr umschreiben ! (ChaosPur)
[BB2D | BB3D | BB+]

wunderkind

BeitragSo, Jan 02, 2005 1:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will jetzt nicht kleinlich sein und das Dim-Feld untersagen, aber mit globalen Variablen meine ich alle, die außerhalb einer Funktion deklariert wurden Wink!
 

junky

BeitragSo, Jan 02, 2005 3:29
Antworten mit Zitat
Benutzer-Profile anzeigen
hm - also nochma Wink
Zitat:

sind globale Variablen in der Bonusaufgabe erlaubt ? - Also nur für's zeichnen vom Koordinatensystem, nicht bei der eigentlichen Lösung der Problemstellung. Man kann natürlich alle Werte statisch festlegen oder immer wieder der Funktion übergeben, ich persönlich fänds aber ziemlich unpraktisch...

was ist damit nun ? - natürlich könnte man alles statisch einbauen - keine Variablen deklarieren, und dafür direkt innerhalb der Funktionen irgendwelche Zahlen einbauen, von denen kein Mensch versteht, für was sie gut sind - aber, ist das das Ziel ?!
die eigentliche Funktion kommt natürlich ohne jegwelche "globalen" Variablen aus - aber schon beim Koordinatensystem ist es um ein wesentliches dynamischer und verständlicher mit globals ...
wat nun ? - den Code zur Unerkenntlichkeit umbauen ? - kein Problem 8)
gestern stand ich noch vorm Abgrund
heute bin ich einen Schritt weiter...
 

David

BeitragSo, Jan 02, 2005 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

So hab ich's verstande, keine globalen Variablen.
Daher wird der Code halt ein wenig umständlicher... Wie gesagt, kein Problem, oder? Smile

grüße

wunderkind

BeitragSo, Jan 02, 2005 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
So in etwa sollte das Programm aufgebaut sein:

Code: [AUSKLAPPEN]

Const aaaaa = 10
const troet = 20

main()

End


Function main()
   Local var1
   Local var2
End Function

Function teile(xxx, yyy, ...)
   Local var55
   Local var66
End Function

BladeRunner

Moderator

BeitragSo, Jan 02, 2005 11:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ehm - wieso sollte des Programm eigentlich ohne Tiefenbeschränkung abstürzen ? Das kommt doch nur auf die Zahl an, die der User wählt...
bei mir stürzt zumindest nix ab, ohne Tiefenbeschränkung

Genau da liegt ja der Hase im Pfeffer. Immer brav mit dem DAU rechnen, der eine riesige Zahl einhämmert und damit einen stack-overflow verursacht... Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jan 02, 2005 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe nochmal etwas umgebaut, jetzt gehts
mit Numpad und Komma bzw Punkt!

und keine eine Globale bzw globale Constante
Geiler Chaos Code Very Happy

Zur Tiefe:
bei maximaler BB-Integerzahl (+2147483647) geht bis ca. 30 Tiefe

Wenn die Eingabe von Wissenschaftlichen Zahlen möglich ist gehts bis zu ca 130 mal !
[BB2D | BB3D | BB+]

Waveblue

BeitragSo, Jan 02, 2005 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Zitat:
ehm - wieso sollte des Programm eigentlich ohne Tiefenbeschränkung abstürzen ? Das kommt doch nur auf die Zahl an, die der User wählt...
bei mir stürzt zumindest nix ab, ohne Tiefenbeschränkung

Genau da liegt ja der Hase im Pfeffer. Immer brav mit dem DAU rechnen, der eine riesige Zahl einhämmert und damit einen stack-overflow verursacht... Wink

Ich meinte die Tiefen- und die kleinergleichzwei-Begrenzung! Wink
Könnt ihr mal probieren! Baut´s aus und schießt eure Rechner ab Wink

Waveblue übernimmt keine Verantwortung für Schäden an euren Rechnern Smile
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group