ebook img

Vorkurs Informatik. Der Einstieg ins Informatikstudium [5. Auflage] PDF

381 Pages·2017·3.527 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 Vorkurs Informatik. Der Einstieg ins Informatikstudium [5. Auflage]

(cid:2) Heinrich Müller Frank Weichert Vorkurs Informatik Der Einstieg ins Informatikstudium 5., erweiterte und überarbeitete Auflage HeinrichMüller FrankWeichert FakultätfürInformatik FakultätfürInformatik TechnischeUniversitätDortmund TechnischeUniversitätDortmund Dortmund,Deutschland Dortmund,Deutschland ISBN978-3-658-16140-8 ISBN978-3-658-16141-5(eBook) DOI10.1007/978-3-658-16141-5 SpringerVieweg ©SpringerFachmedienWiesbadenGmbH2005,2011,2013,2015,2017 Vorwort Dieses Buch ist aus dem Vorkurs Informatik entstanden, der von den Autoren seit 2001 an der UniversitätDortmundetwaeinenMonatvorBeginnderVorlesungszeitdesWintersemestersver- anstaltetwird.DieIdeezurEinführungeinesVorkursesInformatikkamdurchErfahrungeninder Vorlesung„EinführungindieProgrammierung“imWS2000/2001auf.DieseVorlesung,ander bedingtdurchdenIT-BoomjenerZeitmehrals1000Studierendeteilnahmen,machtebesonders deutlich, dass die Studienanfängerinnen und -anfänger eine sehr unterschiedliche Grundausbil- dunginInformatikausderSchulemitbringen.DiesmachtdieDurchführungeinerEinführungs- vorlesung,welchefürdieMehrzahlderTeilnehmerinnenundTeilnehmerangemessenist,recht schwer.DasZieldesVorkursesist,eineneinheitlichenKenntnisstandzuerreichen. Der Vorkurs Informatik an der Universität Dortmund wird sehr gut nachgefragt. Etwas mehr als die Hälfte der späteren Studienanfängerinnen und Anfänger des Faches Informatik nehmen teil.HinzukommenangehendeStudierendeausanderenFächern(Mathematik,Wirtschaftsinge- nieurwesen,Betriebswirtschaftslehre,Informationstechnik),derenTeilnahmesichjedochoftauf denerstenTeil,eineEinführungindieProgrammierung,beschränkt.Zuerwähnenist,dasssich dasbisherverfügbareFolienskriptauchbeiStudierendendererstenSemestergroßerBeliebtheit erfreut,wieDownload-Zahlenzeigen.AnonymefragebogenbasierteNachfragenzuBeginndes drittenSemesterszeigen,dassderVorkurstrotzderbisdahinnichtnurpositivenPrüfungserfah- rungenderStudierendenvon40%alsnützlichundvon51%etwasnützlicheingestuftwird. Alldieshatunsbewogen,diesesBuchzuschreiben. Dem Vorkurs und dementsprechend diesem Buch liegt das Konzept „vom Konkreten zum Ab- strakten“zugrunde.DabeikonzentriertsichderVorkursimUnterschiedzuregulärenVorlesun- genmehraufdasKonkrete.AbstraktionisteinwesentlicherAspektdesInformatikstudiums,sie erscheintunsabervordemHintergrunddesKonkretenfürangehendeStudierendebessernach- vollziehbar. AufderEntwurfsebenederLösungvoninformatikbezogenenProblemenistdieDarstellungzu- nächstalgorithmenorientiert,dannwerdenGrundkonzeptedesobjektorientiertenEntwurfsskiz- ziert. Diese möglicherweise etwas konventionell wirkende Vorgehensweise erleichtert unserer Meinung nach den Zugang zur Informatik, ähnlich wie Rechnen zugänglicher zur Elementar- mathematikalsMengenlehreerscheint.DerEinführungindieProgrammierungliegteinestark reduzierteDarstellungderProgrammierspracheJavazugrunde.DasZielist,Grundprinzipiender Programmierung zu vermitteln, die zum allgemeinen Kenntnisstand einer Abiturientin oder ei- nesAbiturientengehörensollten,zumindestwenneineVertiefungdesFachesInformatikinder Schulestattgefundenhat. AusgehendvonderProgrammierungwirdzumAufbauvonRechnernundzumZusammenhang zwischen Hard- und Software am Konzept der Übersetzung von Programmen hingeführt. Hier sollein,wennauchvereinfachtes,„Weltbild“derFunktionsweisevonRechnernimSinneeiner vertieftenAllgemeinbildunggeschaffenwerden,dasdenEinstieginmaschinennähereTeiledes Informatikstudiumsvorbereitensoll. Eingebettet in die Darstellung von Programmierung und Rechnerstrukturen ist die Vorstellung wichtigermethodischerKonzeptewiedieRekursionunddieInduktionsowieausgewählterDa- tenstrukturen. Die Kenntnis solcher Methoden ist von hoher Bedeutung für das Informatikstu- diumundsolltebeiAbsolventinnenundAbsolventenzumindestvoneinschlägigenschulischen Leistungskursenvorhandensein. DerVorgehensweise„vomKonkretenzumAbstrakten“folgend,führendiemeistenAbschnitte ausgehend von Beispielen, an denen das darzustellende Konzept erläutert wird, zu generalisie- renden Definitionen hin. In den Text ist eine große Anzahl Übungsaufgaben eingearbeitet, die soangeordnetsind,dasssichdieLeserinnenundLeserunmittelbaraktivmitdempräsentierten Konzept auseinandersetzen können. Dieser Aufbau soll das Buch über ein vorkursbegleitendes LehrbuchhinauszumselbstständigenStudiumverwendbarmachen.DieEinleitunggibtentspre- chendeHinweisezurVerwendungdesBuches. Es soll hier die Gelegenheit genutzt werden, Personen und Institutionen zu würdigen, die zur EntstehungdesVorkursesInformatikbeigetragenhaben:dasLandNordrhein-Westfalen,dasim RahmendesSofortprogrammszurWeiterentwicklungdesInformatikstudiumsandendeutschen Hochschulen (WIS) Mittel zur Verfügung gestellt hat, die WIS-Kommission des Fachbereichs InformatikderUniversitätDortmund,diedasProjektdesVorkursesindiesemRahmenalsför- derungswürdigempfand,dieInformatikrechnerbetriebsgruppedesFachbereichsInformatik,die technischeUnterstützungbeiderRealisierungderbisherangebotenenVorkursegegebenhatund schließlichJörgKnoche,„der“Vorkurstutor,dersichinüberausbegeisternderWeiseindieÜbun- genzumVorkurseingebracht,aberauchdiearbeitsintensiveAuswertungderbegleitendenFra- gebögenübernommenhat. Am Zustandekommen des Buches waren zahlreiche Personen beteiligt. Zu nennen sind hier KlausHäming,derdie„fachfremden“Illustrationenerstellthat,diedasBuchetwasauflockern sollen,MarionHolm,diedieTextverarbeitungundRealisierungvielerfachbezogenerGrafiken undTabellenübernommenundzudemdasKorrekturlesenmitübernommenhat,Prof.Dr.Micha- elStark,OliverHengesbach,MartinaVaupel,diedurchinhaltlicheAnregungenundKorrekturle- senoptimierendmitgewirkthaben,undderTeubner-Verlag,insbesonderevertretendurchHerrn Sandten,dersichintensivumdiezahlreichenDinge,diebeiderRealisierungeinesBuchesan- fallen,gekümmerthat.IhnenallenmöchtenwirfürihrenBeitragherzlichdanken. Dortmund,imJuli2005 HeinrichMüller FrankWeichert Vorwort zur zweiten Auflage Die anhaltende positive Resonanz von Teilnehmern und Absolventen des Vorkurses Informa- tik hat uns bewogen, das Buch „Vorkurs Informatik - der Einstieg ins Informatikstudium“ neu aufzulegen. Die Neuauflage ist inhaltlich weitgehend gleich geblieben. Änderungen betreffen im Wesentli- chenpraktischeAspekte.SowurdeneineAnpassungandasaktuelleJavaRuntimeEnvironment durchgeführtundeinneuesKapitelzurVerwendungeinerJava-EntwicklungsumgebungamBei- spielvonEclipseaufgenommen.ImalgorithmischenTeilwurdenAblaufdiagrammedurchStruk- togrammeersetzt.DieDarstellungdesobjektorientiertenEntwurfsbefasstsichnunetwasmehr mitUML. DiebeiliegendeCDwurdedurchdieBereitstellungdesdaraufenthaltendenergänzendenMate- rialsimInternetersetzt.Dieserscheintakzeptabel,dadasInternetseitdererstenAuflageallge- genwärtigwurde.ZudemkanndasMaterialaufdieseWeisestetsaktuellgehaltenwerden. NatürlichwurdedieNeuauflageauchzurKorrekturvonFehlerngenutzt,dieüberdieJahrevon aufmerksamen Lesern gefunden wurden, denen dafür gedankt sei. Und schließlich fand eine UmformatierungaufdasneueBuchformatstatt,wobeidasbewährteprinzipielleLayoutimWe- sentlichenbeibehaltenwurde. EinbesondererDankfürdieUnterstützungbeiderÜberarbeitunggehtanFrauHeikeRapp,die insbesondere mit der Elimination von Inkonsistenzen durch die umgesetzten Änderungen be- fasstwar.SchließlichseidiefreundlicheBetreuungdurchFrauKerstinHoffmannvomLektorat erwähnt,diesehrgeholfenhat,dieneueAuflageaufdenWegzubringen. Dortmund,imJuli2011 HeinrichMüller FrankWeichert Vorwort zur dritten Auflage Die Neuauflage des Buches „Vorkurs Informatik - der Einstieg ins Informatikstudium“ in der mittlerweile dritten Auflage wurde dadurch angeregt, dass dieses Buch sowohl Studierenden derInformatikalsauchausanderenFachrichtungenzurEinführungindieInformatikdient.Da in diesen nicht Informatik-assoziierten Fachrichtungen vielfach die Programmiersprache C++ genutztwird, habenwirdies zumAnlassgenommen, dasBuchum einentsprechendesKapitel zuerweitern. DerAnhangzuC++solldenLeserinnenundLeserneinenerstenEinstiegindieC++-Program- mierung vermitteln und ihnen ermöglichen, die allgemeinen Programmierkonzepte, welche im Haupttext anhand der Programmiersprache Java exemplarisch erklärt werden, auch in C++ an- zuwenden.DabeiwerdenbeideProgrammiersprachengegenübergestelltundGemeinsamkeiten sowieUnterschiedeverdeutlicht. EinbesondererDankfürdieUnterstützungbeiderÜberarbeitunggehtanFrauHeikeRappund anHerrnDanielBachmannfürdasKorrekturlesendesneuenKapitelszurProgrammiersprache C++. Schließlich sei die wie immer freundliche Betreuung durch das Lektorat des Verlags bei derErstellungderneuenAuflageerwähnt. Dortmund,imOktober2012 HeinrichMüller FrankWeichert Vorwort zur vierten Auflage Die wesentliche Neuerung der vorliegenden vierten Auflage des Buches „Vorkurs Informatik - derEinstieginsInformatikstudium“bestehtinderErweiterungdesAnhangsumeinneuesKapi- telzurmodellgestütztenSoftwareentwicklung.DabeifolgtdasKapiteldemAnsatzdesBuches, grundlegende Konzepte der Informatik unabhängig von einer expliziten Programmiersprache zu vermitteln. Mit der Einführung in die „Unified Modeling Language“, welche im Buch bis- her schon zur intuitiven Darstellung von Mechanismen der objektorientierten Programmierung genutztwurde,werdenallgemeineProgrammiersprachen-unabhängigeKonzeptezurgrafischen Modellierung von gegebenen Anwendungsszenarien vermittelt. Thematisiert werden hierzu re- levanteStruktur-undVerhaltensdiagramme.DurchdieErgänzungsollderNutzungdesBuches als Einführung in die Informatik durch Studierende anderer Fachrichtungen noch weitergehen- derentsprochenwerden.AberauchfürLeserinnenundLeserimÜbergangzwischenSchuleund Studium,diebereitsüberInformatikkenntnisseverfügen,kanndieErweiterungwertvollsein. AuchdieNeuauflageeinesbereitsetabliertenWerkserforderteinigenArbeitsaufwand.Wirmöch- tenunsbeimLektoratdesVerlagsfürdieGeduldunddieanhaltendefreundlicheBetreuungbei der Erstellung der neuen Auflage bedanken. Ferner danken wir Frau Heike Rapp und Herrn DanielHegelsfürdashilfreicheKorrekturlesendesneuenKapitels. Dortmund,imFebruar2015 HeinrichMüller FrankWeichert Vorwort zur fünften Auflage DievorliegendefünfteAuflagedesBuches„VorkursInformatik-derEinstieginsInformatikstu- dium“weistgrößereÄnderungengegenüberdervorherigenAuflageauf.Soergänzteinweiterer Teil „Erweiterte Programmierkonzepte“ die bisherigen vier Teile „Was ist Informatik?“, „Pro- grammierung“, „Algorithmen und Datenstrukturen“ und „Vom Programm zum Rechner“. Der neueTeilschließtsichandenTeil„Programmierung“an.DessenbisherigefünfletzteKapitel, die weitergehenden Konzepten der objektorientierten Programmierung gewidmet sind, bilden den Anfang des neuen Teils. Zudem beinhaltet der neue Teil die vormals im Anhang befind- lichen Kapitel „Programmieren in C++“ und „Modellgestützte Softwareentwicklung“ in einer überarbeitetenundergänztenForm. Diese Neustrukturierung bewirkt eine klarere Trennung von Basiswissen und weitergehendem Wissen. Es übernimmt zudem Konzepte aus den immer weiter gewachsenen Anhänge in den HauptteildesBuchs,ohnedasbewährteGrundkonzeptnegativzubeeinflussen.Derverbleibende Teil„Programmierung“kannsichdamitaufdasBasiswissenderobjektorientiertenProgrammie- rungimSinneeinesVorkurseskonzentrierenundderneueTeil„ErweiterteProgrammierkonzep- te“weitergehendinteressierteLeserinnenundLeserüberdieseEinführunghinausbegleiten. Auf Wunsch einiger Leserinnen und Leser wurde ferner der Anhang „Grundlagen der Java- Programmierumgebung“ dahingehend überarbeitet, dass er sowohl Schritt für Schritt in die In- stallationderJava-EntwicklungsumgebungeinführtalsauchdetailliertdieÜbersetzungundAus- führungeineserstenJava-Programmsbeschreibt.DurchdieweitergehendenInformationenver- bessertsichdieMöglichkeitzumSelbststudium. WirmöchtenunsbeimLektoratdesVerlagsfürdieGeduldundUnterstützungbeiderErstellung derneuenAuflagebedanken.FernerdankenwirFrauHeikeRappfürdashilfreicheKorrekturle- senderÜberarbeitungen. Dortmund,imMai2017 HeinrichMüller FrankWeichert Inhalt Einleitung 1 WasistInformatik? 5 1 Informatik 7 1.1 WasistInformatik? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 TeilgebietederInformatik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Programmierung 13 2 VomProblemüberdenAlgorithmuszumProgramm 15 2.1 VorgehensweisebeiderLösungvonProgrammierproblemen . . . . . . . . . . . 15 2.2 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3 Beispiel:JüngsterStudierender . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Algorithmenentwurf 23 3.1 Beispiel:MinimumeinerMengevonZahlen . . . . . . . . . . . . . . . . . . . . 23 3.2 GrundkonzeptevonAlgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4 GrundkonzeptederProgrammierung 37 4.1 ProgrammierungundProgrammierspracheJava . . . . . . . . . . . . . . . . . . 37 4.2 GrundstrukturvonJava-Programmen . . . . . . . . . . . . . . . . . . . . . . . . 38 4.3 KompilierenundAusführeneinesJava-Programms . . . . . . . . . . . . . . . . 42 4.4 Beispiel:MinimumeinerMengevonZahlen . . . . . . . . . . . . . . . . . . . . 46 4.5 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.7 OperatorenundAusdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.8 Typkonvertierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.9 AnweisungenundAblaufstrukturen . . . . . . . . . . . . . . . . . . . . . . . . 65 4.10 Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.11 Beispiel:MittelwerteinerFolgevonZahlen . . . . . . . . . . . . . . . . . . . . 73 5 Funktionen 79 5.1 Beispiel:SortiereneinerMengevonZahlendurchMinimumsuche . . . . . . . . 79 5.2 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.3 GültigkeitsbereichvonDeklarationen . . . . . . . . . . . . . . . . . . . . . . . 91 6 Rekursion 95 6.1 Beispiel:SortiereneinerMengevonZahlendurchMischen . . . . . . . . . . . . 95 6.2 PrinzipderRekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7 KlassenundObjekte 111 7.1 Beispiel:SuchenineinemDatenbestand . . . . . . . . . . . . . . . . . . . . . . 111 7.2 Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 7.3 Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 ErweiterteProgrammierkonzepte 139 8 StrukturierungvonProgrammiersprachen 141 8.1 FormaleStrukturierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 8.2 Programmierparadigmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 8.3 ErgänzendeAbstraktionsebenen . . . . . . . . . . . . . . . . . . . . . . . . . . 145 9 ObjektorientierteProgrammierung 149 9.1 ObjektorientierteModellierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 9.2 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 9.3 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 9.4 SichtbarkeitvonInformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 9.5 Polymorphismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 10 Klassenbibliotheken 177 10.1 EinbindenvonKlassenbibliotheken . . . . . . . . . . . . . . . . . . . . . . . . 177 10.2 Applets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.3 Systemzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 10.4 Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 10.5 Paketsichtbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 11 GrafikprogrammierungmitSwing 191 11.1 GrundlagenvongrafischenBenutzungsoberflächen . . . . . . . . . . . . . . . . 191 11.2 EinfacheBenutzungsoberfläche. . . . . . . . . . . . . . . . . . . . . . . . . . . 193 11.3 BeispielfüreinfacheGrafikbefehle . . . . . . . . . . . . . . . . . . . . . . . . . 203 12 ProgrammiereninC++ 217 12.1 ProgrammierspracheC++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 12.2 VergleichzwischenJavaundC++ . . . . . . . . . . . . . . . . . . . . . . . . . 218 12.3 Grundkonzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 12.4 ZeigerundReferenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 12.5 KlassenundObjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 12.6 ÜbersetzungsprozessvonC++-Programmen . . . . . . . . . . . . . . . . . . . . 245 13 ModellgestützteSoftwareentwicklung 249 13.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 13.2 Anwendungsfalldiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 13.3 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 13.4 Sequenzdiagramm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 AlgorithmenundDatenstrukturen 263 14 AsymptotischeAufwandsanalyse 265 14.1 Zeitaufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 14.2 Speicheraufwand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 15 Sortieren 271 15.1 SortierendurchMinimumsuche . . . . . . . . . . . . . . . . . . . . . . . . . . 271 15.2 SortierendurchMischen(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 15.3 Exkurs:VollständigeInduktion . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 15.4 SortierendurchMischen(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 15.5 EinigeBemerkungenzumSortierproblem . . . . . . . . . . . . . . . . . . . . . 282 16 Mengen 285 16.1 OperationenaufMengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 16.2 MengenverwaltungmitunsortiertemArray. . . . . . . . . . . . . . . . . . . . . 286 16.3 MengenverwaltungmitsortiertemArray . . . . . . . . . . . . . . . . . . . . . . 289 16.4 MengenverwaltungmitausgeglichenembinärenSuchbaum . . . . . . . . . . . . 296 16.5 MengenverwaltungmitHashing . . . . . . . . . . . . . . . . . . . . . . . . . . 303 VomProgrammzumRechner 307 17 HardwareundProgrammierung 309 18 RechnerarchitekturundMaschinensprache 311 18.1 Rechnerarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 18.2 Hauptspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 18.3 Prozessor,BefehlssatzundMaschinensprache . . . . . . . . . . . . . . . . . . . 314 19 Schaltungen 319 19.1 ZweiwertigeInformationsdarstellung. . . . . . . . . . . . . . . . . . . . . . . . 319 19.2 BoolescheFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 19.3 Schaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

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.