Notes 0
Sie können diese Seite ausdrucken oder mit einem PDF-Drucker in ein PDF umwandeln, um Ihre eigenen Notizen hinzuzufügen.
Organisatorisches
- Sind Sie schon im VC-Kurs Inf-Einf-B? Dort: Ankündigungen und Foren für Fragen. Ihre Lösungen laden Sie dort nicht mehr hoch. Sie geben im Terminal mit
inf uploadab; wie das geht, lernen Sie im ersten Tutorium, nachzulesen unter Abgeben mitinf. - Wie eine Woche abläuft, wann welche Übung fällig ist und wofür es Bonuspunkte gibt, steht unter Wie Sie Inf-Einf-B bewältigen.
- Die Vorlesungen werden aufgezeichnet und im Internet veröffentlicht. Die Videos sind allerdings meist erst ein bis zwei Wochen später online; die Notizen stehen am Tag der Vorlesung als Entwurf auf der Website; die Folien und die aktualisierten Notizen folgen ein bis zwei Tage später. Machen Sie sich Notizen!
- Ihre Fragen sind in der Aufzeichnung in der Regel nicht zu hören (ich wiederhole sie).
- Seien Sie furchtlos und stellen Sie Fragen! “Publicly not knowing is valuable!”, siehe auch FAQ-Eintrag zu Fragen
- Die Tutorien starten bereits diese Woche. Im ersten Tutorium richten Sie Ihre Entwicklungsumgebung mit VS CodeVisual Studio Code, der kostenlose Code-Editor von Microsoft, in dem Sie im Kurs programmieren. Glossar → ein und geben mit
hellodie erste Übung ab. Neben der Vorlesung gibt es in Inf-Einf-B nur die Tutorien, keine weiteren Übungstermine. In den Tutorien werden keine Aufgaben „vorgerechnet“; wie ein Tutorium abläuft, steht unter Wie Sie Inf-Einf-B bewältigen. Bilden Sie Lerngruppen, um sich bei den Aufgaben zu helfen.- Sprechen Sie in den Tutorien mit mindestens zwei anderen Personen, die Sie noch nicht kennen! (Um das Eis zu brechen, sagen Sie einfach, dass Sie nur diese Anweisung befolgen.)
- Unterstützung während des Semesters: Wir machen das zusammen! Es gibt verschiedene Angebote, um Sie zu unterstützen:
- Vor der Projektmesse findet ein Hackathon statt, bei dem Sie bis spät in die Nacht mit den Tutorinnen und Tutoren an Ihrem Projekt arbeiten können.
- Vor der Prüfung gibt es einen Study and Code Space, bei dem Sie gemeinsam mit anderen lernen und Unterstützung erhalten können.
- Selbsttests in den Notes: Nach den meisten Abschnitten stehen einige Fragen zum gerade Gelesenen. Die Antwort steht jeweils im Abschnitt davor. Versuchen Sie erst, die Antwort aus dem Gedächtnis zu geben, klappen Sie dann „Antwort“ auf und markieren Sie „Gewusst“ oder „Nicht gewusst“. Das speichert nur Ihr Browser. Wenn Sie sich mit Ihrer E-Mail-Adresse anmelden, schickt Ihnen Pulse die Fragen später per Mail zum Wiederholen (siehe Datenschutz).
- Wichtig: Die Fragen helfen beim aktiven Lesen. Sie sind kein Vorgeschmack auf die Prüfung. Fragen und Antworten auswendig zu lernen reicht nicht zum Bestehen und ist vermutlich auch keine sinnvolle Vorbereitung. Was wirklich hilft, steht in Wie Sie Inf-Einf-B bewältigen.
Willkommen
- Dies ist Inf-Einf-B, ein Kurs zur Einführung in die Informatik, der auf dem bekannten Kurs CS50 (Version aus dem Jahr 2024) basiert, der von David Malan an der Harvard University angeboten wird.
- In diesem Kurs geht es um mehr als nur um Computerprogrammierung!
- Vielmehr geht es in diesem Kurs um Problemlösung auf eine Art und Weise, die Ihre Fähigkeiten enorm erweitert! Die Problemlösungsfähigkeiten, die Sie hier erlernen, werden Sie wahrscheinlich sofort auf Ihre Arbeit außerhalb dieses Kurses und sogar auf Ihre gesamte Karriere anwenden können!
- Es wird jedoch nicht einfach sein! Sie werden während dieses Kurses buchstäblich „aus dem Vollen schöpfen“ (im Englischen: „drinking from the firehose“). Sie werden erstaunt sein, was Sie in den kommenden Wochen erreichen können. Es wird sich sehr unangenehm anfühlen, wenn Sie feststellen, dass Sie nicht alles verstehen und dass dieses Gefühl auch nicht verschwindet, wenn Sie sich in die Details einarbeiten. In der Informatik sind wir es gewohnt, mit diesem unangenehmen Gefühl umzugehen.
- Die wichtigste Voraussetzung für diesen Kurs: Nehmen Sie sich die Zeit, die Sie brauchen, um diesen Kurs zu absolvieren. Jeder Mensch lernt anders. Auch wenn am Anfang etwas nicht so gut klappt, können Sie sicher sein, dass Sie mit der Zeit immer besser werden.
- Haben Sie keine Angst, wenn dies Ihr erster Informatikkurs ist! Für die meisten Ihrer Altersgenossen gilt dasselbe!
- Ein Roboter als Black Box: Zu Beginn der Vorlesung haben wir Ihnen einen kleinen Roboter namens Bittle gezeigt und ihn ferngesteuert. Der Hebel der Fernbedienung ist die Eingabe, die Bewegung des Roboters die Ausgabe. Dazwischen steht kein Zauber, sondern ein Programm, das Menschen geschrieben haben, bei diesem Roboter in der Programmiersprache C auf einem ESP32-Mikrocontroller. Einen solchen Roboter werden Sie am Ende des Semesters nicht programmieren können. Sie werden aber wissen, was in so einem Kasten vor sich geht, und kleine Programme selbst schreiben.
- Der MIT-Feuerwehr-Schlauch-Vergleich: An der MIT gibt es ein berühmtes Foto, auf dem ein Feuerwehr-Hydrant direkt an ein Waschbecken angeschlossen ist. Die Überschrift lautet: „Getting an Education from MIT is like drinking from a fire hose“ (Eine Ausbildung am MIT zu bekommen ist wie aus einem Feuerwehrschlauch zu trinken). In kurzer Zeit kommt sehr viel Wasser auf Sie zu. Das Lernen des Programmierens fühlt sich am Anfang genauso an – Sie lernen C, Python, JavaScript und vieles mehr. Wichtig ist, dass Sie sich nicht von der Wassermenge mitreißen lassen. Mit der Zeit lernen Sie, damit umzugehen.
Was liegt vor uns?
- In dieser Woche lernen Sie Scratch kennen, eine visuelle Programmiersprache, und schreiben am Ende Ihr erstes Programm in C.
- In den kommenden Wochen lernen Sie C dann richtig. Das sieht in etwa so aus:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}- Außerdem werden Sie bereits in den nächsten vier Wochen etwas über Algorithmen lernen.
- Sie werden etwas über Speicher lernen.
- Sie werden etwas über fehlerhaften Code und die Ursachen von Computerabstürzen lernen.
- Sie werden etwas über Datenstrukturen wie eine Hash-Tabelle lernen.
- Dann werden wir zu einer neuen, höheren Programmiersprache namens Python übergehen. Ihr Code wird dann in etwa so aussehen
print("hello, world")- Sie werden sehen, wie sich die neueren Programmiersprachen aus den früheren entwickelt haben.
- Sie bekommen einen Einblick in JavaScript, HTML und CSS und Rechnernetze.
Prüfungsleistung
- Am Ende gibt es eine Klausur. Eine E-Prüfung am Rechner, bei der sie zeigen sollen, was sie gelernt haben, dass Sie wirklich programmieren und Problemlösen gelernt haben.
- Mitten im Semester gibt es das Midterm, eine Klausur von 75 Minuten in C. Damit können Sie BonuspunkteBis zu 20 Punkte, die zum Ergebnis Ihrer Prüfung addiert werden und die Note verbessern, wenn die Prüfung schon ohne sie bestanden ist: bis zu 15 für Ihr Projekt auf der Projektmesse, bis zu 5 aus dem Midterm. Glossar → für die Prüfung erwerben.
- Der Höhepunkt des Kurses wird aber die Projektmesse sein, bei der Sie Ihr Können vorführen. Wir werden uns dort gemeinsam darüber freuen, wie weit Sie es gebracht haben.
Informatik
- Das Wort „Informatik“ ist ein künstlich geschaffenes Wort. Im Gegensatz zu Wörtern wie „sagen“ oder „gehen“, die tief in der Sprache verwurzelt sind, wurde „Informatik“ bewusst konstruiert – es ist ein Kofferwort aus Information und Automatik.
- In der Informatik geht es uns nicht nur um die Darstellung und Verarbeitung von Informationen. Wir befassen uns mit Techniken zur Problemlösung. Diese Fähigkeit zum Computational Thinking – das strukturierte, algorithmische Denken – wird in den nächsten 20-40 Jahren eine entscheidende gesellschaftliche und politische Bedeutung haben. Es geht darum, Probleme so zu zerlegen und zu verstehen, dass sie systematisch gelöst werden können.
- Dazu bauen wir uns einen Methodenbaukasten auf. Wir entwickeln erst ganz einfache Werkzeuge und nutzen diese dann, um damit komplexere Dinge zu bauen. Diese Fähigkeit zur Problemlösung erwerben wir vor allem durch Erfahrung und Musterkennung, nicht durch reines Auswendiglernen.
- Was ist Problemlösung? Das hier. In der Mitte passiert die Magie.

Im Wesentlichen geht es bei der Computerprogrammierung darum, aus einer Eingabe eine Ausgabe zu erstellen und so ein Problem zu lösen. Was zwischen der Eingabe und der Ausgabe passiert, sieht auf den ersten Blick oft wie Magie aus. Es ist diese Black Box, die im Mittelpunkt dieses Kurses steht.
Bei vielen Problemen ist Frage der geeigneten Repräsentation der Ein- und Ausgaben von Bedeutung.
Beispiel Zahlensysteme:
- Unäres System (Base-1): Wir könnten eine „Strichliste“ (tally marks) führen oder mit den Fingern einer Hand zählen – einen Finger nach dem anderen. Mit einer Hand kommen wir so nur bis 5. Das wäre ein unäres Zahlensystem, auch Base-1 genannt. Sehr ineffizient!
- Dezimalsystem (Base-10): Das ist unser gewohntes Zahlensystem mit den Ziffern 0-9.
- Binärsystem (Base-2): Computer zählen im binären System. Wenn wir die Reihenfolge der Finger ausnutzen (welcher Finger ist oben, welcher unten), kommen wir mit einer Hand tatsächlich bis 31!
Wir müssten dazu so zählen wie Computer, nämlich mit einem binären System. Aus dem englischen Begriff binary digit (binäre Ziffer) leitet sich übrigens der uns vertraute Begriff Bit ab – eine Zusammenziehung der beiden Wörter. Ein Bit ist eine Null oder eine Eins: an oder aus.
Computer sprechen nur in Form von Nullen und Einsen. Nullen stehen für aus. Einsen stehen für an. Computer bestehen aus Millionen, vielleicht sogar Milliarden von Transistoren, die ein- und ausgeschaltet werden.
Wenn Sie sich eine Glühbirne vorstellen, kann eine einzelne Glühbirne nur von null bis eins zählen.
Wenn Sie jedoch drei Glühbirnen hätten, stünden Ihnen mehr Möglichkeiten offen!
Bei drei Glühbirnen könnte Folgendes für eine Null stehen:
0 0 0Folgendes würde eine Eins darstellen:
0 0 1Dann könnten festlegen, dass das Folgende eine Zwei ist.
0 1 0Und das hier eine “Drei”
0 1 1Die Vier würde so aussehen:
1 0 0Mit drei Birnen kämen wir bis zur Sieben:
1 1 1Die Plätze der Glühbirnen haben demnach folgenden Werte:
4 2 1Computer verwenden die „Basis 2“ zum Zählen. Dies kann wie folgt dargestellt werden:
2^2 2^1 2^0 4 2 1Das bedeutet, dass wir drei Bits (die Stelle der Vier, die Stelle der Zwei und die Stelle der Eins) benötigen, um eine Zahl bis zur Sieben darzustellen.
Es stellt sich heraus, dass wir hier darüber sprechen, wie man Informationen wie Zahlen darstellt, aber wir könnten Bits auch zur Darstellung von Anweisungen verwenden. Denn letztendlich ist es das, was Computer tun. Sie verarbeiten Daten, Informationen jeglicher Art, ob es sich um Dateien, Zahlen, Bilder, Videos oder Ähnliches handelt.
Wir könnten ein Muster aus Nullen und Einsen erstellen, das einem Roboter sagt, was er tun soll, d. h. welche Gelenke er bewegen soll usw. Er könnte dies sicherlich autonom mithilfe verschiedener Sensoren tun – oder diese Bits als drahtloses Signal von einer Fernbedienung empfangen.
Egal wie ausgeklügelt die heutige Hardware oder Software ist, es läuft im Grunde darauf hinaus, Informationen und Anweisungen darzustellen. Und Computer, Telefone und dergleichen arbeiten wirklich nur mit denselben Informationen, ob sie nun in 0 und 1 oder in irgendetwas anderem umgesetzt werden.
Drei Bits sind natürlich nicht genug. Um größere Zahlen als 7 darzustellen können wir einfach weitere Glühbirnen hinzufügen.
Computer verwenden in der Regel acht Bits (eine Menge, die wir als Byte bezeichnen), um eine Zahl darzustellen. Bei einem Byte ist beispielsweise „00000101“ die Zahl 5 in Binärdarstellung. „11111111“ steht für die Zahl 255.
Wie heißt die Fähigkeit zum strukturierten, algorithmischen Denken, um die es in der Informatik geht?
Antwort
Computational Thinking: Probleme so zerlegen und verstehen, dass man sie systematisch lösen kann.
Bei vielen Problemen ist die Frage der geeigneten ??? der Ein- und Ausgaben von Bedeutung.
Antwort
Repräsentation (Darstellung), zum Beispiel das passende Zahlensystem.
Aus welchem englischen Begriff leitet sich das Wort „Bit“ ab?
Antwort
Aus binary digit (binäre Ziffer). Ein Bit ist eine Null oder eine Eins: aus oder an.
Welche Werte haben die Stellen einer dreistelligen Binärzahl, von links nach rechts gelesen?
Antwort
4, 2, 1, also 2 hoch 2, 2 hoch 1 und 2 hoch 0.
Bis zu welcher Zahl kann man mit drei Bits (drei Glühbirnen) zählen?
Antwort
Bis 7 (111).
Wie nennt man eine Menge von acht Bits?
Antwort
Ein Byte.
Für welche Dezimalzahl steht das Byte 00000101?
Antwort
Für die 5.
ASCII
Anwendung des Werkzeugkasten-Prinzips: Wir haben nun gelernt, wie man Zahlen darstellt. Wie stellen wir aber Buchstaben dar? Die Lösung der Informatiker: Nutze die bereits vorhandenen Werkzeuge! Wir ordnen Buchstaben einfach Zahlen zu. Aus einfachen Werkzeugen (Zahlen) bauen wir komplexere Dinge (Buchstaben, später dann Emojis, …).
Genauso wie Zahlen binäre Muster aus Einsen und Nullen sind, werden also auch Buchstaben durch Einsen und Nullen dargestellt!
Der ASCII-Standard (American Standard Code for Information Interchange) wurde geschaffen, um bestimmte Buchstaben bestimmten Zahlen zuzuordnen. ASCII ist ein amerikanischer Standard – das hatte später Konsequenzen für Europa.
Beispielsweise wurde beschlossen, den Buchstaben „A“ der Zahl 65 zuzuordnen. „01000001“ steht für die Zahl 65 in binärer Darstellung.
Wenn Sie eine Textnachricht erhalten haben, könnte die Binärzahl zu dieser Nachricht die Zahlen 72, 73 und 33 darstellen. Wenn Sie diese Zahlen in ASCII umwandeln, würde Ihre Nachricht wie folgt aussehen:
H I ! 72 73 33Hier ist eine ASCII-Tabelle:

ASCII-Tabelle Wenn Sie neugierig sind: Es gibt noch viel mehr zu ASCII zu sagen.
Das Parity-Bit Problem: Da wir mit einem Byte binär nur bis 255 zählen können, waren wir viele Jahre lang auf diese Anzahl an durch ASCII dargestellten Zeichen beschränkt. Ursprünglich nutzte ASCII sogar nur 7 Bits (also 128 Zeichen von 0-127). Das achte Bit wurde als Paritätsbit für die Fehlererkennung verwendet. Später brauchte man diese Fehlererkennung nicht mehr, aber die 128-Zeichen-Grenze blieb zunächst bestehen.
Europäische Erweiterungen: In Europa hat man später die oberen 128 Positionen (128-255) genutzt, um Sonderzeichen wie Umlaute (ä, ö, ü) hinzuzufügen. Jedes Land hatte dabei teilweise eigene Erweiterungen.
Was legt der ASCII-Standard fest?
Antwort
Welche Zahl für welchen Buchstaben (welches Zeichen) steht. Buchstaben werden so auf das vorhandene Werkzeug „Zahlen“ zurückgeführt.
Welche Zahl ordnet ASCII dem Buchstaben „A“ zu?
Antwort
Die 65 (als Byte 01000001).
Wie viele Bits nutzte ASCII ursprünglich für ein Zeichen?
Antwort
7 Bits, also 128 Zeichen (0 bis 127).
Unicode
Das Problem war, dass ein Byte nicht genug Platz bot, um alle menschlichen Schriftzeichen darzustellen (z.B. asiatische Sprachen mit Tausenden von Zeichen). Die Lösung aus Sicht der Informatik war naheliegend: „Wir brauchen mehr. Machen wir es so wie bei den Glühbirnen als uns der Platz ausging: Wir müssen mehr Glühbirnen hinzufügen!“ Das heißt: Wir verwenden mehr als ein Byte pro Zeichen.
Der Unicode-Standard erweiterte die Anzahl der Bits pro Zeichen. Unicode umfasst nicht nur Sonderzeichen, sondern auch Emojis. Nun gibt es nicht 8 Bit pro Zeichen, sondern 16, 24 oder sogar 32 Bit. Mit 32 Bit ließen sich über vier Milliarden Zeichen unterscheiden; Unicode sieht gut eine Million Codepoints vor.
Aber es geht nicht nur darum, spaßige Bilder auf dem Bildschirm zu sehen. Die eigentliche Aufgabe von Unicode besteht darin, alle menschlichen Sprachen digital darzustellen und zu bewahren, sowohl die der Vergangenheit als auch die der Gegenwart und Zukunft. Es geht also wirklich darum, das gesamte menschliche Wissen, wie wir es in der Sprache ausgedrückt haben, zu erfassen, aber auch darum, diese neu entdeckte Fähigkeit, die schon vor Jahrhunderten genutzt wurde – in Schriften, an Wänden und dergleichen – Piktogramme zu verwenden, über die wir auch unabhängig von unserer eigenen menschlichen Sprache kommunizieren können.
Es gibt Emojis, die Sie wahrscheinlich jeden Tag verwenden. Die folgenden könnten Ihnen bekannt vorkommen:

emoji Das beliebteste Emoji ist „Gesicht mit Freudentränen“ (😂). Dessen Unicode-Codepoint ist U+1F602. Als Dezimalzahl ausgedrückt wäre das: 128.514 – weit mehr, als in ein Byte passt. Gespeichert wird diese Nummer in vier Bytes; liest man diese vier Bytes als eine einzige Zahl, kommt 4.036.991.106 heraus.
Aufwärtskompatibel repräsentieren: Es kam die Idee auf, dass Emojis in verschiedenen Hauttönen dargestellt werden können sollten. Die naive Lösung wäre: Lege für jeden der gängigen fünf Hauttöne ein neues Emoji an. Das funktioniert kurzfristig, ist aber nicht aufwärtskompatibel (also schlecht erweiterbar). Schließlich haben manche Menschen weniger als fünf Finger. Stellen Sie sich vor, dass wir in ein paar Jahren alle Emojis, auf denen Hände zu sehen sind, auch in Varianten anlegen möchten, in denen einer oder mehrere der Finger fehlen – und jede Variante wiederum in allen Hauttönen! Das skaliert nicht. Die Lösung: Mehrere Emojis können kombiniert werden, um sie zu modifizieren. Das erste Emoji-Zeichen definiert das Basis-Emoji, darauf folgt ein weiteres Zeichen, das beispielsweise den Hautton modifiziert.
Der Unicode Codepoint für ein allgemeines Daumen-hoch-Zeichen lautet beispielsweise „U+1F44D“. Das folgende zusammengesetzte Zeichen stellt dasselbe Daumen-hoch-Zeichen mit einem anderen Hautton dar: „U+1F44D U+1F3FD“.
Es basiert auf der sogenannten „Fitzpatrick-Skala“, die den menschlichen Hautton im Wesentlichen in sechs oder, in diesem Fall, fünf verschiedene Kategorien von heller bis dunkler einteilt.
Diese Methode, mehrere Codepoints miteinander zu verbinden, um komplexere Eigenschaften auszudrücken, ist sehr mächtig. So lassen sich zum Beispiel ein männliches und ein weibliches Gesicht und ein Herz in der Mitte durch Kombination mehrerer Codepoints erzeugen. Und wenn man die Kombination ändern möchte, z.B. in Frau-Frau oder Mann-Mann, ersetzt man einfach die entsprechenden Code-Points. Dazwischen sind spezielle Zeichen, die man ZWJ-Zeichen (Zero Width Joiner) nennt. Es handelt sich einfach um eine spezielle Zahl, die Menschen reservieren, um zu sagen: „Verknüpfe das Emoji links mit dem Emoji rechts.“ So werden Ideen miteinander verbunden.
Mit diesem flexiblen Mechanismus werden viele Emojis konstruiert, die eine Kombination aus verschiedenen Dingen sind. „Herz in Flammen“ ist zum Beispiel technisch gesehen eine Kombination aus einem Herz-Emoji und einem Feuer-Emoji.
Oft reduzieren wir in der Informatik, wenn wir uns neue Dinge ausdenken, die Dinge zunächst auf die Frage der geeignetsten Darstellung. Alles, was uns zur Verfügung steht, sind Nullen und Einsen. Letztendlich müssen wir uns also alle einig sein – ob wir nun Google, Microsoft oder dergleichen sind – wie wir diese Art von Dingen als Informationen standardisieren wollen.
Dem Unicode-Standard werden immer mehr Funktionen hinzugefügt, um weitere Zeichen und Emojis darzustellen.
Warum reichte ein Byte pro Zeichen irgendwann nicht mehr aus?
Antwort
Ein Byte bietet nicht genug Platz für alle menschlichen Schriftzeichen, etwa für asiatische Sprachen mit Tausenden von Zeichen.
Was ist die eigentliche Aufgabe von Unicode?
Antwort
Alle menschlichen Sprachen digital darzustellen und zu bewahren, die der Vergangenheit, Gegenwart und Zukunft.
Wie heißt die Nummer, unter der ein Zeichen im Unicode-Standard geführt wird, etwa „U+1F44D“ für Daumen hoch?
Antwort
Codepoint.
Warum legt Unicode nicht für jeden Hautton ein eigenes Emoji an?
Antwort
Das ist nicht aufwärtskompatibel (schlecht erweiterbar): Mit jeder weiteren Variante müsste man alle Kombinationen neu anlegen, das skaliert nicht.
Wie stellt Unicode ein Emoji mit einem bestimmten Hautton dar?
Antwort
Basis-Emoji plus ein folgendes Zeichen, das den Hautton modifiziert, etwa „U+1F44D U+1F3FD“.
Andere Darstellungen
Nullen und Einsen können zur Darstellung von Farben verwendet werden.
Eine häufige Methode ist die additive Farbmischung (Licht mischen) anhand der Grundfarben Rot, Grün und Blau (auch „RGB“ genannt). Eine Farbe ist dann eine Kombination aus drei Zahlen zwischen 0 und 255 (drei Bytes), wobei 0 bedeutet, dass die Farbe nichts von der Grundfarbe enthält.

red green blue boxes Unsere vorhin verwendeten Zahlen 72, 73 und 33 waren die Textnachricht „HI!“. Ein Programm, das ein Bild darstellt, würde diese Zahlen als gelben Farbton anzeigen. Der Rotwert wäre 72, der Grünwert wäre 73 und der Blauwert wäre 33.

