Programmieren in Pascal: Zahlenraten und Programmieren in C: Unterschied zwischen den Seiten
(Unterschied zwischen Seiten)
Zur Navigation springen
Zur Suche springen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
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. | ||
+ | * Oder Sie programmieren einfach hier und jetzt [https://www.onlinegdb.com/online_c_compiler online]. | ||
− | + | == Grundsätzliches Wissen für angehende Programmierer/-innen == | |
+ | [[Datei:Geany.png|mini|links|Die Entwicklungsumgebung GEANY in Aktion auf dem Raspi 400.]] | ||
+ | * 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> | <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 == | |
− | + | * Bedingungen sind '''WENN-DANN-Anweisungen'''. | |
− | + | * In C ist das entsprechende Schlüsselwort '''if'''. | |
− | + | * Der weitere Programmlauf hängt dann von '''Bedingungen''' ab: | |
− | + | <pre> | |
− | + | > größer als | |
− | + | < kleiner als | |
+ | == gleich | ||
+ | != ungleich | ||
+ | >= größer oder gleich | ||
+ | <= kleiner oder gleich | ||
+ | </pre> | ||
+ | * Beispiel: Ob eine eingegebene Zahl größer oder kleiner 1 ist soll in Worten ausgegeben werden: | ||
+ | <pre> | ||
+ | #include <stdio.h> | ||
− | + | int nZahl; | |
− | |||
− | |||
− | |||
− | + | int main() | |
+ | { | ||
+ | printf ("Bitte geben Sie eine Zahl ein: "); | ||
+ | scanf ("%d", &nZahl); | ||
− | + | if (nZahl > 1) | |
− | + | printf ("Die Zahl %d ist größer als Eins. \n", nZahl); | |
− | + | else | |
− | + | printf ("Die Zahl %d ist kleiner als Eins. \n", nZahl); | |
− | + | } | |
− | < | + | </pre> |
+ | * Die Befehle nach ''else'' werden immer ausgeführt, wenn <b>das Gegenteil</b> der Bedingung erfüllt ist. | ||
+ | * Das Gegenteil von '''gleich''' ist dann '''ungleich''', das Gegenteil von '''größer''' ist '''kleiner''' und umgekehrt. | ||
+ | * Man könnte ''else'' also mit ''sonst'' übersetzen: Wenn...Sonst. | ||
− | + | == Fallunterscheidungen == | |
− | + | * Bei Fallunterscheidungen wird jeder '''Bedingung ein Programmlauf''' zugeordnet. | |
− | + | * In C sind die entsprechenden Schlüsselwörter '''switch''' und '''case'''. | |
− | + | == Schleifen mit Zähler == | |
+ | * Bei Zählerschleifen werden Schlüsselwörter eine '''bestimmte Anzahl mal''' wiederholt. | ||
+ | * Dabei läuft eine Variable mit, die bei jedem Durchlauf '''verändert''' wird. | ||
+ | * In C ist das entsprechende Schlüsselwort '''for'''. | ||
− | + | == Kopfgesteuerte Schleifen == | |
− | + | == Fußgesteuerte Schleifen == | |
− | + | == Dateien == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Version vom 26. Juli 2022, 14:47 Uhr
Inhaltsverzeichnis
Programmieren in C auf dem eigenen Computer
- 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 hier (Windows, MacOS).
- Auf einem Raspberry Pi kann man einfach Geany benutzen.
- Oder Sie programmieren einfach hier und jetzt online.
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
"Starte das Auto"
- 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):
int main () { // Hier startet das Hauptprogramm printf ("Zahlenraten - ich denke mir eine Zahl und Du errätst sie. \n"); }
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:
int nGedachteZahl;
- Das "n" vor dem Namen "GedachteZahl" ist nicht notwendig. Es ist aber 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:
int nGedachteZahl = 24;
- 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:
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"); }
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 nicht krisensicher.
Bedingungen
- Bedingungen sind WENN-DANN-Anweisungen.
- In C ist das entsprechende Schlüsselwort if.
- Der weitere Programmlauf hängt dann von Bedingungen ab:
> größer als < kleiner als == gleich != ungleich >= größer oder gleich <= kleiner oder gleich
- Beispiel: Ob eine eingegebene Zahl größer oder kleiner 1 ist soll in Worten ausgegeben werden:
#include <stdio.h> int nZahl; int main() { printf ("Bitte geben Sie eine Zahl ein: "); scanf ("%d", &nZahl); if (nZahl > 1) printf ("Die Zahl %d ist größer als Eins. \n", nZahl); else printf ("Die Zahl %d ist kleiner als Eins. \n", nZahl); }
- Die Befehle nach else werden immer ausgeführt, wenn das Gegenteil der Bedingung erfüllt ist.
- Das Gegenteil von gleich ist dann ungleich, das Gegenteil von größer ist kleiner und umgekehrt.
- Man könnte else also mit sonst übersetzen: Wenn...Sonst.
Fallunterscheidungen
- Bei Fallunterscheidungen wird jeder Bedingung ein Programmlauf zugeordnet.
- In C sind die entsprechenden Schlüsselwörter switch und case.
Schleifen mit Zähler
- Bei Zählerschleifen werden Schlüsselwörter eine bestimmte Anzahl mal wiederholt.
- Dabei läuft eine Variable mit, die bei jedem Durchlauf verändert wird.
- In C ist das entsprechende Schlüsselwort for.