Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Reaktionstester Programieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.05.2015, 10:56 Uhr
isgrassmann



Hallo Leute,
ich brauche ein Programm, dass folgendes können müsste.
Und dass dazu mit c++ programiert wurde.

Hier die Aufgabenstellung:
Der Reaktionstest wird gestartet indem eine beliebige Taste gedrückt wird. Nach einer zufälligen Zeit zwischen 3 und 10 Sekunden beginnt dann der Test.
Sobald eine der Lampen aufleuchtet, muss so schnell wie möglich der ebenso farbige Taster gedrückt werden. Die Zeit, die zwischen dem Aufleuchten der Lampe und dem Drücken des Tasters vergeht, wird gemessen. Sobald der passende Taster gedrückt wird, soll die nächste Lampe nach dem Zufallsprinzip aufleuchten.
Die Rundenanzahl soll fest bei 10x Aufleuchten einer (zufälligen) Lampe liegen.
Danach wird aus den zeiten ein Durchschnitt gemacht und angezeigt.

Ich hoffe ihr könnt mir solch ein Programm machen!


Grüße
Isgrassmann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.05.2015, 20:57 Uhr
ao

(Operator)


Klar können wir das. Aber es riecht nach Hausaufgabe. Was davon hast du schon selber erledigt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.05.2015, 21:00 Uhr
~Hans
Gast


Hi,

das könnten wir schon, wollen wir aber nicht, siehe hier, warum.

Hans
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.05.2015, 21:09 Uhr
~Hans
Gast


@ao: Ich überlege gerade, ob man dem nicht ein ähnliches Programm für einen Mikrocontroller vorsetzen sollte, obwohl das Programm vermutlich auf dem PC laufen soll, auch wenn das in der Aufgabenstellung nicht explizit drin steht. Aber ich denke, die Aufgabe eignet sich auch gut für einen kleinen Controller mit 16 I/O Ports, ein Byte Eingabeport, ein Byte Ausgabeport...

Hans,
der gerade nicht am eigenen Rechner online ist...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.05.2015, 23:06 Uhr
ao

(Operator)


Pädagogisch wertvoll wäre, das Programm so portabel aufzubauen, dass man nur den IO-Layer (ReadButtons, SetLights und ReadTime) plattformspezifisch schreiben muss.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.05.2015, 22:39 Uhr
Hans
Library Walker
(Operator)


@ao: Das ist sicher richtig. Die Frage, die sich mir dabei stellt, ist, wann man diese Form von Modularität einführt? - Konfrontiert man Anfänger damit schon, wenn sie "Hallo Welt!" abtippen oder erst, nachdem Unterprogramme (Funktionen) vorgestellt wurden oder irgendwann später, wenn die eigenen Programme länger als X Zeilen werden, und die Leute erstmals dazu neigen, den Durchblick / die Übersicht zu verlieren? Und wie macht man es mit Klassen und ähnlichen OOP-Konzepten, deren tieferer Sinn sich einem erst viel später erschliesst?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.05.2015, 09:53 Uhr
ao

(Operator)


Ich würde sagen, man führt Konzepte ein, sobald das Wissen der Schüler ausreicht, um die Anwendung zu verstehen.

Die Aufgabe hier ist ein sehr schönes Beispiel: Ein paar hardwarenahe Funktionen (Taster, Lampen, Zeit messen) mit einem übergeordneten Ablauf, der schon was komplizierter ist (zufällig eine Lampe auswählen, zufällige Wartezeit, Lampe einschalten, Zeit bis zur Reaktion messen, Ergebnisse verwalten, ...).

Wenn man das alles monolithisch runterprogrammiert und en bloc auf irgendeinem Mikrocontroller testet, dann kriegt man graue Haare, bis das richtig läuft. Wenn man es aber modularisiert, kann man die einzelnen Module sehr leicht austesten, bevor man sie zusammenfügt. Und die Ablauflogik auf der oberen Ebene kann man sogar komplett auf dem PC entwickeln und erst dann, wenn es fertig ist, auf den Mikrocontroller übertragen.

Aus dem Grund würde ich niemals Programmieren nur auf Mikrocontrollern lehren wollen. Ich würde daneben immer eine virtuelle Linuxmaschine verwenden, um die Konzepte zu zeigen. Dinge wie Modularisierung, portables Programmieren usw. ergeben sich dadurch automatisch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.05.2015, 11:23 Uhr
ao

(Operator)



Zitat von Hans:
Und wie macht man es mit Klassen und ähnlichen OOP-Konzepten, deren tieferer Sinn sich einem erst viel später erschliesst?

Sobald man "struct" verstehen kann, kann man auch "class" verstehen. Tatsächlich ist class ja nichts anderes als struct mit einer anderen Default-Sichtbarkeit.

Und für Ableitung und Polymorphie würde ich sagen: Sobald man ein einleuchtendes Anwendungsbeispiel bringen kann, ist die Zeit reif dafür.

Ein anderes wichtiges Konzept ist z.B. das, was in Java oder C# "interface" heißt. In C++ macht man das oft mit abstrakten Basisklassen, die Prototypen für bestimmte Schnittstellen-Funktionen mitbringen.

Aber du hast völlig recht, auf OO-Konzepte muss man bewusst und frühzeitig eingehen und nicht erst in der letzten Unterrichtsstunde, wenn keiner mehr wirklich zuhört. "Programmieren in C++" zu lehren heißt nicht, nur die Syntax zu lehren und die Schüler dann mit der richtigen Anwendung allein zu lassen. Leute, die so eine Ausbildung haben, können bestenfalls "C mit Klassen", aber nicht C++.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.05.2015, 01:47 Uhr
Hans
Library Walker
(Operator)



Zitat von ao:
Die Aufgabe hier ist ein sehr schönes Beispiel: Ein paar hardwarenahe Funktionen (Taster, Lampen, Zeit messen) mit einem übergeordneten Ablauf, der schon was komplizierter ist (zufällig eine Lampe auswählen, zufällige Wartezeit, Lampe einschalten, Zeit bis zur Reaktion messen, Ergebnisse verwalten, ...).

Wenn man das alles monolithisch runterprogrammiert und en bloc auf irgendeinem Mikrocontroller testet, dann kriegt man graue Haare, bis das richtig läuft.

Interessant. Muss ich doch glatt mal ausprobieren, sobald sich mir die Möglichkeit dazu bietet...


Zitat von ao:
Aber du hast völlig recht, auf OO-Konzepte muss man bewusst und frühzeitig eingehen und nicht erst in der letzten Unterrichtsstunde, wenn keiner mehr wirklich zuhört.

Das hab ich so zwar nicht behauptet, stimme aber trotzdem zu.
Ich hab zwar keine Erfahrungen mit Ausbildung, aber nach meinem neueren Buch (Breymann) zu schliessen, scheint das wohl der bessere Weg zu sein. Denn der geht so vor und das Buch ist schon sehr lange erhältlich.
Ich hab auch noch Bücher aus den 90ern, wo erst C und dann C++ vermittelt wird, was man heute wohl besser als "C mit Klassen" bezeichnet, weil deren Autoren die OO-Konzepte wohl selbst noch nicht so richtig verstanden hatten.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: