Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren lernen ... ist un-möglich in einer Stunde...

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren lernen ... ist un-möglich in einer Stunde..."—  Präsentation transkript:

1 Programmieren lernen ... ist un-möglich in einer Stunde...

2 Ein infcom – Erlebnis: Ziele für heute:
praktischer Einblick ins Programmieren (inkl. Arbeitsweise) einige grundlegende Konzepte & Begriffe Inhalte Informatik als obligatorisches Fach

3 Programmieren ist wie Lego Bauen:
es gibt Bauteile die man kombinieren muss so dass ein funktionierendes Modell heraus kommt und: man kann einfach mal anfangen mit basteln, kaputt geht nichts, ob‘s funktioniert sieht man dann schon

4 IDE (Integrated Development Environment)
... hilft beim Programmieren Programm-Dateien organisieren Programm starten size(400,400); strokeWeight(8); stroke(0,0,255); line(0,50,400,300); println(“hallo welt"); text(“hallo welt",10,50); rect(10,0,50,50); ellipse(50,50,50); ellipse(50,50,80,50); Programm schreiben println(“hallo welt"); text(“hallo welt",10,50); rect(10,0,50,50); ellipse(50,50,50); //Fehler  in Referenz nachschauen Konsolenausgabe & Fehlermedlungen

5 Der Pool Die Schwimmflügeli
Anleitung, Erklärungen, Beispiele: Einzelne Befehle, Details, Beispiele: Aufgaben (Lösungen als Notizen): Auf den folgenden Folien, Diese Folien und weitere Materialien für die Schnellen finden sich hier:

6 Aufgabe 1 a Schreibe ein Programm, das eine japanische Flagge zeichnet
size(300,200); noStroke(); fill(255); rect(0,0,300,200); fill(255,0,0); ellipse(150,100,100,100);

7 Aufgabe 1 b Schreibe ein Programm, das eine Schweizer Flagge zeichnet
size(400,400); noStroke(); fill(255,0,0); rect(0,0,400,400); fill(255); rect(50,150,300,100); rect(150,50,100,300);

8 Aufgabe 2 Schreibe ein Programm, das fortwährend die aktuellen Maus-Koordinaten in einem Textfeld anzeigt Hinweis: Abwechselnd und mit jeweils eigener Farbe (fill()) ein grosses Rechteck zeichnen und den Text schreiben void setup(){ size(300,300); noStroke(); } void draw(){ fill(200); rect(0,0,width,height); fill(0); text("x: "+mouseX+"; y: "+mouseY,10,30);

9 Aufgabe 3 A Schreibe ein Programm, das fortwährend Linien zeichnet zwischen der Mitte der Leinwand und der Position der Maus void setup(){ size(400,400); } void draw(){ line(width/2, height/2, mouseX, mouseY);

10 Aufgabe 3 B Verbessere das Programm aus 3a: Hintergrund weiss
Linien 3 Pixel breit Ältere Linien verblassen (teiltransparentes Rechteck über alles zeichnen) Linienfarbe zufällig wählen (s. Kap. 5 oder Referenz) Bei Mausklick alle bisherigen Linien löschen Selbst Erweiterungen ausdenken void setup(){ size(400,400); background(255); strokeWeight(5); colorMode(HSB,100); } void draw(){ noStroke(); fill(0,0,100,5); rect(0,0,width,height); stroke(random(100), 100, 50); line(width/2, height/2, mouseX, mouseY); void mousePressed(){ fill(0,0,100);

11 Aufgabe X: Ein kleines Spiel
Ein bunter Kreis soll sich in jeder Runde (=Aufruf von draw()) um 5 Pixel nach rechts bewegen Wenn der Ball am rechten Rand ankommt, soll er sich um 5px nach links bewegen Auch am linken Rand soll er dann wieder umkehren Erweiterung: Bewegungsrichtung zufällig wählen, an allen Rändern abprallen Wenn man auf den Kreis klickt, bekommt man einen Punkt (Anzeigen per Textfeld) Wenn man 3 Punkte gesammelt hat, wird der Kreis ein wenig schneller – Punkte wieder auf 0 Weitere Erweiterungen selbst ausdenken

12 und die Frage, warum künftig an der Kanti Programmieren gelernen wird
Ein paar Konzepte und die Frage, warum künftig an der Kanti Programmieren gelernen wird

13 Konzepte Variablen Operatoren Verzweigungen Schleifen Methoden
Programmieren Informatik allgemein(er) Variablen Operatoren Verzweigungen Schleifen Methoden Ereignisse Klassen Daten vs. Information EVA (Eingabe Verarbeitung Ausgabe) Algorithmen Schichtenmodelle Iteration/Rekursion

14 Variablen sind wie Kisten
zuweisen Typ Name Wert int meineZahl = 7; Form Anschrift Inhalt einpacken = meinZahl 7

15 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

16 Alle Primitive Typen Ganzzahlen
byte: Eine sehr kleine Zahl (-127 bis +128) short: Eine kleine Zahl ( bis ) 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)

17 Verzweigungen: if if (Bedingung){ // Code wenn WAHR }
Action Condition True False 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);

18 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? Condition True Action(s) False

19 Methoden void drawShip (int size) { // Code // … } drawShip( 100 );
Methodenkopf Typ des Rückgabewerts Name der Methode Typ und Name der Übergabewerte Anfang des Codeblocks void drawShip (int size) { // Code // … } Methoden -körper Ende des Codeblocks Methodenaufruf Name der Methode Übergabe- Wert drawShip( 100 );

20 Rückgabewerte void = leer, nichts 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: Methodenaufruf noStroke( ); Methodendefinition void noStroke( ){} Methodenaufruf strokeWeight( 5 ); Methodendefinition void strokeWeight(int size){} Methodenaufruf int r = random(0,3); Methodendefinition int random (int min, int max){}

21 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 zu sum addiert und speichert das Ergebnis in der Methodenvariable total sum gibt den Wert von total zurück (return), der Wert passt zum Typ int in 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;

22 Lehrplan obligatorisches Fach Informatik
Programmieren lernen... ... dauert länger als eine Stunde Lehrplan obligatorisches Fach Informatik 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. Vieles davon haben wir heute schon angeschnitten

23 Warum Programmieren lernen?
Die praktische Antwort Nützlich (?) für Studium und Beruf, entmystifiziert Anwendungsprogramme Die gesellschaftliche Sichtweise Ermöglicht fundierte Meinungsbildung zu Digitalthemen (NSA, Vorratsdatenspeicherung, Netzfreiheit,...) Das SOL-Argument Fördert eigenständige Arbeitsweise, Präzision im Ausdruck, Frustrationstoleranz, Selbstorganisation, ... Die kognitive Argumentation Fördert strukturierte Problemlösung, präzises Denken, Wechsel der Abstraktionsebene

24 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...

25 PI berechnen inCount++ sqrt(x2+y2)<=1 True False count = 0; inCount = 0; pi = inCount/count*4; mal count++; x = rand(); y = rand(); pi ausgeben float inCount = 0; float count = 0; void draw() { count++; float x = random(1); float y = random(1); if (sqrt(x*x+y*y)<=1) { inCount++; } float pi = inCount/count*4; float inCount = 0; float count = 0; void setup(){ size(400,400); stroke(5); ellipseMode(CENTER); ellipse(0,0,800,800); noStroke(); } void draw(){ count++; float x = random(1); float y = random(1); if (sqrt(x*x+y*y)<=1){ inCount++; fill(255,0,0); ellipse(x*400,y*400,2,2); } else { fill(0,0,255); fill(255); rect(30,30,100,20); fill(0); text("PI: "+inCount/count*4, 40, 45);


Herunterladen ppt "Programmieren lernen ... ist un-möglich in einer Stunde..."

Ähnliche Präsentationen


Google-Anzeigen