# Ich möchte JAVA lernen!



## Blublub (22. Nov 2010)

Hallo zusammen,

die Überschrift ist natürlich so, wie man es von einem Spammer erwartet.
Doch das, hoffe ich, bin ich nicht.

Falls der Bereich falsch gewählt sein sollte, dann wäre es gut, wenn man bescheid sagt, oder ihn direkt verschiebt.

Da ich schulisch noch mind. 1 Jahr mit Java zu tun haben werde und ich generell interessiert daran bin, eine Programmiersprache zu lernen, hab ich mir mal etwas feines überlegt, dass nur mit Hilfe von euch klappen kann.

Getreu dem Motto "Learing by doing" möchte ich mir Java (mit eurer Hilfe) beibringen.
Meine Idee war es/ist es, dass ihr mir jede Woche(?) eine Aufgabe stellt, die ich dann lösen muss.
Wenn ich zu der aktuellen Aufgaben Fragen habe, kann ich dir hier stellen, oder muss googlen 
Am Ende der Woche(?) bzw., wann ich fertig bin, werde ich meinen Quellcode posten und ihr überprüft und zeigt mögliche Verbesserungen.
Z.B. : "Programmiere ein Minesweeper-Spiel", "Programmiere eine Suche im Binärbaum". 
(Hilfen bei der Aufgabestellung sich auch gerne gesehen, z.B. "dazu verwende ein XYZ")

Dann zu dem wahrscheinlich wichtigstem Punkt - meine Vorkenntnisse.
Sehr weit reichen diese noch nicht, aber ich bin auf jeden Fall willig, zu lernen.
Das Programmieren eines Binärbaumes oder auch die Suche im Binärbaum klappt so weit.(nur Häufigkeit von Buchstaben in einem String).
Falls eine Aufgabe viel zu schwer sein sollte, werde ich das anmerken 

So, damit das funktioniert bedarf es 2er Sachen:
1. meiner Motivation
2. eurer Mitarbeit/Hilfsbereitschaft

Der 1. Punkt ist auf jeden Fall erfüllt, genauso auch die Zeit, die ich vor meinem Computer verbringe.

Der 2. Punkt liegt an euch 



Lg


----------



## maki (22. Nov 2010)

Sieh es mal so:
Du willst java lernen, dazu musst du üben, kann mir nicht vorstellen dass es hier jemanden gibt der dir jede Woche eine Aufgabe stellt 

Mein Tipp:
Suche dir selber Aufgaben und stelle hier konkrete fragen (am besten mit Code) falls du Probleme hast.


----------



## XHelp (22. Nov 2010)

Du kannst auf den Uni Seiten gucken, manche Lehrstühle veröffentlichen die Aufgabenblätter auf der Seite (ein Fach wie "Grundlagen der Programmierung" würde sich anbieten).
Oder du guckst einfach paar Threads durch und versuchst die selben Sachen nachzubauen.
Aber bevor du mit dem Programmieren loslegst, solltest du dir vllt ein paar Theoriesachen durchlesen


----------



## HoaX (22. Nov 2010)

Oder schau dir die alten Aufgaben des BwInf an, die sind eigentlich immer Top. Und die Aufgaben der ersten Runde bekommt man recht leicht hin meistens.


----------



## Blublub (22. Nov 2010)

Habt ihr konkrete Links?
Uni's gibt es ja sehr viele.
Googlen werde ich natürlich trotzdem.

@XHelp, was genau meinst du mit "Theorie" ?
Objektorientierung? Assembler -> Programmiersprachen der heutigen Generationen?
Diese Punkte habe ich eig. schon bearbeitet.


----------



## MaikHSW (22. Nov 2010)

Hey.
Das Schwierigste ist es immer eine Aufgabe zu finden,
das kenne ich leider auch.
Aber wie hier bereits jemand sagte wird dir keiner täglich eine neue Aufgabe stellen (auch nicht wöchentlich).

Ich denke mal XHelp meint mit Theorie die Grundlagen von Java.
Wie macht man Objektorientierung am sinnvollsten, was sind Design Patterns (wobei das schon etwas weit geht...) und so weiter.
Ich kenne einige Leute, die es schaffen in Java einfach nur rein prozedural zu entwickeln.
Das ist aber nicht Sinn der Objektorientierung und damit fehlen einem meist viele Features von Java.

Das Thema Aufgaben von der Uni würde ich auch mit Vorsicht behandeln.
Ich studiere selbst und hatte dort auch Java.
Aber vieles wurde nur theoretisch behandelt und sehr oberflächlich.
Java dient da zwar häufig als Anschauungsmittel, aber mehr eben nicht.
Man schreibt danach noch lange nicht ordentliche Sourcen oder kennt alle Probleme,
die sich erst durch komplexere Programme ergeben.
Denn nur ein Programm mit 2 Buttons zu schreiben wo man plus und minus drücken kann ist nicht die Welt.
Wenn wir aber von Multiuser-Betrieb, vielleicht sogar mit Datenbankzugriff, reden wird es doch deutlich komplexer.


Gruß


----------



## ARadauer (22. Nov 2010)

Ich denke Aufagaben gibt es genug im Netz, da brauchst du nix von uns....
Hier gibts auch viele Leute die Hilfe mit ihren Hausaufgaben brauchen, da kannst du ja mal schaun ob du helfen kannst...

Coding Kata: Home finde ich auch ganz interessant...


----------



## XHelp (22. Nov 2010)

MaikHSW hat gesagt.:


> Man schreibt danach noch lange nicht ordentliche Sourcen oder kennt alle Probleme, die sich erst durch komplexere Programme ergeben.
> Denn nur ein Programm mit 2 Buttons zu schreiben wo man plus und minus drücken kann ist nicht die Welt. Wenn wir aber von Multiuser-Betrieb, vielleicht sogar mit Datenbankzugriff, reden wird es doch deutlich komplexer.



