Einstieg+ActionScript

toc Die zu Flash gehörende Programmiersprache heisst ActionScript (AS2 oder AS3). ActionScript ist eine ausgewachsene Programmiersprache, d.h. wir können dem Computer beliebige Befehle erteilen und eigentlich ALLES ausrechnen lassen - zumindest, wenn wir genau genug formulieren können, was berechnet werden soll. Natürlich wird AS Code hauptsächlich dafür benutzt, Objekte in einem Flash-Projekt zu steuern, z.B. um ein kleines interaktives Spiel zu programmieren. Anfangen wollen wir allerdings ganz ohne sichtbare Objekte und Benutzerverhalten, einfach mit einem leeren Flash-Projekt, in das sie AS-Code schreiben. Auf diese Weise können sie sich erstmal darauf konzentrieren, wie man einem Computer in ActionScript Anweisungen erteilt und wie man diese Anweisungen organisiert. =Arbeitsweise= Auf dieser Seite finden sie eine Reihe von grundlegenden Beispielen und Aufgaben, die sie in einem ansonsten leeren Flash-Projekt ausprobieren (bzw. lösen) sollen. Begleitend dazu sollen sie sich das nötige Hintergrundwissen aneignen, entsprechende Informationen finden sie unter Konzepte, insbesondere die Seiten Syntax, Variablen, Datentypen, Konventionen, Operatoren und Kontrollstrukturen gilt es (mehrfach) gelesen und verstanden zu haben. =Variablen=
 * //Folien zur Einführung: [[file:GrundkonzepteProgrammierenAS3.pptx|GrundkonzepteProgrammierenAS3.pptx]]//

Beispiel 1
code format="actionscript" trace("hallo Welt"); var vorname:String = "Peter"; trace(vorname); trace("vorname"); code

Beispiel 2
code format="actionscript" var vorname:String = "Peter"; trace(vorname); vorname = "Hans"; trace(vorname); vorname = vorname + "peter"; trace(vorname); trace("Vorname: " + vorname); code

Aufgabe 1
code format="actionscript" var person:String = "mir"; var menge:String = "viel"; var was:String = "Programmieren"; code Schreiben sie ein Programm, das aus den drei vorgegebenen Textvariablen die folgende Ausgabe zusammenstellt und ausgibt: //Programmieren macht mir viel Spass.// Wenn es funktioniert ändern sie die Werte der Variablen und schauen, welche Ausgabe sich dann ergibt.

Beispiel 3
code format="actionscript" var zahl:Number = 3; trace(3) trace("eine bestimmte zahl: " + 3) trace("der Wert von zahl ist " + zahl) trace("das Quadrat von " + zahl + " ist " + zahl*zahl) var zufallsZahl:Number = Math.random; trace("eine Zufallszahl: " + zufallsZahl) var ganzeZufallsZahl:Number = Math.floor(Math.random*100); trace("eine ganze Zufallszahl zwischen 0 und 99: " + ganzeZufallsZahl) trace("das Quadrat von " + ganzeZufallsZahl + " ist " + ganzeZufallsZahl*ganzeZufallsZahl) code Hinweis: Probieren sie das obige Programm mehrfach aus und beobachten sie, was sich verändert.

Aufgabe 2
Was ist wohl die Ausgabe des folgenden Programmes? (erst überlegen, dann ausprobieren) code format="actionscript" var zahl1:Number = 4; var zahl2:Number = 2; zahl1 = 3 - zahl1; trace("zahl1 = " + zahl1 + ", zahl2 = " + zahl2); code

Aufgabe 3
Schreiben sie ein Programm, das aus zwei zu Beginn festgelegten Zahlen (Variablen) folgende Ausgabe liefert: //Variable: a = 2; b = 7// //Summe = 9// //Produkt = 14// Ändern sie dann die Werte der Variablen und überprüfen sie die Ausgabe. Können sie die Werte der beiden Variablen auch zufällig festlegen lassen? (s. Beispiel 3)

Aufgabe 4
Welchen Sinn macht das folgende kurze Programm? (schreiben sie sich die aktuellen Werte zu jeder Zeile dazu) code format="actionscript" var zahl1:Number = 4; var zahl2:Number = 2; var temp:Number = zahl1; zahl1 = zahl2; zahl2 = temp; code =Bedingungen=

Beispiel 1
code format="actionscript" var a:Number = Math.floor(Math.random*10); //Zufallszahl zwischen 0 und 9 var b:Number = 7; var summe:Number = a + b; trace("Die Bedingung summe < 10 ist: " + (summe < 10)) if(summe < 10){ trace("Die Summe ist kleiner als 10"); } else{ trace("Die Summe ist grösser oder gleich 10"); } code

Beispiel 2
code format="actionscript" var a:Number = Math.floor(Math.random*6); var b:Number = 5; var produkt:Number = a * b; if(produkt <= 10){ trace("Das Produkt ist kleiner oder gleich 10"); } else if(produkt > 10 && produkt < 20){ trace("Das Produkt liegt zwischen 10 und 20"); } else if(produkt == 20){ trace("Das Produkt hat den Wert 20"); } else{ trace("Das Produkt ist grösser als 20"); } code

Aufgabe 1
Schreiben sie ein Programm, das herausfindet, ob eine zufällige Zahl zwischen 1 und 9 (in Variable speichern!) zwischen 1 und 5 liegt, den Wert 5 hat oder grösser als 5 ist. Das Ergebnis soll dann in lesbarer Art ausgegeben werden.

Aufgabe 2
Schreiben sie ein Programm, das ausgibt, ob eine zufällige Zahl (Variable) gerade oder ungerade ist. Hinweis: Das ist eine gute Gelegenheit, sich mit dem %-Operator (Modulo) bekannt zu machen. Beispiel: x%5 ergibt 0, wenn x durch 5 teilbar ist (d.h. der Rest der Division durch 5 ist 0). Sollte x dagegen den Wert 7 haben, dann wären nach der ganzzahligen Division noch 2 übrig - das Ergebnis wäre hier also 2 (genauso für x = 17, oder x = 12, oder x =137). =Schleifen=

Beispiel 1 - while
code format="actionscript" var zahl:Number = 1; while(zahl < 10){ //while heisst "solange" trace(zahl*zahl); zahl = zahl + 1; //diesen Part darf man nicht vergessen, sonst gibt es einen infinite loop } code

Beispiel 2 - while
code format="actionscript" var zahl:Number = 1; while(zahl < 10){ if(zahl*zahl < 50){ trace(zahl*zahl); }   zahl = zahl + 1; } code

Aufgabe 1 - while
Was macht das folgende Programm, und welchen Wert wird es ausgeben? //(erst überlegen, dann ausprobieren)// code format="actionscript" var zahl:Number = 1; var summe:Number = 0; while(zahl <= 100){ summe = summe + zahl; zahl = zahl + 1; } trace("Summe: "+summe); code

Aufgabe 2 - while
Geben sie mit Hilfe einer while-Schleife alle geraden Zahlen zwischen 10 und 20 aus.

Aufgabe 3 - while
Geben sie mit Hilfe einer while-Schleife alle Quadratzahlen von 10 bis 20 aus, welche grösser als 150 aber kleiner als 300 sind.

Beispiel 1 - for
code format="actionscript" for(var i:Number = 0; i < 10; i = i + 1){ //von 0 bis 9 (also 10 mal) trace(2*i); } code //Bemerkung:// Anstelle von i = i + 1 könnte man auch kürzer i++ schreiben.

Beispiel 2 - for
code format="actionscript" for(var zahl:Number = 1; zahl < 10; zahl = zahl + 4){ //i erhöht sich hier in 4-er-Schritten trace(zahl * zahl); } code

Beispiel 3 - for
code format="actionscript" for(var zahl:Number = -5; zahl < 5; zahl++){ if(zahl*zahl > 4){ trace("Das Quadrat von " + zahl + " ist grösser als 4"); } else { var quadrat:Number = zahl * zahl; trace("Das Quadrat von " + zahl+ " ist " + quadrat); } } code

Aufgabe 1 - for
Geben sie mit Hilfe einer for-Schleife alle ungeraden Zahlen zwischen 23 und -10 aus. Können sie die Ober- und Untergrenze auch variabel gestalten?

Aufgabe 2 - for
Was wird durch das folgende Programm wohl ausgegeben? //(erst überlegen, dann ausprobieren)// code format="actionscript" for(var n:Number = 1; n <= 10; n++){ for(var a:Number = 1; a < 10; a++){ trace(a +" * " + n + " = " + a*n); }   trace(""); } code

Aufgabe 3
Errechnen sie mit Hilfe einer beliebigen Schleife für eine vorgegebene (ganzzahlige) Variable n den Wert von n! (Fakultät), also das Ergebnis der Rechnung 1 * 2 * 3 * .... * n, und geben sie das Resultat aus.

Aufgabe 4 (optional)
Schreiben Sie ein Programm, das alle möglichen Dominosteine (0|0), (0|1), …, (6|6) erzeugt und ausgibt (als Text). Dabei dürfen keine Duplikate auftreten: Wenn (3|5) schon erschienen ist, darf also (5|3) nicht mehr auftreten.

Aufgabe 5 (optional)
Schreiben Sie ein Programm, das die Nummerierung eines Schachbretts in der folgenden Form ausgibt: H1 H2 H3 H4 H5 H6 H7 H8 G1 G2 G3 G4 G5 G6 G7 G8 F1 F2 F3 F4 F5 F6 F7 F8 E1 E2 E3 E4 E5 E6 E7 E8 D1 D2 D3 D4 D5 D6 D7 D8 C1 C2 C3 C4 C5 C6 C7 C8 B1 B2 B3 B4 B5 B6 B7 B8 A1 A2 A3 A4 A5 A6 A7 A8

Noch mehr Aufgaben:
www.programmieraufgaben.ch/aufgaben/top (Lösungen in verschiedenen Programmiersprachen, leider nicht AS3)