|
|
Zeile 1: |
Zeile 1: |
− | == Programmieren in C auf dem eigenen Computer ==
| |
− | [[Datei:Raspi400.jpg|mini|rechts|Der Raspberry Pi 400 für knapp 100.- € zum Anschluss an den Fernseher (hier mit englischem Netzteil!)]]
| |
− | * Um ein Programm in einer Programmiersprache zu schreiben, braucht man ein passendes Übersetzungsprogramm für diese Sprache.
| |
− | * Solche Übersetzungsprogramme übersetzen eine Programmiersprache in die universelle Sprache aller Computer.
| |
− | * Solcher Übersetzungsprogramme heißen '''Compiler'''.
| |
− | * Man benötigt also für C einen C-Compiler und
| |
− | * einen Editor (Textverarbeitung für Programmierer) zum Erfassen des Programms.
| |
− | * Am besten alles zusammen: eine "Integrierte Entwicklungsumgebung (IDE)".
| |
− | * Zum Beispiel diese [https://github.com/Embarcadero/Dev-Cpp/releases hier] (Windows, MacOS).
| |
− | * Auf einem Raspberry Pi kann man einfach [https://de.wikipedia.org/wiki/Geany Geany] benutzen.
| |
| | | |
− | == Grundsätzliches Wissen für angehende Programmierer/-innen ==
| |
− | * Jede Anwendung eines persönlichen Computers, jede Website, jede App ist ein '''Computerprogramm'''.
| |
− | * Computerprogramme sind Listen von '''Anweisungen''', die vom Computer der Reihe nach abgearbeitet werden.
| |
− | * Diese Listen werden in ein Textprogramm eingegeben, in Bits und Bytes übersetzt und dann ausgeführt.
| |
− | * Anweisungen in Programmen bestehen aus '''Schlüsselwörtern und Parametern''', die die Anweisungen genauer spezifizieren.
| |
− | * Ein Beispiel "aus dem richtigen Leben" wäre
| |
− | <pre>"Starte das Auto"</pre>
| |
− | * wobei "Starte" das Schlüsselwort und "das Auto" der Parameter ist.
| |
− | * Ein Schlüsselwort sagt dem Computer, '''was''' zu tun ist.
| |
− | * Ein Parameter erklärt, '''womit''' etwas zu tun ist.
| |
− |
| |
− | == Funktionen ==
| |
− | * Ein Problem wird zur Lösung in viele kleine Probleme zerlegt.
| |
− | * Beispiel: "Kuchen backen" kann in "Mische Mehl, Eier...", "Heize den Backofen", "Knete den Teig" etc. aufgeteilt werden.
| |
− | * Programme können in kleine Abschnitte eingeteilt werden, die einzelne Unter-Aufgaben erfüllen ('''Funktionen''').
| |
− | * Diese Funktionen haben einen festgelegten '''Namen''', '''Parameter''' und können '''Werte''' an das Hauptprogramm zurück geben.
| |
− | * Den '''Typ des Rückgabewertes''' steht vor der Funktion (hier: int = integer = ganze Zahlen).
| |
− | * main ist die ''erste'' Funktion, die in jedem Programm aufgerufen wird. Hier startet also immer das Programm.
| |
− | * In C-Programmen muss es wenigstens ''eine'' Funktion mit dem Namen '''main''' geben.
| |
− | * Von main aus werden andere Funktionen des selben Programms '''aufgerufen''', sofern welche existieren.
| |
− | * Die Hauptfunktion, das ganze Programm, gibt nach der Abarbeitung des Programms einen Wert an den Computer zurück.
| |
− | * Ein einfaches Programm sieht also jetzt so aus ("//" leitet einen Kommentar ein):
| |
− | <pre>
| |
− | int main ()
| |
− | {
| |
− | // Hier startet das Hauptprogramm
| |
− | printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");
| |
− | }
| |
− | </pre>
| |
− |
| |
− | == Variable ==
| |
− | * Variable sind '''benannte Speicherstellen''', in denen Zwischenergebnisse gespeichert werden können.
| |
− | * Variable müssen dem C-Compiler '''erklärt''' werden, damit sie verwendet werden können: sie werden '''deklariert'''.
| |
− | * Da Programme linear (von oben nach unten) ablaufen, sind '''Variablen erst ab der Deklaration''' nutzbar.
| |
− | * Der Compiler muss wissen, was in den Variablen stehen soll: der '''Variablentyp'''.
| |
− | * Typen für Variable in C: Ganzzahlen (int), Fließkommazahlen (float), Zeichen (char)
| |
− | * Eine Deklaration sieht typischerweise so aus: <Typ><Leerzeichen><Name><Semikolon>
| |
− | * Beispiel: <pre>int nGedachteZahl;</pre>
| |
− | * Das "n" vor dem Namen "GedachteZahl" ist nicht notwendig. Es ist aber [https://de.wikipedia.org/wiki/Ungarische_Notation gute Sitte], den Typ (int, also numerisch) im Namen zu erwähnen.
| |
− | * Variable können auch einen Anfangswert (Initialisierung) enthalten, der einfach dahinter geschrieben wird.
| |
− | * Beispiel: <pre>int nGedachteZahl = 24;</pre>
| |
− | * Die Variable nGedachteZahl ist dem Compiler ab diesem Zeitpunkt als Ganzzahl-Speicherstelle bekannt und hat den Wert 24.
| |
− | * Eine nicht initialisierte Variable hat übrigens '''nicht''' den Wert Null sondern einen unbestimmten Wert (Vorsicht!).
| |
− | * In unserem Beispiel brauchen wir zwei Variable: in einer steht die gedachte Zufallszahl, in der anderen die Vermutung des Benutzers.
| |
− | * Nach der Erwähnung des Datentyps kann man weitere Variablen definieren.
| |
− | * Unser Programm sieht bis hierher also so aus:
| |
− | <pre>
| |
− |
| |
− | int nGedachteZahl = 24; // muss erraten werden
| |
− | nVermutung = 0; // sicher ist sicher
| |
− |
| |
− | int main ()
| |
− | {
| |
− | // Hier startet das Hauptprogramm
| |
− | printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n");
| |
− | }
| |
− | </pre>
| |
− |
| |
− | == Ein- und Ausgabe ==
| |
− | * Ein Programm braucht grundsätzlich Anweisungen für die '''Eingabe''', die '''Verarbeitung''' und die '''Ausgabe''' von Daten.
| |
− | * Speziell in der Programmiersprache C gibt es '''keine''' Anweisungen zur Ein- und Ausgabe.
| |
− | * C soll auf sehr vielen Computern nutzbar sein und jedes Computersystem hat andere Funktionen für Ein- und Ausgabe.
| |
− | * Deshalb liegt jedem C-Compiler eine Bibliothek von Dateien bei, die Ein- und Ausgabe des jeweiligen Computersystems ermöglicht.
| |
− | * Die Funktionen in diesen Dateien werden aber alle in der gleichen Art und Weise aufgerufen ("C-Standard-Bibliotheken").
| |
− | * Wir verwenden hier zur Eingabe das Schlüsselwort '''scanf''' und zur Ausgabe '''printf''' wegen ihrer Ähnlichkeit.
| |
− | * Im "echten Leben" tun Sie das bitte nicht: die Funktionen sind [https://dasdev.de/nachteile-von-scanf/ nicht krisensicher].
| |
− |
| |
− | == Bedingungen ==
| |
− | == Fallunterscheidungen ==
| |
− | == Schleifen mit Zähler ==
| |
− | == Kopfgesteuerte Schleifen ==
| |
− | == Fußgesteuerte Schleifen ==
| |
− | == Dateien ==
| |