Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Programm verstehen... » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Programm verstehen...
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Neuling
Grünschnabel


Dabei seit: 12.08.2014
Beiträge: 4

Programm verstehen... Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hey Leute,

wie euch vllt schon mein Nickname verrät, bin ich ein Neuling im Bereich der Informatik/ Programmierung. Ich bring mir alles durch Bücher + Internet bei und hab einige Verständnis probleme und brauch deshalb eure Unterstützung.

Aufgabe:

Bestimmen Sie die Ausgabe des nachfolgenden Java- Programms:

public class BreakAndContinue {
public static void main (String [] args) {
for (int i = 0; i < 100; i ++) {
if (i == 74) break;
if ( i % 9 != 0) continue;
System.println(i);
}
int i = 0;
while (true) {
i++;
int j = i * 30;
if (j == 1260) break;
if (i % 10 != 0) continue;
System.out.println(i);
}
}
}

Meine Ideen:

Soweit ich weiß, wenn ich mich an ein Programm setze und es verstehen will, versuche ich es von außen nach innen zu bearbeiten.

also: i ist gleich 0, deshalb ungleich 74 und das Programm wird deshalb nicht verlassen. Jetzt muss ich 0 % 9 berechnen welches 9 ergibt und ungleich 0 ist, deshalb wird 9 ausgegeben. Was als ergebnis aber auch schon falsch ist, ich aber nicht drauf komme warum.
Desweiteren bin ich mir nicht ganz so sicher ob ich jz die Schleife wiederhole oder erst die while Schleife abarbeite.

Nehmen wir an ich bearbeite zuerst die for - Schleife , dann würde ich den Wert 9 um 1 erweitern , wegen der update wert i++, was dann 10 ist.
10 ist wieder ungleich 74 also weiter . 10 % 9 ist 1 .
usw.

meine Ergebnisse sind allerdings falsch :/

Wo liegen meine Fehler und welche Tipps könnt ihr mir auf meinem Weg mitgeben um solche Programme am besten verstehen zu können.

MFG
Neuling
16.08.2014 11:37 Neuling ist offline E-Mail an Neuling senden Beiträge von Neuling suchen Nehmen Sie Neuling in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Programmcode bitte in Zukunft mit [code]...[/code] umschließen, das erhöht die Lesbarkeit.

Zitat:
Jetzt muss ich 0 % 9 berechnen welches 9 ergibt

falsch, das ist 0. Wenn du etwas modulo 9 rechnest, bist du immer im Bereich [0;8] (bzw. [-8;0] für negative Zahlen). Deshalb wirkt hier kein continue und die 0 wird ausgegeben.

Um das Programm zu verstehen:
- versuche es im Kopf Zeile für Zeile durchzugehen, so wie es der PC auch macht
- nutze den Debugger, um das Programm schrittweise zu durchlaufen (geht in der Prüfung natürlich nicht, hilft aber trotzdem für das Verständnis)
- füge Kontrollausgaben hinzu
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
public static void main (String [] args) {
	for (int i = 0; i < 100; i ++) {
		if (i == 74) {
			System.out.println("// i = " + i + ": break");
			break;
		}
		if ( i % 9 != 0) {
			System.out.println("// i = " + i + ": continue");
			continue;
		}
		System.out.println(i);
	}
	int i = 0;
	while (true) {
		i++;
		int j = i * 30;
		if (j == 1260) {
			System.out.println("// j = " + j + ": break");
			break;
		}
		if (i % 10 != 0) {
			System.out.println("// i = " + i + ": continue");
			continue;
		}
		System.out.println(i);
	}
}


__________________
Syntax Highlighting fürs Board (Link)
16.08.2014 13:36 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

@euler Coole und kreative Idee mit dem [code] Tag! Danke!

Gruß,

Karlito
16.08.2014 14:04 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Neuling
Grünschnabel


Dabei seit: 12.08.2014
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Warum bin ich den im Bereich (0,8) bei modulo mit 9?

und woran erkenne ich, dass das Programmstück
code:
1:
 if ( i % 9 != 0) 

nur Vielfache von 9 ausgeben?

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Neuling: 16.08.2014 14:48.

16.08.2014 14:45 Neuling ist offline E-Mail an Neuling senden Beiträge von Neuling suchen Nehmen Sie Neuling in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das ist eben die Definition von modulo, das ist der Rest bei der Division:
9 / 9 = 1 Rest 0 --> 9%9 = 0
10 / 9 = 1 Rest 1 --> 10%9 = 1
18 / 9 = 2 Rest 0 --> 18%9 = 0
einen Rest, der >= dem Divisor ist, wird es nicht geben.

Die Zeile die du kopiert hast, gibt gar nichts aus.
code:
1:
if (i % 9 != 0) continue;

wenn i%9 ungleich 0 (=wenn i nicht Vielfaches von 9), dann brich den aktuellen Schleifendurchlauf ab und mache mit der nächsten Zahl weiter.
Das, was da noch übrigbleibt (also die Vielfachen von 9) wird dann ausgegeben.


Die Idee mit [code] habe ich glaube ich mal im C++ Forum gesehen, dort zensieren Sie "vorraus" und "Standart" smile .

__________________
Syntax Highlighting fürs Board (Link)
16.08.2014 15:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Programm verstehen...