Level 2 - Taschenrechner!

Wir haben schon ausreichend viel gelernt, um unser erstes sinnvolles Programm schreiben zu können. 

 

Als "Computer" wurden früher Menschen bezeichnet, welche Rechenaufgaben gelöst haben. Das war in einer Zeit, in der es noch keine automatischen Rechenmaschinen gegeben hat. Der Begriff "Computer" ist also älter als die Maschinen, welche wir heute so bezeichnen.

 

Wir wollen nun BASIC dazu bringen das zu tun, was ein Computer am besten kann: Rechnen!

Wir schreiben das Programmlisting genau so ab, wie es rechts im Bild zu sehen ist.

 

Wichtig: Wenn Du an einem Schneider CPC sitzt musst Du dran denken, statt

 

PRINT CHR$(147) (Commodore)

PRINT CHR$(125) (Atari)

 

den Befehl


CLS

 

zu verwenden, um den Bildschirm zu löschen.


So sieht unser Programm aus, wenn es läuft. 

 

Es wird zur Eingabe von zwei Zahlen aufgefordert, diese werden in den Variablen A und B gespeichert.

Die Inhalte der Variablen A und B werden angezeigt, jeweils mit dem korrekten Rechenzeichen dazwischen.

Dahinter werden die Ergebnisse dargestellt.

 

Schließlich wird unser Programm beendet.

 

Aber es ist doch ungünstig, wenn ein Taschenrechner sich selbst beendet, oder? Dagegen wollen wir etwas unternehmen.


IF, THEN

...springt zur angegebenen Zeilennummer, wenn eine Bedingung zutrifft

In Zeile 140 fragen wir mit INPUT, ob nochmal gerechnet werden soll. Die Eingabe landet in der Variablen F$.

 

IF F$="J" THEN 10

IF F$="N" THEN 990

 

Achtung: Bei Atari dran denken F$ vorher mit 

DIM F$(1) 

 

zu deklarieren! 

 

Wenn J eingegeben und Return gedrückt wurde, springt BASIC in Zeile 10, also an den Anfang. Das Programm startet von vorn.


Wenn N eingegeben und Return gedrückt wurde, springt BASIC in Zeile 990, schreibt "AUF WIEDERSEHEN" auf dem Screen und das Programm wird beendet.

IF arbeitet unsichtbar im Hintergrund. 
Von der Abarbeitung sieht man im laufenden Programm nichts.


GOTO

...springt bedingungslos zur angegebenen Zeilennummer

 

Als Programmierer muss man immer damit rechnen, dass die Benutzer ein Programm falsch bedienen.

 

Man kann für F$ alles mögliche eingeben, auch einfach gar nichts und Return drücken. In diesem Falle macht BASIC bei der nächsten Zeile weiter. In unserem Fall wird das Programm beendet.

Neue Zeile 170:

 

GOTO 130

Wird nun weder "J" noch "N" für F$ eingegeben, springt das Programm in Zeile 130. Es wird erneut die Frage "NOCHMAL" gestellt.


Variablen behalten ihren Inhalt bis zur Beendigung des Programms.

 

Wir geben als erste Zahl 10 und als zweite Zahl 5 ein. 
Unser Programm läuft ab.


Wir sagen anschließend J.

 

Im zweiten Durchlauf geben wir keine Zahlen ein, sondern drücken einfach nur Return. 

 

Die Variablen A und B haben ihre Werte vom vorherigen Durchlauf behalten.

 

Das soll so nicht sein.


Den Variablen werden feste Startwerte verpasst in den neuen Zeilen 11, 12, und 13

 

A=0

B=0

F$=""

 

Auch die Variable F$, welche über einen neuen Durchlauf des Programmes entscheidet, muss auf "" also "nichts" zurückgesetzt werden. 


Durch NULL kann man nicht teilen. Wenn es jemand in unserem Programm versucht kommt diese Fehlermeldung.

 

Unser Programm wird unerwartet beendet.

 

Damit das nicht geschieht bauen wir eine Überprüfung ein. 

 

110 IF B<>0 THEN 120

111 PRINT "TEILEN DURCH NULL IST UNZULAESSIG!"

112 GOTO 130

 

Wenn in Variable B keine 0 steht, springt BASIC auf Zeile 120. Falls nicht (also B=0) macht BASIC mit der nächsten Zeile weiter. Es wird die Meldung angezeigt.

 

Mit dem anschließenden GOTO wird die Zeile 120, in welcher es zum Rechenfehler wegen der 0 kommen würde, übersprungen.

 

Und jetzt: Testen, testen, testen! 

 

Wenn das Programm gut läuft, speichert es ab unter

"TASCHENRECHNER"


LIST -100

...zeigt alle Programmzeilen bis Zeile 100 an

 

LIST 100-

...zeigt alle Programmzeilen ab Zeile 100 an

 

LIST 100

...zeigt nur Programmzeile 100 an

 

LIST 50-150

...zeigt die Programmzeilen von 50-150 an

 

Sobald das Programm größer als ein Screen wird ist es hilfreich mit diesen LIST Befehlen zu arbeiten. Die Zeilennummern sind Beispiele und können selbst gewählt werden.

 


Codereview

Jeder macht mal Fehler, auch Programmierer. Daher ist das sogenannte "Codereview" sehr wichtig. Dabei lässt man mindestens einen anderen Programmierer über den eigenen Code drüber schauen. Das trägt zur guten Qualität des Programmes bei.

 

Unser Taschenrechner-Programm ist recht klein. Aber stellt Euch einen Code von mehreren 1000 Zeilen vor, wie viele Bugs sich dort verstecken können! 

Glückwunsch!

Damit ist Level 2 abgeschlossen!

Bereit für mehr?