Skip to content

Computer Science

5 posts with the tag “Computer Science”

Informatik Präsentation: Künstliche Intelligenz

Schwarm
Schwarm.

Im letzten Halbjahr haben wir unserer komplette Informatiknote durch eine Präsentationsprüfung ersetzt. Die Themen konnten wir uns weitestgehend selbst aussuchen. Die sechs Schüler aus unserem Kurs teilten sich in drei Zweiergruppen auf, die jeweils 20 Minuten Zeit hatten ihr Thema vorzustellen. Mit dem anschließenden Kolloquium war die Zeit für uns also alle knapp bemessen. So musste ich mich mit meinem Teil wirklich sputen.

Unsere Präsentation kann mal wirklich als sehr allgemeine und kurze Einführung in die KI verstehen. Nach einer kurzen Definition der Begriffe Intelligenz und künstliche Intelligenz berichten wir kurz über die Geschichte der KI Forschung und deren Anwendungsgebiete. Anhand von einem Beispiel, der Particle Swarm Optimization, wollen wir einen kurzen Einblick in die vielfältigen Anwendungen von KI geben. Ein kurzer philosophischer Ausblick in die Zukunft schließt die Präsentation ab.

Download:Künstliche Intelligenz (Präsentation)

Das n-Damen Problem

Für meine morgige Informatik-Klausur habe ich mich mal wieder an C++ gewagt um einen Algorithmus zu implementieren. Die Hauptthemen der Klausur werden das n-Dame Problem und das Josephus Problem sein.

JS, PHP & CSS Frontend
JS, PHP & CSS Frontend.

Für das n-Damen-Problem habe ich eine iterative Backtracking-Implementation in C++ geschrieben. Zudem ist es auch mein erstes funktionsfähiges und komplexeres C++ Programm 😉.

Um euch meine Ergebnisse zeigen zu können, habe ich mich bei der PHP, JS & CSS Version meines Freundes Micha bedient und sie leicht angepasst.

Das PHP-Script ruft über den Backtick-Operator das C++ Programm auf und stellt es anschließen mit JS und CSS dar.

Um den Server zu schonen habe ich die maximale Feldgröße auf 13 beschränkt. Das sind zu mindestens schon mal fünf Damen mehr als bei der PHP-Version.

Ohne die Beschränkung sind auch Problemgrößen bis 16 in einem angemessenen Zeitrahmen zu bewältigen. An den Weltrekord (25 Damen) komme ich jedoch noch nicht 😉.

Den Quellcode des C++ Programms findet ihr auf Codeberg: /stv0g/snippets/c++/ndame

Delphi 2D-Autorennen

Als Abschluss des Informatik Grundkurses der elften Klasse möchte ich hier nun unsere Implementierung eines 2D Autorennspiels in Delphi vorstellen. Anfangs bestand die Aufgabenstellung darin ein ein-dimensionales Rennspiel zu entwickeln, bei dem der Spieler mit den schnelleren Fingern gewinnt. Also quasi ein einfaches Geschicklichkeitsspiel. Anfangs sind wir daher nur auf einer Linie gefahren. Aber wer hätte es gedacht? Nach einer Zeit wurde das ziemlich langweilig. Und da wir noch genügend Zeit hatten, strukturierten wir unseren Code grundlegend neu und fügten die Simulation von Beschleunigung und Verzögerung hinzu.

Screenshot des 2D Autorennens
Screenshot des 2D Autorennens.

Trotzdem sind wir noch nicht über die erste Dimension hinaus gekommen. Nachdem nach der vierte Doppelstunde immer noch nicht alle fertig waren und wir schon dabei waren Extras und Cheats einzubauen, habe ich mich dann entschlossen in die zweite Dimension zu gehen. Die kleine Physik-Engine behielten wir bei und fügten die Möglichkeit hinzu die Autos zu lenken. Aber nun hatten wir ein Problem: wie wird die nun zwei-dimensionale Strecke begrenzt? ine Strecke mit Canvas Objekten zu zeichnen war uns zu aufwendig und auch nicht gerade sehr schön. Wir bedienten uns daher einer Technik die auch als “Colorcoding” bekannt ist: verschiedene Farben in einer Bitmap markieren, fahrbare Bereich und Barrieren. Einen Rundenzähler und eine Konfigurationsdatei rundeten schließlich das Projekt ab.

Color Coding der Fahrbahn
Color Coding der Fahrbahn.

Wir legten diesmal viel Wert auf die objektorientierte Entwicklung des Codes, da dies das aktuelle Unterrichtsthema ist.

Ein Frontend für die Einstellungen sparten wir uns, um uns mehr auf die “Physik” konzentrieren zu können. Die Einbindung eines INI-Files lernte ich nebenbei auch noch. Das Autorenn Program ist also als Gegenstück zum Potenzübungs Program zu sehen. Hierbei legten wir mehr Wert auf ein schönes GUI mit Hilfe und Installer.

Ihr könnt den Quellcode gerne für eure Projekte weiterverwenden. Ich bitte jedoch um einen kurzen Kommentar und einen Hinweis im GUI, Danke

Download:2D Delphi-Autorennen

Des Weiteren ist das Projekt auch auf Codeberg zu finden: /stv0g/2d_autos .

Delphi Potenzübungsprogramm

Im Rahmen unseres Informatikunterrichts in der zehnten Klasse wurde unsere Leistung durch eine Projektarbeit bewertet. In kleinen Gruppen arbeiteten wir an jeweils unterschiedlichen Projekten.

Das Potenz Übungsprogramm war unser erstes kleines Delphi-Projekt. Wir steckten unsere ganze Motivation hinein und fügten sogar eine Hilfe mit Bildern und einen Installer hinzu. Wir teilten unsere Gruppe in Programmierung, Packaging und Dokumentation auf 😉. Jeder hatte ja seine eigenen Vorlieben und Fachgebiete.

Das Hauptprogramm
Das Hauptprogramm.

Die Aufgabenstellung bestand darin ein kleines Potenzübungsprogramm zu entwickeln, welches beim Lernen der Potenzregeln helfen sollte. Wir fügten eine Fehlerkorrektur, einen Webkampfmodus mit Onlineranking hinzu (ist leider nicht mehr online). Wir legten viel Wert auf eine intuitive und schnelle Bedienung. Das Programm ist komplett über die Tastatur bedienbar. Der User bekommt eine akustische Rückmeldung seines Ergebnisses und abschließend eine statistische Auswertung seiner Übung.

Hier wurde nichts vergessen
Hier wurde nichts vergessen.

Mit dem Projekt lernten wir alle Möglichkeiten von Delphi kennen. Und natürlich mussten wir fast alle Features und Gimicks (App-Icon, Hilfe, etc) einmal ausprobieren. Also unser Programm ist eine “Eierlegende Wollmilchsau” und daher wohl auch eher eine Art Machbarkeitsstudie, um unseren lieben Informatiklehrer zu beindrucken 😉.

Ihr könnt den Quellcode gerne für eure Projekte weiterverwenden. Bitte beachtet jedoch die GPL.

Download:Delphi Potenzübungsprogramm (`.msi` Installer mit Quellcode)

Alternativ gibt es den Quellcode auf Codeberg: /stv0g/potenz .

/_astro/potenz-about.lpwiOXmJ.png /_astro/potenz-help-contents.C2LdTVMw.png /_astro/potenz-help.DEbawPon.png /_astro/potenz-icon.CTtqCCI6.png /_astro/potenz.HKtLroAG.png