Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren?

Losmuerto

Neues Mitglied
Hallo liebe Community,

ich bin neu in der Programmierszene. Ich habe zum jetztigen Semester mit meinem Bachelorstudium in "Angewandter Informatik" angefangen und bin gerade recht unzufrieden mit mir selbst. Und daher hätte ich so ein bis zwei Fragen die mir auf dem Herzen liegen und ihr, als langjährige Programmierer, eventuell mit eurer Erfahrung beantworten könnt... zugleich möchte ich mich für den Wall of Text entschuldigen, der jetzt folgt.

Das Studium selbst macht mir ungeheuer Spaß. Ich bin hochmotiviert, lerne 4-6h täglich nach der Uni (insbesondere für Mathe und technische Fächer) und übe das Programmieren mit Java regelmäßig. Jegliche Übungen und Hausaufgaben, die wir in Programmierung 1 bekommen, erledige ich immer (und diese sind auch immer korrekt am Ende).

Was mir aber Sorgen bereitet ist die Zeit, die ich brauche um die Hausaufgaben zu erledigen. Hier eine Beispielaufgabe, die ich gelöst habe:

"Schreiben Sie eine Klasse Schoko, die die Zahlen a, b und n von der Konsole einliest. Wir haben a kleine Schokoriegel (1 kg) und b große Schokoriegel (5 kg). Wir wollen insgesamt n kg Schokolade essen. Wie viele kleine Schokoriegel muss man essen, um genau n kg zu essen, wenn man zuerst so viele große wie möglich ist? Gebt die Anzahl der kleinen Riegel aus. Ist dies nicht möglich, soll −1 ausgegeben werden. Beispiel: a = 7, b = 1, n = 12 ergibt 7 – zuerst einen großen, dann 7 kleine. Wäre in diesem Falle n = 13, wäre die Ausgabe -1 (zu wenig Schokolade insgesamt). Wäre im Beispiel b = 2, so wäre die Ausgabe 2 – erst zwei große, dann zwei kleine. Was auch nicht funktioniert, ist a = 2, b = 100 und n = 13, weil man zu wenig kleine Riegel hat, obwohl die Gesamtmenge mehr als ausreicht."

Diese Hausaufgabe bekamen wir vor 3 Wochen auf. An dieser Aufgabe habe ich ca. 6-8h gesessen. Warum? Ich habe keine Ahnung... anscheinend habe ich das logische denken total ausgestellt. Der Dozent sagte, dass solch Aufgaben in der Prüfung dran kämen (und das seien noch die einfachen). Da wir nur 1 1/2h für die Prüfung Zeit haben, mache ich mir natürlich Gedanken....

Und daher meine Frage: Ist das normal, dass man zu Beginn für eigentlich "einfache Aufgaben" so eine Ewigkeit braucht oder sollte ich mir Sorgen machen? Natürlich weiss ich, dass kein Meister vom Himmel gefallen ist und sich so eine Programmiersprache nicht in 1-2 Wochen meistern lässt, aber es geht hier ja um "einfaches logisches Denken"...

Da die Aufgabe ja bereits 3 Wochen her ist, kam inzwischen schon wieder einiges an Stoff hinzu. Inzwischen bereiten mir verschachtelte Schleifen große Probleme - ich verstehe es einfach nicht. Bei einzelnen Schleifen ist mir die FUnktion klar - auch der Unterschied zwischen "While" und "For" Schleife. Aber sobald sie ineinander verschachtelt sind, macht für mich alles keinen Sinn mehr. Als Beispiel hierfür:

Eine weitere Hausaufgabe: "Schreiben Sie eine Klasse Wuerfel, die alle Möglichkeiten für das Würfeln mit drei Würfeln ausgibt, indem die Ergebnisse der drei Würfel wie folgt geschrieben werden: (1,1,1), (1,1,2), …, (1,2,1), (1,2,2), … (6,6,6), also insgesamt 216 Zeilen. Die Würfel sind insofern unterscheidbar"

Meine Lösung war, wieder nach ca. 4h:

public class Wuerfel {

public static void main(String[] args) {

for (int a = 1; a < 7; a= a + 1)
{

for (int b = 1; b < 7; b= b + 1 )
{

for (int c = 1; c < 7; c = c + 1)
{
System.out.println("(" + a + "," + b + "," + c + ")");

}
}
}
}

}


