[Tut] Small Basic - Einblicke in die BASIC-Sprache

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo,
    ich weiß nicht, ob ihr schon mal etwas von der Programmiersprache BASIC gehört habt. Diese ist extra auf Kinder zugeschnitten, soll diesen den Spaß am Porgrammieren bringen und später den Einstieg zu "größeren" Sprachen wie Visual Basic (.NET) bringen. Da ich selbst als 12-jähriger diese Sprache gelernt habe und sie mir später (im Informatikunterricht) sehr geholfen hat, möchte ich euch hier einen Einblick in die Sprache bringen.


    Dieser ist natürlich auf Deutsch, nicht wie der im Anhang des Small Basic Editors.


    1. Download des Editors und Vorbereitungen


    Ohne Editor geht gar nichts. Also werden wir diesen herunterladen. Es gibt einen, der ist SEHR übersichtlich und ist von Microsoft, der Download ist hier. Durch einen Klick auf "Download" ladet ihr den Editor runter (bei mir dauerte es 15 Sekunden ;)). Nach dem Download startet ihr die Installation durch einen Doppelklick auf die .msi-Datei (funktioniert genauso wie .exe). Im Normalfall könnt ihr einfach immer auf "Next" klicken, außer ihr wollt z.B. einstellen, wo das Programm installiert werden soll. Nach der Installation können wir es über "Start"-> "Alle Programme"-> "Small Basic"->"Microsoft Small Basic" starten. Dann, nach kurzer Ladezeit, sollte sich dieses Fenster öffnen:


    [Blockierte Grafik: http://s8.directupload.net/images/090817/temp/dubw2k55.png]


    Unter "New" kann ein neues Dokument erstellt werden, mit "Open" kann ein bereits gespeichertes Projekt geöffnet werden. Mit "Save" kann ein Projekt gespeichert werden, "Save As" macht das selbe, lässt aber später noch eine Umbenennung zu. "Import" und "Publish" braucht keiner ;) "Cut" ist das selbe wie Ausschneiden, "Copy" kopieren, "Paste" einfügen, "Undo" Letzte Aktion Rückgängig machen, "Redo" heißt "Undo" rückgängig machen und jetzt der wichtigste Knopf: RUN. Diesen werden wir andauernd benutzen, da wir damit unser Programm testen können ;)


    Kommen wir jetzt aber zu unserem ersten Programm...



    2. Das Programm fragt nach deinem Namen...


    Etwas persöhnlicher als "Hello World" wäre natürlich, wenn das Programm sagt "Hallo, NAME", also z. B. "Hallo, 001". Natürlich könnten wir dafür immer den Script ändern, aber wir sind faul und machen das lieber so: (Wie immer erst der Script, dann die Erklärung).

    Code
    TextWindow.Write("Dein Name ist ")name = TextWindow.Read()TextWindow.Write("Hallo, ")TextWindow.WriteLine(name)


    Hier lernt ihr direkt ganz viel, einmal die Definition von Variablen, der Gebrauch von Write und WriteLine und das Auslesen von Daten aus der Konsole.


    Zur Erklärung:
    Das TextWindow.Write ist klar, jetzt kommt die Zeile mit "name". "name" ist eine Variable. Variablen definiert man so:

    Code
    variable = "Hallo"


    Also, vor dem = steht der Variablenname. Und hinter dem = kann eigentlich alles verwendet werden. Wenn du "Hallo" nutzt, dann steht in der Variable der Text "Hallo". In unserem Fall steht da aber der Name drin.


    Übrigens: Variablen werden beim Schließen des Programms geleert.


    Das TextWindow.Read() sagt dem Programm, dass er Daten auslesen soll. Also lässt er dich etwas eingeben und speichert es in der Variable. Die () sind wichtig und dürfen mit nichts gefüllt werden.


    Das wir bei "TextWindow.WriteLine(name)" die Anführungsstriche weglassen, ist absichtlich. Denn: Nun soll die Konsole eine Variable ausgeben, und um Variablen von normalen Texten zu unterscheiden, werden Anführungsstriche einfach weggelassen.


    3. Der Alterstest


    Der nächste Skript testet das Alter. Wenn man eine Zahl größer als 18 eingibt, soll erscheinen "Wow, du bist Volljährig", ansonsten "Mhm. Bald bist auch du volljährig". Also, hier ist der Skript:

    Code
    TextWindow.Write("Wie alt bist du? ")
    alter = TextWindow.ReadNumber()
    If alter >= 18 Then
      TextWindow.WriteLine("Wow, du bist volljährig")
    Else
      TextWindow.WriteLine("Mhm. Bald bist auch du volljährig")
    EndIf


    Zur Erklärung:
    Die ersten beiden Zeilen sollten klar sein(ReadNumber erlaubt nur Zahlen, um Bugs zu vermeiden), dann die dritte:
    If (= Falls) sagt dem Computer, dass er hier vergleichen muss. Hinter dem If steht immer das, womit verglichen werden soll, das können Variablen oder Nummern/Texte sein. Dahinter kommt, wie verglichen werden soll, also z.B. alter gleich 18 heißt "If alter = 18 Then", oder Alter größer 18 "If alter > 18 Then". >= heißt größergleich. Das Then (= dann) danach muss sein.


    Die Zeile darunter sagt, was passieren soll, wenn die If-Anweisung mit "Ja" beantwortet werden kann.
    Das Else umfasst ALLE anderen Möglichkeiten. Danach die Zeile sagt, was passieren soll, wenn Else mit "Ja" beantwortet werden kann (In Zukunft werde ich sagen, wenn If true bzw. wenn if false ist. False entspricht dem, wenn man zu Else "Ja" sagt, true also dem, wenn man zur If-Anweisung ja sagt)


    Fertig :)



    4. Kleine Hausaufgabe


    Ich gebe euch 'ne kleine Aufgabe, die ihr selber machen könnt, ich werde dann morgen-übermorgen die Lösung posten: Ihr sollt einen Taschenrechner schreiben. Dieser soll 2 Zahlen addieren, subtrahieren, dividieren oder multiplizieren können. (Kleiner Tipp: Addieren tut der PC mit dem Zeichen +, subtrahieren -, multiplizieren mit * und dividieren mit /)...


    Viel Spaß :)

  • Ich kenn zwar BASIC selber nicht, aber ich kenn n paar andere Sprachen. Somit weiß ich, dass an


    TextWindow.Write("Wie alt bist du? ")
    alter = TextWindow.ReadNumber()
    If alter <= 18 Then
    TextWindow.WriteLine("Wow, du bist volljährig")
    Else
    TextWindow.WriteLine("Mhm. Bald bist auch du volljährig")
    EndIf


    Was überhaupt nicht stimmen kann. Entweder If und Else Zweig tauschen oder das < in ein > tauschen.


    Den Rest hab ich nur überflogen, will kein BASIC lernen und wenn dann les ich ein Buch. Mit sonem Tut komm ich nicht klar, vor allem weils immer nur so kurz ist


    lg

  • Hallo,

    Was überhaupt nicht stimmen kann. Entweder If und Else Zweig tauschen oder das < in ein > tauschen.

    habe ich auch gedacht, beim Ausprobieren sagte mir das Programm dann das ich mit 12 volljährig bin ^^ Da habe ich es ausgetauscht, keine Ahnung, was da los ist :P


    Ich habe die Scripts selbst ausprobiert, doof bin ich ja nicht ;)

  • Hallo,

    habe ich auch gedacht, beim Ausprobieren sagte mir das Programm dann das ich mit 12 volljährig bin ^^ Da habe ich es ausgetauscht, keine Ahnung, was da los ist :P


    Ich habe die Scripts selbst ausprobiert, doof bin ich ja nicht ;)

    Dann ist es ne Schrott Sprache xD, also ne, sowas will ich nicht lernen...

  • Das kann wirklich nicht richtig sein.^^ Hast du mehrere Zahlen ausprobiert? Spontan würde mir nur einfallen, das da was mit dem Input nicht funktioniert, bzw. der Input als String gespeichert wird und deshalb komische Ergebnisse kommen.


    EDIT: Ach, Quatsch..sonst würde es ja nciht ReadNumber heißen. Lol, dann spukt wahrscheinlich Murphy in deinem Rechner. o.O


    Ansonsten kenn ich mich nur mit TI-Basic aus. Das ist das Basic für die Texas Instruments Taschenrechner. Das erleichtert viel und man kann recht viel damit machen. Wer einen TI hat, sollte sich unbedingt mit den Programmen beschäftigen.

  • Soll ich weiter schreiben? 6

    1. Nein (4) 67%
    2. Ja (2) 33%

    Hallo,
    erstmal: Es stimmt doch, da steht:
    If alter <= 18 Then


    das Alter muss also größer als 18 sein, damit du als Volljährig giltst. Ist doch richtig.


    Jetzt schreibe ich mal die Lösung der Hausaufgabe: (na toll, gerade wenn ich mit 'ner Tut von SB anfange, fangen wir in Info an, wie die Wilden QB zu wiederholen... Ich hoffe, ich habe nichts durcheinander geworfen, hat so aber funktioniert):


    Erklären brauche ich das ja nicht, sollte klar sein. Das ich zahl3 vor dem If-Tag als 0 definiere, muss sein, da es zu umständlich ist, hinter jedem "THEN" eine neue Variable (zahl3) zu erstellen und bei SB ist es nicht (wie bei anderen Basic-Sprachen) möglich, Variablen zu erstellen, aber noch leer zu lassen... (bei vB geht das mit "dim VARIABLE As Integer", bei QB mit "INPUT VARIABLE" usw...)


    Ich weiß nicht, ob ich weiter schreiben soll, da die Grundlagen jetzt fertig sind, jetzt wird's komplex...

  • If alter <= 18 Then


    das Alter muss also größer als 18 sein, damit du als Volljährig giltst. Ist doch richtig.

    Ja, aber bei dir steht

    Code
    If alter <= 18 
    Then 
    TextWindow.WriteLine("Wow, du bist volljährig") 
    Else 
    TextWindow.WriteLine("Mhm. Bald bist auch du volljährig") 
    EndIf

    Also hast du das vertauscht....


    Gibts in Basic kein Switch?

  • Also ich fand dein Tut lehrreich,auch wenn du am anfang die 18 Falsch hattest(Jedenfalls das zeichen)Ich habe daraus ne menge gelernt.es würde mich freuen,wenn du dir das im Spoiler mal ansiehst:


    :pika:

  • Hallo,
    fantastisch, Pokefreak :) Super! Ein kleiner (formaler) Fehler, schreibe am Ende WriteLine() anstatt Write, damit der letzte Satz, der automatisch dazu kommt (Press Any Key to continue) etwas darunter erscheint.


    Aber echt toll, damit hast du schön If-Tags und Variablen gelernt, auch wenn du am Ende dann immer den Inhalt der "antwort"-Variable immer überschrieben hast. Aber trotzdem super, so ist es natürlich einfacher, weil dir nicht 4305439025483 Variablen im Kopf rumschwirren.


    Übrigens: Damit du bis 1000 Zählen kannst, das habe ich im Tut nicht drin, das kannst du so machen:

    Code
    i = 0
    start:
    TextWindow.Write(i)
    TextWindow.Write(", ")
    i = i + 1
    If (i < 1001) Then 
      Goto Start
    EndIf


    Das "start:" ist eine Markierung, wohin das Programm springen soll. Das ist bei komplexeren Programmen auch bei "normalen" If-Tags sinnvoll. Dann steht da ja drin, dass das i immer um eins erhöht werden soll (mathematisch Unsinn, da da, wenn man die Variablen ersetzt "1 = 1 + 1" steht, was ja nicht stimmt) und das dann da hingeschrieben werden soll. Das da 1001 steht, hat damit zu tun, dass er auch die 0 mitzählt. Wenn du das nicht willst, mach aus der 1001 'ne 1000 und setz die beiden Writes VOR die Zeile "i = i + 1"...

  • Hey,danke...Allerdings hab ich noch eine frage:wie macht man das mit der Farbe und so???Und kann man bei der Turtle auch vierecke machen(Turtle an sich hab ich kapiert)???(Wie bei Java,hab da mal nen kleines prog versucht,womit man Figuren machen konnte und selbs schreiben kann,wie lang eine seite ist!)


    Mfg


    Philipp :pika:

  • Was GOTO!?!?! KOTZ#


    Mach aus dem Goto bitte eine Schleife, ansonsten kann ich mir das Tut nicht mehr anschauen. Allerdings finde ich ein Forum mit vielen Zwischenpostes nicht das Ideale zum Lernen. Eine Website währe für ein Tutorial viel evektiver. Ich perönlich verwende FreeBASIC und kann behaupten, dass BASIC eine sehr Gute Sprache zum Einsteigen ist. 8-)

  • Hallo,
    das GOTO war nicht für das Tut, sondern einfach ein kleiner Hinweis ;) Und erstmal müssen Menschen WISSEN, dass es solche Sprachen gibt, bevor sie danach googeln können ;)


    Und die Schleife wäre nicht zu umständlich? Egal, dann mache ich es als "Ergänzung" mal dazu:


    Code
    For i = 1 To 1000  TextWindow.Write(i)  TextWindow.Write(", ")EndFor


    Und noch als While-Schleife:

    Code
    i = 1While (i < 1001)  TextWindow.Write(i)  TextWindow.Write(", ")  i = i + 1EndWhile


    Beides zählt bis 1000.



    Zur Turtle:
    Klar kann die Vierecke machen:

    Code
    Turtle.Move(200)Turtle.TurnRight()Turtle.Move(200)Turtle.TurnRight()Turtle.Move(200)Turtle.TurnRight()Turtle.Move(200)

    Mit TurnRight() dreht sich die Turtle nach rechts. TurnLeft() lässt es entsprechend nach links drehen.


    Ein bisschen schöner geht das aber so:

    Code
    For i = 1 To 4Turtle.Move(200)Turtle.TurnRight()EndFor

    Wie du siehst, ist das viel kürzer und gleichzeitig machst du ein paar Schleifen.



    Farben ändern ist auch ganz einfach:


    Code
    GraphicsWindow.PenColor = "Black"

    Wichtig ist, dass du englische Farben benutzt. Übersetzen kannst du hier.



    Zufällige Farben gehen so:

    Code
    GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor()
  • Hallo,
    du kannst eine Nachricht als Pop-Up erscheinen lassen:

    Code
    i = "Hallo"GraphicsWindow.ShowMessage("Hallo", i)


    So schreibt der "Hallo".


    Und so schreibst du "richtig":

    Code
    GraphicsWindow.DrawBoundText(90, 90, 90, "Hallo")


    Die ersten beiden Zahlen legen fest, WO auf dem Window das geschrieben werden soll, die dritte, wie groß die Schrift sein soll. Als letztes kommt der Text.


    Schriftlich rechnen kannst du ihn schon lassen, z.B. so:

    Code
    TextWindow.Write("Die erste Zahl lautet ")
    a = TextWindow.ReadNumber()
    TextWindow.Write("Die zweite Zahl lautet ")
    b = TextWindow.ReadNumber()
    TextWindow.WriteLine(a)
    TextWindow.Write("+")
    TextWindow.WriteLine(b)
    TextWindow.WriteLine("________")
    TextWindow.WriteLine(a + b)


    So sieht das halt aus, als hätte er es schriftlich gemacht.


    Zum Zeichnen: Ich selber bin zu faul, das zu schreiben, haben andere für mich gemacht, hier.


    Guck dir das Programm gut an und versuche es nachzumachen. Werde ich auch machen, habe jetzt aber keine Zeit ;)