Algorithmen lernen

Diskutiere Algorithmen lernen im Java Basics - Anfänger-Themen Bereich.
D

darth345

Hallo,

ich bin nun seit ca. 3 Monaten dabei mir selbst JavaScript anzueignen, leider bin ich jedoch über die Grundkenntnisse noch nicht wirklich hinaus gekommen. Immerhin konnte ich es aber schon schaffen einen von mir angestrebten Job zu ergattern. Meine Aufgabe besteht vor allem darin mehr oder weniger komplexe Manipulationsscripts in Groovy für ein auf Java basierendes Cloudsystem zu schreiben. Meiner Erfahrung nach kommt man hier mit Conditions und switch-case Szenarien schon relativ weit. So weit so gut.

Mein Arbeitgeber möchte jedoch, noch mehr und verpflichtet uns wöchentlich an Schulungen teilzunehmen, was an und für sich ja auch in meinem Interesse ist. Leider habe ich aufgrund nicht ausreichender mathematischer Kenntnisse oder Programmier Know-How überhaupt keine Ahnung wie ich zum Beispiel eine unten stehende Fragestellung (eher noch leichtere Aufgabe) die uns regelmäßig in den Schulungen erwartet zu lösen.


"Übung Die Summe der ersten n natürlichen Zahlen kann nach einer Formel berechnet werden:

n ∑ i = ½ n * (n+1) i=1 ➢ Schreiben Sie eine Funktion, die sumF(x), die die Summe der ersten x natürlichen Zahlen nach dieser Formel berechnet.

➢ Schreiben Sie eine Funktion sumW(x), die die Summe der ersten x natürlichen Zahlen durch Aufsummieren berechnet.

➢ Schreiben Sie eine Schleife in der die Summe der der ersten n Zahlen für n = 1 · · · 100 jeweils mit beiden Funktionen berechnet und ausgegeben wird."


Nun zu meinen Fragen:

1. Könnt ihr mir einen Kurs idealerweise auf Udemy oder auch wo anders empfehlen der mir bei der Erstellung von Algorithmen oder der Lösung von ähnlichen oben stehenden Problemen weiterhelfen könnte?

2. Da Groovy ja auf Java basiert würde es sich empfehlen sich auch in Java Grundkenntnisse anzueignen oder besser bestehende Kenntnisse in JavaScript weiter zu vertiefen?

3. Ich habe bereits einen Kurs auf Udemy entdeckt, könnte mir so etwas eurer Meinung nach auch weiterhelfen? --> https://www.udemy.com/course/der-java-datenstrukturen-und-algorithmen-kurs/?src=sac&kw=java+daten

Vielen Dank im Voraus für eure Hilfe
 
L

lennero

Ich kann dir das Buch "Algorithms" von Sedgewick und Wayne empfehlen. Ist ein dicker Wälzer aber alles wird sehr ausführlich und anhand von Bildbeispielen erklärt. Zu Kursen kann ich leider nichts sagen.
 
M

M.L.

n ∑ i = ½ n * (n+1) i=1 ➢ Schreiben Sie eine Funktion, die sumF(x), die die Summe der ersten x natürlichen Zahlen nach dieser Formel berechnet.
Die sog. "Gaußsche summenformel" In Worten: eine Funktion bekommt den Parameter n übergeben (oder ermittelt diesen als Maximalwert aus einem geordneten Array) und gibt das Ergebnis (n*(n+1)) /2 zurück
 
T

Tobias-nrw

Cool, ich dachte, die Bibel wäre The Art of Computer Programming von Donald E. Knuth.
Das ist meines Erachten zu alt. Zudem hat er explizit nach "neuen" Algorithmen gefragt.
Vom MIT gibt es auch ein schönes Buch, Structure and Interpretation of Computer Programs, das viele Grundlagen enthält (verwendet aber Lisp bzw. Scheme) und kostenfrei unter der CC BY-SA 4.0 erhältlich ist: https://web.mit.edu/alexmv/6.037/sicp.pdf
Da fände ich auch Pseudocode (wie in Algorithmen - Eine Einführung) besser.

Die obigen Aufgaben sind natürlich Pipifax, ich denke sie sind auch als Quereinsteiger "machbar".
 
M

M.L.

