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

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Forschungszentrum caesar
Sortieren I - Bubblesort -
Einführung in die Programmierung Zusammenfassung
Zusammenfassung der Vorwoche
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Dynamische Datentypen
SWITCH - Anweisung.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Robotik mit LEGO Mindstorms
Einführung in die Programmierung mit Java
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Einführung in die Programmierung Anweisungen und Datentypen
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Int meineZahl = 7; Variable: typ varName = Wert Kiste: Art Aufschrift Inhalt Beispiel:
Grundkonzepte Java - Klassendefinition
Einführung in die Programmiersprache C 1
Java programmieren mit JavaKara
Informatik 1 Übung 2.
Processing Design by Numbers Nicolas Ruh & Christian Wüst Quellen:
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Prototyping Augmented Reality Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Medien zwischen Technik und Gesellschaft.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmiersprache C 4
Hallo, ich würde gerne wissen, wie ich einen graphen, den ich mit
Processing Design by Numbers Nicolas Ruh & Christian Wüst Quellen:
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Grundkonzepte des Programmierens (mit ActionScript)
Unterprogramme in JAVA
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Programmieren lernen ... ist un-möglich in einer Stunde...
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Übersicht Nachtrag zu Ausdrücken
Variablen und Datentypen
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Objektorientiertes Modellieren und Programmieren mit Java
Aufgaben zu Rückgabewerten
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
 Präsentation transkript:

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

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

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

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

Der Pool Die Schwimmflügeli Anleitung, Erklärungen, Beispiele: Einzelne Befehle, Details, Beispiele: Aufgaben (Lösungen als Notizen): http://www.creativecoding.org/ https://processing.org/reference/ Auf den folgenden Folien, Diese Folien und weitere Materialien für die Schnellen finden sich hier: http://nicolasruh.wikispaces.com/ProgrammierenInEinerStunde

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);

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);

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);

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);

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);

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

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

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

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

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 Typen Ganzzahlen 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 } 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);

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

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 );

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){}

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;

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

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

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 berechnen inCount++ sqrt(x2+y2)<=1 True False count = 0; inCount = 0; pi = inCount/count*4; 100000 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);