Im Endeffekt habe ich es aber nur durch probieren herausbekommen. Denn Sinn dahinter, habe ich bis jetzt noch nicht verstanden. Ich habe mich belesen und habe versucht, irgendwo Erklärungen zu finden, wie verschachtelte Schleifen funktionieren, aber bis jetzt noch nichts verständliches gefunden. Das einzige, was ich weiss, ist dass sie von "innen beginnen"´.

Also zu meiner zweiten Frage: Kann mir jemand verschachtelte Schleifen erklären oder gute, verständliche Literatur empfehlen?

Vielen Dank im voraus und entschuldigt nochmal die Wall of Text.

Liebe Grüße
 

Robat

Top Contributor
Also allein der Fakt, dass dir das Studium und die Programmierung Spaß macht, spricht eigentlich für sich und ist Grund genug weiterzumachen. Es ist völlig normal, gerade am Anfang, nicht innerhalb von 5 Minuten die Lösung vor sich zu haben. Jeder lernt anders, jeder lernt anders schnell. Wichtig ist dran bleiben und üben, üben, üben.
Wichtig ist auch, sich mit anderen über seine/andere Lösungen zu unterhalten. Vor - und Nachteile zu besprechen. Verstehen warum man es so machen / nicht machen kann. Kritik ist in dem Fall wichtig und hilft schneller Gedankengänge zu verinnerlichen.
Auch ja - auch ausprobieren gehört tw. dazu :)

Zu der Schleifenthematik:
Eine Schleife dient erstmal dazu eine oder mehrere Anweisungen mehrmals auszuführen. Wenn man sich also die Zahlen von 1 bis 5 ausgeben lassen wollen würde, könnte man das mit einer Schleife machen.
Java:
for(int i = 1; i <= 5; i++) {
    System.out.println(i);
}
Jetzt möchte man gerne zu jeder Zahl von 1 bis 5 die Zahlen von 1 bis 5 daneben stehen haben. Man muss also für jede Zahl die Zahlen von 1 bis 5 ausgeben lassen. Man kann die Schleifen also Schachteln.
Java:
for(int i = 1; i <= 5; i++) { // äußere Schleife
    for(int j =1; j <= 5; j++) { // innere Schleife
          System.out.println("(" + i + "," + j + ")");
     }
}
Die äußere Schleife würde das erste mal "durchlaufen" und i wäre 1. Jetzt würde für i=1 die innere Schleife anfangen j hochzuzählen und nach jedem Durchlauf i,j ausgeben. Ist j=5 bricht die innere Schleife ab und der zweite Durchlauf der äußeren Schleife fängt an mit i = 2. Hier passiert wieder das selbe wie für i=1.... Brauchst du also in einer sich wiederholenden Anweisung eine Anweisung die sich wiederholen soll, musst/kannst du Schleifen verschachteln.

Bei deinem Würfelbeispiel: Wie gibt man "stupide" alle Möglichkeiten von 3 Würfel aus? Nun ja. Ich nehme mir den 1. Würfel, drehe ihn auf die erste Zahle und lege ihn beiseite. Dann nehm ich mir den 2. Würfel, drehe ihn auf die 1. Zahl und lege ihn beiseite. Jetzt nehm ich mir den 3. Würfel und drehe ihn auf jede Zahl von 1-6 und kriege so die ersten Kombinationen.
Code:
1 1 1 
1 1 2
1 1 3
1 1 4
1 1 5
1 1 6
Jetzt hat der 3. Würfel keine Zahlen mehr. Ich gehe also 1 Schritt zurück - nehme mir den zweiten Würfel - und drehe diesen auf die nächste Zahl (2). Jetzt nehm ich mir wieder den 3. Würfel und drehe ihn auf jede erdenkliche Zahl (1-6).
Code:
1 2 1
1 2 2
1 2 3
1 2 4
1 2 5
1 2 6
... usw. usf. Und genau so ist auch die Reihenfolge der Schleifen.
 
K

kneitzel

Gast
Robat hat schon eine gute Antwort gegeben.

Es ist schwer, mit so wenig Details etwas genaues zu sagen. Aber für mich würde sich das jetzt etwas danach anhören, dass Du vielleicht Probleme hast, so eine Problematik inkl. Lösung zu visualisieren. Das läuft also etwas auf den Punkt abstraktes Denken hinaus. Das kann man aber durchaus üben. Und wenn Du Spaß daran hast, dann üb das noch viel mehr.

Bezüglich Visualisierung hilft Dir evtl. noch folgendes:

