FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P2 Blatt D Aufg D.1.1

P2 Blatt D Aufg D.1.1 2003-04-28 21:20
RaggaDee
Letzte Woche habt Ihr ja bereits eine Glühlampe
modellieren müssen, die wir nun um eine Dimmfunktion erweitern. Es soll mehrere Methoden
geben, die die Leuchtkraft verändern:
1. Die Helligkeit um genau einen Schritt erhöhen bzw. verringern.
2. Die Helligkeit um Zehnerschritte bis zur maximalen Leistung schrittweise anheben.
3. Die Helligkeit um Zehnerschritte schrittweise verringern.
Die einzelnen Werte sollen ausgegeben werden (nach dem Motto 10 Watt, 9 Watt, 8 Watt,…,
das ist zwar blöd, aber wenigstens sieht man etwas).


Angangs ist es so zu verstehen, dass die Operationen ohne weitere Werteeingabe bei Ausführung ihren Zweck erfüllen sollen (also einfach erhöhen / verringern). Aber wenn die einzelnen Werte ausgegeben werden sollen, dann klingt das wieder so, als ob man eine gewünschte Wattzahl eingeben kann und der Dimmer mittels Schleifen solange "dahin dimmt" bis die gewünschte Leuchtstärke erreicht ist.

Wie solls denn nun gemacht werden?

Re: P2 Blatt D Aufg D.1.1 2003-04-28 21:27
TriPhoenix
Genau einen Schritt erhöhen ist genau einen Schritt erhöhen. Was spricht dagegen, wenn die Lampe dabei quasi zu Debug-Zwecken auch noch den nun aktuellen Wert ausgibt? Von Wert eingeben steht da jedenfalls nichts.

Re: P2 Blatt D Aufg D.1.1 2003-04-28 21:29
RaggaDee
ja stimmt, aber dann sind Schleifen da ja wohl nicht zu gebrauchen oder wie

Re: P2 Blatt D Aufg D.1.1 2003-04-28 21:40
RaggaDee
Ach mist, böser Informatiker Fehler im Umgang mit Schleifen.

Ist mit doch bei 24338 Watt meine teure lila Pornolampe durchgeknallt.


Edit: Hilfe, es brennt wie brech ich das denn ab, wenn ich ne Endlosschleife produziert habe????


Und wieso …was…??

while (watt < watt + 10) dimOneUp();

Re: P2 Blatt D Aufg D.1.1 2003-04-28 21:50
Slater
Strg Alt Entf schafft das bestimmt unter windows ;)

int oldwatt = watt; while (watt < oldwatt + 10) dimOneUp();

Re: P2 Blatt D Aufg D.1.1 2003-04-28 22:14
RaggaDee
alles klar.
nur das abbrechen dachte ich geht vielleicht unter bluej, da ich blueJ mit meinem heiligen projekt nicht töten will. naja egal nu geit dat.
jetzt will ich noch dafür sorgen, dass die maximale leuchtstärke, die beim erzeugen der glühbirne festgelegt wird, nicht über schritten wird. da aber watt (meine leuchtstärke) sich ändert kann ich schlecht sagen, dass watt <= watt - 10 nicht überschritten werden soll. habs auch probiert, in dem ich final maxwatt genommen habe und beim erzeugen watt = maxwatt gesetzt wird, dass will er aber ncihtm da might not be defen bla bla.

(will meinen code nicht immer reinposten, sonst gibt dat noch ärger)

Re: P2 Blatt D Aufg D.1.1 2003-04-28 23:13
Fred
jetzt will ich noch dafür sorgen, dass die maximale leuchtstärke, die beim erzeugen der glühbirne festgelegt wird, nicht über schritten wird.
Fallunterscheidung.

da aber watt (meine leuchtstärke) sich ändert kann ich schlecht sagen, dass watt <= watt - 10 nicht überschritten werden soll.
Einfach ne Schleife von 0 bis 9 durchlaufen lassen.


