Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 18.07.2007, 12:16 Titel: einfacher Timer/Stoppuhr |
|
|
Hier mal 2 simple Programme von mir:
Eine Stoppuhr:
Code: |
Input T `T als Variable wie lange die Stoppuhr laufen soll
Sarttime!=TIMER
DO
PRINT "",T - (TIMER - Starttime!)
LOOP UNTIL TIMER > STARTTIME! + T
PRINT "ENDE"
BEEP:BEEP
END
|
Ein Timer:
Code: |
Input T `T als Variable wie lange der Timer laufen soll
Sarttime!=TIMER
DO
PRINT "",TIMER - Starttime!
LOOP UNTIL TIMER > STARTTIME! + T
PRINT "ENDE"
BEEP:BEEP
END
|
2 Fragen jetzt nur zum verbessern:
Wie schaff ich es das das Programm mir jetz nur 2 stellen hinter dem Komma ausgibt?
Wie mach ich es das die Stoppuhr solange läuft bis ich Z.b den Befehl zum halten mit inkey$=CHR(XXX) festlege? _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein] |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 18.07.2007, 12:47 Titel: |
|
|
Ich bin mir nicht ganz sicher, ob Du mit deinem Programmen und Fragen hier bei den Projektvorstellungen richtig aufgehoben bist, aber was soll's.
Wegen den Nachkommastellen würde ich mir mal PRINT USING ansehen, warten auf Tastendruck kannst Du z.B. mit
DO: LOOP WHILE INKEY$ = ""
machen. Natürlich kann ich mit den Hinweis auf Suchfunktion und QB-Monster-FAQ nicht verkneifen. Vor kurzem hat Thomas Antoni hier im Forum auch was zum Thema Stoppuhr geschrieben.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4700 Wohnort: ~/
|
Verfasst am: 18.07.2007, 14:34 Titel: |
|
|
Ansonsten habe ich die zwei Nachkommastellen auch schon öfters so realisiert:
Code: | neueZahl = INT(alteZahl*100+.5)/100 |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 18.07.2007, 17:32 Titel: |
|
|
Skilltronic hat Folgendes geschrieben: | Ich bin mir nicht ganz sicher, ob Du mit deinem Programmen und Fragen hier bei den Projektvorstellungen richtig aufgehoben bist, aber was soll's.
Wegen den Nachkommastellen würde ich mir mal PRINT USING ansehen, warten auf Tastendruck kannst Du z.B. mit
DO: LOOP WHILE INKEY$ = ""
machen. Natürlich kann ich mit den Hinweis auf Suchfunktion und QB-Monster-FAQ nicht verkneifen. Vor kurzem hat Thomas Antoni hier im Forum auch was zum Thema Stoppuhr geschrieben.
Gruß
Skilltronic | Ich denke, daß dieser Thread bei Allgemeine Fragen zu FreeBASIC besser aufgehoben wäre, dort ist auch die Alternative zu 'Print Using' zu finden:
http://forum.qbasic.at/viewtopic.php?p=20694
Gleich noch eine Warnung: Stelle bitte keine allzu hohen Erwartungen an die Genauigkeit dieser 'StoppUhr', weil sie eben nicht besonders genau messen kann!
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 18.07.2007, 20:31 Titel: |
|
|
ytwinky hat Folgendes geschrieben: | Ich denke, daß dieser Thread bei Allgemeine Fragen zu FreeBASIC besser aufgehoben wäre, dort ist auch die Alternative zu 'Print Using' zu finden... |
So wie ich das sehe, beschäftigt sich Edocsil aber mit QBasic. Was die Genauigkeit angeht, die ist mit TIMER auf rund eine Zehntelsekunde beschränkt, weil die 55ms-Schritte am Anfang und Ende der Messung jeweils gerade erst begonnen haben oder schon fast um sein können. Unter DOS kann man mit QB aber bis in den Mikrosekundenbereich messen.
Gruß
Skilltronic _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 18.07.2007, 21:16 Titel: |
|
|
Skilltronic hat Folgendes geschrieben: | So wie ich das sehe, beschäftigt sich Edocsil aber mit QBasic. | ..stimmt ja, hatte ich ganz vergessen.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 19.07.2007, 15:14 Titel: |
|
|
Meine Stoppuhr sieht nun so aus:
Code: |
CLS
LOCATE 13, 20
PRINT "Wann soll gestartet werden? Drücke die S-Taste! "
LOCATE 14, 20
PRINT "Zum Anhalten noch ein mal die S-Taste drücken!"
DO
LOOP UNTIL INKEY$ = "s"
Starttime! = TIMER
DO UNTIL INKEY$ = "s"
LOCATE 15, 20
PRINT USING "####.##"; (TIMER - Starttime!)
LOCATE 15, 28
PRINT "Sekunden"
LOOP
LOCATE 16, 20
PRINT "ENDE"
BEEP: BEEP
END
|
Zitat: |
Ich denke, daß dieser Thread bei Allgemeine Fragen zu FreeBASIC besser aufgehoben wäre,
|
Sry dachte ein Anfänger könnte auch mal sein Projekt vorstelln.  _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein] |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 19.07.2007, 21:06 Titel: |
|
|
Edocsil hat Folgendes geschrieben: |
Hier mal 2 simple Programme [...]
|
Da du dich ja selbst als Anfänger bezeichnest: Wenn sie dir selbst als Anfänger simpel erscheinen, dann sind's keine Projekte.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 19.07.2007, 22:59 Titel: |
|
|
Die Stopuhr in vereinfachter Form:
Code: | dim as double t1
dim as double t2
dim as string Tastatur
locate 1,1:Print "Leertaste zum Timerstop und Reset, ESC zum beenden drücken.."
rtr:
t1=timer
do
sleep 1
t2=timer
Tastatur=inkey$
If Tastatur = chr$(27) then end
loop until Tastatur=" "
Print using "#.###";t2-t1
goto rtr |
|
|
Nach oben |
|
 |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 19.07.2007, 23:02 Titel: |
