~~NOTOC~~ ====== Informatik Schuljahr 2023/24, 2eNP, 2dNP, 2pG ====== Ich entschuldige mich für das teilweise Sprachkauderwelsch, aber die deutschen Begriffe klingen in der Informatik oft etwas seltsam ... ====== 5. Bits and Bytes: Wie funktioniert ein Computer? ====== ==== Lernziele ==== Leicht aktualisiert, Erstellen einer logischen Schaltung mit Logisim kann auch drankommen. Voraussichtlich findet in diesem Fall der Hauptteil der Prüfung auf Papier statt, der Logisim-Teil als letzte Aufgabe am Computer. Wer Logisim nicht installiert hat, muss das dann in der Prüfung nachholen. {{ :lehrkraefte:snr:informatik:glf23:lernziele-bits-and-bytes.pdf |}} ==== Stoff ==== Logisim Download: https://sourceforge.net/projects/circuit/ * {{ :lehrkraefte:snr:informatik:glf23:bits-and-bites:bits-and-bytes-sv.pdf |Skript, Seiten 1-4}} * {{ :lehrkraefte:snr:informatik:glf23:bits-and-bites:bits-and-bytes-seiten-5-8.pdf |Skript, Seiten 5-8}} * {{ :lehrkraefte:snr:informatik:glf23:bits-and-bites:bits-and-bytes-sv-9-10.pdf |Skript, Seiten 9-10}} Lösungen einiger Aufgaben (eventuell muss man noch das "numeric python package" ''numpy'' installieren; das sollte in VS Code im Terminal der Befehl ''pip install numpy'' erledigen): {{ :lehrkraefte:snr:informatik:glf23:bits-and-bites:loesungen-bits-and-bytes-bis-aufgabe-15.py |}} Einige Links: * Exploring how computers work (bis 6:16, Binärzähler einschliesslich): https://www.youtube.com/watch?v=QZwneRb-zqA * 2023: ca. 160 Millionen Transistoren pro Quadratmillimeter: https://en.wikipedia.org/wiki/Transistor_count#Transistor_density Drehen von Bauteilen (Pins, And, Or, ...) durch Anklicken (im Konstruktionsmodus) und Menüpunkt "Facing" im Fenster links. Folgende Abbildung: XOR {{:lehrkraefte:snr:informatik:glf23:bits-and-bites:xor-logisim.png?200|}} Folgende Abbildung: Halbaddierer HA: Addiert zwei Bits (= 1-stellige Binärzahlen) {{:lehrkraefte:snr:informatik:glf23:bits-and-bites:halbaddierer.png?100|}} Folgende Abbildung: Volladdierer VA: Addiert drei Bits (= 1-stellige Binärzahlen) {{:lehrkraefte:snr:informatik:glf23:bits-and-bites:volladdierer.png?100|}} Folgende Abbildung: 4-Bit-Addierer: Addiert zwei 4-stellige Binärzahlen, https://de.wikipedia.org/wiki/Carry-Ripple-Addierer Die Hexadezimalanzeigen sind optional. Man findet sie in Logisim unter "Input/Output". Zum Anschliessen benötigt man Splitter, die man unter "Wiring" findet. {{:lehrkraefte:snr:informatik:glf23:bits-and-bites:4-bit-addierer.png?400|}} ====== 4. Webprojekt: Webseiten erstellen mit HTML und CSS ====== * [[lehrkraefte:snr:informatik:glf23:abgabe-webprojekt|Abgabe des Webprojekts inklusive Abgabetermin]] Das Ziel ist, dass du eine Website (= mehrere, thematisch zusammengehörende Webseiten) erstellst, die dann lokal im Schulnetz für alle zugänglich ist. Am Ende der Projektphase stellst du deine Website in der Klasse in einer kurzen Präsentation vor.((Code aus dem Internet und KI dürfen verwendet werden (bei grösseren Codefragmenten mit Quellenangabe), jedoch musst du in der Lage sein, mir deinen Code zu erklären (im Zweifelsfall Zeile für Zeile).)) * 4.0: [[lehrkraefte:snr:informatik:glf23:webseiten-allgemein|Allgemeines zu Webseiten]] * 4.1 (1 Doppellektion): [[lehrkraefte:snr:informatik:glf23:html|Einführung in HTML]] * 4.2 (1 Doppellektion): [[lehrkraefte:snr:informatik:glf23:css|Einführung in CSS]] * 4.3 (gemeinsam): [[lehrkraefte:snr:informatik:glf23:html-css:filezilla|Hochladen der Website auf den Tech-Lab-Server]] * Nach dem erfolgreichen Hochladen findest du deine Website via ''https://ofi.tech-lab.ch/2024''. (Wenn Veränderungen nicht sofort sichtbar werden: ''Ctrl+Shift+r'' für "hard refresh".) * 4.4 [[lehrkraefte:snr:informatik:glf22:html-css:projekt-anregungen|Anregungen für die Projektphase]] Bemerkungen für nächstes Mal (auskommentiert): ===== 3. Python-Programmierkurs ===== * 3.1 (2 bis 2.5 Doppellektionen) [[lehrkraefte:snr:informatik:glf23:python:variablen-input-output|Ausgabe, Eingabe und Variablen]] * 3.2 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:if-statements|if-statements]] * 3.3 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:while-loops|while-loops]] * 3.4 (Lektion nach den Herbstferien): * Python-Wiederholung {{ :lehrkraefte:snr:informatik:glf23:python:python-wiederholung-arbeitsblatt.pdf | Arbeitsblatt}}, {{ :lehrkraefte:snr:informatik:glf23:python:python-wiederholung-musterloesung.pdf | Lösung}} * [[lehrkraefte:snr:informatik:glf23:biber|Biber ausprobieren und Infos]] * 3.5 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:turtle|Turtle-Grafik]] * 3.6 (1 Lektion nach Biber + 1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:funktionen|Funktionen ]] * 3.7 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:listen|Listen]] * 3.8 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:rekursion|Rekursion]] * 3.9 (1-2 Doppellektionen) [[lehrkraefte:snr:informatik:glf23:python:pygame|Spielprogrammierung mit PyGame]] ===== 2. Algorithmisches Denken: Vom Problem zum Pseudo-Code zum Python-Programm ===== * 2.1 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:vom-pseudocode-zum-programm-teiler-einer-zahl|Teiler einer Zahl]] (inklusive Installation von Python, Installation von Python extensions in VS Code, Ausführen eines Python-Programms in VS Code) * 2.2 (1 Doppellektion) [[lehrkraefte:snr:informatik:glf23:python:vom-pseudocode-zum-programm-umwandlung-zweiersystem|Zahl im Zweiersystem (= Binärsystem = Dualsystem) ausgeben]] ===== 1. HTML-Seite mit Visual Studio Code erstellen (1 Doppellektion) ===== * Vorstellung meinerseits und Organisatorisches (Prüfungstermine, Themen in Informatik) * Kurze Geschichte der Informatik anhand wichtiger Persönlichkeiten: https://gi.de/persoenlichkeiten ((vgl. auch [[https://de.wikipedia.org/wiki/The_Imitation_Game_%E2%80%93_Ein_streng_geheimes_Leben|The Imitation Game - Ein streng geheimes Leben]], [[https://www.imdb.com/title/tt4400588/|The Queen of Code]] und [[https://de.wikipedia.org/wiki/Hidden_Figures_%E2%80%93_Unerkannte_Heldinnen|Unerkannte Heldinnen]])) * Grobe Unterscheidung: * ICT: Anwendungen/Apps verwenden * Informatik: Anwendungen selbst erstellen, "digital mündig werden" * Was ist [[https://de.wikipedia.org/wiki/Informatik|Informatik]]? * [[lehrkraefte:snr:informatik:glf22:html-startseite|Vorbereitungen, Installation von Visual Studio Code, Erstellen einer HTML-Startseite]] * diverse Hotkeys erklärt: etwa ''Alt-Tab'', ''Windows+Pfeiltaste'', teilweise ''Alt+Pfeiltaste hoch/runter'' in VS Code. ===== Lernziele Python-Prüfung ===== Allgemein: Wer in den Lektionen gut mitgearbeitet hat, sollte in der Prüfung gut abschneiden können. Die Prüfung findet auf Papier statt und wird vom Stil her ähnlich aussehen wie das unten verfügbare Wiederholungsblatt nach den Herbstferien (siehe 3.4). Der Schwerpunkt liegt auf dem Leseverständnis von Python-Programmen. Wissen (angegeben ist meist das abstrakte Konzept und die konkreten Begriffe bzw. Zeichen, die in der Programmiersprache Python dafür verwendet werden): Grundkenntnisse der Programmierung am Beispiel der Programmiersprache Python, genauer: * Kenntnis der wesentlichen [[https://de.wikipedia.org/wiki/Kontrollstruktur|Kontrollstrukturen]] in Computerprogrammen: * if (else) statements (bedingte Anweisung/Verzweigung); ''if'', ''else'', ''elif'' (Doppelpunkte beachten) * while loops ("Solange"-Schleife, bedingte Wiederholung); ''while'' (Doppelpunkt beachten) * Funktionen (mit und ohne Rückgabewert); ''def'', return (Doppelpunkt beachten) * Code-Blöcke/Blockstruktur: Bedeutung von Einrückungen in Python (vier/acht/zwölf/etc. Leerschläge am Zeilenanfang) * Variablen (= Speicherplätze mit Namen, deren Inhalt sich während des Programmablaufs ändern kann) * Ein- und Ausgabe (''input'', ''print'') * Unterscheidung zwischen Datentyp "Zahl" (genauer integer (= ganze Zahl) und float (= Kommazahl) und Datentyp "Zeichenkette" (= string) * Umwandlung von integer in string (per ''str'') und von (als ganze Zahl auffassbarem) string in Zahl (per ''int'') * Rechnen mit Zahlen (insbesondere Symbole für Rechenzeichen, d.h. ''+'', ''-'', ''*'', ''/'', ''//'', ''%'', ''**''. * Rechnen mit Strings: String ''+'' String, Zahl ''*'' String * Unterschied zwischen Zuweisungszeichen ''='' und Vergleichszeichen ''==''; weitere Vergleichszeichen sind ''<'', ''<='', ''>'', ''>=''. * Logisches Oder (''or'') und logisches Und (''and'') * Turtle-Grafik, Grundfunktionen (''forward'', ''left'', ''right'') * (nur Klassen 2dNP und 2eNP): Grundlagen zu Listen: Definition einer Liste, Zugriff auf Elemente, Länge einer Liste, Schleifen über Listen * algorithmisches Denken: Vom Problem zum [[https://de.wikipedia.org/wiki/Algorithmus|Algorithmus]] (den man etwa in Pseudocode oder in einer Programmiersprache wie Python angeben kann), siehe Abschnitt 2, insbesondere 2.1 unten. Können * (kleine) Python-Programme, die die oben aufgeführten Konzepte verwenden, verstehen können. * "Computer spielen" können: * Ausgabe eines Programms ermitteln können. * In einer Tabelle eintragen können, wie sich die Variablen während eines Programmablaufs ändern. * Fehler in Python-Programmen finden und korrigieren können (oder statt Fehlern Lücken in einem Programm-Code ausfüllen ("Lückenprogramm" statt "Lückentext")) * Herausfinden können, was ein Python-Programm tut. * (vermutlich maximal zwei Aufgaben am Ende:) selbst ein (kleines) Python-Programm oder eine Funktion schreiben können, das ein vorgegebenes Problem löst, und dabei algorithmische Denkfähigkeit demonstrieren (etwa Ausgabe aller Quadratzahlen von $1^2$ bis $n^2$ für eine am Programmanfang definierte Variable ''n''). ====== Biber-Wettbewerb ====== * [[lehrkraefte:snr:informatik:glf23:biber-wettbewerb|Biber-Wettbewerb]]