Bei so einer Aufgabe ist der Ablauf immer der Gleiche:
a) Abstrahieren von der Aufgabe: Was sind die relevanten Informationen? Was ist das logische Problem dahinter?
b) Visualisierung
c) Eigener Lösungsablauf anhand der Visualisierung
d) Jetzt schreiben wir erst den Code.

Also die Aufgabe mit der Schokolade:
a) Hier ist die Aufgabe schon schön reduziert. Man kann von Schokolade noch weg gehen, aber egal.
b) Auf einem leeren Zettel male ich dann die Informationen auf ... Also Stapel kleine Schokoladen und Stapel große Schokoladen
c) Jetzt überlege ich mir, wie ich so eine Lösung erreichen würde. Ich habe da also die Stapel mit Schokoladen und soll jetzt eine bestimmte Menge bekommen ... mit Vorgabe: So viele große Schokoladen wie möglich.
- du teilst da Zielgewicht durch das Gewicht der Großen Schokoladen. Das Minimum des Ergebnisses und der Anzahl der großen Schokoladen ist dann die Anzahl der verwendeten großen Schokoladen.
- Das restliche Gewicht wird mit kleinen Schokoladen aufgefüllt.
Wenn du auf eine andere Lösung kommst (Von mir aus mit Schleife: Du packst so lange große Schokoladen auf eine Waage bis das Zielgewicht überschritten wird und dann legst du eine Schoko zurück u.s.w.), dann ist das evtl. auch ok...
Auf was für eine Lösung du kommst, ist erst mal egal. Wichtig ist, dass Du die Lösung in Gedanken durchspielen kannst und bestätigst: Ja, so sollte es gehen.
d) Jetzt kannst Du das umsetzen und Code schreiben.

Bei den Würfeln ist es ähnlich. Hier kann man da auch visualisieren: Du hast drei Würfel und sollst alle möglichen Kombinationen einmal hinlegen. Wie machst du das? Nimm Dir da in Gedanken doch die Würfel und fang damit an:
Du legst alle auf 1. Dann drehst du den rechten auf 2. Dann auf 3 .... bis 6. Die ersten 6 Kombinationen. sieht doch gut aus.
Jetzt drehst du den mittleren auf 2. Und dann gehst Du beim rechten Würfel wieder von 1 bis 6 alle Kombinationen durch ...
Das klappt gut - also schaust Du, was da läuft .... jeder Würfel läuft von 1 bis 6. Der rechte Würfel läuft so durch. Der mittlere macht bei jedem Schritt eine volle Schleife des rechten Würfels. Also sind die Schleifen verschachtelt.
 

LimDul

Top Contributor
Was vielleicht helfen kann, schau dir mal https://de.wikipedia.org/wiki/Programmablaufplan Flussdiagrame an und versuch vielleicht die Logik zuerst mal so als Flussdiagram in natürlicher Sprache hinzuschreiben. Also dich einfach mal von Schleifen und Co in Java zu lösen und möglichst strukturiert Schritt für Schritt aufzuschreiben was zu tun ist. Und dann die Schritte in Java zu übersetzen. Also quasi das was JustNobody auch geschrieben hat.

Ansonsten, um nachvzuvollziehen was ein Programm tut (wie z.B. die verschachtelten Schleifen) kannst du so ein einfaches Programm auch mal schrittweise im Debugger durchlaufen lassen und schauen in welcher Reihenfolge die Zeilen durchlaufen werden wie sich die Werte der Variablen ändern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
hdi Code-Schnipsel: ist das sinnvoll oder dumm? Java Basics - Anfänger-Themen 2
N Zu dumm für einen LineNumberReader Java Basics - Anfänger-Themen 13
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
J Meine Mails gehen nicht raus Java Basics - Anfänger-Themen 8
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
S Ist JDK jetzt free oder nicht? Java Basics - Anfänger-Themen 5
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Dekorator Muster - Irgendwas stimmt hier doch nicht? Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
C Java boolean Code läuft nicht Java Basics - Anfänger-Themen 5
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
P Neue Java v8 JRE Version nicht über alte drüber installierbar: Wie sonst? Java Basics - Anfänger-Themen 7
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
MarvinsDepression Umgebungsvariable kann Java-Applikationen außerhalb der IDE nicht starten Java Basics - Anfänger-Themen 4
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
D Warum kann ich hier nicht auf die Methode zugreifen? Java Basics - Anfänger-Themen 5
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7
H Kapselung protected aber in einer Kindklasse nicht zugänglich Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben