Bis zum 22.11.2021 kann man Lösungen für die Aufgaben der 3. Runde des Jugendwettbewerbs Informatik und der 1. Runde des Bundeswettbewerbs Informatik abgeben.
1. Treffen
2. Treffen
3. Treffen
4. Treffen
5. Treffen
Junioraufgabe 2
Schiebeparkplatz
1. Treffen am Mittwoch, den 29.09.
Wo finde ich die Aufgaben?
- Die Aufgaben stehen auf dem Aufgabenblatt: bwinf.de/fileadmin/bundeswettbewerb/40/Bundeswettbewerb-Aufgabenblatt.pdf
- Zu den Aufgaben gehören ergänzende Materialien, z.B. Eingabedateien und Formatbeschreibungen der Dateien: bwinf.de/bundeswettbewerb/40/1/
Wie kann ich teilnehmen?
- An der 3. Runde des Jugendwettbewerbs Informatik kann nur teilnehmen, wer an der 1. und 2. Runde Anfang des Jahres teilgenommen und sich für die 3. Runde qualifiziert hat.
- Zusätzlich zur 3. Runde JWINF kann man an der 1. Runde des BWINF teilnehmen, indem eine weitere BWINF-Aufgaben abgegeben wird.
- Teilnahme nur am BWINF: Wer sich nicht in den ersten beiden Runden des JWINF qualifiziert hat, kann mit 3 beliebigen Aufgaben des Aufgabenblatts an der 1. Runde des BWINF teilnehmen. Das gilt nur für Schüler*innen bis zur 9. Klasse Gymnasium oder 10. Klasse Gemeinschaftsschule.
Ältere Schüler (ab 10. Klasse Gymnasium oder 11. Klasse Gemeinschaftsschule) dürfen die Junior-Aufgaben nicht mehr wählen. Sie müssen 3 Aufgaben des BWINF abgeben.
Wie bearbeite ich eine Aufgabe?
- Jede Aufgabe darf in einer selbstgewählten Programmiersprache bearbeitet werden.
- Möglich ist eine grafische Programmiersprache, z.B. Blockly: blockly.bwinf.de/eingabe_ausgabe/
- Ansonsten empfehlen wir Python, Java, C++, …
- Als Programmierumgebung bietet sich replit.com an. Dort muss ein Konto angelegt werden, für das man eine eigene Email-Adresse benötigt.
- Es kann auch auf dem eigenen Computer, z.B. mit Visual Studio Code, gearbeitet werden.
- Für die Abgabe muss zur programmierten Lösung ein Dokument erstellt werden. Eine Vorlage für das Dokument und der gewünschte Inhalt findet sich auch auf der Seite mit den ergänzenden Materialien.
Wie programmiere ich eine Lösung?
- Aufgabe genau und mehrfach lesen.
- Wenn es eine ungefähre Idee davon gibt, was eine Lösung sein könnte, einfach anfangen zu programmieren. Das große, in der Aufgabe beschriebene Problem muss in kleinere Teilprobleme zerlegt werden, die gelöst werden können.
Wo fange ich an?
- Programmiersprache wählen, z.B. Python
- Für eine Programmierumgebung entscheiden, z.B. replit.com
- „Hello World“-Programm in der Programmiersprache und Programmierumgebung schreiben
- Es muss eine Eingabedatei gelesen werden.
- Wie in Python (und Java) eine Datei eingelesen wird, steht z.B. in den Tutorials der W3Schools: www.w3schools.com/python/python_file_open.asp
- Alternative auf Deutsch: buildmedia.readthedocs.org/media/pdf/py-tutorial-de/python-3.3/py-tutorial-de.pdf
Aufgaben bis zum nächsten Treffen
- Lies die Aufgabe „Zum Winde verweht“
- Entscheide Dich für eine Programmiersprache
- Entscheide Dich für eine Programmierumgebung
- Schreibe ein „Hello World“-Programm
- Schreibe ein Programm, das eine beliebige Datei einliest und den Inhalt der Datei auf der Konsole ausgibt.
- Schreibe ein Programm, das die Datei „landkreis1.txt“ einliest und ausgibt.
Wie geht es weiter?
- Jede Zeile der Eingabedateien „landkreis1.txt“ bis „landkreis4.txt“ enthält in jeder Zeile zwei Zahlen. Die Zahlen müssen erkannt und als Zahlen gespeichert werden.
- Das Programm muss erkennen, wo Koordinaten für Häuser stehen und wann die Koordinaten für Windradstandorte folgen.
- Die Koordinaten von Häusern und Windradstandorten müssen im Programm gemerkt werden. Es braucht eine geeignete Datenstruktur dafür.
- Der Algorithmus ist irgendwas mit
- Für jedes Windrad (Schleife)
- berechne die Entfernung zu jedem Haus (Schleife)
- Ermittle die kleinste Entfernung.
- Berechne aus der kleinsten Entfernung die maximal erlaubte Windradhöhe für diesen Standort.
- Für jedes Windrad (Schleife)
- Tipp: Zum Berechnen der Entfernung von einem Haus zu einem Windradstandort benötigen wir den Satz des Pythagoras
2. Treffen am Mittwoch, den 06.10.
Erste Zeile der Datei einlesen und ausgeben:
Zeichenkette in der ersten Zeile auseinander nehmen:
Ausgabe der zerlegten Zeile:
Die Werte in der Liste, die aus der Zerlegung entstanden ist, einzeln ansprechen:
Merken der einzelnen Werte in Variablen und benutzerfreundliche Ausgabe der Werte:
Versuch die folgenden Zeilen der Häuser und Windradstandorte mit Hilfe der ermittelten Werte in for-Schleifen zu lesen:
Die aus der Eingabedatei gelesenen Zeichenketten müssen zu Zahlen werden, damit sie in der For-Schleife genutzt werden können.
Die Fehlermeldung ist weg. Das Programm läuft und kann Zeilen mit Hauskoordinaten von Zeilen mit Koordinaten für Windradstandorte unterscheiden.
Merken der gelesenen Werte in Listen für Häuser und Windradstandorte:
Aus den Zeichenketten der Koordinaten müssen noch Zahlen werden:
Mit den Listen, die Zahlwerte enthalten, können wir nun rechnen. Für jeden Windradstandort muss die Entfernung zu jedem Haus berechnet werden. Von allen Werten muss der kleinste gemerkt werden. Dieser Wert wird benötigt, um die maximale Windradhöhe auszurechnen.
Aufgabe bis zum nächsten Treffen
- Können mit dem bisherigen Programm auch die Eingabedateien landkreis2.txt bis landkreis4.txt eingelesen werden? Teste alle Eingabedateien.
- Wie kann der Abstand zwischen den X- oder Y-Werten berechnet werden?
- Welche Fälle müssen bei der Berechnung unterschieden werden?
- Wie wird in jedem Fall der Abstand korrekt berechnet?
- Es ist sinnvoll, die verschiedenen Fälle aufzumalen und die jeweiligen Berechnungen aufzuschreiben.
Das nächste Treffen ist am Montag, den 11.10., um 18 Uhr.
3. Treffen am Montag, den 11.10.
Nach dem Start der Programmierung der 1. Junioraufgabe haben wir uns heute genauer angeschaut, was wie berechnet werden soll:
Nachdem wir ungefähr wissen, was wir wie berechnen wollen, arbeiten wir weiter am Algorithmus: Für jeden Windradstandort müssen wir die Entfernung zu jedem Haus berechnen. Wir brauchen geschachtelte Schleifen.
Aufgaben zum nächsten Treffen
- Die Überlegungen von oben müssen überführt werden in Berechnungen der Entfernungen der X-/Y-Werte in Python (Strecken a und b)
- Der Satz des Pythagoras muss benutzt, um die Entfernung von Haus zu Windradstandort zu berechnen (Strecke c).
- Dokument beginnen:
- Vorlage für das Dokument finden
- Eigenes Dokument starten:
- Berechnungen
- Wahl der Programmiersprache
- Skizzen
- Pythagoras
4. Treffen am Mittwoch, den 20.10.
Heute haben wir die Berechnungen, die wir uns beim letzten Treffen überlegt haben, in die geschachtelten For-Schleifen programmiert (Zeilen 39 – 41).
Zusätzlich mussten wir uns aus allen Werten jeweils den kleinsten merken (Zeilen 42 – 43). Zum Start der Berechnung brauchten wir noch einen maximal großen Werten, mit dem wir den Vergleich starten (Zeile 35 mit Import in Zeile 1).
Zum Schluss wird für jeden Windradstandort ausgegeben, welche maximale Windradhöhe hier erlaubt ist (Zeile 44).
Das Programm funktioniert für alle vier Landkreis-Dateien.
Was ihr noch anpassen könnt:
- Abfrage der gewünschten Eingabedatei
- Anpassen der Ausgaben, z.B. Weglassen der Anzeige der Listen
- Maximalhöhen der Windräder runden
- Ergebnisse in eine Ausgabedatei schreiben
- Behandeln von möglichen Fehlern, z.B. fehlerhafte Eingaben
Aufgaben zum nächsten Treffen
vorlage_einsendung_runde1- Erste Version der Dokumentation
Zum Anschauen findet ihr hier Abgaben der Junioraufgaben von 2019:
infolab.cs.uni-saarland.de/2020/10/28/teilnahme-an-der-3-runde-des-jwinf-2020/
Beim nächsten Termin am Donnerstag, den 28.10., um 10 Uhr schauen wir uns eure Abgabedokumentation an.
5. Treffen am Mittwoch, den 28.10.
- Vorlage der Dokumentation gefunden
- Eigenes Dokument mit der geforderten Kapitelaufteilung erstellt
- Inhaltsverzeichnis automatisch erzeugen lassen
- Tipp: Schreibt das Dokument so, dass eure Eltern/Geschwister es verstehen könnten.
- Im Dokument zeigt ihr, dass ihr die Aufgabe verstanden habt und begründet, warum eurer Programm eine Lösung der Aufgabe ist.
- Weitere Tipps zur Abgabe: https://bwinf.de/bundeswettbewerb/teilnehmen/einsendungen/teilnehmer/
Aufbau des Zip-Archivs
Aufgaben zum nächsten Treffen
- Erste abgabefähige Version der Dokumentation
- Lasst die Dokumentation von jemandem Korrektur lesen
- Zip-Archiv selber erzeugt
- Überlegt euch, ob ihr eine zweite Aufgabe abgeben wollt. Vielleicht haben wir am Montag Zeit, eine neue Aufgabe anzuschauen.
Beim nächsten Termin am Montag, den 01.11., um 17 Uhr schauen wir uns eure Abgabedokumentation an.
Weitere Beispiele für Abgabedokumente:
https://bwinf.de/bundeswettbewerb/teilnehmen/beispielaufgaben/
Quellcode mit Syntaxhighlighting: https://carbon.now.sh/
https://replit.com/@CoderDojoSaar/Junior-1