Kurs Diskussion:FreeBASIC/Lerngruppen/Testlauf/Anfängerkurs II
Abschnitt hinzufügenVariante des Taschenrechners
[Bearbeiten]DIM AS INTEGER A, B, SUMME
' ------------------------------ E i n g a b e -
INPUT "Geben Sie die 1. Zahl ein: ", A
INPUT "Geben Sie die 2. Zahl ein: ", B
' -------------------- V e r a r b e i t u n g -
SUMME = A + B
' ------------------------------ A u s g a b e -
PRINT "" 'Fügt nur eine Leerzeile ein.
If Summe > 0 Then
PRINT "Die Summe beider Zahlen ist"; SUMME; "."
Else
Print "Die Summe beider Zahlen ist "; SUMME; "."
END IF
SLEEP : END
If-then ist hier (Befehlsreferenz) erklärt. --Michael Reschke 18:57, 28. Jun. 2008 (CEST)
Das Array-Veranschaulichungs-Beispiel-Programm
[Bearbeiten]Das Programm hat eine kleine Macke. Wenn die Eingabe 0 oder aber > 10 ist, dann liefert das Programm keinen sinnvollen Wert. Ich möchte entsprechende Eingaben gerne abfangen und werde da noch was tüfteln müssen. --Michael Reschke 19:33, 28. Jun. 2008 (CEST)
Das Programm in der ursprünglichen Form
[Bearbeiten]
DIM Preise (1 TO 10) AS SINGLE
DIM Benutzereingabe AS INTEGER
Preise(1) = 1.99
Preise(2) = 10.65
Preise(3) = 20.45
Preise(4) = 30.27
Preise(5) = 4.93
Preise(6) = 6.78
Preise(7) = 2.23
Preise(8) = 1.45
Preise(9) = 0.86
Preise(10) = 0.6
INPUT "Welchen Preis abrufen? ", Benutzereingabe
PRINT "Das Produkt mit der Nummer "; Benutzereingabe
PRINT "kostet "; Preise(Benutzereingabe); "."
SLEEP : END
Das Programm bereits leicht verbessert
[Bearbeiten]DIM Preise (1 TO 10) AS SINGLE
DIM Benutzereingabe AS INTEGER
DIM Kontrolle AS Integer
Preise(1) = 1.99
Preise(2) = 10.65
Preise(3) = 20.45
Preise(4) = 30.27
Preise(5) = 4.93
Preise(6) = 6.78
Preise(7) = 2.23
Preise(8) = 1.45
Preise(9) = 0.86
Preise(10) = 0.6
do
INPUT "Welchen Preis abrufen? ", Benutzereingabe
loop while (Benutzereingabe > 10)
PRINT "Das Produkt mit der Nummer"; Benutzereingabe;_
" kostet"; Preise(Benutzereingabe); " EUR."
SLEEP : END
Wenn eine Eingabe von 12 erfolgt, dann wird das bereits über die do-while-Schleife abgefangen. Ich muss mir gerade noch ansehen, wie ich ihm beibringe, dass er genauso reagiert, wenn ich 0 eingebe. --Michael Reschke 19:43, 28. Jun. 2008 (CEST)
Die optimierte, lauffähige Variante
[Bearbeiten]DIM Preise (1 TO 10) AS SINGLE
DIM Benutzereingabe AS INTEGER
DIM Kontrolle AS Integer
Preise(1) = 1.99
Preise(2) = 10.65
Preise(3) = 20.45
Preise(4) = 30.27
Preise(5) = 4.93
Preise(6) = 6.78
Preise(7) = 2.23
Preise(8) = 1.45
Preise(9) = 0.86
Preise(10) = 0.6
INPUT "Welchen Preis abrufen? ", Benutzereingabe
do
PRINT "Bitte geben Sie nur Werte zwischen 1 und 10 ein."
INPUT "Welchen Preis abrufen? ", Benutzereingabe
loop while (Benutzereingabe > 10) OR (Benutzereingabe < 1)
PRINT "Das Produkt mit der Nummer"; Benutzereingabe;_
" kostet"; Preise(Benutzereingabe); " EUR."
SLEEP : END
Dieses Programm läuft. Es gibt noch Sachen - die ich bei Eingabe einer Gleitpunktzahl (2.2 aber 2.4) nicht verstehe - aber das muss ich jetzt vielleicht auch noch nicht verstehen. --Michael Reschke 19:48, 28. Jun. 2008 (CEST)
- Anfängerfehler: Ich hatte zunächst die beiden Bedingungen bei
loop while (Benutzereingabe > 10) OR (Benutzereingabe < 1)
mit einem AND verknüpft, weshalb das nicht richtig funktionierte. --Michael Reschke 19:50, 28. Jun. 2008 (CEST)
Die (Haus-)Aufgabe
[Bearbeiten]Ich habe mal mehr Zeilen verwendet, als unbedingt nötig:
'--------------------------------------------- A u f g a b e -
'Schreiben Sie ein Programm, das 3 Kommazahlen eingeben lässt,
'diese anschließend miteinander multipliziert
'und das Ergebnis zum Schluss ausgibt.
DIM AS Single A, B, C 'Kommazahlen - gemeint sind Gleitpunktzahlen
PRINT "Format: Bitte geben Sie '1.23' statt '1,23' ein! "
PRINT "Das Produkt der drei Zahlen wird sonst nicht korrekt berechnet."
PRINT ""
INPUT "Bitte geben Sie die 1. Zahl ein"; A
INPUT "Bitte geben Sie die 2. Zahl ein"; B
INPUT "Bitte geben Sie die 3. Zahl ein"; C
IF A*B*C < 0 THEN
PRINT "Das Produkt dieser drei Zahlen ist "; A*B*C; "."
Else
PRINT "Das Produkt dieser drei Zahlen ist"; A*B*C; "."
END IF
SLEEP
Funktionstüchtig wäre bereits:
'--------------------------------------------- A u f g a b e -
'Schreiben Sie ein Programm, das 3 Kommazahlen eingeben lässt,
'diese anschließend miteinander multipliziert
'und das Ergebnis zum Schluss ausgibt.
DIM AS Single A, B, C 'Kommazahlen - gemeint sind Gleitpunktzahlen
INPUT "Bitte geben Sie die 1. Zahl ein"; A
INPUT "Bitte geben Sie die 2. Zahl ein"; B
INPUT "Bitte geben Sie die 3. Zahl ein"; C
PRINT "Das Produkt dieser drei Zahlen ist "; A*B*C; "."
SLEEP
Die Verwendung von Schleifen und Bedingungen wird erst im Kurs 3 erläutert. --Michael Reschke 20:00, 28. Jun. 2008 (CEST)