yellow box Dasselbe Zahlenmuster wird also je nach Kontext und Programm unterschiedlich interpretiert. Das bedeutet, wir müssen dem Rechner einen Hinweis geben, was mit Zahlen repräsentiert wird.
Außerdem können Nullen und Einsen verwendet werden, um Bilder, Videos und Musik darzustellen! Bilder sind einfach Sammlungen von RGB-Werten. Videos sind Sequenzen vieler Bilder, die zusammen gespeichert werden, genau wie ein Daumenkino. 30 Bilder pro Sekunde
Musik kann durch MIDI-Daten dargestellt werden. Jede Note hat eine Dauer, Tonhöhe und Lautstärke, die lassen sich durch Zahlen darstellen. Geräusche lassen sich durch Überlagerung von Frequenzen und Amplituden darstellen.
Wofür stehen die Buchstaben in „RGB“?
Antwort
Für die Grundfarben Rot, Grün und Blau der additiven Farbmischung.
Wie wird eine Farbe im RGB-Modell dargestellt?
Antwort
Durch drei Zahlen zwischen 0 und 255 (drei Bytes), je eine für Rot, Grün und Blau. 0 heißt: nichts von dieser Grundfarbe.
Wovon hängt ab, ob die Zahlen 72, 73, 33 als Text „HI!“ oder als Gelbton gelesen werden?
Antwort
Vom Kontext und dem Programm, das sie interpretiert. Man muss dem Rechner einen Hinweis geben, was die Zahlen darstellen.
Wie werden Bilder mit Nullen und Einsen dargestellt?
Antwort
Als Sammlung von RGB-Werten.
Wie werden Videos mit Nullen und Einsen dargestellt?
Antwort
Als Folge vieler Bilder, die zusammen gespeichert werden, wie bei einem Daumenkino.
Algorithmen
- Problemlösung ist ein zentraler Bestandteil der Informatik und der Programmierung.
- Was ist ein Algorithmus? Die Standard-Analogie ist ein Kochrezept. Ein Kochrezept besteht aus mehreren Schritten, die in einer bestimmten Reihenfolge ausgeführt werden müssen. Kochrezepte sind Algorithmen mit echten Zutaten!
- Wir können Algorithmen zunächst auf Papier als PseudocodeDie Schritte eines Programms in normaler Sprache, ohne die Regeln einer Programmiersprache. Oft schreibt man ihn als Kommentare in die Datei, bevor man den eigentlichen Code schreibt. Glossar → schreiben – in einer für Menschen lesbaren Form. Später müssen wir sie dann in eine Programmiersprache übersetzen, die der Computer versteht. Wir können dem Bittle-Roboterhund nicht einfach ein Blatt Papier mit Pseudocode zeigen – wir müssen die Sprache des Roboters sprechen (in seinem Fall: C).
Welche Alltagsanalogie ist die Standard-Analogie für einen Algorithmus?
Antwort
Das Kochrezept: mehrere Schritte, die in einer bestimmten Reihenfolge ausgeführt werden.
Wie heißt die für Menschen lesbare Form, in der man einen Algorithmus zunächst auf Papier aufschreibt?
Antwort
Pseudocode. Für den Computer muss man ihn danach in eine Programmiersprache übersetzen.
Welches Tutorium?
- Mit Algorithmen kann man Probleme lösen, die Sie aktuell beschäftigen:
- „In welches Tutorium soll ich gehen?“
- Phase 1: Schauen Sie sich in UnivIS die verfügbaren Tutorien an und schreiben Sie Ihre Top 3 Tutorien nach ihrer Präferenz sortiert auf (z.B. T5, T2, T4), wenn T5 das Tutorium ist, das für Sie am besten passt, T2 Ihre Zweitpräferenz ist und T4 Ihre Drittpräferenz):
- Phase 2: Berechnen Sie “Tag meines Geburtsdatums modulo 5”.
- Modulo: Rest nach Division, also z.B. 17/5 = 3 Rest 2).
- Für den 17.02.2006 wäre das z.B. 17 modulo 5 = 2.
- Addieren Sie 1 zum Ergebnis dazu, um Ihr Tutorium zu ermitteln (also 2 + 1), hier also Tutorium T3.
- Haben Sie am Termin von T3 grundsätzlich Zeit? Dann ist das vorerst Ihr Tutorium, weiter mit Phase 3! Sonst: Wechseln Sie zu Ihrer Zweitpräferenz (im obigen Beispiel wäre das Tutorium T2).
- Phase 3: Vergleichen Sie mit einer Person in Ihrer Nähe ob Ihnen unterschiedliche Tutorien zugeteilt wurden oder das gleiche
- Falls Sie unterschiedliche Termine haben: fertig, gehen Sie in die zugeteilten Tutorien.
- Sonst:
- Einer von Ihnen wechselt zur Zweitpräferenz (zufällig festlegen, wer wechselt), fertig.
- Falls Sie beide aktuell schon Ihre Zweitpräferenz gewählt haben: einer wechselt zur Drittpräferenz (zufällig festlegen, wer wechselt), fertig.
Wie Sie Inf-Einf-B bewältigen
- In der Vorlesung haben wir besprochen, wie Sie diesen Kurs bestehen: was jede Woche Vorrang hat, wie eine Woche abläuft, was hilft und was nicht, und was wir aus dem letzten Jahr gelernt haben.
- Das steht auf einer eigenen Seite, damit Sie es im Semester leicht wiederfinden: Wie Sie Inf-Einf-B bewältigen.
- Die Zahlen aus dem letzten Jahr: Zwei von drei sind in der ersten Klausur durchgefallen, zwei von drei in der Wiederholung. Übung 1 gab jede zweite Person ab, die letzte Übung noch jede elfte. Was sonst mit dem Bestehen zusammenhing, steht unter Die Zahlen aus dem Wintersemester 2025/26.
Künstliche Intelligenz
- Ein Chatbot schreibt Ihnen die Übungen dieses Kurses in Sekunden. Sie haben danach die Lösung, aber Sie können nicht programmieren. Im Midterm und in der Klausur sitzen Sie ohne KI-Werkzeuge vor dem Rechner.
- Große Sprachmodelle (Large Language Models) analysieren Muster in großen Mengen von Sprache. Solche Sprachmodelle versuchen, eine bestmögliche Schätzung darüber zu erstellen, welche Wörter nacheinander oder nebeneinander stehen. Auf Programmcode trainiert, liefern sie für viele Aufgaben eines Einführungskurses eine lauffähige Lösung.
- Während KI-basierte Software in vielen Lebens- und Arbeitsbereichen sehr nützlich ist, erscheint uns die Verwendung der gängigen Tools für Inf-Einf-B nicht sinnvoll. Sie verleiten dazu, sich das Leben leichter zu machen und dadurch weniger zu lernen.
- Verboten sind KI-Werkzeuge bei den Übungen nicht. Im Tutorium, im Midterm und in der Klausur sind sie nicht erlaubt.
- Das KI-basierte Software-Tool von CS50, die CS50 Duck, ist ein KI-Helfer, den Sie während dieses Kurses verwenden können. Es wird Ihnen helfen, aber nicht die gesamten Antworten auf die Probleme des Kurses verraten.
Was versuchen große Sprachmodelle (Large Language Models) abzuschätzen?
Antwort
Welche Wörter nacheinander oder nebeneinander stehen. Dazu analysieren sie Muster in großen Mengen von Sprache.
Warum sind die gängigen KI-Tools für Inf-Einf-B nicht sinnvoll?
Antwort
Sie verleiten dazu, sich das Leben leichter zu machen und dadurch weniger zu lernen.
Wie heißt der KI-Helfer von CS50, den Sie im Kurs verwenden können?
Antwort
Die CS50 Duck. Sie hilft, verrät aber nicht die ganzen Antworten.
Warum das riskant ist
Dass man beim Programmierenlernen weniger lernt, wenn ein Chatbot die Aufgaben löst, ist plausibel, aber noch nicht sauber bewiesen. Bisher gibt es dazu Beobachtungen, Einschätzungen und ein Experiment. Die meisten zeigen in dieselbe Richtung, das Experiment nicht:
- Man lernt durch die Mühe. Eine Kommission des MIT hat im August 2026 Leitlinien zum Umgang mit KI in der Lehre vorgelegt. Sie schreibt, die richtige Antwort eines Chatbots könne die Illusion erzeugen, etwas gelernt zu haben (“illusion of learning”). Wer die Arbeit an die KI abgibt, bringe sich um die Reibung und das produktive Ringen (“productive struggle”), ohne die man nicht lerne. Das ist die Einschätzung einer Kommission, die selbst von ersten Anzeichen spricht, kein Messergebnis. Bericht, Abschnitte 2.7 und 3.1.2.
- Die Versuchung ist am größten, wenn die Frist drängt. Das haben Studierende des MIT dieser Kommission berichtet. Fangen Sie deshalb früh mit einer Übung an, und geben Sie lieber eine unvollständige eigene Lösung ab als eine vollständige fremde.
- Eine Beobachtung aus einem Python-Kurs. Peter Dawyndt von der Universität Gent hat im Oktober 2026 Zahlen aus seinem eigenen Kurs veröffentlicht: rund 500 Studierende, 60 Übungsaufgaben, danach eine Klausur mit drei neuen Programmieraufgaben, ohne KI. Von den rund 200 Studierenden, die beim Üben nicht auf KI zurückgegriffen hatten, erreichten 66,7 % mindestens die Hälfte der Punkte. Von den rund 300, die es mindestens einmal getan hatten, waren es 28,3 %. Das ist eine Beobachtung, kein Experiment: Die beiden Gruppen haben sich selbst gebildet. Wer zur KI griff, war vielleicht schon vorher unsicherer oder hatte weniger Zeit. Wie die KI-Nutzung erfasst wurde, geht aus der Veröffentlichung nicht hervor (ein Beitrag auf LinkedIn, keine Studie).
- Eine Beobachtung aus diesem Kurs. Im Wintersemester 2025/26 haben wir in Woche 5 gefragt, wie viele von fünf Übungsaufgaben sich jemand ohne Hilfe zutraut. Wer ohne Vorerfahrung viel KI nutzte, nannte im Schnitt 1,4, wer wenig KI nutzte, 2,9. Mit Vorerfahrung war der Abstand klein (2,7 und 3,1). Auch das ist eine Beobachtung an 100 freiwilligen Bögen: Wer nicht weiterkommt, greift vielleicht deshalb häufiger zur KI.
- Informatik-Wissen und Ergebnisse mit KI hängen zusammen. In einer Laborstudie der ETH Zürich mit 100 Studierenden sollten die Teilnehmenden Programme allein über Anweisungen an ein Sprachmodell bauen, ohne den Code zu sehen. Wie gut das gelang, hing mit ihrem Informatik-Wissen zusammen (Korrelation r = 0,39). Der Zusammenhang bleibt, abgeschwächt, auch dann bestehen, wenn man die allgemeine kognitive Leistungsfähigkeit herausrechnet. Die Studie zeigt einen Zusammenhang, keine Ursache. Sie spricht aber dafür, die Grundlagen selbst zu lernen, gerade weil Sie später mit KI arbeiten werden. Thorgeirsson, Weidmann und Su: Computer Science Achievement and Writing Skills Predict Vibe Coding Proficiency, CHI 2026.
- Die Forschung ist sich nicht einig. Die Autoren der ETH-Studie verweisen selbst auf ein kontrolliertes Experiment von 2023, in dem sich Lernende mit und ohne KI-Codegenerator in späteren Tests nicht signifikant unterschieden. Aus alldem folgt nicht, dass man KI nie benutzen darf. Wir schließen daraus: Die Lösung einer Übungsaufgabe schreiben zu lassen, ersetzt das eigene Nachdenken, und was Sie mit KI erreichen, hängt weiter von Ihrem eigenen Können ab.
Wenn Sie ein KI-Werkzeug benutzen, dann als Tutor und nicht als Autor: Lassen Sie sich eine Fehlermeldung erklären oder einen Hinweis geben, und schreiben Sie den Code selbst.
Telefonbuch
- Nun schauen wir uns einen wichtigen Algorithmus in der digitalen Welt an.
- Stellen Sie sich das grundlegende Problem vor, einen einzelnen Namen in einem Telefonbuch zu finden (oder festzustellen, dass er nicht enthalten ist).
- Wie kann die Kontakte-App auf einem Telefon so schnell einen Eintrag finden?
- Wie könnten wir dabei vorgehen?
- Eine Möglichkeit wäre, einfach von Seite 1 zur nächsten und dann zur nächsten zu blättern und zu schauen ob der Name drauf steht, bis wir die letzte Seite erreichen. Das dauert sehr lange, aber der Algorithmus hat einen großen Vorteil: Er ist auf jeden Fall korrekt. Das bedeutet: Wenn der gesuchte Name im Telefonbuch enthalten ist, werden wir ihn auf jeden Fall finden. Es kann nicht passieren, dass wir einen Fehler machen.
- Oft geht es in der Informatik darum, ein Problem möglichst effizient zu lösen, also möglichst schnell zum Ergebnis zu kommen. Eine deutlich effizientere Technik wäre es daher, jeweils immer um 2 Seiten weiterzublättern. Das ist doppelt so schnell! Das Problem: Dieser Algorithmus arbeitet nicht korrekt: Möglicherweise überspringen wir die Seite, auf der der gesuchte Name steht und würden fälschlicherweise denken, er sei nicht enthalten. Das wäre also ein Software-Bug. Die Lösung: Wenn wir beim Durchblättern merken, dass wir eine Seite zu weit geblättert haben, müssen wir die vorherige Seite anschauen. Nun ist das Verfahren korrekt – und immer noch doppelt so schnell.
- Eine dritte und vielleicht die beste Herangehensweise könnte darin bestehen, zur Mitte des Telefonbuchs zu gehen und zu fragen: „Befindet sich der Name, nach dem ich suche, vor oder nach dieser Stelle im Telefonbuch?“ Dann wiederholen wir diesen Vorgang und halbieren das Problem immer weiter.
- Wie oft müssen wir das Telefonbuch wohl halbieren, wenn es 1000 Seiten hat, um einen bestimmten Namen zu finden? Höchstens 10 mal. Warum? Die Hälften haben erst 500, 250, 125, 63, 32, 16, 8, 4, 2 und am Ende nur noch 1 Seite.
- Jeder dieser Ansätze ist ein Algorithmus. Die Geschwindigkeit von Algorithmen wird mit der sogenannten O-Notation ausgedrückt, über die wir noch sprechen werden. Grafisch ergibt sich folgender Vergleich der drei Verfahren

- Man sagt, dass der erste Algorithmus, der rot hervorgehoben ist, ein O von „n“ hat, also O(n), denn wenn das Telefonbuch 1000 Seiten enthält, kann es bis zu 1000 Versuche dauern, den richtigen Namen zu finden. Der zweite Algorithmus, bei dem nur jede zweite Seite angeschaut wird, braucht nur etwa n/2 Versuche, da wir doppelt so schnell durch die Seiten gesucht haben. In der O-Notation lässt man solche konstanten Faktoren aber weg: Auch er hat O(n). Der letzte Algorithmus hat O(log2 n), da eine Verdopplung des Problems nur einen weiteren Schritt zur Lösung des Problems bedeuten würde.
- Wenn zwei Telefonbücher zusammengeführt würden, würden die ersten beiden Algorithmen doppelt so lange dauern, während das Halbieren (der Teile-und-herrsche-Ansatz) nur einen Schritt mehr benötigt.
Was bedeutet es, dass ein Suchalgorithmus für das Telefonbuch korrekt ist?
Antwort
Wenn der gesuchte Name enthalten ist, findet der Algorithmus ihn auf jeden Fall.
Warum ist „immer zwei Seiten weiterblättern“ zwar schneller, aber nicht korrekt?
Antwort
Der gesuchte Name kann genau auf einer übersprungenen Seite stehen. Korrekt wird das Verfahren erst, wenn man bei Überschreiten des Namens eine Seite zurückblättert.
Wie geht der schnellste der drei Algorithmen für die Telefonbuchsuche vor?
Antwort
In der Mitte aufschlagen und prüfen, ob der Name davor oder danach steht; mit dieser Hälfte wiederholen. So wird das Problem immer weiter halbiert.
Welche Laufzeit in O-Notation hat es, das Telefonbuch Seite für Seite durchzublättern?
Antwort
O(n): Bei 1000 Seiten kann es bis zu 1000 Versuche dauern.
Welche Laufzeit in O-Notation hat das wiederholte Halbieren des Telefonbuchs?
Antwort
O(log n), genauer Logarithmus zur Basis 2.
Wie viele Schritte kommen beim Halbierungsverfahren hinzu, wenn sich das Telefonbuch verdoppelt?
Antwort
Nur ein Schritt. Die beiden anderen Verfahren würden doppelt so lange dauern.
Pseudocode
Die Fähigkeit, Pseudocode zu erstellen, ist sowohl in diesem Kurs als auch in der Programmierung allgemein von zentraler Bedeutung.
Pseudocode ist eine für Menschen lesbare Version Ihres Codes. Wenn wir beispielsweise den dritten Algorithmus oben betrachten, könnten wir Pseudocode wie folgt erstellen:
1 Pick up phone book 2 Open to middle of phone book 3 Look at page 4 If person is on page 5 Call person 6 Else if person is earlier in book 7 Open to middle of left half of book 8 Go back to line 3 9 Else if person is later in book 10 Open to middle of right half of book 11 Go back to line 3 12 Else 13 QuitPseudocoding ist aus mindestens zwei Gründen eine so wichtige Fähigkeit. Erstens ermöglicht es Ihnen, die Logik Ihres Problems im Voraus zu durchdenken, wenn Sie vor der Erstellung des formalen Codes pseudocoden. Zweitens können Sie diese Informationen später anderen zur Verfügung stellen, die Ihre Codierungsentscheidungen und die Funktionsweise Ihres Codes verstehen möchten.
Beachten Sie, dass die Sprache in unserem Pseudocode einige einzigartige Merkmale aufweist. Zunächst beginnen einige dieser Zeilen mit Verben wie „pick up“, „open“, „look at“. Später werden wir diese als Funktionen bezeichnen.
Zweitens: Beachten Sie, dass einige Zeilen Anweisungen wie „if“ oder „else if“ enthalten. Diese werden als Bedingungen bezeichnet.
Drittens: Beachten Sie, dass es Ausdrücke gibt, die als „wahr“ oder „falsch“ angegeben werden können, wie z. B. „Person ist früher im Buch“. Dies sind boolesche Ausdrücke.
Beachten Sie schließlich, wie diese Anweisungen wie „Gehe zurück zu Zeile 3“ lauten. Damit konstruieren wir Schleifen.
Diese Bausteine sind die Grundlagen des Programmierens.
Beim Programmieren mit Scratch, das weiter unten besprochen wird, werden wir jeden der oben genannten grundlegenden Bausteine des Programmierens verwenden.
Aus welchen zwei Gründen ist es sinnvoll, vor dem eigentlichen Code Pseudocode zu schreiben?
Antwort
- Sie durchdenken die Logik Ihres Problems im Voraus.
- Sie können anderen erklären, wie Ihr Code funktioniert und warum Sie so entschieden haben.
Welche vier Bausteine des Programmierens stecken im Pseudocode für die Telefonbuchsuche?
Antwort
- Funktionen („pick up“, „open“, „look at“)
- Bedingungen („if“, „else if“)
- boolesche Ausdrücke („person is on page“)
- Schleifen („go back to line 3“)
Wie nennt man einen Ausdruck, der wahr oder falsch sein kann, etwa „person is earlier in book“?
Antwort
Boolescher Ausdruck.
Exkurs: Warum ein Chatbot nicht aus Wenn-dann-Regeln besteht
Überlegen Sie, wie wir mit diesen Bausteinen unsere eigene künstliche Intelligenz bauen könnten, einen Chatbot, der Fragen von Studierenden beantwortet. Sehen Sie sich den folgenden Pseudocode an:
If student says hello Say hello back Else if student says goodbye Say goodbye back Else if student asks how you are Say you're well Else if student asks why 111 in binary is 7 in decimal ...Beachten Sie, dass bereits für die Programmierung einer Handvoll Interaktionen viele Codezeilen erforderlich wären. Wie viele Codezeilen wären dann erst für Tausende oder Zehntausende möglicher Interaktionen erforderlich? So baut man keinen Chatbot; die Antworten eines Sprachmodells hat niemand einzeln hingeschrieben.
Scratch
Scratch ist eine visuelle Programmiersprache, die vom MIT entwickelt wurde.
Scratch verwendet dieselben grundlegenden Codierungsbausteine, die wir bereits in dieser Vorlesung behandelt haben.
Scratch ist eine großartige Möglichkeit, in die Computerprogrammierung einzusteigen, da Sie mit diesen Bausteinen auf visuelle Weise spielen können, ohne sich um die Syntax von geschweiften Klammern, Semikolons, Klammern und dergleichen kümmern zu müssen.
Die Scratch-IDE (integrierte Entwicklungsumgebung) sieht wie folgt aus:

scratch interface Beachten Sie, dass es auf der linken Seite Bausteine gibt, die Sie in Ihrer Programmierung verwenden können. Direkt rechts neben den Bausteinen befindet sich der Bereich, in den Sie Bausteine ziehen können, um ein Programm zu erstellen. Rechts davon sehen Sie die Bühne, auf der eine Katze steht. Auf der Bühne wird Ihre Programmierung zum Leben erweckt.
Scratch arbeitet mit einem kartesischen Koordinatensystem:

scratch coordinate system Beachten Sie, dass sich die Mitte der Bühne an der Koordinate (0,0) befindet und die Bühne 480 Einheiten breit ist und 360 hoch. Im Moment befindet sich die Katze an Position (0,0).
Warum eignet sich Scratch gut für den Einstieg ins Programmieren?
Antwort
Man kann mit den Bausteinen visuell spielen, ohne sich um Syntax wie geschweifte Klammern oder Semikolons kümmern zu müssen.
Wofür steht die Abkürzung IDE?
Antwort
Integrierte Entwicklungsumgebung (integrated development environment).
Hello World
- Um ein neues Scratch-Projekt zu starten, klicken Sie auf „Create“.
- Ziehen Sie dann den Baustein „When green Flag clicked“ in den Programmierbereich. Ziehen Sie dann den Baustein „Say“ in den Programmierbereich und fügen Sie ihn an den vorherigen Baustein an.
Beachten Sie, dass die Katze „hello, world“ sagt, wenn Sie jetzt auf die grüne Flagge auf der Bühne klicken.
Dies veranschaulicht recht gut, was wir vorhin in Bezug auf die Programmierung besprochen haben:

scratch with black box Beachten Sie, dass die Eingabe „hello, world“ an die Funktion „say“ übergeben wird und der Seiteneffekt (side effect) dieser Funktion darin besteht, dass die Katze „hello, world“ sagt.
Wie nennt man es, dass die Katze „hello, world“ sagt, wenn dieser Text an die Funktion „say“ übergeben wird?
Antwort
Das ist der Seiteneffekt (side effect) der Funktion „say“.
Hallo du
- Wir können Ihr Programm interaktiver gestalten, indem wir die Katze zu jemand Bestimmten „Hallo“ sagen lassen. Passen Sie Ihr Programm wie folgt an:
- Beachten Sie, dass beim Klicken auf die grüne Flagge die Funktion „ask“ ausgeführt wird. Das Programm fragt Sie als Benutzer: „What’s your name?“ Anschließend wird dieser Name in der Variablen mit dem Namen „answer“ gespeichert. Das Programm übergibt „answer“ dann an eine spezielle Funktion namens „join“, die zwei Textzeichenfolgen „hello“ und den angegebenen Namen kombiniert. Diese werden zusammen an die Funktion „say“ übergeben Die Katze sagt „Hallo“ und einen Namen. Ihr Programm ist jetzt interaktiv.
- Ganz ähnlich können wir unser Programm wie folgt ändern
- Beachten Sie, dass dieses Programm, wenn die grüne Flagge angeklickt wird, dieselbe Variable, verbunden mit „hello“, an eine Funktion namens „speak“ übergibt.
In welcher Variablen speichert Scratch, was der Benutzer auf die Frage von „ask“ eingibt?
Antwort
In der Variablen „answer“.
Abstraktes Miauen
- Neben der Pseudocodierung ist die Abstraktion eine wesentliche Fähigkeit und ein wesentliches Konzept in der Computerprogrammierung.
- Abstraktion ist der Vorgang, bei dem ein Problem in immer kleinere Probleme zerlegt wird, die wir einmal lösen, uns aber dann nicht mehr dafür interessieren wie wir sie gelöst haben.
- Wenn Sie beispielsweise ein großes Abendessen für Ihre Freunde ausrichten, könnte das Problem, das gesamte Essen kochen zu müssen, ziemlich überwältigend sein! Wenn Sie jedoch die Aufgabe, das Essen zu kochen, in immer kleinere Aufgaben (oder Probleme) aufteilen, könnte sich die große Aufgabe, dieses köstliche Essen zuzubereiten, weniger herausfordernd anfühlen.
- Wenn Sie zum ersten Mal ein indisches Curry zubereiten, benötigen Sie vielleicht eine Anleitung, die genau erklärt, dass Sie den Reis zuerst waschen, dann zusammen mit der doppelten Menge Wasser und einer bestimmten Menge Salz im Topf für 18 Minuten erhitzen, danach mit einer Gabel fluffig machen, und so weiter.
- Später kommen Sie auch damit zurecht, wenn Schritt 1 eines Rezepts lautet: Reis kochen. Das Problem wurde abstrahiert.
- Beim Programmieren und sogar in Scratch können wir Abstraktion in Aktion sehen. Programmieren Sie in Ihrem Programmbereich wie folgt:
- Beachten Sie, dass Sie dabei immer wieder dasselbe tun. Wenn Sie feststellen, dass Sie wiederholt dieselben Anweisungen codieren, können Sie wahrscheinlich besser programmieren, indem Sie diesen sich wiederholenden Code abstrahieren.
- Sie können Ihren Code dazu wie folgt ändern:
- Beachten Sie, dass die Schleife genau das tut, was das vorherige Programm getan hat. Das Problem wird jedoch vereinfacht, indem die Wiederholung in einen Block ausgelagert wird, der den Code für uns wiederholt.
- Wir können dies sogar noch weiter vorantreiben, indem wir den „define“-Block verwenden, mit dem Sie Ihren eigenen Block (Ihre eigene Funktion) erstellen können! Schreiben Sie den Code wie folgt:
- Beachten Sie, dass wir unseren eigenen Block namens „Miau“ definieren. Die Funktion gibt den Ton „Miau“ wieder und wartet dann eine Sekunde. Darunter sehen Sie, dass unsere Miau-Funktion dreimal wiederholt wird, wenn auf die grüne Flagge geklickt wird.
- Wir können sogar eine Möglichkeit bereitstellen, mit der die Funktion eine Eingabe „n“ entgegennehmen und das Miau mehrmals wiederholen kann:
- Beachten Sie, dass „n“ aus „meow n times“ entnommen wird. „n“ wird über den „define“-Block an die „meow“-Funktion übergeben.
- Die Katze können wir übrigens als „Sprite“ bezeichnen – ein allgemeiner Begriff, der in der Spieleprogrammierung für ein Objekt oder eine Figur auf dem Bildschirm verwendet wird, mit dem bzw. der der Spieler interagiert.
Was ist Abstraktion?
Antwort
Ein Problem in immer kleinere Probleme zerlegen, die man einmal löst, ohne sich danach noch dafür zu interessieren, wie man sie gelöst hat.
Woran merken Sie, dass Sie Code wahrscheinlich abstrahieren sollten?
Antwort
Sie codieren wiederholt dieselben Anweisungen.
Wie vereinfacht eine Schleife ein Programm, das dieselben Anweisungen mehrmals hintereinander enthält?
Antwort
Sie lagert die Wiederholung in einen Block aus, der den Code für uns wiederholt.
Mit welchem Scratch-Block erstellen Sie einen eigenen Block, also eine eigene Funktion?
Antwort
Mit dem „define“-Block.
Bedingte Anweisungen
- Bedingte Anweisungen sind ein wesentlicher Baustein der Programmierung, bei dem das Programm prüft, ob eine bestimmte Bedingung erfüllt ist. Wenn eine Bedingung erfüllt ist, führt das Programm eine Aktion aus.
- Um eine Bedingung zu veranschaulichen, schreiben Sie den Code wie folgt:
- Beachten Sie, dass der „forever“-Block so verwendet wird, dass der „if“-Block immer wieder ausgelöst wird, sodass er kontinuierlich überprüfen kann, ob die Katze den Mauszeiger berührt.
- Wir können unser Programm wie folgt ändern, um die Videosensorik zu integrieren:
- Denken Sie daran, dass Programmieren oft ein Prozess von Versuch und Irrtum ist. Wenn Sie frustriert sind, nehmen Sie sich Zeit, um das vorliegende Problem zu besprechen. An welchem spezifischen Problem arbeiten Sie gerade? Was funktioniert? Was funktioniert nicht?
Was prüft eine bedingte Anweisung?
Antwort
Ob eine bestimmte Bedingung erfüllt ist. Wenn ja, führt das Programm eine Aktion aus.
Warum steht der „if“-Block im Beispiel mit dem Mauszeiger innerhalb eines „forever“-Blocks?
Antwort
Damit die Bedingung immer wieder geprüft wird, also kontinuierlich, ob die Katze den Mauszeiger berührt.
Oscartime
Oscartime und das folgende Ivy’s Hardest Game führen wir in der Vorlesung nicht mehr vor. Sie können beide Spiele freiwillig nachbauen.
Die beiden folgenden Scratch-Programme sollen Ihre Fantasie anregen: Sie zeigen, was sich aus den Bausteinen der Vorlesung bauen lässt.
„Oscartime“ ist ein Scratch-Programm, das David Malan (der den Kurs CS50 in Harvard unterrichtet) geschrieben hat. Nehmen Sie sich einen Moment Zeit, um das Spiel selbst durchzuspielen. Sie finden es auf https://scratch.mit.edu (Suche).
Um „Oscartime“ zu programmieren, fügen wir zuerst den Laternenpfahl hinzu.

oscartime interface Dann schreiben wir folgenden Code:
- Wenn Sie mit der Maus über Oscar fahren, ändert sich sein Kostüm. Weitere Informationen erhalten Sie, wenn Sie diese Codeblöcke untersuchen.
- Ändern Sie dann Ihren Code wie folgt, um ein fallendes Stück Müll zu erstellen:
- Beachten Sie, dass die Position des Mülls auf der y-Achse immer bei 180 beginnt. Die x-Position ist zufällig. Während sich der Müll über dem Boden befindet, sinkt er jeweils um 3 Pixel. Weitere Informationen erhalten Sie, indem Sie diese Codeblöcke untersuchen.
- Als Nächstes ändern Sie Ihren Code wie folgt, um die Möglichkeit zu bieten, den Müll mit der Maus zu ziehen:
- Weitere Informationen erhalten Sie, indem Sie diese Codeblöcke untersuchen.
- Als Nächstes können wir eine Bewertungsvariable implementieren:
- Finden Sie mehr heraus, indem Sie diese Codeblöcke untersuchen.
- Probieren Sie das vollständige Spiel: Oscartime.
Ivy’s Hardest Game
- Indem wir uns nach Oscartime jetzt Ivys Hardest Game anschauen, können wir besser verstehen, wie wir Bewegung in unser Programm integrieren können.
- Unser Programm besteht aus drei Hauptkomponenten.
- Zunächst haben wir diesen Code:
- Beachten Sie, dass sich unser Sprite bei einem Klick auf die grüne Flagge in die Mitte der Bühne bei den Koordinaten (0,0) bewegt und dann auf die Tastatur hört und für immer nach Wänden sucht.
- Zweitens fügen Sie diese zweite Gruppe von Codeblöcken hinzu:
- Beachten Sie, wie wir ein benutzerdefiniertes „Listen for Keyboard“-Skript erstellt haben. Für jede unserer Pfeiltasten auf der Tastatur wird das Sprite auf dem Bildschirm bewegt.
- Fügen Sie abschließend diese Gruppe von Codeblöcken hinzu:
- Beachten Sie, dass wir auch ein benutzerdefiniertes Skript „Wände spüren“ haben. Wenn ein Sprite eine Wand berührt, wird es in eine sichere Position zurückbewegt, sodass es nicht vom Bildschirm läuft.
- Weitere Informationen erhalten Sie, indem Sie diese Codeblöcke untersuchen.
- Spielen Sie das vollständige Spiel: Ivy’s Hardest Game.
- Mit Scratch können viele Sprites gleichzeitig auf dem Bildschirm angezeigt werden.
- Wenn Sie ein weiteres Sprite hinzufügen möchten, fügen Sie Ihrem Programm die folgenden Codeblöcke hinzu:
- Beachten Sie, wie das Yale-Sprite dem Harvard-Sprite in die Quere zu kommen scheint, indem es sich hin und her bewegt. Wenn es gegen eine Wand stößt, dreht es sich um, bis es erneut gegen die Wand stößt. Sie können mehr erfahren, indem Sie diese Codeblöcke untersuchen.
- Sie können sogar ein Sprite einem anderen Sprite folgen lassen. Wenn Sie ein weiteres Sprite hinzufügen, fügen Sie Ihrem Programm die folgenden Codeblöcke hinzu:
- Beachten Sie, dass das MIT-Logo nun dem Harvard-Logo zu folgen scheint. Weitere Informationen erhalten Sie, indem Sie diese Codeblöcke untersuchen.
- Probieren Sie das vollständige Spiel: Ivy’s Hardest Game.
Maschinencode und Quelltext
- Das erste Scratch-Programm – grüne Flagge, dann „say“ mit „hello, world“ – schreiben wir jetzt noch einmal, diesmal in der Programmiersprache C. Das Programm bleibt dasselbe, nur die Schreibweise ändert sich: In Scratch steckt man es aus Bausteinen zusammen, in C tippt man es.
- Erinnern Sie sich daran, dass Maschinen nur binäre Codes verstehen. Während Menschen Quelltext schreiben (auch Quellcode, englisch source code), also eine Liste von Anweisungen für den Computer, die für Menschen lesbar ist, verstehen Maschinen nur das, was wir Maschinencode nennen. Dieser Maschinencode ist ein Muster aus Einsen und Nullen, das einen gewünschten Effekt erzeugt.
- Wir können Quellcode in Maschinencode umwandeln, indem wir ein spezielles Programm benutzen, das wir Compiler nennen. Heute werden wir Ihnen einen Compiler vorstellen, mit dem Sie Quellcode in der Programmiersprache C in Maschinencode umwandeln können.
Wie heißt das Muster aus Einsen und Nullen, das Maschinen verstehen?
Antwort
Maschinencode.
Wie heißt das Programm, das Quellcode in Maschinencode umwandelt?
Antwort
Compiler.
Hello World in C
Die integrierte Entwicklungsumgebung (IDE), die für diesen Kurs verwendet wird, ist Visual Studio Code, meist als VS CodeVisual Studio Code, der kostenlose Code-Editor von Microsoft, in dem Sie im Kurs programmieren. Glossar → abgekürzt.
Einer der wichtigsten Gründe, warum wir VS Code verwenden, ist, dass wir damit alle für den Kurs benötigten Tools dort vorinstallieren können. Dieser Kurs und die darin enthaltenen Anleitungen wurden für diese Umgebung entwickelt.
Die manuelle Installation der für den Kurs erforderlichen Software auf Ihrem eigenen Computer (Dev Container, offline) ist eine etwas mühsamere Angelegenheit. In den Tutorien wird Ihnen dabei geholfen, falls Sie diesen Weg gehen wollen.
Am einfachsten für einen schnellen Start ist es, VS Code im Browser zu verwenden (setzt GitHub-Account voraus). Sie können VS Code dazu unter cs50.dev öffnen.
Die IDE kann in mehrere Bereiche unterteilt werden:

IDE Auf der linken Seite gibt es einen Dateiexplorer, in dem Sie Ihre Dateien finden können. Außerdem gibt es in der Mitte einen Bereich, der als Texteditor bezeichnet wird und in dem Sie Ihr Programm bearbeiten können. Schließlich gibt es eine “Kommandozeile” (command line interface, CLI), die man auch Befehlszeile oder Terminal nennt, wo wir Befehle eingeben können. Wenn man VS Code im Browser ausführt, werden die Befehle an den Computer in der Cloud gesendet.
Wir werden drei Befehle verwenden, um unser erstes Programm zu schreiben, zu kompilieren und auszuführen:
code hello.c make hello ./helloDer erste Befehl,
code hello.c, erstellt eine Datei und erlaubt uns, Anweisungen für dieses Programm im Texteditor einzugeben. Der zweite Befehl,make hello, kompiliert die Datei aus unseren Anweisungen in C und erstellt eine ausführbare Datei namenshello. Der letzte Befehl,./hello, führt das Programm namenshelloaus.Man schreibt
make hello, nichtmake hello.c, weilhello.chaben wir ja schon angelegt.Um Ihr erstes Programm in C zu erstellen, müssen Sie also
code hello.cin das Terminal-Fenster eintippen. Beachten Sie, dass es Absicht ist, dass wir den Dateinamen kleingeschrieben haben, keine Leerzeichen verwendet haben und die Erweiterung.chinzugefügt haben. Die Datei öffnet sich dann im Texteditor.
Tipp: Damit Sie Schreibroutine bekommen, sollten Sie den Code selbst schreiben, nicht einfach nur kopieren und einfügen.
#include <stdio.h> int main(void) { printf("hello, world\n"); }Sobald man eine geschweifte Klammer oder eine andere Klammer schreibt, wird die zweite erzeugt. Wenn man Enter drückt, wird die nächste Zeile eingerückt.
In cs50.dev wird automatisch gespeichert.
Was macht der Befehl make hello?
Antwort
Er kompiliert die Datei hello.c und erstellt eine ausführbare Datei namens hello.
Syntax Highlighting: Die Farben helfen Ihnen
Wenn Sie Code in VS Code schreiben, werden Sie bemerken, dass verschiedene Teile Ihres Codes in verschiedenen Farben erscheinen. Das nennt man Syntax Highlighting und ist kein Zufall – diese Farben helfen Ihnen beim Programmieren:
- Lila/Violett: Schlüsselwörter der Sprache (wie
int,void,if,while) - Grün: Strings (Text in Anführungszeichen wie
"hello, world") - Gelb/Orange: Funktionsnamen (wie
main,printf) - Blau: Zahlen und Konstanten
- Grau: Kommentare (die wir später kennenlernen)
Diese Farben sind nicht nur hübsch – sie helfen Ihnen, Fehler zu erkennen. Wenn zum Beispiel Ihr ganzer Code plötzlich grün ist, haben Sie wahrscheinlich vergessen, ein Anführungszeichen zu schließen!
- Jedes einzelne Zeichen oben erfüllt einen Zweck. Wenn Sie das Programm falsch eingeben, wird das Programm nicht kompiliert werden können oder bei der Ausführung einen Fehler ausgeben.
printfist eine Funktion, die eine Textzeile ausgeben kann. Beachten Sie die Platzierung der Anführungszeichen (doppelte!) und des Semikolons. Beachten Sie auch, dass das\nnach den Worten “hello, world” eine neue Zeile erzeugt. int main(void)leitet die Hauptfunktionmainein. Wenn Sie das Programm starten, beginnt die Ausführung dort:mainist der Einstiegspunkt Ihres Programms. Die Anweisungen zwischen den geschweiften Klammern werden dann der Reihe nach ausgeführt.- Danach klicken Sie wieder in das TerminalfensterFenster, in dem Sie dem Computer Befehle als Text eintippen statt zu klicken. In VS Code liegt es im unteren Bereich des Fensters. Glossar →. Nun können Sie Ihren Code kompilieren, indem Sie dort
make helloausführen. Beachten Sie, dass wir.cweglassen.makeBefehl, der den Compiler mit den richtigen Einstellungen aufruft:make helloerzeugt aushello.cdas Programmhello. Glossar → startet den Compiler, der nach unserer Datei “hello.c” sucht und sie in ein Programm namens “hello” verwandelt. Wenn die Ausführung dieses Befehls zu keinen Fehlern und zu keiner Ausgabe führt, können Sie fortfahren. Wenn ein Fehler ausgegeben wird, überprüfen Sie Ihren Code noch einmal, um sicherzustellen, dass er mit dem oben genannten übereinstimmt. - Geben Sie nun
./helloein und Ihr Programm wird ausgeführt und sagthello, world. - Öffnen Sie nun den Dateiexplorer auf der linken Seite. Sie werden feststellen, dass es jetzt sowohl eine Datei namens
hello.cals auch eine andere Datei namenshellogibt. Die Dateihello.ckann vom Compiler gelesen werden: Dort ist Ihr Code gespeichert.helloist eine ausführbare Datei, die Sie ausführen können, die aber nicht vom Compiler – und auch nicht von Menschen – gelesen werden kann.
Wo beginnt die Ausführung, wenn Sie ein C-Programm starten?
Antwort
In der Funktion main, dem Einstiegspunkt des Programms.
Was bewirkt \n in printf("hello, world\n");?
Antwort
Es erzeugt eine neue Zeile (Zeilenumbruch).
Worin unterscheiden sich nach make hello die Dateien hello.c und hello?
Antwort
hello.c enthält Ihren Quellcode, lesbar für Menschen und Compiler. hello ist die ausführbare Datei, die man starten, aber nicht lesen kann.
Mit welchem Befehl legen Sie im Terminal von VS Code die Datei hello.c an und öffnen sie im Texteditor?
Antwort
code hello.c.
Mit welchem Befehl kompilieren Sie hello.c zu einem ausführbaren Programm namens hello?
Antwort
make hello (ohne .c).
Mit welchem Befehl starten Sie im Terminal das fertig kompilierte Programm hello?
Antwort
./hello
Funktionen
- In Scratch haben wir (in der englischen Version) den Block
saybenutzt, um einen beliebigen Text auf dem Bildschirm anzuzeigen. In C gibt es eine Funktion namensprintf, die genau das gleiche tut. - Man sagt, die Ausgabe im Terminal ist ein Seiteneffekt der printf-Funktion. Es ist nicht der Rückgabewert.
Wichtiger Unterschied: Rückgabewerte vs. Seiteneffekte
Funktionen in C können zwei Arten von Wirkung haben:
Rückgabewert: Die Funktion berechnet etwas und gibt einen Wert zurück. Beispiel:
get_string("Name: ")gibt einen Text zurück, den Sie sich merken können. Diese Funktion lernen Sie im Abschnitt „Variablen“ kennen.Seiteneffekt: Die Funktion tut etwas, was über die Berechnung hinausgeht – z.B. Ausgabe auf dem Bildschirm, Schreiben in eine Datei, etc. Beispiel:
printf("Hello\n")gibt Text auf dem Bildschirm aus.
Die printf-Funktion hat als Hauptzweck einen Seiteneffekt (Text ausgeben). Sie hat zwar auch einen Rückgabewert (die Anzahl der ausgegebenen Zeichen), aber den ignorieren wir meistens. Das Wichtige ist: Der Text erscheint auf dem Bildschirm – das ist der Seiteneffekt, den wir wollen.
Beachten Sie, dass unser Code diese Funktion bereits aufruft:
printf("hello, world\n");Das Argument, das an
printfübergeben wird, ist"hello, world\n". Die Code-Anweisung wird mit einem;abgeschlossen.Ein häufiger Fehler in der C-Programmierung ist das Auslassen eines Semikolons. Ändern Sie Ihren Code wie folgt:
#include <stdio.h> int main(void) { printf("hello, world\n") }Beachten Sie, dass das Semikolon jetzt weg ist.
Führen Sie in Ihrem Terminalfenster
make helloaus. Sie werden nun mit einer Fehlermeldung konfrontiert! Wenn Sie das Semikolon wieder an die richtige Stelle setzen undmake helloerneut ausführen, verschwinden die Fehler.
Wie nennt man die Wirkung einer Funktion, die über die Berechnung hinausgeht, etwa die Ausgabe von Text auf dem Bildschirm?
Antwort
Seiteneffekt.
Welche zwei Arten von Wirkung kann eine Funktion in C haben?
Antwort
Einen Rückgabewert (sie gibt einen Wert zurück, etwa get_string) und einen Seiteneffekt (sie tut etwas darüber hinaus, etwa die Ausgabe bei printf).
Wie nennt man den Wert in den Klammern, der beim Aufruf einer Funktion wie printf übergeben wird?
Antwort
Argument.
Womit wird eine Anweisung in C abgeschlossen?
Antwort
Mit einem Semikolon ;.
Mit welcher Funktion geben Sie in C Text im Terminal aus?
Antwort
printf (aus der Bibliothek stdio, Header-Datei stdio.h).
Fehlermeldungen lesen und verstehen
Fehlermeldungen sehen am Anfang kryptisch und einschüchternd aus. Aber sie sind eigentlich Schatzkarten, die Ihnen genau sagen, wo das Problem liegt:
Dateiname:Zeile:Spalte – Compiler-Fehler folgen diesem Format. Zum Beispiel bedeutet
hello.c:5:29:- Datei:
hello.c(die Datei mit dem Problem) - Zeile: 5 (gehen Sie zu Zeile 5)
- Spalte: 29 (das Problem ist am 29. Zeichen dieser Zeile)
- Datei:
Der grüne Pfeil: Viele Compiler (auch der in VS Code) zeigen einen grünen Pfeil (
^), der genau auf die Problemstelle zeigt.Die Fehlermeldung selbst: Nach dem Dateinamen kommt die Erklärung, z.B. “expected ‘;’ after expression” – der Compiler sagt Ihnen, was er erwartet hat.
Wichtig: Fangen Sie immer beim ersten Fehler an. Oft verursacht ein einziger Fehler (etwa eine fehlende #include-Zeile) eine Kaskade von Folgefehlern. Beheben Sie den ersten Fehler, kompilieren Sie erneut – viele andere Fehler verschwinden dann von selbst.
Fehlermeldungen sind nicht Ihr Feind – sie sind Hinweise auf dem Weg zur Lösung!
Beachten Sie auch das spezielle Symbol
\nin Ihrem Code. Versuchen Sie, diese Zeichen zu entfernen und Ihr Programm erneut zu kompilieren, indem Siemake helloausführen. Tippen Sie./helloin das Terminal-Fenster, wie hat sich Ihr Programm verändert? Das Backslash-Zeichen (\) wird als Escape-Zeichen bezeichnet, das dem Compiler mitteilt, dass\neine spezielle Anweisung ist.Stellen Sie Ihr Programm wie folgt wieder her:
#include <stdio.h> int main(void) { printf("hello, world\n"); }Beachten Sie, dass das Semikolon und
\nwiederhergestellt wurden.Die Anweisung am Anfang des Codes
#include <stdio.h>ist ein sehr spezieller Befehl, der dem Compiler mitteilt, dass Sie die Fähigkeiten einer Bibliothek (engl. library) namensstdionutzen wollen. Dazu teilen Sie dem Compiler mit, dass er die Header-Dateistdio.h, die zu dieser Bibliothek gehört lesen soll. Dies erlaubt Ihnen, neben vielen anderen Dingen, dieprintf-Funktion zu nutzen. Mehr über die Möglichkeiten, die Ihnen diese Bibliothek bietet, erfahren Sie auf den Manual Pages von CS50. Die Manual Pages erläutern, was verschiedene Befehle tun und wie sie funktionieren.Bibliotheken sind Sammlungen von vorgefertigten Funktionen, die andere in der Vergangenheit geschrieben haben und die wir in unserem Code verwenden können.
In Inf-Einf-B nutzen wir gerade anfangs oft die CS50-Bibliothek. Dazu müssen wir immer ihre Header-Datei
cs50.heinbinden.
Hinweis zur Sprache: Beim Programmieren in C werden Sie oft “Denglisch” verwenden – eine Mischung aus deutschen und englischen Begriffen. Das ist völlig normal und üblich! Zum Beispiel: “Ich include mal den Header”, “Wir müssen das compilen”, “Hast du das File schon committed?”. Diese Sprachmischung ist in der Programmierpraxis weit verbreitet, weil viele technische Begriffe auf Englisch prägnanter sind.
Wofür stehen die drei Teile von hello.c:5:29 in einer Fehlermeldung?
Antwort
Datei (hello.c), Zeile (5) und Spalte (29).
Warum sollten Sie beim Beheben immer mit dem ersten Fehler anfangen?
Antwort
Ein einziger Fehler verursacht oft eine Kaskade von Folgefehlern, die nach dem Beheben von selbst verschwinden.
Was teilt #include <stdio.h> dem Compiler mit?
Antwort
Dass er die Header-Datei stdio.h der Bibliothek stdio lesen soll, damit Sie deren Funktionen wie printf nutzen können.
Was ist eine Bibliothek (library) in C?
Antwort
Eine Sammlung vorgefertigter Funktionen, die andere geschrieben haben und die wir in unserem Code verwenden können.
Variablen
Erinnern Sie sich, dass wir in Scratch die Möglichkeit hatten, den Benutzer zu fragen: „What’s your name?“ und „hello“ mit dem angehängten Namen zu sagen.
In C können wir das Gleiche tun. Ändern Sie Ihren Code wie folgt:
#include <stdio.h> int main(void) { string answer = get_string("What's your name? "); printf("hello, %s\n", answer); }Die Funktion
get_stringwird verwendet, um eine Zeichenkette vom Benutzer zu erhalten. Dann wird die Variableansweran die Funktionprintfübergeben. Mit%swird die Funktionprintfangewiesen, sich auf den Empfang eines Strings vorzubereiten.answerist ein spezieller Speicherplatz, den wir Variable nennen.answerist vom Typ String und kann eine beliebige Zeichenkette enthalten. Es gibt noch weitere Datentypen, etwaint,bool,charund etliche andere.%sist ein Platzhalter, der Formatcode genannt wird und der der Funktionprintfsagt, dass sie sich auf den Empfang einer Zeichenkette vorbereiten soll.answerist der String, der dann anstelle von%sausgegeben wird.Wenn Sie
make hellonoch einmal im Terminalfenster ausführen, werden Sie feststellen, dass Fehler auftreten.Wenn man sich die Fehler ansieht, werden
stringundget_stringvom Compiler nicht erkannt. Wir müssen dem Compiler diese Funktionen beibringen, indem wir ihm die CS50-Bibliothek bekannt machen:#include <cs50.h> #include <stdio.h> int main(void) { string answer = get_string("What's your name? "); printf("hello, %s\n", answer); }
Sehen Sie, wie wir
#include <cs50.h>am Anfang Ihres Codes eingefügt haben?Wenn Sie nun wieder
make helloim Terminalfenster ausführen, können Sie Ihr Programm durch Eingabe von./hellostarten. Das Programm fragt nun nach Ihrem Namen und sagt dann, wie beabsichtigt, “hello” und danach den eingegebenen Namen.
Wie nennt man einen benannten Speicherplatz wie answer in string answer = get_string("What's your name? ");?
Antwort
Variable (hier vom Typ string).
Wie heißen Platzhalter wie %s im ersten Argument von printf?
Antwort
Formatcode. Er sagt printf, dass es sich auf einen Wert eines bestimmten Typs vorbereiten soll.
Warum erkennt der Compiler string und get_string nicht, wenn nur #include <stdio.h> im Code steht?
Antwort
Beide stammen aus der CS50-Bibliothek; man muss sie mit #include <cs50.h> bekannt machen.
Mit welcher Funktion der CS50-Bibliothek lesen Sie eine Zeichenkette vom Benutzer ein?
Antwort
get_string (aus cs50.h).
Was davon zur Basis gehört
Die Shorts zu diesem Abschnitt sagen auf ihren Seiten, welche Folien wozu gehören.
Basis-Konzept (Erklären und von Hand durchspielen):
- Binär- und Dezimalzahlen umrechnen (von Hand)
- ASCII, Zeichen als Zahlen
- Abstraktion, Algorithmusbegriff, Pseudocode
Kür-Konzept (Erkennen und erklären):
- Unicode, UTF-8
Hintergrund (Einordnung):
- Scratch
- Abschnitt Künstliche Intelligenz
Was die Labels bedeuten und die ganze Liste: Basis und Kür. Die Einordnung ist vorläufig und wird noch abgestimmt.
Zusammenfassung
In dieser Vorlesung haben Sie Folgendes gelernt:
- Nur wenige Studierende kommen mit Programmiererfahrung in diesen Kurs!
- Sie sind nicht allein! Sie sind Teil einer Gemeinschaft.
- Problemlösung ist das A und O der Arbeit von Informatikerinnen und Informatikern.
- In diesem Kurs geht es nicht nur um Programmierung – dieser Kurs führt Sie in eine neue Art des Lernens ein, die Sie auf fast alle Lebensbereiche anwenden können.
- Wie Zahlen, Text, Bilder, Musik und Videos von Computern verstanden werden.
- Die grundlegende Idee von Pseudocode
- Vernünftige und unvernünftige Wege, KI in diesem Kurs zu nutzen.
- Wie Abstraktion in diesem Kurs eine Rolle in Ihrer zukünftigen Arbeit spielen wird.
- Die grundlegenden Bausteine der Programmierung, einschließlich Funktionen, Bedingungen, Schleifen und Variablen.
- Wie man ein Projekt in Scratch erstellt.
- Wie ein Compiler aus Quelltext Maschinencode macht.
- Wie man ein C-Programm schreibt, kompiliert und ausführt.
- Wie man eine Fehlermeldung des Compilers liest.
Und das war sie, die erste Vorlesung von Inf-Einf-B. Nun sind Sie dran!
Die Fragen zum Selbsttest helfen beim aktiven Lesen. Sie sind kein Vorgeschmack auf die Prüfung: Fragen und Antworten auswendig zu lernen reicht nicht zum Bestehen und ist vermutlich auch keine sinnvolle Vorbereitung. Was hilft: Wie Sie Inf-Einf-B bewältigen.
Diese Seite als Markdown: ansehen herunterladen