Was verstehe ich an Programmieren nicht?

10 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
(...) ich weiß zwar wie strings aufgebaut sind usw. aber wie kann ich aus diesen Kenntnissen ein Programm schreiben?

Formuliere zunächst das Problem / das geplante Ziel (bzw. dessen Ablauf). Das sollte in möglichst wenigen, einfachen Sätzen / Stichpunkten geschehen. Diese kannst du folgend aufbrechen. Du musst ja einen Weg finden, die einzelnen Aufgaben, die zur Aufgabenlösung beitragen, mit den dir bekannten Mitteln umsetzen zu können.

Ein Beispiel:

Das Spiel Mau-Mau soll implementiert werden. Das heißt, hier wäre unter anderem der Spielablauf relevant. Wenn du das Spiel beschreibst, wirst du merken, dass du z.B. etwas brauchst, um die Spielrunden abzubilden, dass du Kartenstapel (aufgenommene Karten, Talon, etc.) benötigst, sowie Funktionen zum Mischen von Karten, zum Vergeben von Karten, zum Ziehen von Karten, usw.. Jede dieser Aufgaben sollte separat genauer betrachtet werden. Vielleicht teilt man sie ebenso in einzelne Aufgaben auf, sofern sie nicht so einfach lösbar sind.

Am Ende sollte jedenfalls ein Funktionssatz zur Verfügung stehen, den man in die Grundstruktur des Spiels (Ablauf der Spielrunde) einsetzen kann.

-- Randinformation ------------------------------------------------

Speziell bei Spielen ist oftmals eine Game Loop / das (oder eine Form des) ECS (Entity component system) sinnvoll. Sehr grob und plump könnte eine Grundstruktur für ein Spiel so aussehen:

while (true) {
  // evaluate user input, drawing components, check game status, etc. ...

  sleep(100);
}

Wie bei einem Daumenkino werden die einzelnen Komponenten, etc. mit jedem Frame (Schleifendurchlauf) neu (mit anderem Zustand) gezeichnet.

-------------------------------------------------------------------

Dieser Schaffensprozess beschreibt den wesentlichen Kern der Programmierung: Das Finden von Lösungswegen (Algorithmenbildung) zu gestellten Problemen. Das obig erklärte Prinzip ist das von Teile und herrsche. Das Problem wird analysiert und so lange zerlegt, bis jeder Einzelschritt lösbar ist. Auf der untersten Ebene hast du also nur noch Verzweigungen, Schleifen, Aufrufe eigener Funktionen oder von Funktionen aus eingebundenen Bibliotheken.

Diese Herangehensweise musst du praktisch üben. YouTube-Videos (und auch andere Internettutorials) werden dir das eher weniger beibringen (wenn denn überhaupt erwähnen).

Als Hilfsmittel eignen sich Programmablaufpläne. Erstelle dir erst einen Plan, bevor du überhaupt daran denkst, dein Konzept mit einer Programmiersprache in das Programm zu hacken. Andernfalls wirst du eher auf Probleme stoßen (weil bestimmte Sachen nicht bedacht wurden).

Des Weiteren solltest du schauen, dass du dich mit einigen Methoden / Klassen der Standardbibliothek vertraut machst (nutze dafür die .NET-Dokumentation). Hierbei sind häufig genutzte Elemente gemeint (z.B. String, Int32, ...). Wenn du bspw. einen String in zwei Teile zerlegen möchtest, sollte dein erster Ansatz darin liegen, dich daran zu erinnern, dass die String-Klasse womöglich schon entsprechende Methoden bietet, die dein Problem lösen könnten. Mit der Zeit prägt man sich vielleicht entsprechende Namen ein, aber für den Anfang reicht es aus, eine Ahnung davon zu haben, was es bereits geben könnte und wo man Informationen dazu findet.

Für den Anfang könntest du nun erst einmal mit einfachen Konsolenspielereien beginnen.

  • Hangman
  • Nim-Spiel
  • Berechnung des Produkts zweier Faktoren, ohne das Multiplikationszeichen zu verwenden
  • Berechnung / Ausgabe der ersten 8-9 Ziffern der Fibonacci-Reihe
  • Berechnung der Fakultät einer Zahl
  • Berechnung des Pascalschen Dreiecks
  • Palindrom erkennen
  • Türme von Hanoi
  • Kartenspiele (wie Mau-Mau) - ohne grafische Oberfläche
  • usw.

Es gibt etliche gute Übungsaufgaben für so etwas. Nutze auch die Suchfunktion (Lupe rechts oben), Fragen nach Übungsaufgaben gab es hier ja nun schon viele.

