|
2 | 2 |
|
3 | 3 | Die erste Lektion beschäftigt sich alleine mit der Frage, was eigentlich eine |
4 | 4 | Programmiersprache überhaupt ist und wie wir den Computer dazu bringen können, |
5 | | -daraus etwas zu machen, was er ausführen kann. In guter alter |
6 | | -Programmiertradition tun wir das an dem simpelsten aller Programme: Einem, was |
7 | | -einfach nur ein „Hallo Welt!“ ausgibt. |
8 | | - |
9 | | -Wie bringen wir also den Computer dazu, diese Ausgabe zu generieren? Dass er |
10 | | -keine natürliche Sprache versteht, sollte klar sein -- intern besteht er aus |
11 | | -lauter Transistoren (wenn ihr nicht wisst, was das ist, denkt an winzige |
12 | | -Schalter), die nur die Zustände „an“ und „aus“ kennen, wir müssen also die |
13 | | -Anweisung „gebe Hallo Welt aus“ in ein Format übersetzen, was nur „an“ und |
14 | | -„aus“ benutzt. |
15 | | - |
16 | | -Früher wurde genau dies benutzt - meistens über Lochkarten, die vom Computer |
17 | | -gelesen wurden, „ein Loch“ war dann zum Beispiel ein „an“ und „kein Loch“ war |
18 | | -„aus“, so wurde dann das Programm in Reihen angeordnet und jede Reihe entsprach |
19 | | -einem Befehl oder einem Parameter für diesen Befehl. Dieses Format nennt sich |
20 | | -„Maschinensprache“ und ist immer noch das, was wir heute dem Computer |
21 | | -übergeben, nur, dass wir keine Lochkarten mehr benutzen, sondern Dateien, in |
22 | | -denen lange Ströme von codierten 0en und 1en stehen. |
23 | | - |
24 | | -Nun kann man sich vorstellen, dass es ganz schön anstrengend ist, ein |
25 | | -umfangreiches Programm in 0en und 1en zu beschreiben. Deswegen benutzt man |
| 5 | +daraus etwas zu machen, was er ausführen kann. |
| 6 | +Traditionell wird hierfür ein Programm herangezogen, das „Hallo Welt!“ ausgibt. \\ |
| 7 | + |
| 8 | + |
| 9 | +\textbf{Wie entsteht ein Programm?} |
| 10 | + |
| 11 | +Wie bringen wir also den Computer dazu, diese Ausgabe zu generieren? - intern besteht er aus |
| 12 | +vielen Transistoren (wenn ihr nicht wisst, was das ist, denkt an winzige |
| 13 | +Schalter - näheres folgt im späteren Studium), die nur die Zustände „an“ und „aus“ kennen. |
| 14 | +Wir müssen also die Anweisung „gebe Hallo Welt aus“ in ein Format übersetzen, was nur „an“ und |
| 15 | +„aus“ bzw. „0“ und „1“ benutzt. |
| 16 | + |
| 17 | +Nun ist es umständlich, ein umfangreiches Programm in 0en und 1en zu schreiben. Deswegen benutzt man |
26 | 18 | heutzutage so genannte Hochsprachen, um Programme zu beschreiben. Wir |
27 | 19 | beschreiben also den Programmablauf in einer von Menschen lesbaren und |
28 | | -verstehbaren Sprache -- wir benutzen hier \Cpp. Die Programmbeschreibung in |
29 | | -\Cpp legen wir dabei in einer Textdatei ab, meistens hat diese die Endung |
30 | | -\texttt{.cpp}. |
| 20 | +(leicht) verstehbaren Sprache, welche später in 0en und 1en übersetzt wird und anschließend vom Computer lesbar ist und ausgeführt werden kann. |
| 21 | +Wir benutzen die Hochsprache \Cpp. Die Programmbeschreibung in |
| 22 | +\Cpp legen wir dabei in einer einfachen Textdatei ab. Damit wir auf anhieb erkennen, um welche Hochsprache es sich handelt, hat es sich etabliert die Endung |
| 23 | +\texttt{.cpp} an den Dateinamen anzuhängen. |
31 | 24 |
|
32 | | -Diese Beschreibung des Programms übergeben wir dann an einen \emph{Compiler}, |
33 | | -der daraus dann Maschinencode generiert, den wir wiederum dem Computer zur |
34 | | -Ausführung geben können. Der Compiler für \Cpp, den wir in diesem Kurs |
| 25 | +Die Übersetzung aus der von Menschen lesbarer Hochsprache in Maschinensprache erledigt für uns der \emph{Compiler}. |
| 26 | +Der Compiler generiert aus der Textdatei also Maschinencode generiert. Der Compiler für \Cpp, den wir in diesem Kurs |
35 | 27 | benutzen wollen, heißt \texttt{g++}. |
36 | 28 |
|
37 | | -Dem Compiler übergeben wir die zu kompilierende Datei als Parameter, indem wir |
38 | | -sie im Terminal dahinter schreiben: |
39 | | -\begin{center} |
40 | | - \texttt{g++ zuKompilierendeDatei.cpp} |
41 | | -\end{center} |
42 | | -Wir können zusätzlich den Namen der Ausgabedatei festlegen, indem wir vor diese |
43 | | -ein \texttt{-o} (o für output) schreiben: |
| 29 | +Vereinfacht sieht der Prozess zur Programmerstellung also wie folgt aus: |
| 30 | + |
| 31 | +\begin{tikzpicture} |
| 32 | + \node (1) at (0,0) [rectangle, draw] {Programmcode schreiben (Hochsprache)}; |
| 33 | + \node (2) at (6,0) [rectangle, draw] {Compilieren}; |
| 34 | + \node (3) at (9,0) [rectangle, draw] {Ausführen}; |
| 35 | + \draw[->, blue!50, very thick] (1) to (2); |
| 36 | + \draw[->, blue!50, very thick] (2) to (3); |
| 37 | +\end{tikzpicture} \\ |
| 38 | + |
| 39 | +\textbf{Wie gehe ich dabei vor?} |
| 40 | + |
| 41 | +Um den Programmcode in Textdatei zu schreiben verwenden wir einen Texteditor. |
| 42 | +Dies kann mit fast jedem einfachen Texteditor bewerkstelligt werden. Wir verwenden beispielsweise im Vokurs gedit unter Ubuntu. |
| 43 | +Unter Windows kannst du den Editor oder notepad++ verwenden, unter MacOS Textedit. |
| 44 | +In der fortgeschrittenen Programmierung werden intelligente Programmierumgebungen verwendet, die jedoch in diesem Kurs vernachlässigt werden. |
| 45 | + |
| 46 | +Um dem Compiler zusagen, welche Textdatei er in ein Programm übersetzen soll, verwenden wird die sogenannte Shell. Vorerst reicht uns zu Wissen, dass die Shell |
| 47 | +ein Werkzeug ist, dem Computer spezifisch zusagen, was er machen soll (mehr dazu im Folgenden Kapitel). In Ubuntu verwenden wir hierzu das Terminal, ebenso in MacOS, |
| 48 | +unter Windows CMD oder Powershell. Die Befehle für \texttt{g++} (dem Compiler für \Cpp) sehen beispielsweise wie folgt aus. |
| 49 | + |
44 | 50 | \begin{center} |
45 | 51 | \texttt{g++ -o outputDatei zuKompilierendeDatei.cpp} |
46 | 52 | \end{center} |
| 53 | +Hierbei legen wir mit dem Parameter \texttt{-o} (o für output) und dem ersten darauf folgenden Argument den Namen der Ausgabedatei fest. |
47 | 54 |
|
48 | | -Nachdem \texttt{g++} uns also ein Maschinencodefile \texttt{outputDatei} |
49 | | -erzeugt hat, können wir es zur Ausführung bringen. Wir tun das, indem wir in |
50 | | -einem Terminal |
| 55 | +Nachdem \texttt{g++} uns also ein Maschinencodefile -- die \texttt{outputDatei} -- |
| 56 | +erzeugt hat, können wir es zur Ausführung bringen. Die kann im Terminal mit einem Punkt und einem Slash vor dem Dateinamen geschehen. Also: |
51 | 57 | \begin{center} |
52 | 58 | \texttt{./outputDatei} |
53 | 59 | \end{center} |
54 | | -eingeben, also einen Punkt, ein Slash und dann den Dateinamen. |
| 60 | + |
| 61 | + |
| 62 | + |
| 63 | +\begin{praxis} |
| 64 | + |
| 65 | + \textbf{Erstes Programm in \Cpp schreiben} |
| 66 | + |
| 67 | + \begin{enumerate} |
| 68 | + \item Öffne einen Texteditor (In Ubuntu unter „Zubehör“ den Editor gedit). |
| 69 | + |
| 70 | + \item Kopiere folgenden Programmcode in den Texteditor und speichere ihn in einer Datei mit dem Namen „helloworld.cpp“ ab. |
| 71 | + Ein näheres Verständnis, des Programmcodes ist an dieser Stelle nicht notwendig. |
| 72 | + \end{enumerate} |
| 73 | + |
| 74 | + \inputcpp{helloworld.cpp} |
| 75 | + |
| 76 | + \textbf{\Cpp-Code komplieren und Programm erstellen } |
| 77 | + |
| 78 | + \begin{enumerate} |
| 79 | + \item Öffne ein Terminal (Konsole), ihr findet sie unter Ubuntu oben links unter „Applications“ als „Terminal Emulator“ oder mittig unten als das zweite Symbol von links. |
| 80 | + \item Wechselt mit \textit{cd [PFAD]} in das Verzeichnis (Ordner), indem ihr eure Textdatei erstellt habt. Was dieser Befehl genau tut und wie er funktioniert, erfahrt ihr in Lektion 2. |
| 81 | + \item In diesem Verzeichnis liegt nun eine Datei mit dem Namen \texttt{helloworld.cpp}. |
| 82 | + Benutzt \texttt{g++}, um diese zu einer Datei \texttt{hello} zu |
| 83 | + kompilieren. Orientiert euch dazu an den folgenden Befehlen. |
| 84 | + \item Führt die Datei \texttt{hello} aus. |
| 85 | + \end{enumerate} |
| 86 | +\end{praxis} |
| 87 | + |
55 | 88 |
|
56 | 89 | Zur besseren Übersichtlichkeit hier der ganze Vorgang noch mal in einem |
57 | 90 | Diagramm: |
|
69 | 102 | } |
70 | 103 | \end{center} |
71 | 104 |
|
72 | | -\begin{praxis} |
73 | | - \begin{enumerate} |
74 | | - \item Öffnet ein Terminal (Konsole), ihr findet dies oben links unter „Applications“ als „Terminal Emulator“ oder mittig unten als das zweite Symbol von links. |
75 | | - \item Wechselt in das Verzeichnis \texttt{vorkurs/lektion01}, indem ihr |
76 | | - \texttt{cd vorkurs/lektion01}\footnote{was dieser Befehl genau tut und wie er funktioniert, erfahrt ihr in Lektion 2} eingebt und enter drückt. |
77 | | - \item In diesem Verzeichnis liegt eine Datei \texttt{helloworld.cpp}. |
78 | | - Benutzt \texttt{g++}, um diese zu einer Datei \texttt{hello} zu |
79 | | - kompilieren. Orientiert euch dazu an den Befehlen von oben. |
80 | | - \item Führt die Datei \texttt{hello} aus. |
81 | | - \end{enumerate} |
82 | | -\end{praxis} |
83 | | - |
84 | | -\inputcpp{helloworld.cpp} |
85 | | - |
86 | 105 | \begin{spiel} |
87 | 106 |
|
88 | 107 | Ihr könnt nun versuchen, den Quellcode selbst zu verändern und damit ein wenig |
|
0 commit comments