Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
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
Geschrieben (bearbeitet)

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
Geschrieben (bearbeitet)

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

Bis jetzt sehe ich nur, dass wenn der Zähler i gleich 3 ist, auf das Ergebnis 10 addiert wird, ansonsten 1.

Bearbeitet von Whiz-zarD
Geschrieben (bearbeitet)
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
Geschrieben (bearbeitet)

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
Geschrieben

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.

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

Geschrieben (bearbeitet)

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...
Geschrieben
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...
Geschrieben (bearbeitet)
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
Geschrieben
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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...