C++: Die Königsklasse. Die Programmiersprache der Programmiersprachen, die viele zur Verzweiflung gebracht haben. Auch absolute Nerds sind betroffen. Wie ist das zu verstehen. Unter VBA teilten wir mit, dass hin und wieder ein Programmierer ein Problem geschildert bekommt, dass später sich als viel komplizierter herauskristallisiert, als man ahnte.
Ein Beispiel:
Das ist wesentlich für das Erlernen der Programmiersprachen an sich.
Das Problem, dass ein Mensch ein Problem einfach lösen kann. Nun will jemand dies automatisieren. Wir wollen keinen Menschen dafür, sondern ein Computerprogramm muss her.
Er hat einen bestimmten Eingangs-Wert, den es gilt in einer Tabelle einzuordnen! Der Eingangs-Wert kann in den Grenzbereichen normalisiert werden. (Mathematik)
Somit schaut der Mensch in eine Tabelle nach und muss nur schauen, wo wird der Wert eingeordnet. Hierbei wurden zwei Regeln definiert, worin die Einordnung unterschieden wird:
1.) Handelt es sich bei der Tabelle um eine lineare Funktion, dann ist die Einteilung einfach.
2.) Handelt es sich bei der Einordnung um eine Polynome Funktion im Kartesischen Koordinatensystem, so muss man schauen, wie der META-Wert des Eingangs-Wertes definiert ist.
Zusätzlich im zweiten Fall kann eine Poylnome Funktion unterschiedlichen Grades sein. Somit können mehrere Scheitelpunkte (Hochpunkte / Tiefpunkte) vorliegen. Ausschlaggebend ist die META-Information: Eingangs-Wert kann zwischen 1 und 150 liegen! Die Tabelle ist in Zehnerschritten eingeordnet. Da man programmiermäßig ohne weiteres in Echtzeit die Zwischenwerte granular berechnen kann.
Das Ziel also: Es wird der Eingangs-Wert (33) da eingeordnet, der am nächsten an einem Scheitelpunkt liegt.
Es gäbe drei Einordnungen: Von 1 bis 150 (Natürlich wird dies alles hier durch ein Computerprogramm berechnet)
1.)
10
2.)
50
3.)
110
Folgendes ist dabei zu beachten: Liegt der Eingangs-Wert vor dem Scheitelpunkt, so muss aufsteigend eingeordnet werden. Liegt der Wert hinter dem Scheitelpunkt, so muss absteigend eingeordnet werden.
Der Einfachhalber: Scheitelpunkt liegt bei
60, wobei auch dies erst mal durch ein Computerprogramm berechnet werden muss! Somit liegt der Eingangs-Wert (33) vor dem Scheitelpunkt (60) ==> aufsteigende Einordnung!
Das Ergebnis wäre somit 1.) -10-
Alternative 2: Läge der Scheitelpunkt bei (27). Der Eingangs-Wert liegt weiterhin bei (33) ==> absteigende Einordnung!
Zwei Lösungen kämen in Frage: 2.) 50 oder 3.) mit 110. Da 50 näher am Scheitelpunkt und näher am Eingangs-Wert liegt, wäre das Ergebnis somit 2.) 50!
Um das Ganze noch etwas anspruchsvoller zu machen: Es existieren zahlreiche unterschiedliche Eingangswerte und zahlreiche unterschiedliche Tabelleneinordnungen.
Damit werden wir uns in Kapitel IV. beschäftigen.
Worauf es ankommt: Es klingt kompliziert und natürlich kommen Menschen beim Programmieren an Ihre Grenzen. Auch wir, die seit Jahrzehnten programmieren, haben heute einen Vorteil. Wir wissen, dass wir es am Ende lösen werden! All die ganze Geschichte war notwendig, damit man begreift, dass programmieren mehr ist, als viele uns weismachen. Auch die Einstellung eines Menschen gehört dazu. Bist du hartnäckig, gibst du nicht auf, etc...
Während der Phase, (Kompilieren & Linken & Testen & Debuggen) das Problem zu lösen, möchten wir es so darstellen mit ein paar Aussagen:
- "Das verstehe ich nicht!" - Es vergehen Stunden / Tage
- "Das bekommen wir niemals hin!" - Es vergehen Stunden / Tage
- "Das ist unmöglich!" - Es vergehen Stunden / Tage
- "Das kann man nicht lösen!" - Es vergehen Stunden / Tage
- "Wir können das nicht lösen!" - Es vergehen Stunden / Tage
- "Wieso klappt es nicht!" - Es vergehen Stunden / Tage
- "Das ist unlogisch!" - Es vergehen Stunden / Tage
- "Sag, dass schaffen wir nicht!" - Es vergehen Stunden / Tage
- "Was ist denn jetzt wieder Falsch." - Es vergehen Stunden / Tage
- "Ich gebe auf!" - Es vergehen Stunden / Tage
- ....
Während der Phase lass man also immer wieder Bücher - schaute immer wieder im Internet nach und lass erneut immer wieder die Artikel, analysierte seinen Quellcode zum x-ten Male, strukturierte diesen wieder um, man entwickelte neue Bibliotheken, immer wieder testen und immer wieder prüfen! Wenn es nicht passte, fing man wieder von vorne an! Man musste das Problem am Ende selbst lösen. Irgendwann stieg man in die Materie so tief ein, dass man quasi anfing Alles zu beherrschen. Man konnte zu 100% die Logik nachvollziehen. Endlich konnte man das Problem algorithmisch lösen. Endlich konnte man anfangen, den Quellcode zu optimieren. Auch erkennt man, warum es in den Stunden und in den Tagen für einen nicht lösbar war! Man erkennt ganz genau, die Hürden, die man bewältigen musste...
Wenn man das ein paar Mal durchgestanden hat, dann geht man mit Programmieren anders um. Das ist aus unserer Sicht elementar, dass du immer wieder Probleme vorfindest, die genau Dich wieder in die Phase bringen, bis du Herr darin wirst! Nach einiger Zeit und eines Tages wird es zu einem Normalzustand werden und als Mensch gehst du ("entspannt") an so ein Problem ran, dass Dich fordert.
Fazit: Auch wenn am Anfang etwas Unmöglich in Sachen Programmieren erscheint, und während der Phase am liebsten alles hinwerfen willst: Es kommt der Tag, wo du die Lösung finden wirst. Mit jedem weiteren Problem, dem man sich stellt, vergehen immer weniger Tage bis zur Lösungsfindung. Irgendwann tritt der Zustand:
Normal ein.
Nebenbei: Manchmal im Leben ist niemand da, der einen hilft. Sei Gewiss: Man schafft es auch alleine!
Zu jedem Kapitel haben wir bewusst auf interaktive Elemente gesetzt:
- Zu jedem Kapitel findest du zahlreiche Beispiele.
- Umfangreiche Übungen und Aufgaben zu jedem Kapitel.
- Dynamische Quizfragen in jedem Kapitel.
- Von einfachen bis hin zu komplexen Beispielen erlernst du hier die Materie.
- Im Laufe der Zeit entwickeln wir hier konkret umfangreiche Software. Damit du auch lernst, wie Python professionell eingesetzt wird.
- Direkt und Live programmieren.
- Hier ist für jeden was dabei...
- Wir werden das oben beschriebene Problem gemeinsam hier analysieren, erklären, lösen und ausführlich behandeln. In
Kapitel IV.!
Auch, wenn du jetzt hier nicht alles verstehen oder noch weniger verstehen magst, dann bist du genau hier richtig.
Damit das Ganze auch fruchtet, setzen wir Eins voraus:
Bringe Zeit mit, sehr viel Zeit mit...und als Rat geben wir immer wieder mit:
”Lernen und Wiederholen!”
Fangen wir mit C++ an:
Area Log-In | C++ - Entwicklung