07.10.2024
Das Spiel "Mensch ärgere Dich nicht" ist sicher allgemein bekannt. Das Spiel "Töns ärgere Dich nicht" funktioniert folgendermaßen:
Wie auf einem Ziffernblatt angeordnet gibt es 12 Felder. Jede Spielerin oder Spieler startet mit genau einer Spielfigur in einer bestimmten Farbe auf dem Feld ganz oben (der 12). Nun wird der Reihe nach gewürfelt. Wir nehmen als Beispiel folgenden Spielablauf mit zwei Spielern an:
• Spieler 1 würfelt eine 1 -> Damit wird die erste Figur auf die "1" gesetzt.
• Spieler 2 würfelt eine 2 -> Damit wird die zweite Figur auf die "2" gesetzt.
• Spieler 1 würfelt eine 1 -> Damit wird die erste Figur auf die "2" gesetzt. Dort steht aber schon die Figur von Spieler 2. Diese wird geschlagen und muss zurück auf das Startfeld "12".
Gewonnen hat die Figur, die als erstes die 12 erneut überschreitet.
Hinweis zu den Aufgaben: Kopiere immer die Methode "toensAergereDichNicht0" und ändere die Ziffer am Ende. So kannst Du unterschiedliche Programmversionen für jede Aufgabe beibehalten.
Aufgabe 1: Erweitere das Programm so, dass jeder Spieler zu Beginn gefragt wird, welche Farbe die Spielfigur hat. Dies soll in der Spielstandübersicht mit ausgegeben werden.
Aufgabe 2: Erweitere das Programm so, dass zu jeder Figur gespeichert wird, wie oft sie schon geschlagen wurde.
Aufgabe 3: Erweitere das Programm so, dass das Programm für drei Spieler funktioniert.
Programmgeruest
import java.util.*;
public class Haupt {
public static void eingabeDemo() {
Scanner sc = new Scanner(System.in);
String eingabe;
int z;
System.out.println("Bitte gib deinen Namen ein:");
eingabe = sc.nextLine();
System.out.println("Ok "+eingabe+", gib Dein Alter ein:");
z = Integer.parseInt(sc.nextLine());
System.out.println("Ok "+eingabe+", in 10 Jahren bist Du "+(z+10)+" Jahre alt!");
}
public static void toensAergereDichNicht0() {
Scanner sc = new Scanner(System.in);
int wurf;
int nextPos;
int positionFigur1 = 0;
int positionFigur2 = 0;
int werIstDran = 1;
boolean spielLaeuftNoch = true;
while(spielLaeuftNoch) {
System.out.println("----");
System.out.println("Der Spielstand sieht gerade so aus:");
System.out.println("(Die Startposition 12 wird mit '0' ausgedrückt)");
System.out.println("Figur 1 auf Position: "+positionFigur1);
System.out.println("Figur 2 auf Position: "+positionFigur2);
System.out.println("----");
System.out.println("Gib den Würfelwurf von Figur "+werIstDran+" ein:");
wurf = Integer.parseInt(sc.nextLine());
if(werIstDran == 1) {
nextPos = positionFigur1 + wurf;
if (positionFigur2 == nextPos) {
// Figur 2 wird geschlagen
System.out.println("Figur 2 wird geschlagen und zurückgesetzt.");
positionFigur2 = 0;
}
positionFigur1 = nextPos;
werIstDran = 2;
} else if(werIstDran == 2) {
nextPos = positionFigur2 + wurf;
if (positionFigur1 == nextPos) {
// Figur 1 wird geschlagen
System.out.println("Figur 1 wird geschlagen und zurückgesetzt.");
positionFigur1 = 0;
}
positionFigur2 = nextPos;
werIstDran = 1;
}
if(positionFigur1 >= 12) {
System.out.println("Glückwunsch Spieler 1: Du hast gewonnen!");
spielLaeuftNoch = false;
}
if(positionFigur2 >= 12) {
System.out.println("Glückwunsch Spieler 2: Du hast gewonnen!");
spielLaeuftNoch = false;
}
}
}
}
30.09.2024
Ein Programmteil zum Kopieren und Ergänzen:
https://zumpad.zum.de/
sandkasten
20240930_ifefg2
23.09.2024
Ein Java-Projekt mit Turtlegrafik:
20240922_turtle_test.zip
16.09.2024
Lerninhalte bisher:
Modellierung: Eine Schwierigkeit in der Informatik ist es, Zusammenhänge aus der Wirklichkeit in ein Programm oder eine Formel umzuwandeln.
Computer sind "schnell": Manche Dinge passieren so schnell hintereinander, dass die Illusion von Gleichzeitigkeit entsteht oder manche Dinge nicht wahrnehmbar sind, obwohl sie passieren (und nur für einen Bruchteil einer Sekunde sichtbar sind).
Rechnen im Computer:
Die Modulo-Funktion %: "Rest bei der Grundschuldivision"
z.B.: 5%2 = 1 // 19%5 = 4 // 5%19 = 5
Programmierung mit Scratch
https://scratch.mit.edu/
Beobachtungen: Programme werden Schritt für Schritt "hintereinander" ausgeführt. Gleichzeitigkeit (obwohl prinzipiell möglich) ist für unsere Programmierarbeit erst einmal kein Thema.
Es gibt zwei wesentliche Strukturen: Wiederholung ("loop") und Verzweigung ("if-else"), mit denen man praktisch jede Programmlogik programmieren kann.
Variablen enthalten Werte (Zahlen oder auch Buchstaben oder ganze Texte). Den Variablennamen können wir frei wählen (die Namen dürfen keine Leerzeichen enthalten und nicht mit einer Ziffer beginnen). Der Wert einer Variablen lässt sich während eines Programms verändern.
Aufgaben:
1. Schreibe ein Programm in Scratch, welches mit dem Malstift ein Stern mit 10 (dann 11, dann 12) Zacken zeichnet.
2. Schreibe ein Programm in Scratch, welches zunächst den Benutzer fragt, wieviele Zacken der gewünschte Stern haben soll. Unsinnige Werte sollen abgefangen werden.
Hausaufgabe:
Schreibe eine eigene Prozedur "Pfeilspitze"
20240918_stern_mit_kringeln.sb3
12.09.2024
TIXY.land Nachschlag
Zu Übung 12 aus:
https://www.mathsuniverse.com/tixy
Probiere auch aus: (i%3)/3
Arbeitsweise des Modulo-Operators besprechen.
Gemeinsame Bearbeitung von Übungen 37 bis 41, dann noch Übung 45.
Ggf. sin(x)
09.09.2024
Konzept Funktion:
Eine Funktion in der Informatik funktioniert ähnlich wie Funktionen in der Mathematik:
Bekanntes Beispiel aus der Mathematik: f(x) = x² + 1
Nun gilt: f(4) = 17, f(5) = 26 usw.
Man setzt einen x-Wert in die Funktion ein und erhält nach einer Rechnung einen y-Wert.
In der Informatik muss der "x-Wert" nicht unbedingt eine Zahl sein. Er kann auch z.B. eine Zeichenkette sein:
Übliches Beispiel aus der Informatik: len(x)
Es gilt dann: len("nase") = 4 und len("zap") = 3
(hier kann keine Rechenvorschrift angegeben werden, weil zur Ermittlung des Funktionswertes ein kleines Programm ausgeführt wird)
In der Informatik besteht der "x-Wert" oft aus mehreren einzelnen Werten:
z.B. die Funktion ZeichenketteEnthält(x,b)
Damit: ZeichenketteEnthält("schule","z") = false (weil der Buchstabe z nicht in der Zeichenkette schule enthalten ist)
Oder : ZeichenketteEnthält("schule","e") = true (weil der Buchstabe e in der Zeichenkette schule enthalten ist)
Hieran sieht man außerdem, dass der Funktionswert nicht unbedingt eine Zahl sein muss. In diesem Fall sind nur "ja/nein" Antworten in der Wertemenge enthalten.
TIXY
Bei tixy.land gilt: Der "x-Wert" besteht aus vier Zahlen:
t - verstrichene Zeit in Sekunden
i - durchlaufende Nummer des Pixels
x - x-Koordinate des Pixels
y - y-Koordinate des Pixels
Nun muss man eine Rechenvorschrift basteln (also eine Funktion), die aus diesen Werten eine Zahl zwischen -1 und 1 erzeugt (Werte über 1 werden zu 1, Werte unter -1 werden zu -1 abgeändert). Für jedes der 256 Pixel wird die gebastelte Funktion aufgerufen und damit die Pixeldarstellung berechnet.
Beispiel:
(t,i,x,y) => t/2
Nach z.B. 0.2 Sekunden hat die Funktion den Wert 0.1. Damit ist der Darstellungswert für jedes Pixel 0.1 (also ein kleiner Kreis). Mit der Zeit - also bis nach 2 Sekunden wird jeder Kreis zum Vollkreis. Darüber hinaus ändert sich nichts mehr (da Zahlen über 1 zu 1 abgeändert werden)
(t,i,x,y) => i/5
Die ersten sechs Pixel (durchnumeriert von Null bis 4) bekommen die Werte 0, 0,2 0,4 0,6 und 0,8 zugeordnet. Danach sind die Werte 1 oder höher und damit werden nur noch Vollkreise gezeichnet.
Die x- und y-Koordinaten sind folgendermaßen zu verstehen: die x-Achse verläuft (wie in der Mathematik) nach rechts, die y-Achse aber nach unten!
Das erste Pixel ganz oben links hat die Koordinaten (0|0)
Das erste Pixel der nächsten Zeile (also darunter) hat die Koordinaten (0|1)
(t,i,x,y) => x/5
Hier werden die ersten fünf Pixel links in jeder Zeile die Kreise etwas dünner gezeichnet. Also fast wie i/5, nur in jeder Zeile.
Die Formeln sind nichts anderes als JavaScript-Ausdrücke. Dabei gibt es die Besonderheit, dass Funktionswerte, die keine Zahlen sind, zu Zahlen umgewandelt werden:
(t,i,x,y) => i == 2
Dahinter steckt die Abfrage "Hat i den Wert 2?": Die Antwort "ja" wird zu 1 umgewandelt, die Antwort "nein" wird zu 0 umgewandelt.
Durlaufe nun folgendes Tutorial
https://www.mathsuniverse.com/tixy
Aufgaben: Erzeuge folgende Bilder:
a) Obere Hälfte weiß, untere Hälfte leer
b) Obere Hälfte weiß, untere Hälfte rot
c) Führe a und b auch für links rechts, statt "oben unten" aus. Ebenso "Unten Oben" statt Oben unten.
d) Erzeuge die Muster mit Diagonalen!
Erzeuge deine Muster bei
https://tixy.land/
23.08.2024
Informatikunterricht in der EF bei Herrn Töns
• Bewertungskriterien: Qualität der Mitarbeit, (ggf. auch Quantität, falls themenbezogen), Fachsprache, Selbständigkeit, bei Hausaufgaben: Ernsthafte Ansätze müssen erkennbar sein!
• Bitte einen USB-Stick anschaffen!
Grundlagen Windows
Ich will sehen, wie gut ihr mit Windows umgehen könnt:
• Erstelle auf dem Desktop ein Verzeichnis mit dem Namen "Informatikhelden"
• Erstelle ein Dokument (ein einfacher Kurztext wie "Hallo Informatik" genügt) in der Textverarbeitungssoftware "Open-Office" und speichere es ab in dem Ordner "Informatikhelden"
• Erstelle ein Dokument in dem Programm "Notepad" oder "Notepad++" (beides auf dem Desktop zu finden) mit dem gleichen Text wie in der vorigen Aufgabe. Auch Dieses Dokument soll wieder in dem Verzeichnis "Informatikhelden" abgespeichert werden.
• Schaue Dir den Inhalt des Ordners "Informatikhelden" mit dem Datei-Explorer an und erkläre, welche Unterschiede die beiden abgespeicherten Dateien besitzen.
• Tastaturtraining: Erstelle in Notepad++ eine Kopie von folgenden Tierchen:
• Kopiere dieses Bärchen in das Open-Office-Dokument hinein und erkläre, warum die Grafik nicht mehr schön aussieht.
•
Daten im Zahlenformat anzeigen Dafür gibt es z.B. einen Dienst im Internet:
https://hexed.it/ Betrachte die txt-Datei und die odt-Datei mit diesem Programm
• Wie funktioniert ein QR-Code?
• Ein IPhone12 Pro aus dem Jahr 2020 besitzt 6 Gigabyte RAM. Wie groß müsste ein QR-Code (Pixelgröße 1mm) sein, der diese Datenmenge speichern könnte?
• Lösche das Verzeichnis "Informatikhelden". Sind die Daten wirklich weg?
Unterschiede zwischen TXT-Dateien und doc-Dateien (oder odt-Dateien)
TXT-Dateien sind i.d.R. kleiner als Office-Dateien, da in den Office-Dateien Zusatzinformationen (Schriftgöße, Schrifart, Abstände etc.) gespeichert sind.
Bei TXT-Dateien wird für jedes Symbol (Buchstabe oder Zeilenumbruch etc.) genau ein Byte auf die Festplatte geschrieben. D.h. in der Regel kann ich für jede "Stelle" in einer Textdatei eines von 256 Symbolen auswählen, weil ein Byte Werte von 0 bis 255 annehmen kann.
Zahlensysteme
Dezimalsystem: Das System, welches wir kennen. Es gibt 10 Ziffern, nämlich 0,1,2,3,4,5,6,7,8,9. Mit diesen Ziffern kann man alle Zahlen auf bekannte Art und Weise bilden!
Oktalsystem: Hier hat man nur 8 Ziffern zur Verfügung: 0,1,2,3,4,5,6,7. Nach der Zahl 7 im Oktalsystem kommt die 10 im Oktalsystem, da die Ziffer 8 nicht existiert. Siehe auch:
https://de.wikipedia.org/wiki/Oktalsystem
Binärsystem: Hier hat man nur 2 Ziffern zur Verfügung: 0 und 1. Siehe auch
https://de.wikipedia.org/wiki/Dualsystem
Hexadezimalsystem: Hier hat man 16 Ziffern zur Verfügung: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f. Siehe auch
https://de.wikipedia.org/wiki/Hexadezimalsystem
Um Zahlen in verschiedenen Systemen auseinanderzuhalten, kann man jeweils an die Zahl eine Kennzeichnung anhängen. Beispiel:
10(dez) = 12(okt) = 1010(bin) = a(hex)
Ergänze:
11(dez) = ___(okt) = _ ___(bin) = ___(hex)
__(dez) = 11(okt) = ____(bin) = ___(hex)
__(dez) = ___(okt) = 11101(bin) = ___(hex)
__(dez) = ___(okt) = ____(bin) = 23(hex)
__(dez) = ___(okt) = ____(bin) = ff(hex)
"Why do programmers always mix up Halloween and Christmas?"
Hausaufgabe:
Von "Blockly":
https://blockly.games/?lang=de
* Puzzle
* ersten beiden Level vom Labyrinth