DiFü-logo
Start Start
Bitte trage eine gültige E-Mail-Adresse ein.
Bitte trage dein Passwort ein.
Passwort vergessen?

Mit einer registrierten E-Mail-Adresse kannst du deinen Fortschritt speichern.

Bitte trage eine gültige E-Mail-Adresse ein.
Bitte trage ein Passwort ein.

Für die Ausstellung von Zertifikaten benötigen wir zusätzlich deinen Namen und dein Geburtsdatum.

Bitte trage einen Namen ein.
Bitte bestätige unsere AGB um fortzufahren.

2. Programmieren – wie geht das?

  • Programmcode besteht immer aus einer Abfolge von Anweisungen. Statt „Nimm drei Eier und 500 g Mehl und verrühre alles“ könnte ein Computerprogramm den Code „Warte auf die Tastatureingabe, addiere dann den Wert zu dem bisherigen hinzu und zeige anschließend das Ergebnis an“ enthalten. Diese Folge von Anweisungen könnte etwa in einem Programm für einen Taschenrechner enthalten sein.

    Im Code werden diese Anweisungen nach dem Baukastenprinzip montiert. In der Programmierung greift man dafür regelmäßig zurück auf Entscheidungen, Schleifen, Variablen, Funktionen und Kommentare:

    Entscheidungen funktionieren nach dem Prinzip „wenn … dann … sonst …“. Zum Beispiel: „Wenn die Straße eine Einbahnstraße ist, dann biege rechts ab und danach wieder links, sonst gehe geradeaus weiter“. Oder im Fall des Taschenrechners: „Wenn das Gleichheitszeichen gedrückt wird, dann zeige das Ergebnis an, sonst warte auf weitere Eingabe“.

    Schleifen nehmen uns Arbeit ab, wenn einzelne Anweisungen mehrfach ausgeführt werden sollen, solange eine Bedingung nach dem Muster „wenn … dann …“ erfüllt ist.

    Statt „gehe geradeaus, dann geradeaus und dann noch mal geradeaus“ würden wir auch normalerweise sagen: „Gehe 3 x geradeaus.“ Genauso funktioniert die Schleife. „Solange es geradeaus weitergeht, gehe geradeaus“ wäre ein Beispiel für eine Schleife mit einer Bedingung.

    Variablen werden genutzt um etwas zwischenzuspeichern. Das ist wie eine Kiste, in die wir etwas hineinlegen und später wieder herausnehmen können – oder ein Block, auf den wir uns eine Notiz machen, die wir später wieder benötigen. Zum Beispiel eine Strichliste, wie viele Kuchen wir bereits gebacken haben. Immer wenn wieder einer fertig geworden ist, machen wir einen weiteren Strich, erhöhen also unsere Variable „Kuchenanzahl“ um den Wert 1. Am Ende eines Kuchenbacktages können wir auf unsere Liste schauen und ablesen, wie viele Kuchen gebacken wurden.

    Funktionen (manchmal auch Methoden genannt) sind Programmteile, die wir wiederverwenden können. Nämlich dann, wenn etwas ähnlich wie bei einer Schleife öfter gemacht werden soll, aber nicht direkt hintereinander. Beispielsweise könnte die Funktion die Anweisungen enthalten, zum Kühlschrank zu gehen, etwas herauszunehmen und auszupacken. Das könnte dann einmal für die Eier genutzt werden und etwas später für Butter, ohne dass man erneut alle Anweisungen einfügen muss. Dies macht die Programmierarbeit leichter und kann auch helfen den Programmcode leserlicher zu machen.

    Kommentare sind auch ein wichtiger Bestandteil von Programmen. Der Computer überliest sie einfach, als ob sie gar nicht da wären. (Um genau zu sein, ignoriert sie schon der Compiler.) Wir Menschen hingegen können sie nutzen, um Erklärungen und Notizen zu machen, was unser Programmcode machen soll. So kann jemand anderes besser nachvollziehen, was wir hier programmieren wollten. Häufig hilft einem das auch selbst, wenn man nach einer längeren Pause versucht seinen eigenen Code wieder zu verstehen.

  • Um sich auch unabhängig von der verwendeten Programmiersprache über Algorithmen austauschen zu können, wird sogenannter Pseudocode genutzt. Pseudocode hat keine eindeutigen Schreibvorgaben, wird aber ganz ähnlich wie eine Programmiersprache geschrieben. Dabei werden die Eigenheiten einzelner Sprachen (zum Beispiel wann welche Klammer wo gesetzt werden muss, oder mit welchem Befehl ein Datenzugriff zu erfolgen hat), weggelassen oder mit Wörtern aus der natürlichen Sprache ersetzt.

    Ein Beispiel um einen Brief zu schreiben und abzusenden könnte so aussehen:

    Schreibe Text auf Blatt Papier
    Falte Blatt Papier
    Stecke Blatt Papier in einen Umschlag
    Klebe Umschlag zu
    Wenn Adresse des Empfängers bekannt dann
    schreibe Adresse auf den Umschlag
    sonst
    suche Adresse im Adressbuch
    schreibe Adresse auf den Umschlag
    Gehe zur Postfiliale
    Wenn Briefgewicht < 20g dann
    kaufe Briefmarke mit Wert 85 Cent
    sonst
    kaufe Briefmarke mit Wert 1 Euro
    Klebe Briefmarke auf den Umschlag
    Wirf Brief in Briefkasten

    Wie man sieht, ist dieser Text vergleichsweise gut verständlich. Gleichzeitig lässt er sich sehr leicht in den richtigen Programmcode der jeweiligen Programmiersprache, die man kennt, abändern.

    Pseudocode lässt sich auch prima als Diagramm darstellen. Man spricht dann von einem Struktogramm. Entscheidungen, Schleifen usw. werden darin noch einmal deutlicher.

    Ähnlich wie Pseudocode funktionieren Blockprogrammiersprachen. Bei Ihnen werden einzelne Programmbauteile als grafische Blöcke aneinandergesteckt. Dadurch, dass man die Programmblöcke nicht selbst tippt, sondern vorgefertigte Bauteile verwendet, sind Tippfehler ausgeschlossen. Gerade am Anfang ist das praktisch – man kann sich ganz auf das algorithmische Denken konzentrieren und muss nicht auf die Schreibweisen achten. Gleichzeitig helfen die Blöcke bei der Strukturierung der Programme und ihre Farben und Formen geben Hinweise wie die einzelnen Teile ineinandergreifen.

    Die bekannteste Blockprogrammiersprache ist Scratch. Sie wird verwendet, um kleine Animationen, interaktive Comics und einfache Spiele zu erstellen. Ein Programm, mit dem man etwa eine Spielfigur nach rechts bewegt, könnte so aussehen:

    Hier ist bereits eine Schleife mit eingebaut und es ist direkt die Einrückung des Befehls, der wiederholt werden soll, zu sehen: „gehe 5er Schritt“. Auch die Bedingung, wann „Aua!“ gesagt werden soll, ist hier leicht ersichtlich. Ein eigenes erstes Programm ist mit einer solchen Programmiersprache also schnell erstellt.

    Der Nachteil solcher Sprachen ist ihre Begrenztheit. Es lässt sich nur programmieren, was bereits als Block angelegt ist. Deswegen haben sie auch immer ein bestimmtes Ziel. Bei Scratch geht es um Spiele und Geschichten. Wir könnten damit kein Programm erstellen, das z. B. den Wetterbericht verschiedener Webseiten vergleicht.

  • Obwohl es heute Hunderte Programmiersprachen gibt, haben sich einige über Jahrzehnte hinweg bewährt und andere Sprachen in ihrer Entwicklung beeinflusst (Wikipedia hält eine aufschlussreiche Zeittafel bereit). Werfen wir einen Blick auf C und C++, auf Java, JavaScript und Python.

    C wurde im Jahr 1972 entwickelt und ist damit schon recht alt. 1983 kam C++ dazu, das auf C basiert. Es erweiterte die Sprache um die Möglichkeiten des objektorientierten Programmierens (dazu später mehr).

    Inzwischen gibt es für beide Sprachen mehrere Updates. Die Sprachen gelten als besonders nah am Maschinencode, obwohl sie doch eine höhere Programmiersprache sind. Das hat den Vorteil, dass Programme, die mit C/C++ geschrieben werden, sehr effizient sind und nur wenig Speicher und Rechenzeit benötigen. Unsere heutigen Betriebssysteme sind meist in C geschrieben und auch kleine Geräte, die kein eigenes Betriebssystem haben, z. B. Microcontroller in Kaffeemaschinen oder kleine Roboter, werden meistens damit programmiert.

    Dadurch, dass sie so nah am Maschinencode sind, fehlen ihnen aber auch die Vorzüge anderer Programmiersprachen. Manchmal kann es zu unerwartetem Verhalten kommen, wenn man nicht genau aufpasst. Deswegen gelten sie als nicht besonders geeignet für den Einstieg ins Programmieren.

    „Hello World“ in C:

     

    #include <iostream>
    int main() {
        std::cout << "Hallo Welt!" << std::endl;
        return 0;
    }

    Java ist eine sehr moderne Programmiersprache. Ein besonderer Vorteil ist ihre Plattformunabhängigkeit. Das heißt: Während man andere Sprachen nicht überall einsetzen kann oder Befehle austauschen muss, um sie auf Windows-, macOS- oder Linux-Geräten zu benutzen, ist dies bei Java nicht nötig. Die Sprache wird beispielsweise bei Android-Apps, PC-Programmen oder in Autos verwendet. Der Preis dafür ist allerdings, dass Programme in Java mehr Systemressourcen bei der Ausführung benötigen.

    „Hello World“ in Java:

     

    public class HalloWelt {
        public static void main(String[] args) {
        System.out.println("Hallo Welt!");
        }
    }

    JavaScript wird oft für interaktive Webseiten verwendet. Die Sprache eignet sich aber auch für Apps, weil sie in jedem Browser ausgeführt werden kann. So kann sie sowohl für Apple-Smartphones als auch Android-Smartphones genutzt werden. Das Programm läuft dann bei beiden in einem unsichtbaren Browser und die doppelte Programmier-Arbeit entfällt. Aber auch Teile von Betriebssystemen, die erst unsere klickbaren Fenster ermöglichen, oder Spiele, werden damit programmiert. JavaScript ist übrigens nicht verwandt mit Java, es sind zwei ganz unterschiedliche Sprachen.

    „Hello World“ in Javascript:

     

    function halloWelt() {
        alert('Hallo Welt!');
    }
    window.onload = halloWelt;

    Python gilt als sehr modern und ist eine der beliebtesten Einsteigersprachen. Der Name kommt nicht von der Schlange (obwohl sie Teil des Logos ist), sondern von der Komikergruppe Monty Python. Die Sprache ist für viele verschiedene Anwendungen geeignet und läuft auch auf vielen Plattformen.

    Ziel der Entwickler war es, eine möglichst einfache und übersichtliche Sprache zu entwickeln. In Python werden zum Beispiel keine geschweiften Klammern gesetzt, um den Code zu strukturieren. Das passiert stattdessen mit Einrückungen. Auch enthalten Python-Programme nur einen Befehl pro Zeile.

    Mit Python lassen sich Programme besonders schnell schreiben. Außerdem gibt es inzwischen sehr viele Zusatzmodule für die Sprache, sodass sie heute auch von Data Scientists und im KI-Bereich gerne eingesetzt wird.

    „Hello World“ in Python:

     

    print('Hallo Welt!')
  • Nahezu alle modernen Programmiersprachen unterstützen objektorientierte Programmierung (OOP). Gemeint ist damit ein Programmierstil, also eine Art, beim Programmieren zu denken. In der OOP geht es darum, den Code so aufzuteilen, wie man es von Gegenständen in der echten Welt gewöhnt ist. Man erstellt sogenannte Objekte, die Eigenschaften haben können und Interaktionsmöglichkeiten bieten.

    Angenommen, in einem Spiel sollen mehrere Fahrzeuge vorkommen. Ohne Objektorientierung müsste jedes Fahrzeug einzeln und unabhängig von den anderen programmiert werden. Die objektorientierte Denkweise ist hier nicht nur intuitiver, sondern auch leichter, weil nicht alle Details immer wieder angelegt werden müssen: Es wird eine Klasse namens „Fahrzeug“ angelegt, und dieser Klasse werden Eigenschaften wie z. B. „Farbe“ zugewiesen und eine Funktion wie „fahren“.

    Dazu ließen sich Unterklassen anlegen, z. B. „Auto“ oder „Zweirad“. Jede Unterklasse kann dann weitere Eigenschaften oder noch mehr Unterklassen haben. Für „Zweirad“ könnten es „Motorrad“ und „Roller“ sein. So lassen sich leicht mehrere Objekte erzeugen – in diesem Fall Fahrzeuge – und jedes Auto oder Motorrad hätte auch automatisch die Eigenschaft der übergeordneten Klasse, also hier „Farbe“ und die Funktion „fahren“.

Mein Wissen üben Gelernt

Frage 1 | 5
  -