ebook img

Programmieren für Ingenieure und Naturwissenschaftler: Grundlagen PDF

474 Pages·2016·10.889 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programmieren für Ingenieure und Naturwissenschaftler: Grundlagen

SEBASTIAN DÖRN Programmieren für Ingenieure und Natur- wissenschaftler Grundlagen eXXamen.press eXamen.pressisteineReihe,dieTheorieundPraxisausallenBereichenderInformatik fürdieHochschulausbildungvermittelt. Sebastian Dörn Programmieren für Ingenieure und Naturwissenschaftler Grundlagen SebastianDörn HochschulcampusTuttlingen, HochschuleFurtwangen Tuttlingen,Deutschland ISSN1614-5216 eXamen.press ISBN978-3-662-50456-7 ISBN978-3-662-50457-4(eBook) DOI10.1007/978-3-662-50457-4 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detailliertebibliografischeDatensindimInternetüberhttp://dnb.d-nb.deabrufbar. SpringerVieweg ©Springer-VerlagBerlinHeidelberg2016 DasWerkeinschließlichallerseinerTeileisturheberrechtlichgeschützt.JedeVerwertung,dienichtaus- drücklichvomUrheberrechtsgesetzzugelassenist,bedarfdervorherigenZustimmungdesVerlags.Das giltinsbesonderefürVervielfältigungen,Bearbeitungen,Übersetzungen,MikroverfilmungenunddieEin- speicherungundVerarbeitunginelektronischenSystemen. DieWiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesemWerk be- rechtigtauch ohnebesondere Kennzeichnung nicht zuderAnnahme, dasssolcheNamenimSinneder Warenzeichen- undMarkenschutz-Gesetzgebung alsfreizubetrachtenwärenunddahervonjedermann benutztwerdendürften. DerVerlag,dieAutorenunddieHerausgebergehendavonaus,dassdieAngabenundInformationenin diesemWerkzumZeitpunkt derVeröffentlichungvollständigundkorrektsind.WederderVerlagnoch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit,Gewähr für den Inhalt des Werkes,etwaigeFehleroderÄußerungen. GedrucktaufsäurefreiemundchlorfreigebleichtemPapier. SpringerViewegistTeilvonSpringerNature DieeingetrageneGesellschaftistSpringer-VerlagGmbHBerlinHeidelberg Einleitung InderheutigenInformationsgesellschaftbesitztdieInformatik,spezielldieProgrammier- technikunddieAlgorithmik,einegroßewirtschaftlicheBedeutung.VieleDienstleistun- gen,ProdukteunddiegesamteArbeitswelt basieren immer mehrauf Softwarelösungen. Viele Ingenieure und Naturwissenschaftler haben an ihrem Arbeitsplatz in irgendeiner WeisemitSoftwareoderderEntwicklungvonComputerprogrammenfürverschiedenste Anwendungsfelderzutun. AlgorithmensindwieComputerhardwarealsTechnologiezuverstehen,dasieimMit- telpunktneuerundinnovativerProdukteundTechnikenstehen.Algorithmenhabeninsbe- sonderedurchdiefortschreitendeDigitalisierunginnahezuallenBereichenderTechnik, GesellschaftundAlltageineherausragendeBedeutung: (cid:2) Rechnergestützte Konstruktion und Entwicklung: Viele Entwicklungsschritte im BereichMaschinenbau-,Automobil-,Medizin-oderLuft-undRaumfahrtindustrieba- sieren auf der rechnergestützten Entwicklung. Oftmals führt dieser Prozess über die Entwicklung von Computerprogrammen für unterschiedlichste Anwendungsberech- nungen hinaus. Beispiele sind die Verarbeitung und Auswertung von Konstruktions- oderMessdatensätzenoderdieoptimaleAuslegungvonSystemparametern. (cid:2) Steuerung von Maschinen und Geräten: Im Bereich der Automatisierungstechnik werden in vielen unterschiedlichen Bereichen Computerprogramme verwendet, um Werkzeugmaschinen,ProduktionsmaschinenoderelektronischeGerätezusteuern. (cid:2) Entwicklung von Oberflächen: Die Entwicklung von grafischen Oberflächen spielt nichtnurfürSoftwareprodukteeinegroßeRolle,auchvieleMaschinenwerdenheute überTouchbildschirmemithilfevonausgereiftenSoftwarelösungenbedient. (cid:2) IntelligenteDatenanalyse:DieErfassung,AuswertungundInterpretationvonDaten, sowiedieGestaltunghierfürgeeigneterDokumentations-undInformationssystemege- hörenzudenAufgabendesInformationsmanagements.DiesesGebietübernimmteine wichtigeSchlüsselrollein vielen UnternehmenundschafftoftmalsdieGrundlagefür dieEntwicklungvonneuenundinnovativenProduktenoderDienstleistungen. (cid:2) Predictive Analytics und Big Data: Mithilfe von Predictive Analytics können Un- ternehmenkomplexewirtschaftlicheZusammenhängevorhersagenunddiesesWissen V VI Einleitung dazunutzen,bessereEntscheidungenzutreffen.DasZielistes,ausvorhandenenDa- tenmengen (Big Data) Informationen so zu extrahieren, dass Trends und zukünftige Verhaltensmustervorhergesagtwerdenkönnen.InUnternehmenkönnendieseVorher- sagemodellegenutztwerden,umausTransaktionsdatenneueProdukteoderDienstleis- tungenzugenerieren.EbensokönnensiebeiRessourcenplanungenundRisikobeurtei- lungenunverzichtbareDiensteleisten. (cid:2) Planungs-undEntscheidungsfindung:VielePlanungs-undEntscheidungsverfahren, insbesondereim BereichdesOperationsResearchoderder Spieltheorie,basieren auf leistungsfähigen algorithmischen Verfahren. Für deren gezielten und gewinnbringen- denEinsatzineinemUnternehmenistWissenüberdieFunktionsweisedieserVerfah- rendringenderforderlich. (cid:2) MedizinischeInformatik:DieVerwendungvonKonzeptenundMethodenderInfor- matikbekommtinderMedizintechnikeineimmergrößereBedeutung.Ohnesystema- tischeInformationserfassung,InformationsaufarbeitungundInformationsverarbeitung wärediemoderneMedizinvonheuteundenkbar.BeispielesindVerfahrenderdigita- lenBildverarbeitungfürMagnetresonanztomografien,medizinischeOperationsroboter oderDatenbanksystemezurVerwaltungvonPatientendaten. (cid:2) Autonome Roboterentwicklung: Für die Entwicklung von autonomenRobotern für verschiedensteAnwendungsbereiche,beispielsweisebeiautonomenFahrzeugen,istei- neganzeReihehochkomplexerSoftwareprogrammezurVerarbeitungvonSensor-und Bilddatennotwendig. (cid:2) App-ProgrammierungfürmobileGeräte:DieErstellungvonAppsfürSmartphones undTabletsisteingroßerMarktinderheutigenmobilenGesellschaft.InvielenBerei- chen, beispielsweise im Gesundheitssektor, sind große Wachstumspotenziale in den nächstenJahrenzuerwarten. (cid:2) Simulation von technischen Systemen oder Prozessen: Die Entwicklung von leis- tungsfähigen Simulationsprogrammen zur schnellen und sicheren Entwicklung von Produkten oder Prozessen ist immer mehr im Vormarsch. Technische Weiterent- wicklungen oder Prognosen des Verhaltens komplexer Systeme führen häufig zu praktischenProblemen,diesichnurmitfortgeschrittenenBerechnungsmethodenlösen lassen. Praktische Beispiele sind die Optimierung von Baugruppen oder Fertigungs- zeiten mithilfe von Monte-Carlo-Methoden oder die Anwendung von FEM- oder CFD-Simulationenim Bereichder Strukturmechanik,StrömungsmechanikundTher- modynamik. (cid:2) Bioinformatik:DieBioinformatikisteineinterdisziplinäreWissenschaft,dieProble- meausdenLebenswissenschaftenmitMethodenderInformatikundMathematiklöst. Die Aufgaben der Bioinformatik sind die Entwicklung von Datenbanken, Software undmathematischenWerkzeugenzurAnalyse,OrganisationundInterpretationbiolo- gischer Daten. Die Bioinformatik hat zu grundlegendenErkenntnissen der modernen BiologieundMedizinbeigetragen.InsbesondereerreichtedieBioinformatikimJahre 2001einenbedeutendenFortschrittbeiderSequenzierungdesmenschlichenGenoms. Einleitung VII Eine qualifizierte Ausbildung im Bereich der Programmierung und Algorithmik ist somit unerlässlich, um bei der Entwicklung moderner Produkte mitwirken zu können. Der Erwerb von Programmierkenntnissen ist ein wichtiger und zentraler Bestandteil in denNatur-undIngenieurwissenschaften.InvielenFällenistessogarso,dassmaneinen mathematischen, technischen oder naturwissenschaftlichen Sachverhalterst dann richtig verstandenhat,wennmanihnalsComputerprogrammimplementiertunddiverseAnwen- dungsfälledamitgelösthat. Ziel dieses Buches ist es, Studierenden der Ingenieur- oder Naturwissenschaften1 als auch im Berufsleben stehenden Ingenieurinnen und Ingenieuren das Gebiet der Programmierung mit deren Anwendungsmöglichkeiten näherzubringen. Es gehört zur Schlüsselqualifikation eines Ingenieurs oder Naturwissenschaftlers, Problemstellungen mithilfe von algorithmischen oder mathematischen Methoden schnell und zielsicher zu lösen. DieGrundlagenderProgrammierungmitihrenGrundkonzeptenändernsichnursehr wenig.VieleBücherinderInformatik,besondersimBereichderProgrammiersprachen, leiden unter dem „Semikolon-Syndrom“, d.h., der Leser wird in die Grundlagen einer speziellenProgrammierspracheeingeführt.BeidieserArtderEinführungindieProgram- mierungbeschäftigtmansich wenigermitdenKonzeptenderProgrammierung,sondern mitdenEigenschafteneinerbestimmtenProgrammiersprache.DieseSyntaxeigenschaften werdendannoftmalsbisinsletzte Detailbehandelt,wasjedochvieleAnfängerüberfor- dert,dasieoftmalsdiezugehörigenAnwendungsbereichenichtkennen.Andererseitswird indenmeistenLehrbüchernzumThemaAlgorithmenoftWissenvorausgesetzt,dasviele Anfängernochnichtbesitzen. IndieserdreibändigenBuchreihewerdendieMethodenderProgrammierungundAl- gorithmenvonihrenGrundlagenbiszuleistungsfähigenMethodenausdemBereichder künstlichen Intelligenz besprochen. In den Ingenieur- und Naturwissenschaften haben diese Verfahren heute durch die zunehmendeDigitalisierung einen sehr großen Anwen- dungsbereich.Die Umsetzungder ProgrammierkonzepteundalgorithmischenVerfahren erfolgt in der Programmiersprache Java, einer der bedeutendsten Programmiersprachen unserer heutigen Zeit. Wir wollen in dieser Darstellung versuchen, nicht nur Syntax, sondern auch das Konzept von Algorithmen- und Programmentwicklung zu verstehen. Wir werden die in diesem Buch vorgestellten Algorithmen durch eine schrittweise Ver- feinerungvom GrobeninsFeine vornehmen.AllevorhandenalgorithmischenVerfahren werdenvondenGrundlagenbiszurImplementierunginJavadetailliertvorgestellt.Hier- zu erfolgt unsere Vorgehensweise in den nachfolgenden Kapiteln nach dem folgenden einheitlichenSchema. 1SelbstverständlichsindauchStudierendeandererFachrichtungenherzlichwillkommen. VIII Einleitung 1. Problemstellung BeschreibungderallgemeinenProblemstellung,diederAlgorithmuszulösenhat. 2. GrundlegendeLösungsprinzipien Erläuterungder Lösungsideedurch Skizzierung der groben Lösungsschritte des Ver- fahrensinnatürlicherSprache,mittelsmathematischerFormeln,alsAufzählung,Skiz- zenoderBeispielen. 3. Algorithmus Schrittweise VerfeinerungdesVerfahrensin detaillierterenAnweisungenalsPseudo- code. 4. Implementierung ÜbertragungdesPseudocodesindieProgrammierspracheJavamitgeeignetenUnter- routinenundzugehörigenDatenstrukturenfürdieverwendetenVariablen. 5. Anwendungen Vorstellungpraktischer,technischerodernaturwissenschaftlicherAnwendungen. Dieses einheitliche Schema soll den Lesern und Leserinnen helfen, die oftmals nicht einfachen algorithmischen Verfahren zu verstehen und in der Programmiersprache Java umzusetzen. Eine große Reihe von praktischen Anwendungsbeispielen und Übungsauf- gaben runden die einzelnen Kapitel ab. Falls der eine oder andere Leser nur an den allgemeinen Prinzipien von Algorithmen interessiert ist, und weniger an der konkreten ImplementierunginJava,kannerdenAbschnittAlgorithmusundImplementierungüber- springen. Danksagung Für die Erstellung der Abbildungen zu den einzelnen Kapiteln bin ich SonjaJenisch,AlineWinterundDavidSchulzsehrdankbar.FürwertvolleHinweiseund VerbesserungsvorschlägegiltmeinDankanMartinaWarmer,LilliReiner,SonjaJenisch, AndreasGollwitzer, Mike VanDoan, AlbrechtSwietlik, MikeFornefett,Heinz Gründe- mann,KevinAlber,AlinaMeier,ErwinBürk,undMayaOelke. Hinweise und Verbesserungsvorschläge sind sehr willkommen, per Email an [email protected]. Tuttlingen,Mai2016 SebastianDörn Inhaltsverzeichnis 1 GrundbegriffederProgrammierung. . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 DasersteProgramm:„HalloWelt“. . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 VomProblemzumAlgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.1 BegriffdesAlgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.2 EigenschafteneinesAlgorithmus . . . . . . . . . . . . . . . . . . . . 4 1.2.3 ElementareBestandteilevonAlgorithmen. . . . . . . . . . . . . . . 5 1.2.4 SpezifikationvonAlgorithmen. . . . . . . . . . . . . . . . . . . . . . 6 1.2.5 DarstellungsformenvonAlgorithmen . . . . . . . . . . . . . . . . . 7 1.3 VomAlgorithmuszurProgrammierung . . . . . . . . . . . . . . . . . . . . . 9 1.3.1 AufbaueinerProgrammiersprache . . . . . . . . . . . . . . . . . . . 9 1.3.2 GrundsätzezurProgrammentwicklung . . . . . . . . . . . . . . . . . 10 1.3.3 Programmierfehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.4 ProgrammierunginJava. . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2 StrukturelleProgrammierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1 Variablen,AusdrückeundOperatoren . . . . . . . . . . . . . . . . . . . . . . 17 2.1.1 VariablenundDatentypen. . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.2 OperatorenundAusdrücke . . . . . . . . . . . . . . . . . . . . . . . . 23 2.1.3 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2 Aus-undEingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2.1 Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2.2 Eingabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.2.3 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.1 Anweisungsfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3.2 Auswahlanweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.3.3 IterationundSchleifen. . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.3.4 SchachtelungvonKontrollstrukturen . . . . . . . . . . . . . . . . . . 47 2.3.5 Sprunganweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.3.6 Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 IX

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.