C++ Vorführprogramm
-
Ist das eine Vorgabe oder hast du dir das selbst überlegt? Macht in meinen Augen keinen Sinn, das fertige Programm vorzustellen, denn das könnte man auch mit jeder beliebigen anderen Programmiersprache erstellen. Einem Programm sieht man hinterher nicht mehr an, in welcher Programmiersprache es entwickelt worden ist (damit meine ich jetzt nicht das GUI).
Bei dir sollte eher der Weg das Ziel sein, d.h. such dir was, das in C++ besser gelöst ist, als in anderen Programmiersprachen. Obwohl... C++ ist ein Allrounder, sämtliche Features werden wohl in anderen Programmiersprachen besser umgesetzt worden sein, wenn auch nicht alle in einer Programmiersprache. Vielleicht ist das das, was C++ ausmacht.Edit:
Template Metaprogramming dürfte interessant sein, ist aber ein ziemlich komplexes Thema.
-
DocShoe schrieb:
Edit:
Template Metaprogramming dürfte interessant sein, ist aber ein ziemlich komplexes Thema.Bringt aber nur was, wenn die Zuschauer / Zuhörer wissen, was ein Template ist.
Das hier beschriebene Szenario klingt mir eher nach einer Schulklasse, von denen mindestens die Hälfte überhaupt keine Lust auf Informatik hat und weitere 45% über "Hello World" nie hinaus gekommen sind

-
zumal man auch über ein helloworld-programm eine halbe stunde schwadronieren kann.
-
Anscheinend habe ich meine Frage falsch dargestellt

Ich möchte ein kleines Programm vorstellen, welches ich programmiert habe.
Da sich nicht alle aus unserem Kurs für Programmierung intressieren, möchte ich ein Programm zeigen das auch sie interessiert und auch dem Lehrer gefällt.Hello World ist zu simpel. Welcher uninteressierte würde sich denn für eine Box intressieren, wo Hello World drin steht xD
Nein es muss etwas sein, dass z.B. wenn man den Wochentag angibt das Programm dir sagt welche Bücher du mitnehmen musst. Sowas ist "nützlich"
-
Dann programmier doch genau so ein Programm? Oder hast du das schon?
-
Nein aber ich merke gerade selber das es ganz gut klingt.
Aber naja meine Frage ist ja ob ihr noch Ideen habt.
-
Frozen schrieb:
Nein es muss etwas sein, dass z.B. wenn man den Wochentag angibt das Programm dir sagt welche Bücher du mitnehmen musst. Sowas ist "nützlich"
Das ist vielleicht nüzlich, aber nicht das richtige um die Möglichkeiten von C++ zu demonstrieren. Sowas programmiert man viel einfacher und toller in vielen anderen Sprachen.
Entweder zeigst du etwas, das unglaublich viel in unglaublich kurzer Zeit rechnet und die supidupi Performance zeigt. Oder wie man eine sehr komplexe Aufgabe unglaublich elegant mit den Mitteln der Standardbibliothek löst.
-
brotbernd schrieb:
Frozen schrieb:
Nein es muss etwas sein, dass z.B. wenn man den Wochentag angibt das Programm dir sagt welche Bücher du mitnehmen musst. Sowas ist "nützlich"
Das ist vielleicht nüzlich, aber nicht das richtige um die Möglichkeiten von C++ zu demonstrieren. Sowas programmiert man viel einfacher und toller in vielen anderen Sprachen.
Entweder zeigst du etwas, das unglaublich viel in unglaublich kurzer Zeit rechnet und die supidupi Performance zeigt. Oder wie man eine sehr komplexe Aufgabe unglaublich elegant mit den Mitteln der Standardbibliothek löst.
z.B.?
-
Frozen schrieb:
z.B.?
Na, entweder kannst du ja ein bisschen einfache Numerik machen, z.B. Primzahlen suchen und äquivalente Programme in C++ und z.B. Python oder Java gegeneinander antreten lassen. Dadurch demonstrierst du Performance. Wobei dann jemand einwerfen wird, dass C und Assembler mindestens genauso gut sind.
Oder du kannst so einen schönen Einzeiler aus den Standardbibliotheksalgorithmen zusammenschreiben, wie man sie hier im Forum immer wieder sieht, wenn jemand mal seine Hausaufgaben nicht machen will. Zum Beispiel die Summe der ersten 10.000 Fibbonacci-Zahlen ausrechnen und vergleichen wie lang ein entsprechendes Programm in C wäre. Wobei dann jemand einwerfen wird, dass Python und Java das mindestens genauso elegant können.
Die Stärke von C++ ist eben, dass man beides gleichzeitig haben kann: Volle Geschwindigkeit bei akzeptabler Abstraktion. Daher könntest du so einen Einzeiler ja auch mal gegen alternative Programme rennen lassen.
-
SeppJ schrieb:
Frozen schrieb:
z.B.?
Na, entweder kannst du ja ein bisschen einfache Numerik machen, z.B. Primzahlen suchen und äquivalente Programme in C++ und z.B. Python oder Java gegeneinander antreten lassen. Dadurch demonstrierst du Performance. Wobei dann jemand einwerfen wird, dass C und Assembler mindestens genauso gut sind.
Oder du kannst so einen schönen Einzeiler aus den Standardbibliotheksalgorithmen zusammenschreiben, wie man sie hier im Forum immer wieder sieht, wenn jemand mal seine Hausaufgaben nicht machen will. Zum Beispiel die Summe der ersten 10.000 Fibbonacci-Zahlen ausrechnen und vergleichen wie lang ein entsprechendes Programm in C wäre. Wobei dann jemand einwerfen wird, dass Python und Java das mindestens genauso elegant können.
Die Stärke von C++ ist eben, dass man beides gleichzeitig haben kann: Volle Geschwindigkeit bei akzeptabler Abstraktion. Daher könntest du so einen Einzeiler ja auch mal gegen alternative Programme rennen lassen.
In einer Schulklasse? Ich habe irgendwie das Gefühl, dass am Ende alle schlafen

Grüssli
-
Dravere schrieb:
In einer Schulklasse? Ich habe irgendwie das Gefühl, dass am Ende alle schlafen

Ich dachte immer, dass wäre der zweck von Referaten? Die armen Kinder müssen schließlich schon um 8 in die Schule, da ist es doch willkommen, wenn man auch mal ausschlafen kann.
Weiterer Vorschlag (ich gehe mal davon aus, dass dies Oberstufe ist): Perkolationsdichten "experimentell" bestimmen. Dabei geht es darum, ob ein Rechteck (sagen wir mal etwa bildschirmgroß
) in das man eine bestimmte Zahl Kreisflächen zeichnet, ob es dann über diese Kreisflächen einen Weg vom einem Rand zum anderen gibt. Das kann man erstens vergleichsweise leicht programmieren ohne trivial zu sein, aber auch relativ leicht visualisieren, weil man zum Kreisezeichnen nicht tief in ein Framework einsteigen muss. Das gibt dann schöne bunte Bilder während der Simulation und am Ende einen wissenschaftlich aussehenden Graphen auf dem die Perkolationswahrscheinlichkeit gegen die Kreisdichte aufgetragen ist. Und der Lehrer ist dann auch zufrieden, wenn man ihm aus Wikipedia vorliest, dass das z.B. wichtig ist, was den idealen Körnungsgrad von Kaffeepulver angeht.Natürlich besser einen Lauf mit bunten Bildchen machen zur Demonstration und einen produktiven Lauf ohne Visualisierung, der Performance wegen.
-
SeppJ schrieb:
Dravere schrieb:
In einer Schulklasse? Ich habe irgendwie das Gefühl, dass am Ende alle schlafen

Ich dachte immer, dass wäre der zweck von Referaten? Die armen Kinder müssen schließlich schon um 8 in die Schule, da ist es doch willkommen, wenn man auch mal ausschlafen kann.
Weiterer Vorschlag (ich gehe mal davon aus, dass dies Oberstufe ist): Perkolationsdichten "experimentell" bestimmen. Dabei geht es darum, ob ein Rechteck (sagen wir mal etwa bildschirmgroß
) in das man eine bestimmte Zahl Kreisflächen zeichnet, ob es dann über diese Kreisflächen einen Weg vom einem Rand zum anderen gibt. Das kann man erstens vergleichsweise leicht programmieren ohne trivial zu sein, aber auch relativ leicht visualisieren, weil man zum Kreisezeichnen nicht tief in ein Framework einsteigen muss. Das gibt dann schöne bunte Bilder während der Simulation und am Ende einen wissenschaftlich aussehenden Graphen auf dem die Perkolationswahrscheinlichkeit gegen die Kreisdichte aufgetragen ist. Und der Lehrer ist dann auch zufrieden, wenn man ihm aus Wikipedia vorliest, dass das z.B. wichtig ist, was den idealen Körnungsgrad von Kaffeepulver angeht.Natürlich besser einen Lauf mit bunten Bildchen machen zur Demonstration und einen produktiven Lauf ohne Visualisierung, der Performance wegen.
Das ist zu schwer.
Ich will ja, dass die Zuhörenden auch "verstehen" wie das Programm funktioniert
und auch in der kurzen Zeit den Programmcode mit meinen Erklärungen verstehen.
-
Wie wäre es mit einem Dijkstra-Algorithmus. Den Weg des geringsten Widerstandes ist doch immer wieder das Ziel eines jeden Schülers. Der Dijkstra-Algorithmus ist leicht zu verstehen und kann auf vieles angewendet werden. In unserer Schule hätte man damit sogar prima den besten Weg zum nächsten Schulzimmer aufzeigen können, da es mehrere Möglichkeiten gab. Könnte man auch leicht graphisch aufzeigen. Man muss ja nicht so genau auf den Code für die graphische Ausgabe eingehen: "Dieser Code erzeugt die graphische Ausgabe."

Wieviel Zeit hast du eigentlich zur Verfügung?
Grüssli
-
Dravere schrieb:
Wieviel Zeit hast du eigentlich zur Verfügung?
Wenn es Oberstufe ist, dann üblicherweise 45min, ansonsten sogar nur 15-20min. Für viel mehr als "so sieht C++ aus und ... *klick* so das entstehende Programm" reicht das nicht.
Und damals fragte man sich noch, wie man elend lange 15min denn je vollmachen könnte.
@Topic: bei ner Schulklasse sollte schon was zu sehen sein, ein Konsolenprogramm, dass am Ende eine Zahl ausspuckt, beeindruckt niemanden. Wie wäre es mit Mandelbrot? Da kann man schöne Abstraktionen rein bringen, bis hin zur Nutzung von Boost.GIL und Threadingbibliotheken zur Parallelisierung.
-
brotbernd schrieb:
Frozen schrieb:
Nein es muss etwas sein, dass z.B. wenn man den Wochentag angibt das Programm dir sagt welche Bücher du mitnehmen musst. Sowas ist "nützlich"
Das ist vielleicht nüzlich, aber nicht das richtige um die Möglichkeiten von C++ zu demonstrieren. Sowas programmiert man viel einfacher und toller in vielen anderen Sprachen.
Entweder zeigst du etwas, das unglaublich viel in unglaublich kurzer Zeit rechnet und die supidupi Performance zeigt. Oder wie man eine sehr komplexe Aufgabe unglaublich elegant mit den Mitteln der Standardbibliothek löst.
So wie ich das verstanden habe, ist das gar nicht das Ziel des Vortrags. Da sitzt doch nicht eine Gruppe von Führungskräften, die entscheiden müssen, mit welcher Programmiersprache sie ihre IT-Systeme am besten optimieren können. Er möchte ja das Interesse von Schülern (und des Lehrers) für die Programmierung wecken und das am beispiel von C++. Ich finde das erreicht man am besten, wenn man etwas zeigt, wo auch das Ergebnis sofort ersichtlich wird. Vor kurzem gab es einen Lehrer, der seinen Schülern ein Programm zeigen wollte, mit dessen Hilfe Peep-Signale zu Bits bzw. Morse-Zeichen umgewandelt wurde. Wenn du das z.B. mit Mathematik verbinden möchtest, könntest du so etwas wie automatische Ableitung von Thiessen-Polygonen bzw. Voronoi-Diagrammen zeigen. Ein Beispiel (umgesetzt mit JAVA) findest du hier. Du könntest so etwas mit C++ machen (sofern du den GUI-Teil nicht erläutern musst), ist aber vielleicht doch keine gute Idee (du musst wissen). In der Schule haben wir z.B. so ein lustiges Spiel mit DAX-Aktien gespielt. Wir hatten in einer Excel-Tabelle ein "Startkapital" von z.B. 3000€ eingetragen, davon haben wir Aktien der 30 Unternehmen gekauft, die gekauften Aktien sowie ihren Wert in die Tabelle eingetragen und den Kursverlauf beobachtet. Die Aktienwerte werden in relativ kurzen Intervallen aktualisiert. Am Ende des Unterrichts haben wir geschaut, wer den höchsten Gewinn hatte
Du könntest z.B. die Werte abfragen und die Tabelle aktualisieren (das lässt sich sowohl mit ner GUI als auch Konsole umsetzen, jedoch einfachheitshalber würde ich dir zum Letzteren raten). Da kannst auch kreativ sein: musst nicht unbedingt das komplex mit den automatischen Abfragen machen (falls das zu komplex ist), sondern die neuen Werte irgendwie manuell eingeben lassen. Oder das Spiel beliebig verändern/verbessern. Da sind der Fantasie keine Grenzen gesetzt.
Eine andere Variante deines Beispiels mit den Büchern: man gibt das Datum, die Uhrzeit und das gewünschte Ziel an, und dein Programm sagt, wann der nächste Bus kommt oder ob es sich besser lohnt, zu Fuss zu gehen (hier kann die Komplexität auch geändert werden).Grüße,
Rewind.
-
Ich hatte es mir so vorgestellt, dass einer ein C++ Referat hält, einer über Java, einer C#, Python...
Darum würde ich ein typisches C++ Beispiel zeigen und nicht etwas, das der Kollege in Python viel besser machen kann.
-
Das ist halt so eine Sache:
Ich erinnere mich noch an ein Projekt von IBM, da wurden nur die zeitkritischen Teile des Programms in C++ geschrieben, die Oberfläche zur Ein- und Ausgabe in Java und noch ein weitere Sprache, mit einem anderen Schwerpunkt, war auch noch beteiligt.Es kommt also ganz darauf an in welchem Umfeld vor welchen Zuhörern das präsentiert werden soll.
Vielleicht erst mal die Zuhörergruppe beschreiben und daran orientiert sich ein Musterbeispiel ausdenken. Was haben die Zuhörer für Vorkenntnisse? Kennen die schon eine Programmiersprache? Ist das C++ oder eine andere? Wenn die C++ kennen, kennen die schon Container und ähnliches?
MfG f.-th.
-
[Rewind] schrieb:
brotbernd schrieb:
Frozen schrieb:
Nein es muss etwas sein, dass z.B. wenn man den Wochentag angibt das Programm dir sagt welche Bücher du mitnehmen musst. Sowas ist "nützlich"
Das ist vielleicht nüzlich, aber nicht das richtige um die Möglichkeiten von C++ zu demonstrieren. Sowas programmiert man viel einfacher und toller in vielen anderen Sprachen.
Entweder zeigst du etwas, das unglaublich viel in unglaublich kurzer Zeit rechnet und die supidupi Performance zeigt. Oder wie man eine sehr komplexe Aufgabe unglaublich elegant mit den Mitteln der Standardbibliothek löst.
So wie ich das verstanden habe, ist das gar nicht das Ziel des Vortrags. Da sitzt doch nicht eine Gruppe von Führungskräften, die entscheiden müssen, mit welcher Programmiersprache sie ihre IT-Systeme am besten optimieren können. Er möchte ja das Interesse von Schülern (und des Lehrers) für die Programmierung wecken und das am beispiel von C++. Ich finde das erreicht man am besten, wenn man etwas zeigt, wo auch das Ergebnis sofort ersichtlich wird. Vor kurzem gab es einen Lehrer, der seinen Schülern ein Programm zeigen wollte, mit dessen Hilfe Peep-Signale zu Bits bzw. Morse-Zeichen umgewandelt wurde. Wenn du das z.B. mit Mathematik verbinden möchtest, könntest du so etwas wie automatische Ableitung von Thiessen-Polygonen bzw. Voronoi-Diagrammen zeigen. Ein Beispiel (umgesetzt mit JAVA) findest du hier. Du könntest so etwas mit C++ machen (sofern du den GUI-Teil nicht erläutern musst), ist aber vielleicht doch keine gute Idee (du musst wissen). In der Schule haben wir z.B. so ein lustiges Spiel mit DAX-Aktien gespielt. Wir hatten in einer Excel-Tabelle ein "Startkapital" von z.B. 3000€ eingetragen, davon haben wir Aktien der 30 Unternehmen gekauft, die gekauften Aktien sowie ihren Wert in die Tabelle eingetragen und den Kursverlauf beobachtet. Die Aktienwerte werden in relativ kurzen Intervallen aktualisiert. Am Ende des Unterrichts haben wir geschaut, wer den höchsten Gewinn hatte
Du könntest z.B. die Werte abfragen und die Tabelle aktualisieren (das lässt sich sowohl mit ner GUI als auch Konsole umsetzen, jedoch einfachheitshalber würde ich dir zum Letzteren raten). Da kannst auch kreativ sein: musst nicht unbedingt das komplex mit den automatischen Abfragen machen (falls das zu komplex ist), sondern die neuen Werte irgendwie manuell eingeben lassen. Oder das Spiel beliebig verändern/verbessern. Da sind der Fantasie keine Grenzen gesetzt.
Eine andere Variante deines Beispiels mit den Büchern: man gibt das Datum, die Uhrzeit und das gewünschte Ziel an, und dein Programm sagt, wann der nächste Bus kommt oder ob es sich besser lohnt, zu Fuss zu gehen (hier kann die Komplexität auch geändert werden).Grüße,
Rewind.Das mit den Aktien hört sich gut an.
leider bin ich noch nicht so weit in der Programmierung um das schreiben
zu können
(das würde die zuhörer fesseln)
-
Wie weit bist du dann?