Es hat aber schon einen Grund, warum man bei HelloWorld anfängt. Man sollte nicht direkt nach HalloWelt ein lustiges 3D Spiel entwickeln wollen.


----------



## ARadauer (22. Nov 2010)

> Man schreibt danach noch lange nicht ordentliche Sourcen oder kennt alle Probleme,
> die sich erst durch komplexere Programme ergeben.


ein schlosser wird am anfang auch nur mal herumfeilen und boren bevor er an die großen cnc maschine darf...

hier gibts leute die mit einfachen for schleifen auf der uni überforderd sind... da muss man als lehrer mal eine basis bilden bevor man was sinnvolles machen kann... ;-)


----------



## moccajoghurt (22. Nov 2010)

Auf höherem Niveau, bekommt man gratis denke ich keine bessere Möglichkeit, als hier zu lernen: Programmierkurs Java


----------



## Blublub (22. Nov 2010)

Danke ersteinmal für eure zahlreichen Antworten.
Natürlich gibt es wohl auch genug Aufgaben, aber ich finde es ist halt immer das Schwierigste 

Super Link moccajoghurt ^^.

So, dann kann ich natürlich ein aktuelles Problem mal posten:
Thema: Suche im BinärBaum
[Java]    
       Buchstabe test = (Buchstabe)(current.getRootItem());
       char testchar = test.getChar();
       if(c == test)
       {
           return (Buchstabe)(current.getRootItem()).getAnzahl();
       }
 [/Java]
Die 1. Methode funktioniert.
Also da kriege ich keinen Syntax Error,
vorher hatte ich es halt so gemacht, wie bei dem "Then"- Fall der If-Bedinung, also casten und Methodenaufruf gleichzeitig, dort kriege ich halt immer den Fehler, dass die Methode getAnzahl() nicht gefunden wird.
Also Konkret: Warum klappt das 2. nicht?
Außerdem: Von diesen Sachen habe ich relativ viele in meinem Quellcode, wie kann ich es gut lösen, ohne im BinaryTree die Objekte konkret auch Buchstaben zu ändern?

Lg, Dankeschön


----------



## XHelp (22. Nov 2010)

Mach dafür lieber ein neues Thema auf mit Mehr Code und Angaben von Klassen.


----------



## Empire Phoenix (23. Nov 2010)

zum einstieg einfache aufgaben und deren Lösungen: (Inklusive Klausuren)
University of Mannheim - Praktische Informatik 1 - HWS 09
Ist auch gleich fast die gesammte Vorlesung vom letzen Jahr als videos dabei.


Dann zum Fortsetzen:
KR & KM Research Group: Praktische Informatik II FSS10

Hier sind eineige Programmieraufgaben in den Übungsblättern drinnen. Wenn du dich generell für die Abläufe in einem Computer interessierst ist auch einiges anderes dabei (Wie funktioniert es das mehrere Programme auf einem Pc gleichzeitig laufen, wie funktioniert das Auslagern von speichern und relativ wichtig Grundlagen über die synchronisierung von Threads).

Müsstem für das meiste die richtigen Lösungen noch irgetwo rumfliegen haben, kannst mich ja wenn du Fragen hast per pm anschreiben


----------



## Andi_CH (23. Nov 2010)

Blublub hat gesagt.:


> Habt ihr konkrete Links?
> Uni's gibt es ja sehr viele.
> Googlen werde ich natürlich trotzdem.
> 
> ...



Theorie? Vielleicht eher in die Richtung
Wie entwickelt man ein Programm - Was macht man in den Phasen Analyse, Design, Implementation und Test?
Assembler erachte ich nicht als notwendig, genaue Kenntnisse was OO bedeutet schon eher

Möglicherweise hilft es dir auch hier im Forum, vor allem im Bereich "Java Basics - Anfänger-Themen", die eine oder andere Frage zu verfolgen und zu verstehen.

===

Zitat HoaX: Satzzeichen sind keine Rudeltiere, verdammt nochmal!!!
... schriebs und tippte ein Rudel ! ans Ende


----------



## Landei (23. Nov 2010)

Aufgabensammlungen gibt es viele, z.B. Project Euler (mit Fokus auf Mathematik)

Dann gibt es Katas

Ich kenne noch die Sammlung 99 Prolog-Probleme, die für viele Programmiersprachen adaptiert worden ist (Haskell, Python, ...), und mit etwas "Interpretation" auch für Java geeignet sein dürften.


----------



## tfa (23. Nov 2010)

Hier gibt es noch eine nette Aufgabensammlung: https://www.spoj.pl/problems/classical/
Man kann seine Lösung online einreichen und automatisch bewerten lassen. 
Leider sind die meisten Aufgaben recht schwierig.


----------



## ARadauer (23. Nov 2010)

ich halte es kurz:


Blublub hat gesagt.:


> [Java]
> return (Buchstabe)(current.getRootItem()).getAnzahl();
> [/Java]



return ((Buchstabe)current.getRootItem()).getAnzahl();


----------



## Landei (23. Nov 2010)

Ja, man verbuxelt schonmal die Wexstaben...


----------



## Mina91 (23. Nov 2010)

kenn ich nur zu gut =)


----------



## bygones (23. Nov 2010)

allein das Forum hier zu durchsuchen müsste schon Aufgaben in giga größe ergeben


----------



## Gast2 (23. Nov 2010)

Hier was für die Java Theorie
Java Certification Community, free Java J2ee scjp spring hibernate mock exams and certifications - BlackBeltFactory - Java Certification Community


----------