Leider habe ich aufgrund nicht ausreichender mathematischer Kenntnisse oder Programmier Know-How überhaupt keine Ahnung wie ich zum Beispiel eine unten stehende Fragestellung (eher noch leichtere Aufgabe) die uns regelmäßig in den Schulungen erwartet zu lösen.
Resourcen (Bücher, Udemy,...) wurden ja schon genannt. Inwieweit diese für die Anforderungen des AG reichen, steht aber auf einem anderen Blatt. Und Algorithmen helfen beim exakten oder iterativen Lösen eines Problems.

n ∑ i = ½ n * (n+1) i=1 ➢ Schreiben Sie eine Funktion, die sumF(x), die die Summe der ersten x natürlichen Zahlen nach dieser Formel berechnet.
Bspl. für Java: https://www.java-forum.org/thema/gausssche-summeformel.115326/#post-741991

➢ Schreiben Sie eine Schleife in der die Summe der der ersten n Zahlen für n = 1 · · · 100 jeweils mit beiden Funktionen berechnet und ausgegeben wird."
Hier soll wohl ein Ergebnisvergleich zwischen beiden Vorgehensweisen vollzogen werden.

2. Da Groovy ja auf Java basiert würde es sich empfehlen sich auch in Java Grundkenntnisse anzueignen oder besser bestehende Kenntnisse in JavaScript weiter zu vertiefen?
Im Zweifel alle drei Sprachen (wobei Groovy, Java und JavaScript unterschiedliche Prioritäten, Entwicklungswerkzeuge und Frameworks besitzen)
 
J

JustNobody

2. Da Groovy ja auf Java basiert würde es sich empfehlen sich auch in Java Grundkenntnisse anzueignen oder besser bestehende Kenntnisse in JavaScript weiter zu vertiefen?
Du hast zu dem Punkt schon einige Antworten bekommen. Mein Ratschlag wäre, sich komplett auf eine Sprache zu konzentrieren (So dies möglich ist - es kann durchaus Anforderungen geben, dass Du mehr gleichzeitig machen musst. Aber das würde ich vermeiden!)

Vor allem als Anfänger macht es absolut keinen Sinn, mehrere Sprachen zu lernen. Man sollte erst EINE Sprache halbwegs können. Eine Sprache halbwegs zu lernen ist in meinen Augen eine Sache von wenigen Stunden! Setz Dich ein Wochenende hin und Du solltest Die Grundlagen einer Sprache kennen! Und erst dann macht es Sinn, zu einem anderen Thema zu wechseln.
Hintergrund hier ist: Du bist doch eine CPU, die ihren Status perfekt speichert, woanders hin springt, irgendwas macht und dann zurück springt und da weiter macht, wo er unterbrochen wurde. Eine CPU macht dies - da kann ständig ein Interrupt kommen: Es spielt keine wirkliche Rolle. Aber Du kannst es nicht. Du brauchst eine gewisse Einarbeitungszeit. Alleine schon aus dem Grund machen viele Wechsel keinen Sinn! Statt dessen immer entsprechend große Blöcke einplanen!

Mehrere Sprachen zu lernen kann ok sein, aber das Problem ist ja, dass deutlich mehr erforderlich ist:
- Bei objektorientierten Sprachen willst man Objektorientiertes Design lernen. Hier kommen dann evtl. auch Pattern mit rein...
- Die Sprache alleine bringt doch nichts. Du brauchst schnell viel mehr:
--> Datenbanken (Datenbanken selbst, relational, nosql, ...; Zugriff drauf: JDBC, JPA, .....) sind ein Thema.
--> Libraries (Java Framework, JEE (z.B. auch Spring), Logging Frameworks, ....)
--> ...
- Eine Sprache will gemeistert werden. Es ist ja toll, dass man 08/15 Applikationen schreiben kann, aber das alleine reicht nicht. In Java will man auch aktuelle Features können also z.B. Streams oder Lambda Ausdrücke ....

Und bei der gestellten Aufgabe dreht es sich - wie schon gesagt wurde - um eine 08/15 Umsetzung. Da wird genau vorgegeben, was gewünscht ist und das soll man dann einmal implementieren. Also wirklich: Reine Grundlagen in einer Sprache.

Da ist es egal, ob Du die Methode/Funktion/Wie_immer_es_genannt_wird in Java, JavaScript, C, Modula-2, Pascal, .... schreibst. EINE Sprache reicht. Und da dann eben die Funktion/Methode/wasauchimmer schreiben.
Und was gemacht werden soll, ist genau vorgegeben...

