PureBasic: Grundlagen-Lösungen

Hello, world!Bearbeiten

  1. Hierfür gibt es keine Lösung, das liegt allein am Ehrgeiz des Programmiers.
  2. Dies sind die Fehler im Listing:
    1. Es darf immer nur ein Befehl pro Zeile stehen.
    2. PrintN() erwartet einen String, es fehlen also die Anführungsstriche
    3. Hinter einem Befehl stehen immer geschlossene Klammern, Delay() fehlt also eine

VariablentypenBearbeiten

  1. Dies ist eine mögliche Lösung:
OpenConsole()
Print("Geben Sie den Radius des Kreises ein: ")
radius.f = ValF(Input())

PrintN("Der Umfang beträgt: "+StrF(2*radius*#Pi))

Delay(2000)

Diese Aufgabe ist einfach: Es gibt eine Variable radius vom Typ Float, was durch das kleine f hinter dem Punkt dargestellt wird. Mit ValF(Input()) kann man einen Radius eingeben, der direkt in einen Float umgewandelt wird. Der Umfang wird direkt in der Ausgabe berechnet, wobei Pi über eine PureBasic-interne Konstante dargestellt wird, die im Kapitel vorgestellt wurde.

  1. Dies ist eine mögliche Lösung:
OpenConsole()

Print("Geben Sie einen Winkel ein: ")
winkel.f = ValF(Input())
PrintN("Der Sinus von "+StrF(winkel)+" lauten: "+StrF(Sin(Radian(winkel))))

Delay(2000)

BedingungenBearbeiten

  1. Dies ist eine mögliche Lösung:
OpenConsole()
Print("Geben Sie den Radius des Kreises ein: ")
radius.f = ValF(Input())

If radius < 0
  PrintN("Der Umfang beträgt: 0")
Else
  PrintN("Der Umfang beträgt: "+StrF(2*radius*#Pi))
EndIf

Delay(2000)

Die Aufgabe aus dem vorigen Kapitel wurde durch eine If-Else-Klausel erweitert, die überprüft, ob die Eingabe kleiner als 0 ist. Ansonsten arbeitet das Programm wie das erste.

  1. Dies ist eine mögliche Lösung:
OpenConsole()
Print("Geben Sie die Geschwindigkeit des Autos ein: ")
geschwindigkeit.f = ValF(Input())
#Limit = 50
If geschwindigkeit <= 50
  PrintN("Keine Geschwindigkeitsübertretung.")
Else
  PrintN("Es werden "+StrF(#Limit-geschwindigkeit)+" zu schnell gefahren.")
EndIf

Delay(2000)

Die Aufgabe gleicht stark der ersten: Es wird die Geschwindigkeit abgefragt, danach wird noch eine Konstante angelegt, die das Geschwindigkeitslimit darstellt. Wenn die Geschwindigkeit nicht größer als 50 km/h ist, liegt keine Übertretung vor, ansonsten schon. Die Substraktion rechnet aus, wieviel zu schnell gefahren wurde.

SchleifenBearbeiten

  1. Dies ist eine mögliche Lösung:
OpenConsole()
Print("Geben Sie einen String ein: ")
string.s = Input()
Print("Geben Sie eine ganze positive Zahl ein: ")
zahl = Val(Input())&#13;&#13;If zahl < 1
  PrintN("Die Zahl muss größer als 0 sein!")
Else
  For k = 1 To zahl
    PrintN(string)
  Next
EndIf

Delay(2000)

Die Aufgabe kann einfach über eine For-Schleife gelöst werden, wobei die Anzahl der Iterationen vorher durch die Eingabe abgefragt wurde, ebenso wie der String, der ausgegeben werden soll. Die Anzahl der Iterationen muss dabei mindestens 1 sein.

  1. Dies ist eine mögliche Lösung:
OpenConsole()

While 1
  string.s = Input()
  If string = ""
    Break
  Else
    PrintN(string)
  EndIf
Wend

Delay(2000)

Arrays, Listen und MapsBearbeiten

  1. Dies ist eine mögliche Lösung:
OpenConsole()

Dim feld(4,4)

Repeat
  PrintN("1. Feld anzeigen")
  PrintN("2. Koordinate eingeben")
  PrintN("3. Programm beenden")
  Print("Auswahl: ")
  auswahl = Val(Input())

  Select  auswahl
    Case 1
      For k = 0 To 4
        For l = 0 To 4
          Print(Str(feld(k,l)))
        Next
        PrintN("")
      Next
    Case 2
      Print("x-Koordinate: ")
      x = Val(Input())
      Print("y-Koordinate: ")
      y = Val(Input())
      feld(x-1,y-1) + 1
  EndSelect

  PrintN("")
Until auswahl = 3

Delay(2000)

Es wird ein zweidimensionales Array angelegt, das das Feld repräsentiert. In der Repeat-Schleife wird das Menü dargestellt und danach eine Eingabe erwartet. Auf diese wird dementsprechend reagiert: Bei 1 wird das Feld über eine verschachtelte For-Schleife ausgegeben, bei 2 müssen Koordinaten eingeben werden, die genutzt werden, um auf das Array zuzugreifen, und bei 3 bricht die Schleife ab.