Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

  • Autor
Also habe Java im Studium gemacht, du lernst es nur durch machen. Kann dir die Tage mal paar Übungen hochladen bzw. Materialien. Du musst halt nur die Logik verstehen, irgendwann hast du den Griff raus.


Gerne

Suche unter Google nach "coding katas" und versuche sie zu bearbeiten. Eine Liste findest du z.B. hier


Vielen Dank


Sent from my iPhone using Fachinformatiker.de mobile app
  • Autor

Verstehe verstehe die englischen Erklärungen überhaupt nicht und zwar:


What is the output of this Code:

int result = 0; 

for (int i = 0; i < 5; i++) {

  if (i == 3) {

    result += 10; 

  } else { 

    result += i; 

  }

}

System.out.println(result);


Ich weiß das 17 rauskommen, aber ich weiß nicht wie man drauf kommt.
Die englische Erklärung verstehe ich nicht.

Ich würde es so erklären:

i entspricht 0, wenn i kleiner als 5 ist wird um 1 hoch gezählt, bis zur 5.
Wenn aber i 3 entsprechen, was es ja irgendwann tut werden 10 ausgegeben.
Und weiter verstehe ich nicht.

Gruß

 

(Des spinnt komplett rum, macht anstatt 1 gleich 2 Absätze rein...)


Sent from my iPhone using Fachinformatiker.de mobile app

Bearbeitet von KampfKatze

  • Autor
vor 13 Minuten schrieb Whiz-zarD:

Der Code ist nicht vollständig. Der Kopf der For-Schleife ist nicht vollständig.
Und was machst du gerade?

Habs editiert, sieht zwar grauenhaft aus aber die App spinnt irgendwie. 

Mache gerade Übungen zu Schleifen und for each etc

Bearbeitet von KampfKatze

Und wo genau liegt das Problem? Gehen wir mal die Schleife durch:

i    result
------------------------------------
0    result += 0	=>    result = result + 0	=>	result = 0 + 0 = 0
1    result += 1	=>    result = result + 1	=>	result = 0 + 1 = 1
2    result += 2	=>    result = result + 2	=>	result = 1 + 2 = 3
3    result += 10	=>    result = result + 10	=>	result = 3 + 10 = 13
4    result += 4	=>    result = result + 4	=>	result = 13 + 4 = 17

Auf result wird pro Schleifendurchlauf immer i dazu addiert. Die Ausnahme ist, wenn der Zähler i bei 3 ist. Dann wird 10 draufaddiert. Der += operator ist nur eine Abkürzung

result += i

ist das selbe wie

result = result + i

Bearbeitet von Whiz-zarD

  • Autor

Ach Hab es verstanden, also wird praktisch wenn jetzt rauskommt = 3 und beim nächsten Durchgang 4 immer das miteinander addiert und somit kommt man auf 7, sprich bei += 10 wären es dann 17 und dann kommt bsp. 5 beim nächsten dann wird das wiederrum mit der 17 addiert. Okay passt. [emoji1]

Und da result mit 0 deklariert wurde wird mit 0 + 0 begonnen, weil i auch 0 ist, logisch.

Dann wird weiter auf 1 gezählt und das dann wiederrum + 0 = 1
Bei 2 wären es dann +2 = 3

Irgendwann wird 10 draufgerechnet sprich + 3 in dem Fall dann wären es 13.
Und da nochmal um 1 hoch gezählt wird haben wir dann zum Schluss 4 + 13 = 17

Hab ich es so verstanden richtig?


Sent from my iPhone using Fachinformatiker.de mobile app

Einfacher geht es kaum noch. Ich versuche es aber mal.
Du hast eine For-Schleife. Im Kopf stehen folgende Informationen:

  • Die Zählervariable heißt i  => int i = 0
  • i wird mit 0 initialisiert => int i = 0
  • Die Schleife läuft so lange, wie i kleiner 5 ist => i < 5
  • Pro Schleifendurchlauf wird i um 1 erhöht => i++
    • Das bedeutet, du hast 5 Schleifendurchläufe

bei jedem Schleifendurchgang wird folgende Logik angewendet:

if (i == 3) {
    result += 10; 
  } else { 
    result += i; 
  }

D.h. wenn i gleich 3 ist, dann wird auf result 10 addiert. Ansonaten i.

Jetzt gehen wir die Durchläufe Schritt-für-Schritt durch:

  1. Durchlauf:
    i = 0, result = 0
    i ist nicht 3, also wird auf result 0 addiert. result ist 0; also: result = result + i = 0 + 0 = 0
  2. Durchlauf:
    i = 1, result = 0
    i ist nicht 3, also wird auf result 1 addiert. result ist 0; also: result = result + i = 0 + 1 = 1
  3. Durchlauf:
    i = 2, result = 1
    i ist nicht 3, also wird auf result 2 addiert. result ist 1; also: result = result + i = 1 + 2 = 3
  4. Durchlauf:
    i = 3, result = 3
    i ist 3, also wird auf result 10 addiert. result ist 3; also: result = result + 10 = 3 + 10 = 13
  5. Durchlauf:
    i = 4, result = 13
    i ist nicht 3, also wird auf result 4 addiert. result ist 13; also: result = result + i = 13 +4 = 17

Beim 6. Durchlauf hätte i den Wert 5 und somit entspricht i nicht mehr der Bedingung, dass es kleiner als 5 ist und bricht die Schleife ab. result ist dann 17 und wird in der Konsole ausgegeben.

Bearbeitet von Whiz-zarD

  • 3 Wochen später...
On ‎03‎.‎01‎.‎2017 at 5:18 PM, wisdomsoz said:

Also habe Java im Studium gemacht, du lernst es nur durch machen. Kann dir die Tage mal paar Übungen hochladen bzw. Materialien. Du musst halt nur die Logik verstehen, irgendwann hast du den Griff raus.

@wisdomsoz könntest du mir bitte, bei Gelegenheit, auch die Unterlagen zu Java vom Studium zusenden??

An ateso@outlook.de

Vielen Dank

Gruß

Ateso

  • 2 Wochen später...
Am 3.1.2017 um 16:50 schrieb KampfKatze:

bin gerade dabei mir Java anzueignen, doch wie lernt man wirklich effektiv die Sprache? Kann man es mit, wie man es aus dem Englisch Unterricht kennt, Vokabeln lernen vergleichen?

Ja und nein.

Ja, weil es eine Handvoll Vokabeln gibt, die man einfach auswenig lernen muss. Zum Beispiel, dass man float für Zahlen mit Nachkommastellen verwendet.

Ja und nein, weil man keine Sprache (weder eine real existierende Sprache wie Englisch, noch eine Programmiersprache) beherrscht, wenn man einfach alle verwendeten Wörter und ihre Übersetzung auswendig kennt. Grammatik, Aussprache und die ganze Logik einer Sprache spielen auch eine Rolle. Gut, Aussprache spiellt bei Programmiersprachen keine Rolle. Die Syntax ist aber enorm wichtig. Und die Logik. Mit Logik meine ich, wie man letztendlich denkt.

Beispiel: Im Deutschen wird die Zahl 97 Siebenundneunzig gesprochen, also 7 + 90. Im Englischen wären es aber ninety-seven (90 + 7). Wenn ein Mensch, der mit Englisch aufgewachsen ist und Deutsch lernt, das erste Mal die Zahl 97 auf Deutsch diktiert bekommt, wird er wahrscheinlich 79 schreiben, weil er gewohnt ist, dass die Zehnerstelle zuerst genannt wird. Noch abgefahrener wird es im Französischen, da ist 97 nämlich quatre vingt dix sept (4 * 20 + 10 + 7) - zumindest bei mir immer wieder Anlass zu "wtf?"-Momenten, aber irgendwie auch raffiniert gelöst. Die Zahlen allein sind letztendlich alle die gleichen - aber sie werden komplett anders gedacht.

Auf Programmiersprachen übertragen muss man auch die Logik dahinter verstehen. Möglicherweise noch stärker als in einer gesprochenen Sprache. Grammatische Fehler machen auch Muttersprachler, die sind verzeihbar. Der Computer hingegen verzeiht nichts! Was ist der Unterschied zwischen do und while und wann wende ich was an - beides sind doch Schleifen? Wann ist etwas innerhalb des Gültigkeitsbereichs? Wie erzeuge ich ein Objekt aus einer Klasse? Worauf zeigt der Zeiger? Wozu ist überhaupt der Garbage Collector da und wie wird das in anderen Sprachen gelöst?

Mit dem reinen Vokabellernen alleine kommt man da nicht weiter. Ich hab mehrmals erfolglos versucht, C und C++ zu lernen. Erst als ich begriffen habe dass da eine komplette Denkweise dahintersteht, in die man sich reinfuchsen muss, bin ich über die ersten 50 Seiten der Lernbücher hinausgekommen.

Bearbeitet von jk86

Also habe Java im Studium gemacht, du lernst es nur durch machen. Kann dir die Tage mal paar Übungen hochladen bzw. Materialien. Du musst halt nur die Logik verstehen, irgendwann hast du den Griff raus.

Hi, kannst du vielleicht ne Link zu Übungen auch hier schreiben?

Ich würde die auch liebendgerne anschauen [emoji259]

vor 57 Minuten schrieb wisdomsoz:

[...] ich werde es die Tage hochladen!

Und dabei bitte die Urheberrechte berücksichtigen. Danke.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.