Tutorial: Programmieren lernen
Programmierer Tutorial: Teil 1
Hallo,
da hier immer wiedr Fragen auftreten, welche Literatur man verwenden kann, um Programmieren zu lernen, oder wie man es überhaupt lernen kann, starte ich hier den Versuch in einer Art "tutorial" ein paar Einsteigertipps. Ich werde mich auf keine Programmiersprache hier festlegen (zumindest in den ersten 5 Teilen nicht) und auch keine direkten Büche einer Programmiersprache empfehlen. Vielmehr geht es mir darum, aufzuzeigen, was Programmieren ist, was man braucht und wie man es lernen kann. In diesem teil heute, möchte ich ein paar allgemeine Dinge klären.
Zuerst sei gesagt, dass es erstmal _vollkommen_ egal ist, weche Porgrammiersprache man am Anfang lernt. Ich lese hier immer wieder, dass ein haufen Leute C++ lernen wollen ... und wenn man Sie nach den Gründen fragt, wissen sie noch nicht mal wieso. Ich will C++ keinenfalls schlecht machen, aber grundlegende Konzepte begreift man in absolut jeder Programmiersprache. Nun kommen wir zu den Vorrausetzungen. Also was brauchst du, wenn du Programmieren lernen willst:
Das wichtigste von allem, ist ein starker Willen. Du musst wirklich 100% dahinter stehen. Du musst es 100% wollen. Programmieren ist ein langwieriger prozess. Beispielsweise wie mit Modellbau. man braucht Zeit, Geduld und muss mit Niederlagen fertig werden können. Wie bei allem ist es so, dass man seine Ziele nicht zu hoch stecken darf. Fast jeder Programmiereranfang beginnt mit einem Programm welches nur Eine Konsolenausgabe hat. Das ist frustrierend, da die meisten ja Spiele und so entwickeln wollen. Aber lasst euch ermutigen ... hinter jeder Grafik steht ein komplexes Programm...
Als zweite Vorrausetzung brauchst du am Anfang etwas, später etwas mehr mathematisches Verständnis. Gleichungen lösen, Funktionsauswertung, logische umformungen sollten geläufig sein. Assosiativ, Distrubitivgesätze und Mengenleere sind ein muss. Später kommt einiges hinzu... Ohne Mathematik gehts nun mal leider nicht. Schließlich muss man dem Programm ja exakt sagen, wass es machen soll. Und das geht nunmal am besten in der Sprache der Mathematik.
Das dritte was du brauchst ist realismus. Viele in Foren schreiben "Ich brauche ein Programm zum Programmieren". Lass dir gesagt sein, dass die meisten Programmiersprachen wie folgt funktionieren: Du gibst in ein einer bestimmten Sprache einen Text ein, dieser wird durch ein Programm gejagt und raus kommt dann dein Programm. Also Programmieren hat _NICHTS_ mit Leveldesignern oder so zu tun. Viele denken, eine Programmiersprache kann man mit klicken mit der maus erlernen.
Die vierte Vorrausetzung ist ganz simple: Du brauchst diverse Computerkenntnisse. Folgende Sachen sollten beherrscht werden: Was ist ein texteditor. Wie bediehne ich ihn? Was ist eine Konsole? was sind Umgebungsvariablen. Wie gehe ich mit der Konsole um. Was für Promt Befehle hat mein Betriebsystem?
Wie du siehst ... ist das einiges was gefordert wird. Aber wenn du das mitbringst, stehen die alle Türen offen. Dernn der Grundsatz der Informatik lautet: "Alles was sich exakt beschreiben lässt, kann programmiert werden.".
Aufgabe 1: Verschaffe dir auf Wikipedia einen Überblick, welche Programmiersprachen es gibt.
Aufgabe 2: Verneine den Satz: "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen". (schwer)
Lösungen im nächstem Teil.
---
Bei Intresse an weiteren Tutorial-teilen, bitte ich um Feedback --> Umfrage!
Antworten zum ersten Teil
Hallo,
ich bin überrascht, dass schon nach wenigen Minuten 4 Benutzer, das toll fanden :-) Deswegen mache ich mich gleich dran, die Antworten auf meine 2 Fragen zu schreiben.
Die Fragen erscheinen anfangs komisch, haben aber genau mit der ersten Lektion zu tun:
Antwort 1:
Die Frage soll dir eigentlich nur bestätigen, was ich am Anfang gesagt habe. Das es nicht darum geht, eine Programmiersprache zu können, sondern Programmieren zu lernen. Anhand der Liste Liste der Programmiersprachen - Wikipedia erkennst du die Vielfalt. Wir werden uns demnächst eine oder zwei Sprachen aussuchen und Anfangen zu programieren.
Antwort 2:
Auch wenn es nicht so scheint, ist diese Frage schwer zu beantworten. In der Programmierung geht es oft um folgende Sachverhalte: "Mache X genau dann, wenn Y" o.ä. Man hat also eine Aussage und muss das versuchen das dem Rechner begreiflich zu machen. Wir müssen deshalt versuchen wie ein Computer zu denken. Und das fängt damit an, dass wir dies exakt tun müssen. Wir müssen exakte Probleme formulieren, eh wir unser erstes Programm schreiben können und das soll hiermit beispielhaft beschrieben werden.
"Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." ist eine Aussage. Uns interresiert erstmal, wann die Aussage wahr wird. Also wann stimmt, das was da steht? Dazu bilden wir mal 2 Teilaussagen:
a. "Ins schwimmbad gehen" und
b. "Eis essen gehen"
Außerdem bediehnen wir uns einem Mittel der Logik / Programmierung. Wir bezeichnen wahre Aussagen mit true oder 1 und falsche Aussagen mit false oder 0. Ok. Analysieren wir, was da steht. Wann wird "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." wahr? Genau dann, wenn entweder a oder b wahr wird. Das ganze schreiben wir mal sauber auf:
a | b | "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen."
--------------------------------------------------------------------
0 | 0 | 0
1 | 0 | 1 (*)
0 | 1 | 1
1 | 1 | 0 (**)
Die Tabelle ist eigentlichganz einfach zu verstehen: Eine 0 steht wie oben bereits erklärt für eine falsche Aussage und eine 1 für eine wahre. Picken wir uns mal die Zeile mit dem (*) raus. Dort steht: Ich gehe ins schwimmbad (Aussage a ist wahr), gehe aber kein Eis essen (Aussage b). Das Resultat der Gessamtaussage ist also wahr (deswegen steht in der letzten Spalte auch eine 1). In der Zeile (**) ist das resultat jedoch falsch: Denn da steht: Ich gehe schwimmen und gehe eis essen ... das stimmt aber nicht mit Aussage "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." überein. Deswegen ist das Resultat (3. Spalte falsch).
So die eigentliche Aufgabe war ja aber nun, diese Aussage "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." zu verneinen. Was passiert wenn man Von einer Aussage das gegenteil meint? Richtig. In der Resultatsspalte drehen sich die Werte um: Also aus 0 wird 1 und aus 1 wird 0. Zeichen wir das nochmals auf:
a | b | Nicht "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen."
--------------------------------------------------------------------------
0 | 0 | 1 (*)
1 | 0 | 0
0 | 1 | 0
1 | 1 | 1 (**)
Jetzt erkennen wir folgendes: Die Gegenteilige Aussage von "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." wird offenbar immer dann war, wenn ich nicht a und nicht b mache (die Zeile (*)) oder wenn ich a und b mache (Die Zeile (**)). Denn in diesen Zeilen steht das Resultat 1. Diese Erkenntnis müssen wir nun in einen deutschen Satz wieder umformen. Dazu lesen wir einfach ab, für was das a und b stand. Also die Lösung heißt exakt:
Die Verneinung von "Ich gehe heute entweder ins Schwimmbad oder ein Eis essen." lautet: Ich gehe heute nicht ins Schwimmbad und kein eis essen oder ich gehe heute ins schwimmbad und eis essen."
Wenn man jetzt nochmal logisch nachdenkt ist das auch ganz logisch: Bei der ersten Aussage war genau die Konstellation erlaubt, wo man genau eins von beiden gemacht hat. Und bei der Verneinung ist eben genau diese Konstellation verboten: entweder man macht garnicht oder beides ....
Puhhh... Die Aufgabe war garnicht so einfach. Ich hoffe Ihr seid mitgekommen. Wenn nicht, könnt ihr ja nohmal nachfragen... aber am besten in einem anderem Thread. Zum Abschluss noch eine Anwendung für was man das braucht:
Ihr habt beispielsweise in eurem Programm ein befehl folgender Art:
"Wenn x < 1000 dann mache das und das". (x sei eine variable) Jetzt entscheidet ihr euch um und wollt die Aussage verneinen. 99% der deutschen würden als gegenteile aussage nehmen: "wenn x > 1000 dann mache das und das". Also umganssprachlich ist das gegenteil von "kleiner" ... "größer". In der Informatik ist das anders. Das Gegenteil von kleiner ist alles, was eben NICHT kleiner ist: Also größer oder gleich. Deswegen muss die exakte Negation so lauten: "wenn x > 1000 oder x = 1000 dann mache das und das"
Ich verspreche euch, dass solche Theorievorlesungen die seltenheit bleiben. Ich will euch bloß mit auf den Weg geben, dass Ihr umbedingt nachdenken sollt. Der kleinste Befehl kann katastrophale Auswirkungen haben. Versucht die Antwort zu verstehen. Ihr müsst in Zukunft in der Lage sein normale menschliche probleme im rechner nachzubilden und dazu braucht ihr exaktheit. Ich hoffe ihr habt es verstanden. Viel spaß beim Tüfteln. Die nächste Teil kommt Ende der Woche. Da werden wir dann praktisch tätig.
lg,
Marc