|
|
in bezug auf die anderen vorgestellten Programme. Für mich war es die Anwendung meines Wissens. x:
es heist ja:
Zitat: | Stellt eure Projekte anderen Programmierern vor. |
und nicht das simple Projekte hier nicht rein gehören.
Mit Zitat: | 2 Fragen jetzt nur zum verbessern: | hab ich eigendlich schon mich selber kritisiert und auf Verbesserungen gehofft, mit den Vorschlägen der anderen (erfahrenden) Programierer hab ich mein Programm verbessert und mein Wissen erweitert. _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein] |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 20.07.2007, 11:32 Titel: |
|
|
War als Hinweis zu verstehen, nicht als Beleidigung.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 20.07.2007, 11:39 Titel: |
|
|
QBasic Anfänger muss man förderm, die sind so selten geworden
Zum Programm: Ich habe 2 Vorschläge, wie du dein Programm verbessern/erweitern könntest.
1. Bau eine Warten/Fortsetzen-taste ein, welche die Stoppuhr anhält und fortsetzt.
2. Bau eine Reset-Taste ein, die die Uhr aif 00:00 zurücksetzt
3. (Schwerer): TIMER gibt einem ja die Sekunden an die nach Mitternacht vergangen sind. Wenn du dein Programm nun vor Mitternacht startest und über Mitternacht laufen lässt, dann gibts Probleme. Durch geschickte Programmierung kann man das verhindern  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 20.07.2007, 19:36 Titel: |
|
|
Vorschlag 1 und 2 hab ich jetzt mit eingebaut
Code: |
CLS
SCREEN 12
LOCATE 10, 3
PRINT "Wann soll gestartet werden? Drücke die S-Taste! "
LOCATE 11, 3
PRINT "Zum Anhalten noch ein mal die S-Taste drücken!"
LOCATE 12, 3
PRINT "Zum Pausieren P drücken und zum Fortfahren noch einmal P drücken"
LOCATE 13, 3
PRINT "Zum Neustart N drücken"
DO
LOOP UNTIL INKEY$ = "s"
starttime! = TIMER
DO
s$ = INKEY$
SELECT CASE s$
CASE "s": REM stopp, ende des Programms
LOCATE 17, 26
PRINT "ENDE"
BEEP: BEEP
GOTO ende
CASE "n": REM Neustart der Zeitmessung
DO UNTIL INKEY$ = s$
LOOP
a = TIMER - starttime! - pausezeit
CASE "p": REM Programm wird pausiert
pause = TIMER
DO UNTIL INKEY$ = "p"
LOOP
pausezeit = TIMER - pause + pausezeit
CASE ""
END SELECT
LOCATE 15, 20
PRINT USING "#######.##"; (TIMER - starttime! - a - pausezeit)
LOCATE 15, 31
PRINT "Sekunden"
LOOP
ende:
END
|
Zu Vorschlag 3 denke ich mal meine Methode ist da sicher ein bisschen ungünstig mit TIMER
ansonsten würde ich in Richtung
wenn TIMER eine Sekunde vor Mitternacht dann starte Programm neu und addiere 86400 Sekunden (24 * 60 *60 ) zum Neuen wert.
gehen
Ist bloß die frage ob es geht kann es ja halt dann bloß einmal am Tag testen  _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein]
Zuletzt bearbeitet von Edocsil am 20.07.2007, 19:38, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 20.07.2007, 19:38 Titel: |
|
|
Stell doch einfach deine Computer-Uhr vor.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 20.07.2007, 19:40 Titel: |
|
|
Was hatten die für einen Syntax  _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein] |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
|
Nach oben |
|
 |
Edocsil

Anmeldungsdatum: 07.07.2007 Beiträge: 59 Wohnort: Deutschland
|
Verfasst am: 20.07.2007, 20:28 Titel: |
|
|
Zitat: | IF unterschied < 0 THEN unterschied = unterschied + 86400 'Fuer Mitternacht | also war meine Idee garnicht mal so dumm  _________________ " Zwei DInge sind unendlich, das Universum und die menschliche Dummheit, aber beim Universum bin ich mir nicht ganz sicher. "
[Albert Einstein] |
|
Nach oben |
|
 |
|