Unity brauchst du soweit erst einmal gar nicht. Da du in C# sogar leicht die Cursor-Position in der Konsole setzen kannst (SetCursorPosition), könntest du sogar leicht ein Spielfeld erzeugen (bestehend aus Symbolen/Zeichen), welches ständig neu überschrieben wird (siehe oben: game loop). Das bedeutet, auch Pong, Tetris, Snake oder Pacman könnten von dir in der Konsole gebaut werden.

Nachdem du in solchen Grundlagen (auch sprachlich: Schleifen, Funktionen, Verzweigungen, ...) sicher bist, sollte als nächster Themenbereich das Konzept der objektorientierten Programmierung anstehen. Mit dessen Grundlagen solltest du für Unity gut gerüstet sein.

goldmensch409  12.08.2020, 08:43

Wow, probs das du dir so viel Zeit nimmst! Verdiente HA :)

0

Das Prinzip ist immer dasselbe: Eingabe - Verarbeitung - Ausgabe
Egal, ob es sich nun um Zahlen, Buchstaben, 2D-/3D-Grafiken oder Audio handelt.

Strings sind da ein gutes Beispiel zum Einstieg, da man sie sehr gut eingeben kann (Tastatur) und auch gut ausgeben (Bildschirm, Drucker). Die interne Verarbeitung ist auch nicht sonderlich kompliziert, damit bleibt das Problem gut überschaubar.

Was Du an programmieren nicht verstehst ist einfach: Du hast anscheinend kein Projekt.

Es gibt kein "einfach drauf losprogrammieren um des programmieren Willens."

VeoBlack 
Fragesteller
 06.08.2020, 18:26

Ich wollte eigentlich als 1. richtiges projekt "pong" programmieren, doch ich möchte ungern im internet sachen nachschauen bzw. abschreiben

0
VeoBlack 
Fragesteller
 06.08.2020, 18:28

Das spiel "PONG" meint ich

0
Simon221585  06.08.2020, 18:29
@VeoBlack

Wenn du's visualisieren kannst und die Kenntnisse hast, musst du es nichts anschreiben.

Nur das Wissen was ein String macht und ist hilft dir hierbei nicht groß weiter.

1
CatsEyes  06.08.2020, 19:31
@VeoBlack

Zu komplex für den Anfang! Was so relativ einfach aussieht, bedarf vieler Einzelschritte!

0

Da hat wohl einer einiges falsch verstanden!

Jede Programmiersprache hat ihre eigene Syntax und eigene Befehle. Das ist das gleiche wie jeder Mensch ein eigenen Charakter hat.

Z.b. sind die Stärken von Python die KI Entwicklung, von C dann eher Treiber und Kernel...

Du siehst jede Programmiersprache hat ihre Einsatzgebiete. Um Spiele mit Unity entwickeln zu können brauchst du Kenntnisse von C# und der UnityAPI. Bei Unreal währe es dann C++ und die UnrealAPI.
Am besten überlegst du was du programmieren willst, denk immer daran ein erreichbares Ziel zu verfolgen, und suchst dir dann die passende Sprache. Danach ist es eher learning by doing!

Für den Anfänger empfehle ich immer Java und C#. Mit Java und der SpigotAPI kannst du Minecraft Server Plugins schreiben, mit C# und Unity spiele bauen.

Viel erfolg, LG goldmensch

VeoBlack 
Fragesteller
 06.08.2020, 18:37

Hey, Danke für deine Antwort, dennoch habe ich 1 frage, Wenn ich Grundkenntnisse habe (Strings, methoden, Vairablen usw...), und ich mein erstes Programm dann schreibe das auf den command "Hallo" Antwortet, wie kann ich mich dann immer mehr steigern um "aufwendigere" projekte zu machen? bzw. wie kann ich mehr dazu lernen wenn ich die Grundkenntnisse schon beherrsche?

1
Lamanini  06.08.2020, 18:43
@VeoBlack

Nachdem du dich mit Methoden auseinandergesetzt hast kannst du dir Klassen angucken, dann geht es für dich in Richtung Objektorientierung.

1
goldmensch409  06.08.2020, 18:45
@VeoBlack

Wenn du 1 Projekt fertig hast, dann suche dir ein neues anspruchvolleres Projekt. Denk dran es muss für dich machbar sein und sollte ca 1 - 3 Monate dauern. (Wenn du alles selber machen willst)

1

Hallo VeoBlack.

Das Beste wird sein, du schaust dir tiefgründigere Tutorials an, wo Spiele von Grund auf erstellt werden. Bei denen man die Übungen mitmachen kann und nach und nach die Logik dahinter versteht. Gut finde ich dafür Plattformen wie Unity. Das kostet zwar ein wenig. Am Anfang meist nur 15,- € für einen Kurs. Allerdings ist es oft Umfangreicher als auf YouTube und du hast die Möglichkeit den Mentoren fragen zu stellen, wenn du mal was nicht weißt.