in Programming, TI-BASIC

TI BASIC Tutorial 3

Hier das dritte Tutorial, in dem wir ein erstes relativ sinnvolles Programm coden ;)

Bisher können wir zwar Texte ausgeben, aber mehr auch nicht.

Nun kommen wir zu den Variablen.

Die kennst du ja wahrscheinlich schon aus dem Matheunterricht (wenn du nicht die ganze Zeit mit deinem TR rumspielst ;) ): Variablen sind eine Art Minispeicherplätze für Zahlen.

Zuerst müssen wir der Variable einen Namen geben. Leider kann man nicht mehrere Buchstaben aneinanderreihen, sondern muss Namen wie x,y oder a und b nehmen.

ACHTUNG: Wenn man größere Projekte programmiert, sollte man sich unbedingt die Bedeutungen der Variablen aufschreiben, da man sonst nach einem Wochenende nix mehr versteht!

Wie kann man denn nun den Variablen Zahlen zuweisen?

5->X
3->Y
X+Y->A

A wäre in diesem Fall 8.

(Den Pfeil kann man schreiben, indem man die Taste STO-> drückt)

Eine Variable ausgeben, ist auch nicht weiter schwer:

8->A
Output(1,1,A)
Disp A

Zu beachten ist, dass Disp das Ergebnis am rechten Bildschirmrand anzeigt.

Doch wie kann man Variablen vom User einlesen lassen?

Input "Variable:",A
Disp A

Nun kann man jede Zahl eingeben und wieder auslesen lassen.

Zeit für ein kleines Experiment:

Rufe dieses Programm auf, und gebe dort z.B. 19 ein, und lass die Variable auslesen.

Schalte dann den TR aus.

Starte ihn erneut, ruf das Programm auf, und gebe jetzt A ein. Der Taschenrechner gibt wieder 19 aus. Er hat sich also die Zahl gemerkt, und behält sie auch ausgeschaltet.

Die if-Verzweigung

Zeit für ein kleines “Spiel” ^^:

