Tipps zum lernen einer Programmiersprache?

3 Antworten

Von Experte Erzesel bestätigt
(...) Wenn ich aber versuche irgendeine Funktion zu ergänzen merke ich wie ich nichts aus diesen Tutorials mitgenommen habe.

Das ist nicht verwunderlich. Der Kern der Programmierung liegt darin, Lösungswege zu Problemen zu finden, was wiederum Analytik und Kreativität fordert. Das kannst du nicht durch Abtippen lernen.

Es gibt aber so einige Aufgaben, an denen man das Bilden von Algorithmen (sowie Grundelemente der Sprache C#) gut üben kann.

Klassische Beispiele wären mathematische Probleme:

  • Berechnung des Produkts ohne Verwendung des Multiplikationoperators
  • Berechnung der Quersumme von maximal dreistelligen Zahlen
  • Berechnung von Folgezahlen der Fibonacci-Reihe
  • Berechnung des Pascal'schen Dreieck via Rekursion
  • Primzahlprüfung
  • Zahlsystemkonversion von Zahlen (z.B. von Dezimal- in Binärsystem)

die Implementation eigener Datenstrukturen:

  • Stack
  • Einfach verkettete Liste
  • Zirkulär, doppelt verkettete Liste
  • Queue
  • Tree (AVL-Tree)
  • Graph

oder die Verarbeitung von Mengen/Zeichenketten:

  • Eigenimplementation von String-Methoden wie EndsWith, IndexOf, PadLeft, Split, StartsWith, Substring, ToLower
  • Implemenation von Sortierverfahren (Bubblesort, Insertionsort, Selectionsort, Quicksort, Mergesort)
  • Implementation von Suchverfahren (lineare und binäre Suche)
  • Tree Traversal (pre-/post-/inorder)
  • Palindromerkennung
  • Ver-/Entschlüsselung von Nutzereingaben via Caesar-Chiffre, Vigenère-Chiffre oder ROT13
  • Suche des kürzesten Pfads zwischen zwei Knoten bei einem gewichteten Graph (s. Dijkstra-Algorithmus)

Viele weitere Aufgaben findest du auf Webseiten wie CodingBat (die Java-Aufgaben kannst du genauso gut in deiner eigenen Entwicklungsumgebung mit C# lösen), Edabit, Exercism, Project Euler oder w3resource.

Fange bei den Aufgaben damit an, das jeweilige Problem zu erfassen / zu beschreiben (Wikipedia kann helfen). Wenn es zu komplex erscheint, versuche es so lange in Teilprobleme aufzuspalten, bis jedes einzelne Teilproblem leicht lösbar erscheint und mit einfachen, bekannten Operationen/Methoden aus der Standardbibliothek umgesetzt werden kann.

Versuche dabei nicht, Lösungswege direkt in C# zu formulieren. Das geht schnell schief (weil Randfälle dabei gern vergessen werden) und du machst es dir nur unnötig schwer (indem du dich bspw. zu sehr auf die C#-Syntax versteifst). Bau dir stattdessen erst einmal Programmablaufpläne und teste die an konkreten Fällen/Werten. Wenn du meinst, dass deine gefundene Lösung richtig bzw. ohne Fehler ist, übersetzt du sie in C#-Code.

Mit Sprachelementen wie Variablen, Kontrollstrukturen, u.ä. solltest du übrigens sicher, möglichst ohne Hilfe praktisch umgehen können. Wenn du das noch nicht zu deinem erwähnten Grundverständnis hinzugerechnet hast, fehlt dir an der Stelle auch noch einige Praxisübung.

Mir fehlt einfach eine Art "Vokabelheft" von Syntax (...)

Nutze die Dokumentation von Microsoft.

(...) aber weiß nicht wie ich an diesem Punkt fortfahren soll (...)

Schiebe die Idee, bereits Spiele entwickeln zu wollen, erst einmal auf. Damit solltest du frühestens dann beginnen, sobald du in der Programmierung mit C# (OOP, Kontrollstrukturen, Operatoren, Variablen) einigermaßen sicher bist.

Nimm dir die Zeit, suche Übungsaufgaben für Anfänger und löse sie in Konsolenprojekten. Alles was die Umsetzung einer grafischen GUI beinhaltet, ist für Fortgeschrittene.

Bezüglich Lernquellen würde ich des Weiteren deutlich davon abraten, Crashkursen oder reinen Abtipptutorials zu folgen. Mit ihnen lernst du kaum etwas.

Fang mit was einfachem an und nicht mit game development.


Idsgi5 
Beitragsersteller
 12.10.2023, 03:20

Was meinst du mit etwas einfachem?

0
GuteAntwort2021  12.10.2023, 03:27
@Idsgi5

Er/sie meint damit, dass du erstmal die Grundlagen der Sprache, bzw. Programmierung allgemein lernen solltest.

Du schreibst ja auch nicht direkt einen Roman, wenn du noch Probleme mit dem Alphabet und der Grammatik hast und dein Vokabular obendrein noch nicht sonderlich ausgeprägt ist.

1
DonkeyShot  12.10.2023, 03:30
@Idsgi5

Etwas weniger anspruchsvolles, weniger komplexes.

Als Programmierer musst du immer wissen, in welcher Umgebung du dich befindest. Du musst dich orientieren können und wissen, welche Möglichkeiten in dieser Umgebung bestehen. Einfach runtergebrochen auf Assembler-Programmierung: In dieser Umgebung kannst du auf Prozessor-Register zugreifen, auf den Arbeitsspeicher und irgendwelche I/O-Ports ansprechen.

Als nächstes geht es um die grundlegende Programmstruktur. Dass Programme aus einer Hauptfunktion und x weiteren Funktionen bestehen.

In der OOP sollte man die Prinzipien verstanden haben. Alles in C# ist OOP, deswegen geht es nicht ohne.

Dann erst mal einfach Aufgaben lösen.

Wenn du mit Frameworks wie bei der Spieleentwicklung arbeitest, musst du die Infrastruktur des Frameworks verstanden haben, also die Prinzipien die dahinter stehen.

Sry, das war jetzt didaktisch vielleicht nicht perfekt - aber ist ja auch schon spät. ;)

1
Ich habe bisher eigentlich nur Videos geschaut und diese 1 zu 1 kopiert, was eigentlich ganz gut geklappt hat. Wenn ich aber versuche irgendeine Funktion zu ergänzen merke ich wie ich nichts aus diesen Tutorials mitgenommen habe.

Genau das ist das Problem mit dieser Art Tutorials. Man macht zwar etwas und hat am Ende ein tolles Ergebnis, aber man lernt nicht wirklich etwas.

Die bessere Art zu Lernen ist sich nur grundlegende Sachen anzuschauen und den Rest selbstständig hinzuzufügen.
Schau Dir z.B. an wie IF-Abfragen und Schleifen funktionieren, erstelle dann aber etwas eigenes. Zum Beispiel ein Zahlen-Rate Spiel, eine Eingabe+Überprüfung von Name+Passwort und ähnliches.
Bei Problemen, versuche sie zuerst selbst zu lösen. Erst wenn Du nicht weiter kommst, frag Onkel Google. Suche dabei aber nur direkt nach Deinem Problem, nicht nach Lösungen für Dein Vorhaben.

Unabhängig davon wäre Scratch vielleicht einen Blick wert.
Scratch ist eine grafische Programmiersprache, die für das Lernen entworfen wurde.
Heisst Du arbeitest mit grafischen Elementen, um die Grundlagen des Programmierens zu lernen und wirst so nicht durch die Syntax einer speziellen Sprache abgelenkt.
(Und falls Du denken solltest das sei ja "kein richtiges Programmieren" -> doch ist es. Die Unreal Engine arbeitet mit Blueprint auf die gleiche Weise. :))