Re: P2 Blatt D Aufg D.1.1 2003-04-28 23:14
Fred
Strg Alt Entf schafft das bestimmt unter windows ;)
int oldwatt = watt; while (watt < oldwatt + 10) dimOneUp();
Warum so umstaendlich und nicht einfach

for (int i=0; i<10; i++) dimOneUp();


Re: P2 Blatt D Aufg D.1.1 2003-04-29 03:24
MoKrates
(will meinen code nicht immer reinposten, sonst gibt dat noch ärger)
zumindest wollen wir die Fehlermeldungen Buchstabengetreu sehen. Und wenn Dein Code nicht funktioniert ist das, denke ich, schon ok.

Wenn Du eine maximale Wattzahl nicht ueberschreiten willst, dann solltest Du sie setzen.

class ... { private int _maxwatt; ... }
Bedenke: Mit den Variablennamen bezeichnest Du eine Speicherstelle. Eine solche kann immer nur einen Wert zur Zeit speichern. Deshalb werden Zeilen wie "watt < watt + 10" immer wahr sein. (Denk an Mathe. Fuer "watt" kannst Du nur einen Wert einsetzen, nicht zwei zu einem Zeitpunkt).

Deshalb die "oldwatt" Konstruktion.

Um nicht die _maxwatt zu ueberschreiten wuerd ich vorschlagen etwas zu konstuieren wie
for (i=0; i<10; i++ && watt<_maxwatt) ++watt;
MoKrates

Edit: Oeh. Anstelle von ++watt "dimOneUp()" benutzen, sorry.

Re: P2 Blatt D Aufg D.1.1 2003-04-29 14:07
Fred
for (i=0; i<10; i++ && watt<_maxwatt) ++watt;
Ich wuerde lieber schreiben
for (i=0; i<10 && watt<_maxwatt; i++) ++watt; [img]http://www.fb18.de/gfx/25.gif[/img]

Re: P2 Blatt D Aufg D.1.1 2003-04-29 19:18
RaggaDee
for (i=0; i<10; i++ && watt<_maxwatt) ++watt;
Ich wuerde lieber schreiben
for (i=0; i<10 && watt<_maxwatt; i++) ++watt; [img]http://www.fb18.de/gfx/25.gif[/img]

muss schon for (i=1; i<10 && watt<_maxwatt; i++) ++watt;
schreiben, da er sonst nur 9 mal zählt….



Re: P2 Blatt D Aufg D.1.1 2003-04-29 20:01
Anonymer User
muss schon for (i=1; i<10 && watt<_maxwatt; i++) ++watt;
schreiben, da er sonst nur 9 mal zählt….

ich denke vorher war es schon ganz richtig, da er jetzt erst bei deiner Lösung nur 9 mal zählt. Also:

for(int i=0; i<10 && watt<_maxwatt;i++) watt=watt+1;

[img]http://www.fb18.de/gfx/25.gif[/img]



Re: P2 Blatt D Aufg D.1.1 2003-05-06 17:18
Anonymer User
Zum Abbrechen ohne die finale Geierkralle:

Wenn BlueJ Code ablaufen läßt, wird dieser graue Balken auf der linken Seite rot. Klickt man darauf, wird ein einfacher Debugger geöffnet (dauert etwas, da er ja gleichzeitig munter an der Endlosschleife arbeitet) und man kann die Ausführung beenden.

Geht vielleicht auch irgendwie einfacher, weiß ich aber nicht besser.

Re: P2 Blatt D Aufg D.1.1 2003-05-06 19:48
MoKrates
achja, und vielleicht sollte es nicht
watt<_maxwatt heissen, sondern watt<=_maxwatt
Ansonsten, entschuldigt mich bitte fuer den Fehler, und Danke fuer die Berichtigung. Wollen ja hier niemandem was flachses erzaehlen, nicht?

MoKrates