Kurs Diskussion:FreeBASIC/Lerngruppen/Testlauf/Anfängerkurs II

Aus Wikiversity
Zur Navigation springen Zur Suche springen

Variante 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)[Beantworten]

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)[Beantworten]

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)[Beantworten]

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)[Beantworten]

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)[Beantworten]

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)[Beantworten]