erweitert um ein paar eigene Beiträge von mir selber:
Das erste Programm
Als erstes Beispiel soll ein Klang abgespielt werden, dazu kann das folgende einfache Programm dienen:
Code: Alles auswählen
/* Programm zur Erzeugung eines einzelnen Tones
geschrieben von Uwe Debacher 2008 */
task main()
{
PlayTone(262, 400);
Wait(500);
}
Hier kann man schon sehr viele Elemente von C bzw. NXC erkennen. Jedes Programm besteht aus einem Hauptprogramm (bzw. Task) namens main(). Alles was zu main gehört befindet sich innerhalb der geschweiften Klammern {..}.
Innerhalb des Hauptprogrammes stehen zwei Befehle. Der Befehl
PlayTone(Frequenz, Dauer)
verfügt über zwei Parameter, die Frequenz des Tones in Hz und die maximale Dauer in Millisekunden. Bei NXC ist es aber ähnlich wie bei der grafischen Umgebung, der Roboter wartet nicht unbedingt auf das Ende eine Befehles. Damit man den Ton dann auch wirklich hört muss man das Programm dazu bringen etwas zu warten, dafür gibt es auch hier einen Wartebefehl nämlich
Wait(Dauer)
Auch hier ist die Dauer wieder in Millisekunden angegeben.
Am Anfang des Programmes stehen noch zwei Zeilen, die vor allem bei größeren Projekten wichtig sind, nämlich Kommentarzeilen. Ein guter Programmierer kommentiert seinen Quelltext ausführlich, wobei der Kommentar leicht einmal umfangreicher werden kann, als das eigentliche Programm. In dem Beispiel ist ein mehrzeiliger Kommentar zu sehen, der mit /* beginnt und */ endet. Man kann auch einzeilige Kommentare benutzen, die müssen nicht beendet werden und beginnen mit der Zeichenkombination //.
Wie bei allen Programmierumgebungen sollte man sich auch bei BricxCC angewöhnen seine Projekte regelmäßig zu speichern. Als Datei-Typ wählt man NXC-File aus, dann bekommt die Datei die Endung .nxc angehängt.
Das Programm kann man nun leicht erweitern:
Code: Alles auswählen
/* Programm zu Ausgabe eines Liedes
geschrieben von Uwe Debacher 2008 */
#define d6 1175
#define e6 1319
#define f6 1397
#define g6 1568
#define a6 1760
#define h6 1976
task main()
{
PlayTone(d6, 400); Wait(500);
PlayTone(e6, 400); Wait(500);
PlayTone(f6, 400); Wait(500);
PlayTone(g6, 400); Wait(500);
PlayTone(a6, 800); Wait(900);
PlayTone(a6, 800); Wait(900);
PlayTone(h6, 400); Wait(500);
PlayTone(h6, 400); Wait(500);
PlayTone(h6, 400); Wait(500);
PlayTone(h6, 400); Wait(500);
PlayTone(a6, 800); Wait(900);
}
Hier wird der erste Teil von "Alle meine Entchen" angespielt. Zwei Dinge sind neu in dieser Erweiterung. Die Wait-Befehle stehen jetzt hinter den PlayTone Befehlen, man darf also mehrere Befehle in eine Zeile schreiben.
Am Anfang des Programmes werden die Notentöne definiert. Dazu werden Konstanten benutzt. Eine Konstanten-Definition fängt immer an mit
#define
danach folgt dann ein Name für die Konstante und zuletzt ihr Wert. Eine Konstante kann im Laufe des Programmes nicht verändert werden, ein wichtiger Unterschied zu Variablen.