Eine zweite Sprache zu lernen, wenn so ein Basic in der ersten Sprache nicht klappt, halte ich für extrem fatal. Da wäre mein Tipp, die Zeit anders zu nutzen: Da man es aus meiner Sicht so eh nicht lernen wird, dann kann man die Zeit auch angenehmer zubringen: Chill etwas, triff Dich mit Freund/Freundin, geh Gassi mit dem Familienhund, .... Du wirst bestimmt etwas finden, das Dir Spaß macht und das Resultat wird nicht schlechter.... (Sorry für die klaren Worte. Aber am Anfang hilft wirklich nur: Einmal am Stück eine Sache lernen. Punkt aus.)

Viele Grüße,

Konrad
 
J

JustNobody

Wusst ich's doch. :eek:
Sowas fällt mir schnell auf.... (dem Frühwarnradar sei Dank) :D
Nur Du hättest es ja viel früher erkennen können. In dem Thread bezüglich neuem Laptop habe ich u.a. mein Blog verlinkt gehabt.

Und das war ja nur ein Versuch, weil ich ursprünglich angenommen hatte, Dass Du mich nur deshalb immer aufs Korn genommen hattest, weil ich Dich einmal als "Junior Software Engineer" eingestuft hatte und du das damals komplett anders gesehen hattest. Aber es hat sich dann ja nach diesem Versuch schnell heraus gestellt, dass dem nicht so ist.

Und bei so einem Beitrag wie hier: Ich bin etwas von rein sachlichen Hinweisen abgewichen und habe am Ende mehr oder weniger angeraten, es einfach sein zu lassen, wenn man es "nicht richtig" machen möchte. So etwas werde ich nicht aus einer Anonymität heraus schreiben. Da gehört dann zum einen eine Relativierung drunter ("Viele Grüße"), die hoffentlich als klares Signal verstanden wird, dass ich mit der Aussage den TE nicht irgendwie treffen möchte und dann natürlich dazu auch mein Name.
 
mihe7

mihe7

@all: mein Kommentar oben bzgl. TACP war nicht als Empfehlung gedacht. Mir sagte das Buch von Sedgewick einfach nichts. Ich würde auch den Bronstein jetzt nicht als Lehrbuch empfehlen :p Zu meiner Zeit gab es allerdings nur 3 Bände, erst 2011 ist der vierte erschienen und Knuth scheint sich mit seinen knapp 81 Jahren bester Gesundheit zu erfreuen, wenn man sieht, dass 2025 der fünfte Band erscheinen soll, noch zwei weitere geplant sind und er zwischenzeitlich die ersten drei überarbeiten will ;)

SICP ist dagegen ein Lehrbuch, das grundlegende Konzepte behandelt. Aufmerksam wurde ich darauf übrigens über ein Video, in dem Uncle Bob darüber spricht, weil es Zuweisungen erst sehr, sehr spät behandelt. Mir gefällt es, weil es für meinen Geschmack sehr illustrativ die Konzepte erklärt. Außerdem kann es online abgerufen werden, so dass jeder einfach mal einen Blick hineinwerfen und entscheiden kann, ob es ihm zusagt oder nicht.
 
D

darth345

Wow, vielen Dank für die schnellen und zahlreichen Antworten.

Obwohl Java und JavaScript sicherlich nicht zu vergleichen ist, kann man zumindest von der Syntax her teilweise ein paar Ähnlichkeiten erkennen, das ist zumindest was ich für mich erkennen konnte.

@thecain Meinst du auch dieser Kurs könnte mich weiterbringen --> https://www.udemy.com/course/der-java-datenstrukturen-und-algorithmen-kurs/?src=sac&kw=java+daten

@JustNobody dem Arbeitgeber ist grundsätzlich egal in welcher Sprache man Kenntnisse besitzt, ich habe halt mal mit JavaScript begonnen und dann die Möglichkeit bekommen meine Grundkenntnisse im Job auszubauen, was ich nun auch so rasch wie möglich unter Beweis stellen möchte. Welches Vorgehen würdest du mir empfehlen?

Geübt habe ich in JavaScript derzeit nur ein paar Anpassungen im Frontend (Dynamische Einkaufsliste, Aktuelles Datum in Webseite einfügen, Objekte mit einem Konstruktor erzeugen) also wirklich einfache Geschichten. Ich suche nun halt eine Möglichkeit wie ich mich selbst auf die nächste Stufe bringe und welches Vorgehen am idealsten für meine Kenntnisstufe ist.

Vielen Dank für eure Hilfe
 
Thema: 

Algorithmen lernen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben