Programmieranfänger, Schwierigkeiten mit der Programmierung

Nerdinfekt

Mitglied
Hey,
beschäftige mich jetzt seit ein paar Wochen mit der Programmierung bzw. mit Java.
Habe vor Wochen auch angefangen einen Videokurs zu gucken, extra für Einsteiger, wo halt die Grundlagen (Variablen, Verzweigungen, Schleifen, Methoden, Objektorientiert ...). Habe den Kurs noch nicht durch, muss aber feststellen das ich bei einigen Aufgaben Probleme habe auf die Lösung zu kommen bzw. wie man etwas umsetzt.

Keine Ahnung ob ich zu viel für diesen Zeitraum erwarte oder eventuell einfach zu blöd für die Programmierung bin.

Habt ihr eventuell paar Tipps, wie man am besten an das Lernen von Java bzw. allgemein von Programmiersprachen rangehen kann / sollte?
Bzw. was wäre denn sinnvoll sich anzueignen, damit einem das Programmieren vielleicht etwas leichter fällt.
Habe auch gerade einen Einführungskurs in der Schule zum Thema programmieren wo Java einem näher gebracht werden soll. Aber der Dozent springt halt auch von Thema zu Thema und nutzt gefühlt jede Gelegenheit zu erwähnen wie schlecht Java doch eigentlich sei. Ist auch nicht gerade hilfreich. :D

Praktisch anwenden ist natürlich klar, mach ich auch, aber mir gehen langsam die Ideen aus, was man mit dem „bisschen" noch alles so anstellen kann. 😅

Bedanke mich schon mal für alle hilfreichen tipps. :)
 

M.L.

Top Contributor
Jetzt kann man viel schreiben...
Grundsätzlich gilt es in der SW-Modellierung- und -Entwicklung davon auszugehen, dass eine bestimmte Funktionalität einmal, mehrfach (oder eher selten) oder vielfach gebraucht bzw. wiederverwendet werden kann / soll / muss... . Beispielhaft hat bei hoher (potentieller) Veränderungs- oder Erweiterungsrate einer Software der Einsatz von Interfaces Sinn. Oder anonyme Funktionen (=Lambdas) wenn eine bestimmte Funktionalität einmal (oder selten) gebraucht wird.
 

PinkMuffin

Bekanntes Mitglied
Naja, wenn du die Aufgaben in der Reihenfolge machst, in der der Kurs sie dir vorschlägt, dann ist eventuell der Kurs nicht gut aufgebaut.
Programmieren hat viel mit Abstrahieren und logischem Denken zu tun, das muss man eben üben.

Wichtig wäre zu wissen, bei welchen Aufgaben du Probleme hast, auf die Lösung zu kommen. Auch wichtig wäre die Frage, warum programmierst du? Wenn du eh auf ein Projekt hinarbeitest, dann würde es sich lohnen, einfach mal mit einer Mini-Version deines Ziels anzufangen.
Oder zumindest eine Funktionalität mal zu programmieren, die in deinem Endprojekt vorhanden sein soll.
Wenn du "nur" dein Gehirn etwas trainieren willst, dann könntest du solche Seiten wie "Codewars" nutzen, da gibt es sicher auch andere, die Coder-Challenges anbieten. Im Zweifelsfall kannst du dir das Buch "Algorithmen in Python" zulegen, und versuchen diese Funktionen in Java umzusetzen (oder Python lernen. wenn du es nur für dich machst, ist das ja eine Option)
 

Robert Zenz

Top Contributor
Praktisch anwenden ist natürlich klar, mach ich auch, aber mir gehen langsam die Ideen aus, was man mit dem „bisschen" noch alles so anstellen kann. 😅
Code reviews davon machen lassen, entweder hier im Forum (ich glaube das ist on-topic?) oder auf CodeReview StackExchange bietet sich an. Meistens kann man auch aus den kleinsten Programmen drei, vier Iterationen rausholen aus denen man lernt.
 

Nerdinfekt

Mitglied
Naja, wenn du die Aufgaben in der Reihenfolge machst, in der der Kurs sie dir vorschlägt, dann ist eventuell der Kurs nicht gut aufgebaut.
Programmieren hat viel mit Abstrahieren und logischem Denken zu tun, das muss man eben üben.

Wichtig wäre zu wissen, bei welchen Aufgaben du Probleme hast, auf die Lösung zu kommen. Auch wichtig wäre die Frage, warum programmierst du? Wenn du eh auf ein Projekt hinarbeitest, dann würde es sich lohnen, einfach mal mit einer Mini-Version deines Ziels anzufangen.
Oder zumindest eine Funktionalität mal zu programmieren, die in deinem Endprojekt vorhanden sein soll.
Wenn du "nur" dein Gehirn etwas trainieren willst, dann könntest du solche Seiten wie "Codewars" nutzen, da gibt es sicher auch andere, die Coder-Challenges anbieten. Im Zweifelsfall kannst du dir das Buch "Algorithmen in Python" zulegen, und versuchen diese Funktionen in Java umzusetzen (oder Python lernen. wenn du es nur für dich machst, ist das ja eine Option)
Danke für die Antwort. :)
Eigentlich ist der Kurs relativ gut aufgebaut. Zumindest kamen bisher immer Aufgaben die die vorherigen Sachen beinhalten. Habe aber halt noch so meine Probleme mit einigen Sachen. Arrays finde ich noch relativ schwierig (zumindest zweidimensionale) und mit den Methoden geht bei mir auch noch nicht so einfach von der Hand und das kombiniert mit Objektorientiert. Vielleicht kommt das ja noch mit der Übung. Mir fällt es nur etwas schwer den Anfang zu finden, wie ich am besten üben soll und wo ich anfangen soll. Am liebsten würde ich alles gleichzeitig machen (was ja nicht wirklich geht).

Ich hatte halt letztens ein Problem mit einer Aufgabe da sollte man ein Spiel programmieren. Man sollte ein Spielfeld generieren und eine Spielfigur die sich in diesem Spielfeld bewegen kann: Vorwärts, nach links und rechts drehen, sollte halt so aufgebaut werden:

#######
# #
# #
# ^ #
# #
# #
#######

Für mich war es schon ein Rätsel überhaupt herauszufinden wie man dieses Spielfeld generiert. Weiß mittlerweile ungefähr wie das gemacht wird. Aber das sind dann halt so Sachen die mich etwas demotivieren. Fand es persönlich schwer, für jemanden der erst seit paar Wochen programmiert.

Ich programmiere, weil ich mir eigentlich Spaß macht. Der Anfang ist halt ziemlich schwer bzw. rein zu kommen. Zu vor hatte ich bisher nur mit HTML und CSS zu tun bzw. etwas JavaScript (aber hier halt nur eingebunden und fertig), habe allerdings auch berufliches Interesse daran, da ich zur Zeit eine Umschulung zum Fachinformatiker mache.
Tatsächlich habe ich auch private Absichten, bzw. habe mir zwei „kleinere" Projekte ausgesucht, die ich gerne bis Ende des Jahres realisieren möchte. Möchte auf den Projekten dann später aufbauen und das halt erweitern ...


Code reviews davon machen lassen, entweder hier im Forum (ich glaube das ist on-topic?) oder auf CodeReview StackExchange bietet sich an. Meistens kann man auch aus den kleinsten Programmen drei, vier Iterationen rausholen aus denen man lernt.
Danke dir, werde ich mir mal merken! :)
 

LimDul

Top Contributor
Für mich war es schon ein Rätsel überhaupt herauszufinden wie man dieses Spielfeld generiert. Weiß mittlerweile ungefähr wie das gemacht wird. Aber das sind dann halt so Sachen die mich etwas demotivieren. Fand es persönlich schwer, für jemanden der erst seit paar Wochen programmiert.
Bezüglich des Spielfeldes. Was genau war dein Problem mit "generiert"?

Ein Fehler, den ich hier im Forum oft erlebe dass Anfänger den dritten Schritt vor dem ersten machen. ich versuche das mal auf das Spielfeld runterzubrechen, inwieweit das auf dich zutrifft, musst du selber sehen.

Aufgabe: Erzeuge das Spielfeld
Überlegung: Schleifen, Arrays was nehme ich und einfach mal probieren.

Das führt selten, wenn man nicht weiß was man tut, zu einer guten Lösung. Es ist oft sinnvoller das Problem erstmal losgelöst von Java zu betrachten. Ich soll ein Spielfeld generieren. Was ist das überhaupt für ein Spielfeld? Wie sieht das aus? Was hat das für Eigenschaften?
Wenn ich das Spielfeld auf einem Karo-Papier von Hand malen müsste, welche Informationen bräuchte ich eigentlich um es korrekt zu malen?

Und wenn man das hat, dann - und erst dann - kann man anfangen das in Programmcode zu übertragen.

Aus den wenigen Infos da oben würde ich mal folgendes destillieren:
* Ein Spielfeld ist ein Rechteck bestehend aus Feldern.
* Felder können entweder eine Mauer sein, leer sein oder eine Spielfigur enthalten.
* Wenn ich es von Hand zeichnen will, was müsste ich wissen?
** Wie viele Zeilen hat das Spielfeld
** Wie viele Spalte hat das Spielfeld
** Was ist auf jedem Feld gespeichert
* Wie würde mir jemand sagen, wo die Spielfigur steht? Er würde mir wohl Koordinaten geben - eine x und eine y Koordinate.

Und jetzt übertragen wir es mal in Java:
Das heißt, um das Spielfeld darzustellen, brauche ich eine x und eine y Koordinate, so wie die Info was da gespeichert ist => Da bietet sich doch ein zwei-dimensionales Array an_

Java:
int ANZAHL_ZEILEN = 10;
int ANZAHL_SPALTEN = 8;
spielfeld = new array[ANZAHL_ZEILEN][ANZAHL_SPALTEN];
Dazu direkt ein weiterer tipp - Variablen immer sinnvoll benennen und möglichst wenig Magic Numbers verwenden, sondern lieber Konstanten. Man könnte es auch so schreiben

Java:
s = new array[10][8];

Nur wenn du jetzt später mal wissen willst, was steht in Zeile 5 an Position 6 - war die Zeile die erste oder die zweite Stelle des Arrays? Im ersten Code siehst du es direkt, im zweiten nicht.

Nächster Schritt:
Wir haben uns jetzt für 2-dimensionales Array entschieden. Aber wie wollen ja auch Informationen speichern. Was für einen Datentyp wollen wir denn da nehmen? Wir schauen mal zurück auf den schlauen Zettel - "Felder können entweder eine Mauer sein, leer sein oder eine Spielfigur enthalten".
Jetzt kann ich das beliebig modellieren - ich kann eine Zahl speichern und definieren 0=Leer, 1=Mauer, 42=Spielfigur. Oder ich speichere ein character - das Zeichen was später ausgegeben wird, also " ", "#" oder "^". An der Stelle gilt wieder: Möglichst wenig Magic Numbers. Wenn du später im Code vergleiche hast
Java:
if (spielfeld[x][y]==42) {....}
das versteht keiner mehr. Da es ja anscheinend nur eine fixe Menge an Objekten gibt und die Art sich nicht dynamisch ändern kann, bietet sich ein Enum an:

Code:
public enum Feld {
FREI, MAUER, FIGUR;
}

So, kümmern wir uns nun mal um die Ausgabe auf dem Bildschirm. Wir machen wir das auf Karopapier, wenn wir unser Array hätten? Wir würden nachschauen was steht an Position 1,1 und dann in Zeile 1 und Spalte 1 das entsprechende Symbol malen. Das heißt, wir müssen uns jedes Feld 1x ansehen und ausgeben.

Nun geht das auf der Konsole bei der Ausgabe nicht so einfach umherzuspringen, sondern man kann nur von links nach rechts schreiben und dann eine Zeile weiter springen. Also müssen wir offensichtlich erst die erste Zeile komplett ausgeben, dann einen Zeilenwechsel machen, dann die zweite Zeile ausgeben usw. Wir zerlegen dabei das Problem in Teilschritte:
* Eine Zeile ausgeben
* Zeilewechswel
Schreiben wir erst mal Rumpf Code dafür:

Java:
for (int aktuelleZeile = 0; aktuelleZeile<spielfeld.length; aktuelleZeile) {
  // Gib aktuelle Zeile aus
  // Zeilenwechsel
  System.out.println();
}

Ok, nächstes Teilproblem - Aktuelle Zeile ausgeben. Wie machen wir das?
Nun, wir gehen durch jedes Feld in der Zeile durch und geben es einzeln aus. Damit haben wir das Problem wieder in zwei kleinere zerlegt:


Java:
for (int aktuelleZeile = 0; aktuelleZeile<spielfeld.length; aktuelleZeile) {
  // Gib aktuelle Zeile aus
  for (int aktuelleSpalte = 0; aktuelleSpalte<spielfeld[aktuelleZeile].length; aktuelleSpalte++) {
    // Gib aktuelles Feld aus
  }
  // Zeilenwechsel
  System.out.println();
}

Wie geben wir das aktuelle Feld aus? Nun Mauer heißt "#", Leer " " und Spielfigur "^"

Java:
for (int aktuelleZeile = 0; aktuelleZeile<spielfeld.length; aktuelleZeile) {
  // Gib aktuelle Zeile aus
  for (int aktuelleSpalte = 0; aktuelleSpalte<spielfeld[aktuelleZeile].length; aktuelleSpalte++) {
    // Gib aktuelles Feld aus
    switch(spielfeld[aktuelleZeile][aktuelleSpalte) {
      case MAUER: System.out.print("#"); break;
      case FREI: System.out.print(" "); break;
      case FIGUR: System.out.print("^"); break;
    }
  }
  // Zeilenwechsel
  System.out.println();
}

Fertig ist das Spielfeld.

Das heißt zwei Dinge helfen oftmals:
* Das Problem erstmal losgelöst von Java betrachten
* Das Problem immer weiter in kleine Teile zerlegen, bis die Teile so klein sind, dass man sie lösen kann.
 

M.L.

Top Contributor
Zusätzlich werden bei Figurenzeichnungen auf der Konsole auch andere achsensymetrische Figuren (z.B.) Tannenbäume oder siehe ASCII-Zeichnungen bei JavaBeginners verwendet. Die prinizipielle Überlegung von wg. zweidimensionalem Array und was wo zu zeichnen ist, ist aber dieselbe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
celta_vigo Programmieranfänger braucht Rat zu mehr Praxisnähe Java Basics - Anfänger-Themen 8
S Schwierigkeiten beim Aufrücken von Arrays Java Basics - Anfänger-Themen 10
Azazel (Anfängerhilfe) awt.Graphics Schwierigkeiten Java Basics - Anfänger-Themen 6
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
T OOP Schwierigkeiten mit OOP Java Basics - Anfänger-Themen 2
O Starte Timer, während anderer Timer noch läuft. Ruft dies Schwierigkeiten hervor? Java Basics - Anfänger-Themen 0
I Schwierigkeiten bei Ausgabe von KreisObjekten in Array Java Basics - Anfänger-Themen 4
D Schwierigkeiten bei Stein.Schere.Papier-Aufgabe Java Basics - Anfänger-Themen 9
N JDK installieren kompilier schwierigkeiten Java Basics - Anfänger-Themen 6
hdi Schwierigkeiten mit Fullscreen API Java Basics - Anfänger-Themen 3
S grundlegende schwierigkeiten Java Basics - Anfänger-Themen 11
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
F Automat-Programmierung Java Basics - Anfänger-Themen 30
N Lambdas, Methodenref, fkt Programmierung ? Java Basics - Anfänger-Themen 10
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
A Frage zur programmierung Java Basics - Anfänger-Themen 12
U Compiler-Fehler Programmierung einer Drehkugel Java Basics - Anfänger-Themen 8
L Programmierung mit Hash Java Basics - Anfänger-Themen 3
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
S GUI-Programmierung Sudoku-Rätsel lösen Java Basics - Anfänger-Themen 1
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
S Programmierung simulieren - aber wie?! Java Basics - Anfänger-Themen 3
H Java Programmierung Java Basics - Anfänger-Themen 3
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
D Objektorientierte Programmierung Java Basics - Anfänger-Themen 13
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
Q Objektorientierte Programmierung Java Basics - Anfänger-Themen 17
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Collections Aufgaben Java-Programmierung Überforderung Java Basics - Anfänger-Themen 36
A GUI Programmierung mit Textfield Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
A Methoden Habe ein Problem bei folgender Programmierung Java Basics - Anfänger-Themen 15
slejden Erste Schritte Frage zur OOP (objektorientierten Programmierung Java Basics - Anfänger-Themen 4
V Threads Nebenläufige Programmierung Java Basics - Anfänger-Themen 6
V Nebenläufige Programmierung Java Basics - Anfänger-Themen 5
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
S Programmierung eines Geldwechselautomaten! Java Basics - Anfänger-Themen 2
R Einige Neulingsfragen (Wrapper, GUI-Programmierung) Java Basics - Anfänger-Themen 4
D JavaBeans und die visuelle Programmierung Java Basics - Anfänger-Themen 2
M Dringend Experten für Scala-Play basierte Programmierung!!!! Java Basics - Anfänger-Themen 0
Z Programmierung eines Stacks Java Basics - Anfänger-Themen 19
A Programmierung herangehensweise Java Basics - Anfänger-Themen 9
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
G 3D-Spiele-Programmierung Java Basics - Anfänger-Themen 3
I Programmierung-Hausaufgabe: Hilfe benötigt Java Basics - Anfänger-Themen 8
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
T Nachhilfe JAVA Programmierung Java Basics - Anfänger-Themen 1
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
N Socket-Programmierung Java Basics - Anfänger-Themen 4
kaoZ Android Programmierung / Erstellen einer neuen Instanz Java Basics - Anfänger-Themen 2
O OOP Input & Output in der GUI-Programmierung Java Basics - Anfänger-Themen 2
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
K Objektorientierten Programmierung Java Basics - Anfänger-Themen 3
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
W Problem bei MineSweeper Programmierung Java Basics - Anfänger-Themen 10
N Objektorientierte Programmierung: Erben von 2 Klassen - wie ist korrekte Vorgehensweise? Java Basics - Anfänger-Themen 16
D Best Practise für Programmierung Java Basics - Anfänger-Themen 7
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
W objektorientierte Programmierung Java Basics - Anfänger-Themen 25
W objektorientierte Programmierung - String in andere Klasse übergeben Java Basics - Anfänger-Themen 13
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
D Frage zu Bit Operatoren in der Programmierung Java Basics - Anfänger-Themen 9
U Geräte-Programmierung ? Java Basics - Anfänger-Themen 15
S 2 kurz Fragen zur Möglichkeit der Programmierung Java Basics - Anfänger-Themen 7
T Objektorientierte Programmierung, わからない です Java Basics - Anfänger-Themen 6
J Allgemeine Fragen zur Programmierung Java Basics - Anfänger-Themen 36
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
S Objektorientierte Programmierung Java Basics - Anfänger-Themen 21
M Gui Programmierung Java Basics - Anfänger-Themen 21
J Spielevorschläge für Programmierung Java Basics - Anfänger-Themen 3
O Eisenbahn-Programmierung Java Basics - Anfänger-Themen 8
S Schlechte Programmierung Java Basics - Anfänger-Themen 5
O Probleme bei OO-Programmierung mit Vererbung Java Basics - Anfänger-Themen 18
M Programmierung kürzen??? Java Basics - Anfänger-Themen 5
N Umstieg auf objektorintierte Programmierung Java Basics - Anfänger-Themen 2
N Probleme mit meiner Programmierung Java Basics - Anfänger-Themen 5
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
H Programmierung Ampelsteuerung Java Basics - Anfänger-Themen 4
J [Erledigt] Applet Programmierung Java Basics - Anfänger-Themen 4
C Objektorientierte Programmierung Java Basics - Anfänger-Themen 11
T Gui Programmierung lernen Java Basics - Anfänger-Themen 3
E Toolkit (Scanner) Programmierung Java Basics - Anfänger-Themen 5
D Programmierung Profi Java Basics - Anfänger-Themen 18
G Problem bei Programmierung Java Basics - Anfänger-Themen 15
X Objektorientierte Java Programmierung - 3 Fragen zum Code Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben