Sie sind auf Seite 1von 5

Aufgabe 1 Computer sind nutzlos ...

ohne Software
Elektronische Digitalrechner, die verallgemeinert
auch als „Computer“ bezeichnet werden, sind all-
gegenwärtig. Im Alltag übersieht man sie jedoch
oft, da sie sich miniaturisiert in den Gehäusen ver-
schiedenster Geräte verbergen. Prinzipiell beste-
hen diese kleinen Computer, wie auch ihre größe-
ren Verwandten, die Personal- Computer (PC),
aus Hardware – alles was man anfassen kann –
und Software – alles was man nicht anfassen
kann.
Ohne die Software ist ein Computer nutzlos wie
z.B. ein Auto ohne Räder. Mit der geeigneten Software lässt er sich für viele Berei-
che im Alltag sinnvoll nutzen: für Büroarbeit, E-Mails, zur Informationssuche, zur
Produktentwicklung, u.v.m.
Die erste Aufgabe dieser ILC hat das Thema Software als Schwerpunkt. Es sollen
u.a. eigene, kleine Programme zur Lösung verschiedener Problemstellungen entwik-
kelt werden.

Software- bzw. Programmierkenntnisse sind zur vollständigen Lösung der Aufgabe


von Vorteil, jedoch nicht notwendige Voraussetzung. Die erforderlichen Kenntnisse
können im Laufe der Bearbeitung der Aufgabenunterpunkte erworben werden.

In Industrieprojekten sind häufig gewisse Projektvorgaben notwendig, z.B. um ge-


meinsame Produktentwicklungen mit mehreren Arbeitsgruppen an unterschiedlichen
Standorten in der Welt durchführen zu können. Unsere Vorgabe für Aufgabe 1 lau-
tet:
Benutze zur Erstellung der Lösungen der Aufgabenpunkte 1b, 1c und 1d die Pro-
grammiersprache Visual Basic* (VB.NET)! Die Entwicklungsumgebung für Visual
Basic* (VB.NET) kann im Internet von folgendem URL geladen bzw. installiert wer-
den:
http://www.microsoft.com/germany/express/download/default.aspx#webInstall

Aufgabe 1a - Hardware- und Software-Grundlagen


Zunächst wollen wir uns mit den Grundlagen von Hardware und Software vertraut
machen.
• Nenne zehn verschiedene Geräte oder Maschinen, in denen ein Computer-
Prozessor (Hardware) enthalten ist, der Programmcode (Software) ausführt.
• Nenne fünf wichtige interne Hardware-Komponenten eines Personal Compu-
ters und begründe Deine Auswahl.
• Nenne drei Faktoren, von denen die Ausführungsgeschwindigkeit eines
Computer-Progamms abhängt.
• Für welche Anwendungen sind Mehrkernprozessoren wie z.B. der
Intel® Core 2™ Quad oder Intel® Core i7™ Prozessor von Vorteil?
• Welche Aufgaben übernimmt das Betriebssystem eines Personal Compu-
ters?
Ist das Betriebssystem Hardware oder Software?

Intel®-Leibniz-Challenge Aufgabe 1 / 02.02.2009


• Zur Übersetzung von Software-Quelltext (source code) in ausführbaren Ma-
schinencode können sowohl Interpreter als auch Compiler verwendet werden.
Erkläre kurz die Unterschiede!
• Nenne die Basis-Datentypen der Programmiersprache Visual Basic*
(VB.NET). Erstelle dazu eine Tabelle mit Angabe von Name, Größe in Bit und
möglichem Inhalt jedes Datentyps (maximal eine Zeile pro Datentyp).
• Nenne die erweiterten Datentypen, die von Visual Basic* standardmäßig zur
Verfügung gestellt werden!
• Was wird in der Programmiersprache Visual Basic* unter einer „Function“
verstanden?
• Beschreibe mit eigenen Worten den Unterschied zwischen einem Algorithmus
und einem Programm.

Aufgabe 1b - Einfache Software-Implementierung – Zufallszahlen


Nun soll ein erstes Programm entwickelt werden. Zum Anfang kannst Du das abge-
druckte Beispiel eingeben und erweitern. Im Forum kannst Du Fragen stellen, wenn
Du auf Probleme stoßen solltest.

Module Aufgabe1
Sub Main()
Console.WriteLine("ILC 2009: Aufgabe 1b")
Console.WriteLine("Zufallszahl x = {0}", Rnd())
Console.ReadLine()
End Sub
End Module

Zufallszahlen spielen bei verschiedenen Software-Anwendungen eine wichtige Rolle,


beispielsweise bei Simulationsprogrammen.

Schreibe ein kurzes Programm, welches Zufallszahlen erzeugt, sortiert und darstellt:
• Erzeuge mit Hilfe einer Schleifenanweisung („for“-Anweisung) 200 reelle Zu-
fallszahlen im Wertebereich zwischen 0 und 20 und speichere sie in einer Da-
tenstruktur (z.B. einem Array bzw. Feld, die Anweisung dafür lautet „Dim
Feldname(15) As Single“).
• Sortiere die Datenstruktur mit den Zufallszahlen in aufsteigender Reihenfolge
und gib die Zahlen formatiert der Reihe nach als dezimale Fließkommazahlen
mit 4 Nachkommastellen auf dem Bildschirm (Konsole) aus. In einer Zeile (80
Zeichen breit) sollen exakt 10 Zahlen ausgegeben werden, wobei jede Zahl
(die insgesamt 7 Zeichen belegt) von der folgenden Zahl durch ein Leerzei-
chen getrennt werden soll.
• Dein Programm soll nun die Häufigkeitsverteilung der Zufallszahlen darstel-
len. Ermittle zu diesem Zweck, wieviele Zufallszahlen in einem bestimmten
Zahlenintervall liegen. Unterteile den o.g. Wertebereich in 10 gleich große In-
tervalle und bestimme die Anzahl der Zufallszahlen in jedem Bereich. Stelle
die ermittelte Anzahl jedes Intervalls in einem x-y-Diagramm dar (x-Achse =
Intervall; y-Achse = Anzahl). Verwende dazu die Textausgabefunktion und
stelle die Anzahl der Zufallszahlen eines Intervalls durch eine entsprechende
Anzahl Zeichen (z.B. „#“) dar, die jeweils einen vertikalen Balken bilden.

Intel®-Leibniz-Challenge Aufgabe 1 / 02.02.2009


• Erweitere Dein Programm so, dass zusätzlich zu der Schleife für 200 Zufalls-
zahlen nun auch Schleifen zur Erzeugung von 20.000 und 2.000.000 Zufalls-
zahlen ausgeführt werden. Gib für die in den beiden neuen Schleifen erzeug-
ten Zufallszahlen jeweils die Häufigkeitsverteilung aus. Skaliere die y-Achse
für die Ausgabe (Faktor 100 bzw. 10000) so, dass die angezeigten Verteilun-
gen mit der Darstellung für 200 Zufallszahlen vergleichbar sind.
• Berechne die Mittelwerte (Arithmetisches Mittel) und die Standardabweichun-
gen Deiner drei Häufigkeitsverteilungen.

Deine Lösung zur Aufgabe 1b sollte u.a. folgendes enthalten:


- Einen Screenshot oder eine Textdatei, welche die sortierte Zufallszahlendar-
stellung für die 200 Zufallszahlen zeigt.
- Screenshots oder eine Textdatei, welche die drei Häufigkeitsverteilungen zei-
gen.
- Eine ZIP-Datei von deinem jeweiligen Projekt-Ordner. Der Dateiname sollte
„Aufgabe_1b_<Gruppenname>.zip“ lauten.

Aufgabe 1c - Software-Simulation eines Kugel-Experiments


In diesem Aufgabenteil soll ein Programm entwickelt
werden, das ein Kugel-Brett simuliert. In der Maschine
existiert ein Raster aus Stäben, die pyramidenartig an-
geordnet sind (siehe Abbildung). In der obersten Stab-
ebene gibt es einen Stab, die zweite Ebene besitzt
zwei Stäbe, die dritte Ebene drei Stäbe, usw. An der
Oberseite der Maschine werden mittig Kugeln einge-
worfen, die zwischen den Stäben herunterfallen. In je-
der Ebene trifft eine Kugel dabei auf einen Stab, an
dem sie entweder links oder rechts vorbei nach unten
fallen kann. Am Boden der Maschine fallen die Kugeln
in Behälter, in denen sie gesammelt werden.

Schreibe ein kurzes Programm, welches die Funktionsweise der Maschine simuliert.
Die Anzahl der Behälter, in denen die Kugeln gesammelt werden, soll flexibel sein
und im Programm als Parameter eingestellt werden können. Ebenso soll die Anzahl
der Kugeln, die in die Maschine geworfen werden, vorgegeben werden können.
Die Entscheidung, ob eine Kugel an einem Stab nach links oder rechts fällt, soll per
Zufallsgenerator gefällt werden, und zwar so, dass im Mittel die Kugeln genauso oft
nach links wie nach rechts fallen.
Wenn alle Kugeln durch die Maschine gefallen und in den Behältern gelandet sind,
soll die Häufigkeitsverteilung der Behälter dargestellt werden.

Versehe bei Deinem Programm die benutzten Datenstrukturen und Funktionen mit
aussagekräftigen Namen bzw. Kommentaren, so dass man erkennen kann, wofür sie
verwendet werden.

Zum besseren Verständnis des Algorithmus und ohne Wertung kannst Du die Kugel-
Maschine auch auf einem Brett aufbauen, die Stäbe könnten durch Nägel dargestellt
werden. Beachte, dass der Abstand der Nägel zu dem Durchmesser der verwende-
ten Kugeln passen muss!

Intel®-Leibniz-Challenge Aufgabe 1 / 02.02.2009


• Lasse Dein Programm mit 1000 Kugeln und 20 Behältern laufen, und gib die
entstandene Häufigkeitsverteilung als Grafik wie in Aufgabe 1b an.
• Gibt es Unterschiede zu der Häufigkeitsverteilung in Aufgabe 1b?
• Um welche Art von Häufigkeitsverteilung handelt es sich?
• Berechne den Mittelwert und die Standardabweichung Deiner Verteilung.

Deine Lösung zu den Aufgaben 1c sollte u.a. folgendes enthalten:


- Eine ZIP-Datei von deinem jeweiligen Projekt-Ordner. Der Dateiname sollte
„Aufgabe_1c_<Gruppenname>.zip“ lauten.

Aufgabe 1d - Grafische Programmierung


In diesem Unterpunkt steht die grafische Darstellung im Mittelpunkt. Diese unter-
scheidet sich wesentlich von der Textausgabe, da bei der Grafikausgabe das Setzen
jedes einzelnen Bildpunktes (Pixel) in einer beliebigen Farbe möglich ist.

• Erstelle ein Programm, das ein separates Programmfenster zur Grafikausga-


be öffnet. Dein Programm soll in dem Programmfenster eine grafische Aus-
gabefläche (Zeichenfläche) mit einfarbigem Hintergrund in der Größe von
640x480 Bildpunkten erzeugen.
• Dein Programm soll nun das Logo der ILC 2009

auf der Zeichenfläche erzeugen.

Zur Erzeugung des Bildes dürfen jedoch ausschließlich drei Funktionen be-
nutzt werden, die jeweils eine Linie, einen gefüllten Kreis bzw. ein gefülltes
Rechteck in einer beliebigen Farbe auf der Zeichenfläche erzeugen:
o DrawLine(Pen, X1, Y1, X2, Y2)
o FillRectangle (Brush, X, Y, Width, Height)
o FillEllipse (Brush, X, Y, Width, Height)

Die Verwendung von anderen nicht-grafischen Funktionen zum Erzeugen von Ef-
fekten ist erlaubt.

© 2009 Intel Corporation. Alle Rechte vorbehalten.


*Andere Marken oder Produktnamen sind Eigentum der jeweiligen Inhaber.

Intel®-Leibniz-Challenge Aufgabe 1 / 02.02.2009


Viel Erfolg bei der ersten Aufgabe!

Falls Ihr Fragen zu den Aufgaben habt oder eine Hilfestellung benötigt, so schaut doch
einfach mal in unser Forum: http://www.intel-leibniz-challenge.de/ilc/forum.htm

Einsendeschluss: Sonntag, 01. März 2009, 23:59.

Bis zu diesem Zeitpunkt sind auch noch Anmeldungen zur ILC2009 möglich; wir freuen
uns über weitere Teilnehmer!

Abgabe der Lösungen:

Gebt Eure Lösungen über das Portal der ILC ab:


http://www.intel-leibniz-challenge.de/portal/

Die E-Mail sollte nicht größer als 3 MB sein (Die Dateien können gezippt sein)! Bitte gebt
auch Euren Teamnamen, die Namen der Gruppenmitglieder sowie deren Schulen an.

Bitte benennt Eure angehängten Dateien nach dem Gruppennamen.

Ihr könnt und solltet Eure Lösung auch dann abgeben, wenn Ihr nicht alle Fragen beant-
worten konntet, insbesondere die letzte Teilaufgabe (die Profi-Aufgabe) nicht gelöst habt!
Vielleicht gelingt Euch das ja bei den kommenden Aufgaben.

Die Teilnahmebedingungen und weitere Informationen findet Ihr unter:


http://www.intel-leibniz-challenge.de

Der Rechtsweg ist ausgeschlossen.

Intel®-Leibniz-Challenge Aufgabe 1 / 02.02.2009