ebook img

Programmieren in C PDF

372 Pages·2010·1.975 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 in C

.f1 SpringerWienNewYork Robert Klima Siegfried Selberherr Programmieren in C 3. Aufl age SpringerWienNewYork Dipl.-Ing. Dr. techn. Robert Klima Technische Universität Wien Institut für Mikroelektronik Gußhausstraße 27– 29 1040 Wien, Österreich E-Mail: [email protected] http://www.iue.tuwien.ac.at/ O. Univ.-Prof. Dipl.-Ing. Dr. techn. Dr. h.c. Siegfried Selberherr Technische Universität Wien Institut für Mikroelektronik Gußhausstraße 27– 29 1040 Wien, Österreich E-Mail: [email protected] http://www.iue.tuwien.ac.at/ Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdruckes, der Entnahme von Abbildungen, der Funksendung, der Wiedergabe auf photomechanischem oder ähnlichem Wege und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetz- gebung als frei zu betrachten wären und daher von jedermann benutzt werden dürfen. Produkthaftung: Sämtliche Angaben in diesem Fachbuch/wissenschaftlichen Werk erfolgen trotz sorgfältiger Bearbeitung und Kontrolle ohne Gewähr. Eine Haftung der Autoren oder des Verlages aus dem Inhalt dieses Werkes ist ausgeschlossen. © 2003, 2007 und 2010 Springer-Verlag/Wien Printed in Germany SpringerWienNewYork ist ein Unternehmen von Springer Science + Business Media springer.at Satz: Reproduktionsfertige Vorlage der Autoren Druck und Bindung: Strauss GmbH, 69509 Mörlenbach, Deutschland Gedruckt auf säurefreiem, chlorfrei gebleichtem Papier SPIN 80012250 Mit 75 Abbildungen Bibliogra(cid:2) sche Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliogra(cid:2) e; detaillierte bibliogra(cid:2) sche Daten sind im Internet über http://dnb.d-nb.de abrufbar. ISBN 978-3-211-72000-4 [2. Au(cid:3) age] SpringerWienNewYork ISBN 978-3-7091-0392-0 [3. Au(cid:3) age] SpringerWienNewYork Vorwort CistwohleinederbedeutendstenProgrammiersprachenunsererTageundwurdedahernaturgemäßin unzähligen Büchern behandelt. Manche Werke befassen sich sehr eingehend mit der Mächtigkeit der Sprache, andere verstehen sich lediglich als Einführung. Es gibt Literatur, die sich hauptsächlich an fortgeschrittene ProgrammiererwendetundBücher,diespezielleBereichedesProgrammierensmitC beleuchten.DieAuswahlscheintschierunbegrenzt.WarumalsoeinweiteresBuchüberC? GeradedieindieJahregekommene,abernachwievorsehrhäufigeingesetzteProgrammierspracheC erlaubtdieSchaffungäußerstkomplexerProgrammeinheiten,dienurallzuoftbedenkenlosdemonstriert oderteilweisesogarvorbehaltlos empfohlenwerden.DieWeltderProgrammiersprache Clädtzurbe- liebigenErhöhungderKomplexitätvonProgrammlösungenundzumSpielenmitKonstruktenein,von denen jedoch erfahrene Programmierer Abstand nehmen, da sie der Lösung eines Problems oft nicht wirklichdienen.OftmalswirdinderLiteraturaufdieVollständigkeitderSprachbeschreibungbesonde- rerWertgelegt,wasauchinvielenbekanntenWerkenderFallist.DerLeserwirdgeradezuüberfordert von den Möglichkeiten der Programmiersprache, überschwemmt mit einer Fülle von Details, jedoch bleibtdasWesentlichebeimErlerneneinerProgrammiersprache,dieProgrammiermethodik,verborgen. DiesemMangelsolldasvorliegendeBuchAbhilfeschaffen.IndiesesBuchhabenwirjahrelangeErfah- runginderProgrammierungmitCundderVermittlungvonProgrammiersprachen undProgrammier- methodikeinfließenlassen.WasistProgrammieren?WiewerdenprogrammtechnischeProblemegelöst? Wie beginne ich? Diese grundlegenden Fragen werden ebenso beantwortet als auch der Leser an die Lösung komplexerer Aufgaben herangeführt wird. Schrittweise wirddie Programmierung anhand der SpracheCerlerntundmitBeispielenundAufgabenvertieftundwiederholt.DerSprachumfangvonC wirdvorgestelltaberdurchauskritischbetrachtet,umtypischeFallen,denenselbstaucherfahrenePro- grammiererzumOpferfallen,frühestmöglichzuvermeiden.EinefüralleKomplexitätsgradegeeignete MethodikdesProgrammierenswirdkonsequentdemonstriertundalltäglicheProblemeimUmgangmit CunddemProgrammierhandwerkwerdenbehandelt. WährenddieerstenKapitelhauptsächlichgrundlegendenProblemenderProgrammierung,derProgram- miermethodiksowiederProgrammiersprache Cgewidmetsind,behandeln dieletztenKapitelaufbau- end auf den erworbenen Kenntnissen Verfahren und Methoden, aber auch Probleme, die in der Pro- grammierungheutzutagehäufiganzutreffensind.DiesesBuchistimZugederEinführungeinerneuen LehrveranstaltungamInstitutfürMikroelektronikanderTechnischenUniversitätWienentstanden,die StudierendendasProgrammierenmitCvermittelt,wobeikeinerleiKenntnissevonCodereineranderen Programmiersprachevorausgesetztwerden.EseignetsichaufGrundseinerSprache,seinesAufbausund seinerinhaltlichenTiefegleichermaßenfürdenEinsteigeralsauchfürerfahreneProgrammierer. Mitdiesem SymbolhabenwirEmpfehlungen undHinweiseimTextgekennzeichnet, die sich entweder in der Praxis als besonders wertvoll erwiesen haben, oder einfach nur im SinneeinesgutenProgrammierstilsundzurVermeidungvonFehlerneingehalten werden sollten. DiemitdiesemSymbolgekennzeichnetenQuelltextevielerBeispielefindenSieauchim InternetunterderAdressehttp://www.iue.tuwien.ac.at/books/programmieren_in_c. Andieser Stelle möchten wir allen danken, die an der Entstehung dieses Buches beteiligt waren und mitgeholfenhabenQualitätzuerreichen,imBesonderenunserenKollegen,allenvoranAndreasGehring, unddenvielenStudierenden,dieunsbeimRedigierenunterstützthaben. RobertKlima SiegfriedSelberherr Inhaltsverzeichnis 1 Einführung 1 1.1 WasheißtProgrammieren? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 AlgorithmenundSpezifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1 ProblemlösendurchAlgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.2 Spezifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2.3 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.4 VerifikationvonAlgorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 GrafischeDarstellungsmittel 9 2.1 Struktogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Datenflussdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Programmablaufpläne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 DieEntwicklungsumgebung 19 3.1 Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2 ErstelleneinesProjekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.3 CompileroderInterpreter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4 ÜbersetzenvonProgrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5 Compiler-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.6 BehebenvonFehlern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.7 DerPräprozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.7.1 Die#include–Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.7.2 Die#define–Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7.3 Makros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7.4 VordefiniertePräprozessorkonstanten . . . . . . . . . . . . . . . . . . . . . . . 29 3.7.5 Die#if–Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.7.6 DieAnweisungen#ifdefund#ifndef . . . . . . . . . . . . . . . . . . . . 31 4 ErsteSchritte 33 4.1 Grundlegendes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2 WasistC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 vii viii Inhaltsverzeichnis 4.3 GeschichtevonC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4 WarumC? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5 Programmtextdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5.1 DerProgrammtext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5.2 DieHeader-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.6 Kommentare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.7 DieFunktionmain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.8 HalloWelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.9 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.9.1 Reklameschrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.9.2 Leerzeilen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.9.3 Quelltexttemporärausschneiden . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5 Variablen,Konstanten 41 5.1 EigenschaftenvonVariablenundKonstanten . . . . . . . . . . . . . . . . . . . . . . . 41 5.2 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.2.1 DefinitionvonVariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.2 NamenvonVariablen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2.3 InitialisierungvonVariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.4 ArbeitenmitVariablenundKonstanten. . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.5 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.5.1 BerechnungderFlächeunddesUmfangeseinesRechtecks . . . . . . . . . . . . 45 5.5.2 VersucheinerzirkularenZuweisung . . . . . . . . . . . . . . . . . . . . . . . . 45 5.5.3 Dreieckstausch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6 NumerischeDatentypen 47 6.1 GanzeZahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1.1 Qualifizierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1.2 Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.1.3 Zahlensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.1.3.1 Zweierkomplement . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1.3.2 ZahlensystemeinC . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.1.3.3 UmwandlungvonBinär-,Oktal-undHexadezimalzahlen . . . . . . . 52 6.1.3.4 UmwandlungeinerBinärzahlinsDezimalsystem . . . . . . . . . . . 52 6.1.3.5 UmwandlungeinerDezimalzahlinsBinärsystem . . . . . . . . . . . 53 6.1.4 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2 Punktzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.2.1 Gleitpunkt-ZahlensystemeinC . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Inhaltsverzeichnis ix 6.2.2 Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 6.2.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2.4 MathematischeFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.3 Zeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3.1 Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3.2 DerASCII-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3.4 FunktionenfürZeichen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.4 Wahrheitswerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.5 void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.6 Typumwandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.7 sizeof. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.8.1 UmfangundFlächeeinesKreises . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.8.2 LösenquadratischerGleichungen . . . . . . . . . . . . . . . . . . . . . . . . . 65 7 Eingabe–Ausgabe 67 7.1 Ausgabefunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.1.1 AusgabeeinerganzenZahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.1.2 AusgabeeinerGleitpunkt-Zahl. . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.1.3 AusgabevonAdressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.1.4 AusgabeeinesZeichens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.1.5 AusgabeeinerZeichenkette . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.1.6 WeitereFormatierungsmöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . 71 7.1.7 Problememitprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.8 DiePlatzhaltervonprintf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.2 Eingabefunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.2.1 EingabeeinerganzenZahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.2.2 EingabeeinerGleitpunkt-Zahl . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.2.3 EingabeeinesZeichens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.2.4 EingabeeinerZeichenkette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.2.5 Problememitscanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.2.6 DiePlatzhaltervonscanf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.3 Ein-undAusgabevonZeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 7.4 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 7.4.1 UmfangundFlächeeinesKreises . . . . . . . . . . . . . . . . . . . . . . . . . 76 7.4.2 Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 x Inhaltsverzeichnis 8 Ausdrücke 77 8.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 8.2 ReihenfolgederAuswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 8.2.1 Prioritäten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 8.2.2 Assoziativitäten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 8.3.1 ArithmetischeOperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 8.3.2 DieZuweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 8.3.2.1 InkrementundDekrement . . . . . . . . . . . . . . . . . . . . . . . . 83 8.3.2.2 Abkürzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 8.3.3 LogischeOperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 8.3.3.1 Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.3.3.2 DerOperator&& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 8.3.3.3 DerOperator|| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 8.3.3.4 DerOperator! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.3.4 Bit-Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.3.4.1 DerOperator& . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.3.4.2 DerOperator| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 8.3.4.3 DerOperatorˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 8.3.4.4 DerOperator ˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 8.3.4.5 DerOperator<< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 8.3.4.6 DerOperator>> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 8.3.5 DerOperator, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 8.3.6 DerOperator? : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.4 Abstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.5 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.5.1 TeilbarkeiteinerZahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 8.5.2 ÜbungenzulogischenAusdrücken. . . . . . . . . . . . . . . . . . . . . . . . . 100 8.5.3 BerechnungderSignum-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.5.4 BerechnungdesSchaltjahres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 9 Selektionen 103 9.1 Dieif–Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 9.2 Dieswitch–Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 9.3 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.3.1 LösenquadratischerGleichungen . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.3.2 BerechnungderEinkommensteuer . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.3.3 EinMenü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.3.4 OsterregelnachGauß. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Inhaltsverzeichnis xi 10 Iterationen 113 10.1 Diefor-Anweisung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 10.2 Diewhile-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 10.3 Diedo-while-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 10.4 Besonderheitenderfor-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.4.1 WeglassenvonAusdrücken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 10.4.2 MehrereZähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.5 Diebreak-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 10.6 Diecontinue-Anweisung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 10.7 SchachtelnvonSchleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 10.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.8.1 EinKalender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10.8.2 DerEuklidischeAlgorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.8.3 DieASCII-Tabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 10.8.4 GeradeundungeradeZahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.8.5 DerWeihnachtsbaum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 10.8.6 EinMenü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 10.8.7 EinZahlenratespiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 11 Funktionen 135 11.1 DefinitioneinerFunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 11.1.1 NamenvonFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 11.1.2 Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.1.3 Rückgabewerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 11.1.4 DerRückgabewertderFunktionmain . . . . . . . . . . . . . . . . . . . . . . 138 11.1.5 AblaufeinesFunktionsaufrufes . . . . . . . . . . . . . . . . . . . . . . . . . . 139 11.2 DeklarationeinerFunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 11.2.1 ExterneFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.2.2 StatischeFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.3 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.3.1 LeerendesEingabepuffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.3.2 KalenderfüreinJahr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 11.3.3 EinfacherTaschenrechner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 12 Speicherklassen 155 12.1 LokaleVariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 12.1.1 DieBlockstrukturvonC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 12.1.2 VariablenderSpeicherklasseauto . . . . . . . . . . . . . . . . . . . . . . . . 157 12.1.3 VariablenderSpeicherklasseregister . . . . . . . . . . . . . . . . . . . . . 157 xii Inhaltsverzeichnis 12.1.4 VariablenderSpeicherklassestatic. . . . . . . . . . . . . . . . . . . . . . . 158 12.2 GlobaleVariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 12.2.1 VariablenderSpeicherklasseextern. . . . . . . . . . . . . . . . . . . . . . . 159 12.2.2 VariablenderSpeicherklassestatic. . . . . . . . . . . . . . . . . . . . . . . 160 12.3 ÜbersichtüberalleSpeicherklasseninC . . . . . . . . . . . . . . . . . . . . . . . . . . 160 13 Felder 163 13.1 EindimensionaleFelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 13.2 MehrdimensionaleFelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 13.3 InitialisierungvonFeldern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 13.4 KonstanteFelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 13.5 FelderalsParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 13.6 EinfacheSortierverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 13.6.1 Minimum-Suche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 13.6.2 BubbleSort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 13.7 EinfacheSuchverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 13.7.1 SequenziellesSuchen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 13.7.2 BinäresSuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 13.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 13.8.1 MultiplikationvonMatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 13.8.2 BerechnungderEinkommensteuer–verbesserteVariante. . . . . . . . . . . . . 177 13.8.3 KopierenvonFeldern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 14 Zeiger 179 14.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 14.2 ZeigeralsParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 14.3 Die„Dualität“vonZeigernundFeldern . . . . . . . . . . . . . . . . . . . . . . . . . . 184 14.4 Zeigerarithmetik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 14.5 KomplexereFälle:FeldervonZeigern,ZeigeraufZeiger . . . . . . . . . . . . . . . . . 187 14.6 KonstanteZeiger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 14.7 ZeigeraufFunktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 14.7.1 AdressenvonFunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 14.7.2 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 14.7.3 Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 14.7.4 Typdefinitionenmittypedef . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 14.8 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 14.8.1 Inkrement-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 14.8.2 LösenquadratischerGleichungen–verbesserteVariante . . . . . . . . . . . . . 196

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.