PROGRAMMIEREN LERNEN IN EINER STUNDE...... ist un- möglich.

Post on 06-Apr-2015

123 views 1 download

Transcript of PROGRAMMIEREN LERNEN IN EINER STUNDE...... ist un- möglich.

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;

}