# While schleife in For Schleife umwandeln  -- Dringend



## Ratlos (2. Apr 2008)

Hallo

ich schreibe morgen eine Klausur und eine der alten Aufgaben war es die folgende While schleife in eine For schleife umzuwandeln. Habe keine Ahnung; brauche Hilfe!!!!


long okt = 1110;
long val = 0;
long weight = 1;
while (okt > 0) {
val = val + okt % 10 * weight; // Der „%“-Operator bezeichnet die modulo Operation
okt = okt / 10; // Der „/“-Operator bezeichnet eine Ganzzahldivision ohne Rest
weight = weight*8;

Welchen Wert nimmt die Variable val am ende des programmes an?


----------



## maki (2. Apr 2008)

Tja, das sieht dann wohl schlecht für dich aus...


----------



## Ratlos (2. Apr 2008)

Ich weiß, leider.

2. Versuch :lol: 

Ich weiß einfach nicht wie ich das anpacken soll, und habe nur ein Bsp gesehen mit zwei Variablen.
Ich kann leider nicht zuordnen welcher Variablen, dann der Initialisierungsausdruck und der Reinitialisierungsausdruck werden. Bin ein ganz blutiger Anfänger .


----------



## Maeher (2. Apr 2008)

Naja solche Fragen fallen eigentlich eher in die Kategorie Hausaufgaben (ganz unten).
Grundsätzlich ist ne Java for-Schleife ne while-Schleife mit einer Anweisung vor der Schleifenausführung, und einer am Ende jedes Durchlaufs zusätzlich. Aussehen würde dass dann z.B. so:

```
long val = 0;
long weight = 1; 
for(long okt = 1110;okt > 0;weight*=8) {
val = val + okt % 10 * weight; // Der „%“-Operator bezeichnet die modulo Operation
okt = okt / 10; // Der „/“-Operator bezeichnet eine Ganzzahldivision ohne Rest
}
```
PS: Das Ende deiner Schleife musste ich leider Raten, oder habe ich eine geschweifte Klammer übersehen?
Den Wert von Val würd ich mir einfach ausgeben lassen, für so was hast du doch das Programm (falls es funzt)!

*Edit:* Sorry, ich hatte zuerst die Initialisierung von weight unterschlagen.


----------



## maki (2. Apr 2008)

Reinitialisierungsausdruck (seltsamer Begriff...) = da, wo zB. die Zählvariable hochgezählt wird. Würde sagen, dass wäre weight 

Initialisierungsausdruck = Na da wo die Variablen auf ihre Start(/Initial-)werte  gesetzt werden. Da du mehrere hast, wirst du dich für eine enscheiden müssen und die anderen beiden vorher initialisieren.


----------



## Ratlos (2. Apr 2008)

Danke!!!!

Schaue mir das ganze nochmal in Ruhe an.
Für mich ist das ganze Neuland. Habe ein 480 Seiten Skript das quer über die wichtigsten Bereiche der EDV (Einführung) geht. Dazu gehört eben auch Einführung in die Programmierung mit Java aber auch vkn,cpm, epks, etc.
Leider werden da nicht alle Themen so tief behandelt. Es gibt auch keine Musterlösungen. So dass man sich leider nur schlecht selbst helfen kann.

Also Danke für eure schnelle unkomplizierte Hilfe.

Die nicht mehr ganz so schlimm Ratlose.


----------



## Guest (2. Apr 2008)

```
while (bedingung) anweisung
```
ist das gleiche wie

```
for (;bedingung;) anweisung
```


----------



## Tobias (2. Apr 2008)

Aber wenn du das einem Informatik-Professor in der Klausur hinschreibst, haut der dir das (zu Recht) um die Ohren. Zwischen syntaktisch richtig und vernünftig umgesetzt ist ein Unterschied .

mpG
Tobias


----------



## killer4561 (3. Apr 2008)

Ratlos hat gesagt.:
			
		

> Hallo
> 
> ich schreibe morgen eine Klausur und eine der alten Aufgaben war es die folgende While schleife in eine For schleife umzuwandeln. Habe keine Ahnung; brauche Hilfe!!!!
> 
> ...



Hier der Vollständigkeit halber noch ne schön kompakte Fassung(Hab die Ausgabe schon mit reingebaut) =P


```
for (long val=0,weight=1,okt = 1110;okt > 0;val = val + okt % 10 * weight,okt = okt / 10,weight =  weight*8,System.out.print(okt<=0?val:""));
```


----------