Lbl A   (Der Sprungpunkt)
ClrHome       (Löscht alles auf dem Display)
randInt(1,9)->A  (A ist nun eine Zufallszahl zwischen 1 und 9)
randInt(1,9)->B
A+B->C       ( C ist nun die Summe von A und B)
Output(1,1,A)
Output(1,2,"+")
Output(1,3,B)
Disp""           (Muss ausgegeben werden, damit Input nicht die Rechnung überschreibt)
Input "Ergebnis:",D  (D ist die Eingabe des Users)
IF (D=C)    (Wenn D den gleichen Wert wie C hat)
THEN    (Dann mache)
Disp "Richtig!"   (Richtig ausgeben)
END  (Wenn das nicht so ist (D nicht gleich C ist))
IF (C	≠ D) (Wenn C nicht gleich D ist)
THEN
Disp "Falsch!"  (Falsch ausgeben)
END   (Die if Schleife beenden)
PAUSE   (aus ENTER warten)
Goto A  (Wieder zum Anfang (Sprungpunkt A) gehen

In diesem Code sind zwei neue Sachen:

– randInt

Zu finden mit 2nd + 0 und dann x bzw. R drücken. Dies ist der Katalog. Hier findet man alles, was der TR kann. Wenn man den Anfangsbuchstaben des benötigten Befehls drückt, gelangt man direkt zu ihm.

–  GOTO A:

Wenn man dieses Goto z.B. in Zeile 3 einbaut, und Lbl A: in Zeile 1 stehen hat, würde er den Befehl in Zeile 2 ewig wiederholen. Anstatt a kann man natürlich auch jeden anderen Buchstaben nehmen, und auch mehrere Gotos in ein Programm einbauen.

– IF (Bedingung):THEN:Tu dies und das:END

Wenn die Bedingung in den Klammern stimmt (das = Zeichen findet man bei 2nd + Math), wird die Aktion, die zwischen Then und End steht ausgeführt.

Wenn sie nicht wahr ist, passiert nix.

Wenn doch etwas passieren soll, wenn die Bedingung unwahr ist, dann hilft:

ELSE

Die Syntax sieht dann so aus:

: IF (Bedingung)
: THEN
: Tu irgendwas
: Else
: Tu irgendwas anderes
: END

Write a Comment

Comment

38 Comments

  1. Ich bräuchte mal deine Hilfe:

    Ich würde gerne eine Art “Auswahlmenü” erstellen, bei dem man eine Zahl eingeben kann und dann an die Funktion springt.

    Prompt W

    If W=1
    Then
    Disp “1 ausgewählt.”
    End
    Else
    If W=2″
    Then
    Disp “2 ausgewählt.”
    End
    Else
    If W=3
    Then
    Disp “3 ausgewählt”
    End
    Else
    Disp “keine vorhandene Option ausgewählt”

    Wieso geht das nicht?

    • Hi Depp,

      bei einer If-else Verzweigung kommt kein End zwischen dem If-Block und dem Else-Block.

      Also

      If W=1
      Then
      Disp “1 ausgewählt.”
      Else
      ...
      End

      Ein Menü kannst du auch mit dem Menu( Befehl bauen.


      Menu("Menü Titel","Option 1",Lbl X, "Option 2", Lbl Y)

      Genauer erklärt (auf Englisch) hier: https://tibasicdev.wikidot.com/menu

  2. Mein Programm sieht jetzt so aus:
    :Prompt A
    :Prompt B
    :Prompt C
    :(B/2A)^2-(C/A)->D
    :-(B/A)/2->X
    :If (D0)
    :Then
    :X+Wurzel aus(D)->U
    :X-Wurzel aus(D)->V
    :Disp U
    :Disp V
    :Stop
    :End

    Ich hab nämlich nichts zu tun und dachte ich könnte ja mal ein Programm für die PQ-Formel schreiben, ohne die quadratische Gleichung auf Normalform zu bringen, damit man damit Nullstellen von ganzrationalen Funktionen dritten Grades ohne absolutem Glied bestimmen kann bzw. von ganzrat. Funktionen zweiten Grades.
    Mein Problem ist jetzt, dass wenn ich bei A=2, B=4 un C=2 eingebe zwei Werte rauskommen, obwohl er ja eigentlich nur X angeben sollte.

    Danke im vorraus!

  3. Wenn die Bedingung nicht stimmt kommt bei mir immer die Error-Meldung: A test did not resolve to TRUE or FALSE.
    Weiß wer worans liegt?

  4. Bei mir kommt immer “falsch” egal was ich eingeben! Was könnte der Fehler sein? Ich habe schon alles überprüft!
    übriges sehr gutes Tutorial :)

  5. Wäre es auch mögliche dass man das Rechenzeichen im Spiel variieren kann (also so dass nicht nur +,-,*,/ ist sondern alle möglich sind

      • Nein so hab ich das nicht gemeint ich meinte dass es beim selben programm unterschiedliche Rechenzeichen verwendet. Hab das aber selbst gelöst mit Zufallszahlen zwischen 1 und 4 und pro nach Zahl ein If-Then-Goto gemacht. Das geteilt hab ich aber weggelassen, das war mir zu Doof für Kopfrechnen. Ausserdem hab ich bei Plus/Minus die Zahlen auf Zwei Stellen erweitert. Ich hab oben noch das Lob vergessen… verständlichstes deutschsprachiges Tutorial das ich hier gefunden hab. Danke :) Mach weiter so

        • Danke erstmal :D
          Mach du auch weiter so, ich habe hier oft Kommentartoren, die einfach nur sagen “Programmier mal das und das bitte” oder “Warum klappt das und das nich?” und man merkt einfach, dass sie sich selbst garnicht damit beschäftigt haben >.< Dieses Tutorial ist ja schließlich nur der Einstieg, deshalb find ichs gut, wenn Leute weiterdenken :D

    • Ich verstehe nicht so recht, was du meinst:

      Die Code-Fragmente in den Kommentaren gehen mit dem code-tag, also das Kleiner-als-Zeichen, dann “code” und das größer-als-Zeichen.