Table Of ContentOliver Deussen
Thomas Ningelgen
Programmieren lernen
mit Computergrafik
Eine Einführung mit Java und Processing
Programmieren lernen mit Computergrafik
Oliver Deussen • Thomas Ningelgen
Programmieren lernen mit
Computergrafik
Eine Einführung mit Java und Processing
Oliver Deussen Thomas Ningelgen
Universität Konstanz Konstanz, Deutschland
Konstanz, Deutschland
ISBN 978-3-658-21144-8 ISBN97 8-3-658-21145-5 (eBook)
https://doi.org/10.1007/978-3-658-21145-5
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte
bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
Springer Vieweg
© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2018
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom
Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für
Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in
elektronischen Systemen.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch
ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und
Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk
zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die
Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder
Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in
veröffentlichten Karten und Institutionsadressen neutral.
Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier
Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein
Teil von Springer Nature.
Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany
Vorwort
ProgrammierungistdieKunst,einenComputergenaudastunzulassen,
wasmanmöchte.Programmierenzukönnenheißtaberauch,Compu-
terwirklichzuverstehen.EsisteinefaszinierendeFertigkeit,mitder
sichauchvieleProblemedesAlltagslösenlassen.Manistnichtmehr
gezwungen, nach fertigen Computerprogrammen für ein Problem zu
suchen,sondernkannoftselbsteineLösungherstellen.
DieFrage,welchedervielenProgrammiersprachenfürAnfängeroder
Fortgeschritteneambestengeeignetist,istkaumzubeantworten.Man
kannabersehrwohleineListevonerwünschtenEigenschaftenandie
Programmierspracheerstellen.BeispielsweisedenWunschnachPlatt-
formunabhängigkeit, d. h. das erstellte Programm soll auf Microsoft,
AndroidundOSX(Apple)ausführbarsein.Damitverkleinertmandie
AnzahlderzurWahlstehendenSprachenerheblich.
LeiderherrschtauchkeineEinigkeitdarüber,welches„Programmier-
paradigma“ bzw. welcher Programmierstil am Anfang zu wählen ist.
ObjektorientierteProgrammierungbeschreibtalleProblemeüberOb-
jekteundderenInteraktion.AnhängerdiesesProgrammierparadigmas
gebendasMottoaus:„Objectsfirst!“VordemErlerneneinerProgram-
mierspracheseizuerstdasKonzeptderObjektorientierungzuerlernen.
LeiderfunktioniertdasunsererErfahrungnachjedochnicht,ohnekon-
kreten Programmcode zu schreiben und beides auf einmal zu lernen,
überfordertviele.DaherverzichtenwirbewusstaufdenEinstiegüber
dieObjektorientierung,sondernbeschreibenzuerstdieGrundlagender
normalen (imperativen) Programmierung über eine Reihe hoffentlich
spannenderComputergrafik-Beispiele.SpäterdannfolgteineEinführung
indieObjektorientierung.
ImGegensatzzuanderenBüchernhabenwirunsentschieden,dieauf
JavaaufbauendeProgrammiersprache„Processing“zuverwenden,weil
sieallewichtigenKonzeptevonJavaundaußerdemeineeinfacheund
dennochsehrvielfältigeGrafikumgebungbietet.EineSprachewie„Pas-
cal“,dieinden80-erJahrenihrenSiegeszugandeutschenSchulenund
Universitätenantrat,wäreheutealsEinstiegnichtmehroptimal,weil
mandamitwedereineGrafikerzeugenkann,nochohneWeiteresein
„Interaktionsfenster“(Window)zusehenbekommt.DasErgebniseines
Pascal-ProgrammsistimweitestenSinneimmernurText.
Hier bietet die Programmiersprache „Processing“ einen Ausweg. Sie
bestehtimKernausderProgrammierspracheJava,diesichalsIndus-
triestandard durchgesetzt hat, erweitert diese aber durch Funktionen V
zurErzeugungvonGrafikelementen,eineneinfachzubedienendenEdi-
torunddieMöglichkeit,ersteinmalohneobjektorientiertenBallastzu
programmieren.
DiesesBuchbietetaufdieserBasiseineEinführungindieProgrammie-
rungmitgrafischenBeispielen.AusgehendvoneinfachenBausteinen
werdenimmerkompliziertereProblemegelöstundaufdieseWeisedie
wichtigstenKonzeptederProgrammierungbehandelt.DasSchönean
derComputergrafikist,dassmannebenbeivieleBildererzeugtundseine
Fertigkeiten auch dazu benutzen kann, aus kleinen Beispielen große
ComputergrafikenmitkomplexenInhaltenzumachen.Meistgenügen
nureinpaarkleineÄnderungenandenimBuchgezeigtenBeispielen.
AlledieseBeispielelassensichsogarmiteinemLaptopdurchführen.
Voraussetzungistnur,dasssichdieProgrammierumgebung„Processing“
dortinstallierenundausführenlässt.DassolltenSievorabtesten,laden
SiediefürIhrenComputergeeigneteVersionderProgrammierumgebung
vonwww.processing.orgherunter.MehrdazuimEinführungskapitel.
ProcessingwurdeübrigensamMIT(MassachusettsInstituteofTech-
nology) entwickelt, um möglichst schnell Programme mit grafischer
Ausgabeschreibenzukönnen.Wirverwendenes,weilsichdieGrund-
lagenderProgrammierungdamitbesonderseinfachveranschaulichen
lassenundesvielenMenschenFreudemacht,damitzuarbeiten.
ProcessingkannabernichtnurinteressanteBilderundAnimationener-
zeugen,eserlaubtauchdieInteraktionmitdemComputer,dasErzeugen
vonMusikundSoundundvielesmehr.EsisteinkleinesUniversummit
schier unbegrenzten Möglichkeiten. Viele kreative Menschen auf der
Weltverwendenes,umihreIdeenumzusetzen.
NebenderStandardversiongibtesVariantenzurProgrammierungvon
Android-AppsoderzurErzeugungvoninteraktivenWebinhalten,auch
zurAnsteuerungvonHardwareüberArduino-Boards.Dassindkleine
Computer, die man an den eigenen Rechner anschließt und die nach
geeigneterProgrammierungallemöglichenAufgabenzurSteuerungund
Regelungz.B.imHaushaltübernehmenkönnen.
WirlebenineinerEpoche,diespätereinmalalsdieEpochederDigita-
lisierungindenGeschichtsbüchernstehenwird.DerComputeristdas
dominierende Gerät dieser Epoche. Programmieren heißt sich dieser
Welt zu öffnen, die Programmierung ist das Handwerkszeug unserer
Zeit,ProgrammierersindheutediewirklichenVerändererunsererGe-
sellschaft.Wirsolltennichtnurdarüberreden,sondernversuchen,eszu
verstehen.
VI
Webseite zum Buch:
www.springer.com/9783658211448
AufdieserSeitefindenSiealleimBuchverwendetenProcessing-Beispiele
undMusterlösungenfürdieAufgaben.
Webseiten der Autoren:
ThomasNingelgen:
www.ningelgen.eu
(ErgänzungsprogrammeinProcessing,MaterialfürLehrer)
OliverDeussen:
graphics.uni-konstanz.de
(ComputergrafikauswissenschaftlicherSicht)
VII
Inhalt
1 Einführung 1
ComputergrafikmitProcessing
1.1 Losgeht’s! 3
1.2 Robotergesicht 3
1.3 AlgorithmenundProgramme 4
1.4 Programmzustände 5
1.5 Säufernase 6
1.6 WeiteregrafischeFormen 7
2 Zutaten 9
Typen,Variablen,AusdrückeundFunktionen
2.1 EinfacheDatentypen 10
2.2 Farbe:EinspeziellerDatentyp 12
2.3 Variablen 12
2.4 Arrays 14
2.5 Strings 15
2.6 Ausdrücke 15
2.7 LogischeAusdrücke 17
2.8 Funktionen 18
3 Kontrollstrukturen 21
If/else-undcase-Anweisung,Schleifen
3.1 Blöcke 22
3.2 Die„for“-Schleife 23
3.3 ZeichenflächemitbuntenQuadraten 24
3.4 ZeichenflächemitbuntenRechtecken 25
3.5 Diewhile-unddo-while-Schleife 26
3.6 Rechteckemitwhile-Schleife 27
3.7 Die„ifthenelse“-Anweisung 28
3.8 Dieswitch-Anweisung 29 IX
4 Mengen 31
Inhaltsverzeichnis
ArraysundFelder:AufbewahrenvonvielenDingen
4.1 EindimensionaleArrays 34
4.2 ErzeugenundVerändernvonPixeln 38
4.3 ZweidimensionaleArrays 41
5 Bilder 45
Laden,SpeichernundVerändernvonBildern
5.1 EinerstesObjekt:DasBildobjekt 46
5.2 WeitereEigenschaftendesBildobjekts 50
6 Prozeduren 53
Anweisungsblöckeselberschreiben
6.1 ZufälligeRechteckemitsetupunddraw 54
6.2 Quadratfunktion 55
6.3 Prozedur-AufrufeinProzeduren 56
6.4 VariableProzedurenundFunktionen 60
6.5 Iterationen 61
6.6 UnbeabsichtigteNebenwirkungen 66
6.7 Rekursionen 68
6.8 RandomversusSecureRandom 73
7 Interaktion 77
ZusammenarbeitmitdemComputer
7.1 TastatureingabemitkeyPressed() 78
7.2 AllgemeineTastatureingabe 79
7.3 InteraktionmitderMaus 80
8 Input/Output 83
Dateneingeben,Datenausgeben
8.1 Ausgabemöglichkeiten 84
8.2 Textdateienlesen,anzeigen,schreiben 87
8.3 AllgemeineDateienlesenundschreiben 88
X 8.4 InformationeninBilddateien 90