Post on 06-Apr-2015
transcript
PROGRAMMIEREN LERNEN
IN EINER STUNDE...
... ist
un-
möglich
PROGRAMMIEREN IST WIE LEGO BAUEN:
• es gibt Bauteile
• die man kombinieren muss
• so dass ein funktionierendes Modell heraus kommt
EIN INFCOM – ERLEBNIS:
Ziele für heute:
• praktischer Einblick ins Programmieren (inkl. Arbeitsweise)• einige grundlegende Konzepte & Begriffe• Inhalte Informatik als obligatorisches Fach
IDE (INTEGRATED DEVELOPMENT ENVIRONMENT)
... hilft beim Programmieren
Programm starten
Programm schreiben
Programm-Dateien organisieren
Konsolenausgabe & Fehlermedlungen
println(“hallo welt");text(“hallo welt",10,50);
rect(10,0,50,50);ellipse(50,50,50);
ellipse(50,50,80,50);
size(400,400);strokeWeight(8);stroke(0,0,255);line(0,50,400,300);
DER POOLAnleitung, Erklärungen, Beispiele:
Einzelne Befehle, Details, Beispiele:
Aufgaben (Lösungen als Notizen):
https://processing.org/reference/
http://www.creativecoding.org/
DIE SCHWIMMFLÜGELI
Auf den folgenden Folien,
Für Superschnelle: Weitere Aufgabenstellung, Links und meine eigenen Processing-Materialien finden sich auf dem Wiki
AUFGABE 1 ASchreibe ein Programm, das eine japanische Flagge zeichnet
AUFGABE 1 BSchreibe ein Programm, das eine Schweizer Flagge zeichnet
AUFGABE 2 Schreibe ein Programm, das fortwährend die aktuellen Maus-Koordinaten in einem Textfeld anzeigt
Hinweis: Abwechselndund mit jeweils eigener Farbe (fill()) ein grosses Rechteck zeichnen und den Text schreiben
AUFGABE 3 ASchreibe ein Programm, das fortwährend Linien zeichnet zwischen der Mitte der Leinwand und der Position der Maus
AUFGABE 3 BVerbessere das Programm aus 3a:
1. Hintergrund weiss
2. Linien 3 Pixel breit
3. Ältere Linien verblassen(teiltransparentes Rechtecküber alles zeichnen)
4. Linienfarbe zufällig wählen(s. Kap. 5 oder Referenz)
5. Bei Mausklick alle bisherigenLinien löschen
6. Selbst Erweiterungen ausdenken
AUFGABE X: EIN KLEINES SPIEL1. Ein bunter Kreis soll sich in jeder Runde (=Aufruf
von draw()) um 5 Pixel nach rechts bewegen
2. Wenn der Ball am rechten Rand ankommt, soll er sich um 5px nach links bewegen
3. Auch am linken Rand soll er dann wieder umkehren
4. Erweiterung: Bewegungsrichtung zufällig wählen, an allen Rändern abprallen
5. Wenn man auf den Kreis klickt, bekommt man einen Punkt (Anzeigen per Textfeld)
6. Wenn man 3 Punkte gesammelt hat, wird der Kreis ein wenig schneller – Punkte wieder auf 0
7. Weitere Erweiterungen selbst ausdenken
EIN PAAR KONZEPTEUND EINE ERKLÄRUNG, WIESO KÜNFTIG AN DER KANTI PROGRAMMIEREN GELERNEN WIRD
KONZEPTE
PROGRAMMIEREN
• Variablen
• Operatoren
• Verzweigungen
• Schleifen
• Methoden
• Ereignisse
• Klassen
INFORMATIK ALLGEMEIN(ER)
• Daten vs. Information
• EVA (Eingabe Verarbeitung Ausgabe)
• Algorithmen
• Schichtenmodelle
• Iteration/Rekursion
VARIABLEN SIND WIE KISTEN
int meineZahl = 7;
7
NameTyp Wert
=meinZah
l
FormAnschrif
tInhalt
zuweise
n
einpacken
BEISPIELE UND FACHBEGRIFFE
int zahl1; //deklarieren
zahl1 = 7; //initialisieren
print("zahl1 ist: " + zahl1); //ausgeben
zahl1 = zahl1/2; //berechnen und zuweisen
print("zahl1 ist jetzt: " + zahl1); //wieder ausgeben
float zahl2 = 10.7; //deklarieren & initialisieren
print("summe: " + (zahl1 + zahl2)); //ausgeben
ALLE PRIMITIVE TYPENGanzzahlen
• byte: Eine sehr kleine Zahl (-127 bis +128)
• short: Eine kleine Zahl (-32768 bis +32767)
• int: Eine grosse Zahl (-2,147,483,648 bis +2,147,483,647)
• long: Eine enorm grosse Zahl (+/- 264)
Fliesskommazahlen
• float: Eine grosse Zahl mit viele Nachkommastellen
• double: Doppelt so gross oder präzise, selten nötig
Andere Typen
• boolean: Wahrheitswert, also true oder false• char: Ein Zeichen‘a’(in einfachen Anführungszeichen)
VERZWEIGUNGEN: IF
if (Bedingung){
// Code wenn WAHR}
Die Bedingung ist meist eine logische Rechnung
• Nur wenn dabei true herauskommt…
• … wird der Code in den geschweiften Klammern ausgeführt
Beispiel:
if (mouseX < width/2){
fill(255, 0, 0);
}
Action
ConditionTrue
False
SCHLEIFEN: WHILE
Genau wie ein if, nur dass das Ganze so lange wiederholt wird, bis die Bedingung false ergibt
int x = 2;
while (x < 10){
print(“la”);
x++;
}
Wie oft wird “la” ausgegeben?
Action(s)Condition
True
False
MethodenkopfName der Methode
Typ des Rückgabewerts
Typ und Name
der Übergabewerte
Anfangdes Codeblocks
Endedes Codeblocks
Methoden-körper
METHODEN
MethodenaufrufName der Methode
Übergabe-
Wert
drawShip( 100 );
void drawShip (int size) { // Code
// Code // …
}
RÜCKGABEWERTE
manche Methoden kann man aufrufen, ohne Werte übergeben zu müssen:
manche Methoden muss man Werte übergeben, damit sie funktionieren:
manche Methoden geben sogar Werte zurück:
MethodenaufrufnoStroke( );
MethodenaufrufstrokeWeight( 5 );
Methodenaufrufint r = random(0,3);
Methodendefinitionvoid noStroke( ){}
Methodendefinitionvoid strokeWeight(int size){}
Methodendefinitionint random (int min, int max){}
void = leer, nichts
BEISPIEL: METHODE MIT RÜCKGABEWERT
in draw wird sum aufgerufen, drei Werte werden übergeben sum empfängt drei Werte vom erwarteten Typ und weist sie a, b und c zusum addiert und speichert das Ergebnis in der Methodenvariable totalsum gibt den Wert von total zurück (return), der Wert passt zum Typ intin draw wird der zurückgegebene Wert answer zugewiesen
void draw() { int answer; answer = sum( 17, 42, 52); println(answer); noLoop();}
int sum(int a, int b, int c) { int total = a + b + c; return total; }
PROGRAMMIEREN LERNEN...... dauert länger als eine Stunde
Lerngebiet: Algorithmen und Programmieren
Grobinhalte Fachliche Kompetenzen Die Schülerinnen und Schüler können
Grundlagen des Programmierens
die wesentlichen Strukturelemente einer Programmiersprache einsetzen.
syntaktische und semantische Fehler in einem Programm erkennen und korrigieren.
modular programmieren. Algorithmen in einer höheren Programmiersprache
implementieren.
Lehrplan obligatorisches Fach Informatik
Vieles davon haben wir heute schon angeschnitten
WARUM PROGRAMMIEREN LERNEN?
1. Die praktische Antwort
2. Die gesellschaftliche Sichtweise
3. Die SOL-Schiene
4. Die kognitive Argumentation
DER LEHRPLAN SAGT DAZU:Im obligatorischen Fach Informatik kommt dem Programmieren in einer höheren Programmiersprache ein zentraler Stellenwert zu. Indem die Schülerinnen und Schüler den Computer als programmierbaren Automaten kennen lernen, erlangen sie praktische Fähigkeiten im Umgang mit algorithmischer Problemlösung und Projektorganisation und erfahren Modellierung und Simulation als dritte wissenschaftliche Methode neben Theorie und Experiment. Dadurch fördert der Informatikunterricht universelle Kompetenzen wie systematische Problemlösungsstrategien, strukturiertes Denken und präzises Arbeiten, lässt aber auch Raum für Kreativität und eröffnet neue Gestaltungsmöglichkeiten. Diese praktischen Erfahrungen bilden zudem die Basis für vertiefte Einblicke in die technischen Hintergründe der modernen Informationsgesellschaft...
PI BERECHNENfloat inCount = 0;
float count = 0;
void draw(){
count++;
float x = random(1);
float y = random(1);
if (sqrt(x*x+y*y)<01) {
inCount++;
}
float pi = inCount/count*4;
}