PureBasic: Grundlagen-Lösungen
Hello, world!
[Bearbeiten]- Hierfür gibt es keine Lösung, das liegt allein am Ehrgeiz des Programmiers.
- Dies sind die Fehler im Listing:
- Es darf immer nur ein Befehl pro Zeile stehen.
- PrintN() erwartet einen String, es fehlen also die Anführungsstriche
- Hinter einem Befehl stehen immer geschlossene Klammern, Delay() fehlt also eine
Variablentypen
[Bearbeiten]- 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.
- 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)
Bedingungen
[Bearbeiten]- 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.
- 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.
Schleifen
[Bearbeiten]- 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()) 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.
- 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 Maps
[Bearbeiten]- 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.