Programmieren in C - Heimo Gaicher - E-Book

Programmieren in C E-Book

Heimo Gaicher

0,0

Beschreibung

Der Autor ist bereits seit jungen Jahren leidenschaftlicher Bastler, Elektroniker und Programmierer. Berufsbegleitend absolvierte er nach seiner Lehre als Betriebselektriker die Werkmeisterschule für industrielle Elektronik und anschließend die Höhere Technische Bundeslehr- und Versuchsanstalt der Fachrichtung Elektronik und Technische Informatik in Graz. In seiner Industrielaufbahn befasst er sich mit der Hard- und Softwareentwicklung für innovative Produkte aus dem Bereich der HF-Kommunikations- und LED-Lichttechnik. Das Buch ist syntaktisch mit vielen Programmierbeispielen ausgearbeitet und ermöglicht damit dem Lernenden einen raschen Einstieg in die Programmierung.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 199

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Heimo Gaicher

Programmieren in C

Heimo Gaicher, Jahrgang 1969, ist bereits seit jungen Jahren leidenschaftlicher Bastler, Elektroniker und Programmierer. Berufsbegleitend absolvierte er nach seiner Lehre als Betriebselektriker die Werkmeisterschule für industrielle Elektronik und anschließend die Höhere Technische Bundeslehr- und Versuchsanstalt der Fachrichtung Elektronik und Technische Informatik in Graz. In seiner Industrielaufbahn befasst er sich mit der Hard- und Softwareentwicklung für innovative Produkte aus dem Bereich der HF-Kommunikations- und LED-Lichttechnik.

Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Autors unzulässig und strafbar. Alle Markennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. 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ürfen. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Vorwort

Dieses Buch richtet sich an Programmier-Einsteiger, die mit der Sprache C eine universelle Programmiersprache erlenen möchten. Da es für Einsteiger nicht gerade einfach ist, eine Programmiersprache zu erlernen, wurde dieses Buch schrittweise mit vielen Beispielen ausgearbeitet.

Auf eine allgemeine Einführung wurde bewusst verzichtet. Die entsprechenden Beispiele werden auch im Programmiercode genau dokumentiert und führen so zu einem besseren Verständnis. Das Buch ist kein Kompendium sondern eine für den Studierenden schrittweise Anleitung. Arbeiten Sie dieses Buch von Anfang an genau durch und versuchen Sie auch die Übungsaufgaben selbständig zu lösen. Denn eine Programmiersprache lernt man am besten, indem man Programme programmiert.

Dieses Buch wurde im Zuge meiner eigenen Ausbildung mit großer Sorgfalt geschrieben. Sollten sich dennoch Fehler eingeschlichen haben, freue ich mich über entsprechende Hinweise. Anmerkungen und Kritiken sind unter [email protected] immer willkommen.

Viel Spaß beim Erlernen von C!

© 2012 Heimo Gaicher

Autor: Heimo Gaicher

Umschlaggestaltung, Illustration: Patrick Gaicher

Verlag: tredition GmbH, Hamburg

ISBN: 978-3-8491-1848-8

Das Werk, einschließlich seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung ist ohne Zustimmung des Verlages und des Autors unzulässig. Dies gilt insbesondere für die elektronische oder sonstige Vervielfältigung, Übersetzung, Verbreitung und öffentliche Zugänglichmachung.

Bibliografische Information der Deutschen Nationalbibliothek:

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.dnb.de abrufbar.

Inhalt

1. Einführung

1.1 Wie erstellt man ein C-Programm?

1.2 Installation von VISUAL STUDIO Express 2010

1.3 Download und Installation unter Windows

1.4 Start mit VISUAL STUDIO Express 2010

1.5 Das erste C-Programm

1.6 Startfunktionen in C

1.7 Einfache Programmbeispiele

1.7.1 Berechnung und Ausgabe von Quadratzahlen

1.7.2 Umrechnung von Fahrenheit in °C

1.7.3 Berechnung des Zinseszinseffektes

1.7.4 Berechnung des ggT mit Hilfe des euklidischen Algorithmus

1.7.5 Berechnung von Testergebnissen

1.7.6 Etwas Farbe kommt ins Spiel

1.8 Kommentare und Bildschirmausgabe mit printf()

1.9 Das binäre Zahlensystem

1.10 Das hexadezimale Zahlensystem

1.11 Bits, Bytes und Kilobytes

2. Variablen

2.1 Deklaration, Definition und Initialisierung von Variablen

2.2 Konstanten

2.3 Programmbeispiel Umfang und Fläche eines Kreises

2.4 Symbolische Konstanten

2.5 Sichtbarkeit und Lebensdauer von Variablen

2.5.1 Globale Variablen

2.5.2 Lokale Variablen

2.5.3 Statische Variablen

3. Datentypen

3.1 Datentypen Beispiele

3.2 Typecasting (Typumwandlung)

3.3 Typdefinition mit typedef

3.4 Das Speicherkonzept

4. Operatoren

4.1 Höhere Rechenoperatoren

4.1.1 Programmbeispiel Quadratische Gleichung

4.2 Zuweisungsoperatoren

4.2.1 Kombinierte Zuweisungsoperatoren

4.3 Inkrement- und Dekrement Operatoren

4.4 Vergleichsoperatoren

4.5 Logische Operatoren

4.5.1 Reihenfolge der Auswertung logischer Operatoren

4.6 Bit-Operatoren

4.6.1 Bitweises UND

4.6.2 Bitweises ODER

4.6.3 Bitweises exklusiv ODER (XOR)

4.6.4 Bitweise Negation

4.6.5 Schiebeoperatoren (Links-shift / Rechts-shift)

4.6.6 Sonderverknüpfungen von Operatoren

5. Daten einlesen, verarbeiten und ausgeben

5.1 Werte einlesen mit scanf()

5.1.1 Variablenüberwachung mit dem Debugger

5.1.2 Die Formatelemente von scanf()

5.1.3 Programmbeispiel mit scanf()

5.1.4 Probleme mit scanf()

5.1.5 Mit scanf() den Rückgabewert prüfen

6. Kontrollstrukturen

6.1 if-Anweisung

6.2 if - else Verzweigung

6.2.1 if - else Verzweigung mit Verbundoperatoren

6.3 if, else - if Verzweigung

6.3.1 Programmbeispiele

6.4 Geschachtelte if - else Anweisungen

6.5 switch - case Anweisungen

6.5.1 Programmbeispiele

7 Iterationen

7.1 for - Schleifen

7.1.1 Verschachtelte for - Schleifen

7.2 Programmbeispiele

7.2.1 Sternequadrat

7.2.2 Zahlenfeld

7.2.3 Sägezahn

7.3 while - Schleifen

7.4 Programmbeispiele

7.5 do – while - Schleifen

7.6 Programmbeispiele

7.6.1 Umrechnung einer Dezimalzahl in eine Binärzahl

7.6.2 Berechnung des Mittelwertes von Messwerten

7.6.3 Winkelberechnung

7.6.4 Minimum und Maximum

7.7 Unterbrechen von Schleifen

7.7.1 Die break - Anweisung

7.7.2 Die continue - Anweisung

7.8 Programmbeispiele

7.8.1 Quadratische Funktion

7.8.2 Fakultät einer Zahl

7.8.3 Notendurchschnitt

7.8.4 Die Zahlenfolge von Fibonacci

7.8.5 Wurfparabel

8 Zeichenweise lesen und schreiben

8.1 Die Funktion getchar()

8.2 Die Funktion putchar()

8.3 Die Funktion gets()

9 Arrays (Felder)

9.1 Programmbeispiel Binärzahlenrechner

9.2 Initialisierungen von Arrays

9.3 Mehrdimensionale Arrays (Matrix)

9.4 Programmbeispiel 10x10 Matrix

10 Zeichenketten (Strings)

11 Funktionen

11.1 Aufruf einer Funktion

11.2 Parameterübergabe

11.3 Parameterübergabe mit call by value

11.4 Rückgabewert einer Funktion

11.5 Parameterübergabe mit call by reference

11.6 Programmbeispiele

11.7 Anwendung globaler Variablen

12 Pointer (Zeiger)

12.1 Definition von Pointervariablen

12.2 Der NULL-Pointer

12.3 Wertzuweisung an einen Pointer (Referenzierung)

12.4 Zugriff auf eine Variable über einen Pointer (Dereferenzierung)

12.5 Pointer auf void

12.6 Pointer auf Arrays

12.7 Programmbeispiel Schachbrett

13 Strukturen

13.1 Strukturen deklarieren

13.2 Initialisierung und Zugriff auf Strukturen

13.3 Programmbeispiel

13.4 Strukturen von Strukturen

13.5 Strukturen mit Arrays

13.6 Arrays von Strukturen

13.7 Übergabe von Strukturvariablen an Funktionen

13.8 Strukturen und Zeiger

13.9 Der Pfeiloperator (->)

13.10 Typdefinition von Strukturen mit typedef

13.11 Programmbeispiel komplexe Zahlen

13.12 Unions

13.13 Aufzählungen (enum)

14 Standard Datenströme

14.1 Dateien öffnen und schließen

14.2 Dateien auf Existenz prüfen

14.3 Lesen einer Datei

14.4 Schreiben in eine Datei

14.5 Die Funktion sprintf()

14.6 Die Funktion sscanf()

15 Speicherverwaltung

15.1 Dynamische Speicherverwaltung

15.2 Anfordern von Speicher

15.3 Freigeben von Speicher

16 Zeitfunktionen

16.1 Die Funktion time()

16.2 Die Funktion clock()

17 Zufallszahlen erzeugen

17.1 Programmbeispiel Würfelspiel

18 Anhang

18.1 Übersicht über die C Standard-Bibliothek

18.2 ASCII Tabelle

18.3 Stichwortverzeichnis

1. Einführung

Die Programmiersprache C wurde bereits 1972 von Dennis M. Ritchie in den Bell-Laboratorien (USA) entwickelt und 1973 bis 1974 von Brian W. Kernighan weiter verbessert. Als C ausgereift war und auch über eine Funktionsbibliothek verfügte, wurde die Sprache 1978 von Kernighan und Ritchie veröffentlicht.

Die rasche Verbreitung von C verlangte schließlich eine Standardisierung. Diese wurde 1989 vom ANSI-Komitee festgelegt und 1990 von der ISO übernommen. Die Vorläufer von C sind die Sprachen BCPL (Basic Combined Programming Language) und B. Da die Sprache auf UNIX entwickelt und UNIX mit seinen Dienstprogrammen nahezu vollständig in C geschrieben wurde, scheint die Sprache sehr eng mit dem Betriebssystem UNIX verbunden zu sein. Doch C ist absolut universell einsetzbar und eine sehr „kleine“ aber doch mächtige Programmiersprache, die über wenige Anweisungen verfügt. Mit diesen wenigen Anweisungen deckt sie aber trotzdem alle geforderten Kontrollstrukturen ab.

Dadurch, dass viele Aufgaben wie z.B. Ein- und Ausgabe über vorgegebene Bibliotheksfunktionen gelöst werden, konnte die Anzahl der Anweisungen in C so gering gehalten werden. Aber auch sehr große Softwareprogramme wie z.B. das Betriebssystem Windows XP wurden größtenteils in C programmiert.

Doch auch in der hardwarenahen Programmierung ist C eine dominierende Programmiersprache. Auch für moderne Sprachen wie beispielsweise Java, C++ oder C# bildet C die Grundlage. Somit findet der C-Programmierer auch einen leichten Einstieg in diese Sprachen.

1.1 Wie erstellt man ein C-Programm?

Die Programmerstellung in C durchläuft prinzipiell drei Arbeitsschritte:

1. Erstellen des Quellcodes (editieren)

2. Übersetzen des Quellcodes (kompilieren)

3. Binden des kompilierten Codes (linken)

Der Quellcode wird entweder in einem Texteditor oder in einer Entwicklungs-umgebung, kurz IDE (Integrated Development Environment) geschrieben. Dieser Programmcode ist für den Programmierer leserlich und verständlich. Doch für den Computer (Prozessor, Mikrocontroller) muss dieser Code in die sogenannte Maschinensprache (bestehend aus Nullen und Einsen) umgewandelt werden. Diese Umwandlung oder Übersetzung des Programmiercodes übernimmt ein Compiler, welcher in einer Entwicklungsumgebung bereits als Programm eingebunden ist.

Zum Compiler gehören auch mehrere Bibliotheken (Libraries). Die Bibliotheken enthalten bereits fertige Funktionen, welche Sie beim Programmieren in Ihre Programme einbinden können.

Der Linker sucht aus den Bibliotheken alle Funktionen die benötigt werden heraus und fügt sie dem Programm hinzu.

Betriebssysteme wie Linux oder Unix verfügen bereits automatisch über alle notwendigen Programme. Bei anderen Betriebssystemen wie z.B. Windows, muss eine Entwicklungsumgebung (IDE) für C-Programme gesondert installiert werden. Nur dann können Sie Ihren programmierten C-Code ausführen.

Um in C programmieren zu können, benötigen Siealso eine Entwicklungsumgebung. Natürlich können Sie ein C-Programm auch mit einem einfachen Texteditor schreiben, aber mit einer Entwicklungsumgebung ist die Programmierung wesentlich komfortabler. Wir verwenden in diesem Lehrbuch die Entwicklungsumgebung VISUAL C++ 2010 Express Edition, welche von Microsoft als Freeware angeboten wird. Alternativ kann aber auch jede andere Entwicklungsumgebung (z.B. Dev-C++ oder wxDev-C++) für C verwendet werden.

1.2 Installation von VISUAL STUDIO Express 2010

VISUAL STUDIO 2010 EXPRESS EDITION ist eine kostenlose Software und Sie können Sie direkt von der Microsoft-Webseite herunterladen.

Hier der Downloadlink:

http://www.microsoft.com/germany/express/download/webdownload.aspx

1.3 Download und Installation unter Windows

VISUAL STUDIO EXPRESS einrichten

Wählen Sie VISUAL C++ 2010EXPRESS und klicken Sie auf Download. Wählen Sie bei der Installation alle Optionen aus. Zum Zeitpunkt der Erstellung dieses Buches ist die Version 2010 aktuell.

1.4 Start mit VISUAL STUDIO Express 2010

Starten Sie VISUAL C++ 2010 EXPRESS.

Sie gelangen zum Startfenster, welches beim Start in etwa wie in der folgenden Abbildung aussieht.

Klicken Sie nun auf der Startseite auf „Neues Projekt“.

Um eine Konsolenanwendung zu starten, verwenden Sie die Win32-Konsolenanwendung und geben einen Namen für Ihr Projekt ein.

Klicken Sie auf „OK“ und nachfolgend auf „Fertigstellen“.

Jetzt haben Sie ein neues Projekt erstellt und können im Editor Ihren Programmcode in C++ oder wie in unserem Fall in C programmieren. Die Quelldatei für unseren Programmcode heißt test_1cpp.

In VISUAL C++ lässt sich die Anordnung der Fenster flexibel gestalten. Sämtliche Fenster lassen sich an allen Ecken andocken. So können Sie sich VISUAL C++ nach Ihren eigenen Bedürfnissen einrichten. Sie werden im Laufe der Programmierübungen noch einiges über den Umgang mit VISUAL Studio lernen.

1.5 Das erste C-Programm

Testen wir nun unsere Entwicklungsumgebung und schreiben ein erstes Programm. Fügen Sie dazu unter der Startfunktion _tmain() die Programmzeile printf("Ich bin ein C Fan!"); ein. Mit printf() wird der Text zwischen den beiden Anführungszeichen am Bildschirm ausgegeben.

Als Anfänger werden Sie an dieser Stelle den kompletten Programmcode noch nicht verstehen. Das ist aber zu diesem Zeitpunkt auch nicht notwendig, denn wir werden uns Schritt für Schritt an die Funktionen in C herantasten.

int _tmain(int argc, _TCHAR* argv[])

{

printf("Ich bin ein C Fan!");

return 0;

}

Im nächsten Schritt möchten wir unser Programm ausführen. Dazu starten Sie den Debugger indem Sie die Taste F5 drücken oder das Symbol (>)anklicken.

Jetzt wird der Programmcode zuerst kompiliert und wenn der Compiler keinen Fehler erkennt, wird der Programmcode im Debug-Fenster ausgeführt. Wenn Sie den Programmcode ausführen, werden Sie feststellen, dass sich das Debug-Fenster ganz kurz öffnet und gleich wieder schließt. Damit das Debug-Fenster geöffnet bleibt, müssen wir unser Programm vor dem Programmende anhalten. Dies können wir z.B. mit der Funktion getchar() realisieren. Diese Funktion wartet an dieser Stelle auf eine Tastatureingabe, welche mit der Taste „Enter“ abgeschlossen wird.

Bauen wir also die Funktion getchar() in unser Programm ein.

int _tmain(int argc, _TCHAR* argv[])

{

printf("Ich bin ein C Fan!");

getchar(); //An dieser Stelle auf eine Tastatureingabe warten

return 0;

}

Starten Sie den Debugger erneut. Wenn Sie alles richtig gemacht haben, bleibt das Debug-Fenster nun geöffnet und die Ausgabe <Ich bin ein C Fan!> erscheint am Bildschirm.

Wie Sie im Codebeispiel sehen, wurde mit // ein Kommentar eingeleitet. Kommentare sind für den Programmierer eine wichtige Möglichkeit um Programmcode zu dokumentieren.

Insbesondere bei größeren Programmen wird eine gute Dokumentation sehr wichtig, da Sie dem Programmierer hilft, auch nach längerer Zeit, den Programmcode sehr rasch zu verstehen. Kommentare werden vom Compiler nicht berücksichtigt.

Betrachten wir unseren Programmcode nun etwas genauer.Unser Projekt (auch jedes andere) startet an der Stelle _tmain und wird von den beiden geschwungenen Klammern { } eingeschlossen.

int _tmain(int argc, _TCHAR* argv[])

{

//Hier steht der Code…

}

Innerhalb der beiden Klammern wird unser Code schrittweise abgearbeitet und das Programm entsprechend ausgeführt.Da wir unser erstes Projekt mit den Anwendungseinstellungen

• Konsolenanwendung

• Vorkompilierter Header

erstellt haben, wurden von der Entwicklungsumgebung automatisch sogenannte Headerdateien (das sind Dateien mit der Endung .h) vorgeladen. Diese Dateien z.B. stdafx.h ermöglichen eine sehr rasche Kompilierung des Quelltextes. Dadurch sinkt die Kompilierzeit für große Programme dramatisch.

Abb: Durch vorkompilierte Header erzeugte Projektdateien

Da wir in diesem Lehrbuch aber keine großen Programme schreiben, werden wir der Überschaubarkeit wegen, unser Projekt etwas umgestalten.

Erstellen Sie ein neues Projekt mit dem Namen ausgabe_1 und ändern die Anwendungseinstellungen auf „Leeres Projekt“.

Es öffnet sich der Projektmappen-Explorer wie in der folgenden Abbildung ersichtlich mit einem leeren Projekt.

Um eine neue Quelldatei zu erstellen, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Quelldateien und wählen Hinzufügen /Neues Element.

Wählen Sie nun die installierte Vorlage Code / C++ Datei und geben Sie der Datei den Namen main. Der Projektmappen-Explorer hat nun die Datei main.cpp im Verzeichnis Quelldateien erstellt. In diese Datei schreiben wir unseren Programmcode.

Geben Sie nun den folgenden Code im Editor ein und starten den Debugger:

int main(void)

{

printf("Ich bin ein C-Fan!");

getchar();

return 0;

}

Im Ausgabefenster erhalten Sie jetzt zwei Fehlermeldungen:

Der Compiler kann in diesem Moment die beiden Funktionen printf() und getchar() nicht zuordnen. Diese Standardfunktionen müssen dem Compiler am Anfang „bekannt“ gemacht werden. Dies geschieht durch das Einbinden der Headerdatei <stdio.h>.

Eine Headerdatei wird mit #include eingebunden.

#include<stdio.h> // Bindet die Standard Ein- und Ausgabefunktionen ein

int main(void)

{

printf("Ich bin ein C-Fan!");

getchar();

return 0;

}

Bei erfolgreicher Kompilierung wird das Konsolefenster geöffnet und das Programm ausgeführt.

In der Konsole wird

ausgegeben.

Zum Unterschied von vorher verwenden wir als Einstiegspunkt nur die leere Funktion main() ohne die Übergabeparameter (intargc, _TCHAR* argv[]). Welche Bedeutung Übergabeparameter haben werden Sie zu einem späteren Zeitpunkt noch kennenlernen.

Dasselbe Programm könnten Sie nun auch mit einem einfachen Texteditor schreiben und als „Dateiname.c“ speichern.

Um ein Programm an bestimmter Stelle anzuhalten können Sie auch die Funktion system(“PAUSE“) verwenden. Diese Funktion befindet sich in der C-Standardbibliothek stdlib.h welche zuvor mit #include eingebunden werden muss.

#include<stdlib.h> // Bindet die C-Standardbibliothek ein

system("PAUSE"); // Hält ein Programm an dieser Stelle an bis eine Taste gedrückt wird

1.6 Startfunktionen in C

Mit #include<stdio.h>(Präprozessor-Direktive) wird eine Bibliothek, in welcher Standardfunktionen hinterlegt sind, in das Programm geladen. Mit stdio.h werden Makros und Variablen definiert, die in der Standardbibliothek verwendet werden. Sie wird für die Standard-Ein und Ausgabe (standard input / output) benötigt. Wenn der Compiler die Anweisung verarbeitet hat, ist diese Datei ein fixer Bestandteil des Programms.

intmain(void)ist der Startpunkt eines jeden C-Programms.

Die Funktion main() muss in jedem Programm einmal vorkommen. Sie darf aber auch nicht öfter als einmal vorkommen. Zu jeder Funktion gehört auch ein Funktionsrumpf, welcher durch die beiden geschwungenen Klammern { } gekennzeichnet ist. Alles, was innerhalb der beiden geschwungenen Klammern steht, gehört auch zu dieser Funktion.

In unserem Beispiel haben wir den Funktionsaufruf printf("Ich bin ein C-Fan!"); verwendet. Mit der Funktion printf() wird am Bildschirm der gesamte Inhalt zwischen den beiden Klammern ( ) ausgegeben. Also alles, was innerhalb der beiden Anführungszeichen steht. Das Semikolon ( ; ) am Ende des Befehls ist zwingend erforderlich und schließt den Befehl ab.

Sehen wir uns den Startpunkt main() noch etwas genauer an:

int main(void)

Das Schlüsselwort void verwendet man, um Funktionen zu deklarieren, die keine Ergebnisse enthalten sollen. Void bedeutet also ganz einfach leer.

Mit intmain(void) wird kein Parameter übergeben aber ein Parameter (Rückgabeparameter) erwartet. Was das konkret bedeutet, werden wir an späterer Stelle noch klären. Derzeit ist nur wichtig, dass Sie wissen, dass der Einstiegspunkt für jedes Programm die Funktion main() ist. Wird kein Parameter zurückgegeben, ist auch die Deklaration voidmain(void) möglich. In diesem Fall entfällt return0; am Ende des Programms.

1.7 Einfache Programmbeispiele

Die folgenden Programmbeispiele dienen lediglich der Einführung in die Programmierung, damit Sie mit den Codebeispielen etwas vertraut werden um die Theorie leichter zu verstehen. Es ist nicht erforderlich, dass Sie den Code bereits jetzt verstehen. Vieles davon ist jedoch selbsterklärend und alles andere wird an späterer Stelle behandelt werden.

1.7.1 Berechnung und Ausgabe von Quadratzahlen

Es soll ein Programm geschrieben werden, welches die ersten zehn Quadrate (also die Quadrate von 1 bis 10) berechnet und ausgibt.

#include <stdio.h>

int main(void)

{

int zahl=1, ergebnis;

for (int i=0; i<=9; i++)

{

zahl++;

}

getchar();

return 0;

}

Erläuterungen zum Programmcode:

Wie Sie bereits wissen, muss immer ein Hauptprogramm vorhanden sein. Das Hauptprogramm ist sozusagen der Startpunkt für die Programmausführung. Das Hauptprogramm in C heißt immer main(). Zuvor ist die Präprozessor-Anweisung #include<stdio.h> erforderlich damit die Bibliotheksfunktion printf() erkannt wird.

Jetzt folgt eine for-Schleife. Eine for-Schleife wiederholt den Programmcode innerhalb der beiden geschwungenen Klammern { } so oft, wie dies in der Schleife definiert wurde. In diesem Fall wird eine Zählvariable i vom Datentyp Integer vereinbart. Der Startwert von i ist 0. Der Endwert von i ist 9. Mit i++ wird die Zählvariable i bei jedem Schleifendurchlauf um eins erhöht. Die Schleife wird also so lange durchgeführt, so lange die Zählvariable i kleiner oder gleich 9 ist. Ist i gleich 9, wird die Schleife noch ein einziges Mal durchlaufen und die Zählvariable auf 10 erhöht. Danach wartet das Programm mit getchar() auf eine Tastatureingabe und wird beendet.

Im ersten Schleifendurchlauf erhält die Variable ergebnis den Wert 1*1 und wird mit printf() am Bildschirm ausgegeben. Anschließend wird die Variable zahl um eins erhöht. Im zweiten Schleifendurchlauf erhält die Variable ergebnis den Wert 2*2 und wird mit printf() am Bildschirm ausgegeben. Anschließend wird die Variable zahl wieder um eins erhöht. Dieser Vorgang setzt sich solange fort, solange die Schleifenbedingung (i <= 9) erfüllt ist.

Nicht zu vergessen ist das Semikolon ( ; ). Das Semikolon ist in C ein Satzzeichen und wird dazu verwendet, das Ende einer Anweisung anzuzeigen. Eine Anweisung kann sich in C auch über mehrere Zeilen erstrecken.

1.7.2 Umrechnung von Fahrenheit in °C

Mit diesem Programm werden Temperaturen in Zehner-Schritten von 0 bis 100 Grad Fahrenheit in Grad Celsius umgerechnet und als Tabelle ausgegeben.

Die Formel für die Umrechnung lautet:

#include <stdio.h>

int main(void)

{

double celsius;

while(fahrenheit <= 100) // Führe durch, solange fahrenheit kleiner oder gleich 100

{

// Ergebnis als Gleitkomma

fahrenheit +=10; // Erhöhe fahrenheit um 10

}

getchar();

return 0;

}

Erläuterungen zum Programmcode:

Das entscheidende in diesem Programm ist die Division. Würde man 5/9 schreiben, wäre das Ergebnis 0 da eine Integer Division (ganzzahliger Datentyp) vorliegt. Hier ist aber eine Division mit Rest (Gleitpunkt Division) gefordert. Mit 5.0 / 9.0 erzwingt man die Durchführung einer Gleitpunkt Division.

Das Ergebnis soll um zehn Stellen nach rechts verschoben mit einer Genauigkeit von zwei Dezimalstellen angezeigt werden. Das Formatelement lautet daher %10.2lf. 10 steht für die Verschiebung nach rechts um zehn Stellen. 2 steht für die Anzahl der Nachkommastellen und lf für die Ausgabe einer Zahl vom Datentyp double.

1.7.3 Berechnung des Zinseszinseffektes

Das folgende Programm berechnet die Zinsen und Zinseszinsen auf eine einmalige Kapitalanlage und gibt die jährlichen Ergebnisse in Form einer Tabelle aus.

#include <stdio.h>

#define LAUFZEIT 10

#define STARTKAPITAL 10000

#define ZINSSATZ 3.25

int main(void)

{

for (int jahr=1; jahr <= LAUFZEIT; jahr++)

{

printf("\nIhr Kapital nach dem %i jahr: %10.2lf ",jahr,kapital);

}

getchar();

return 0;

}

Erläuterungen zum Programmcode:

Hier wurde mit Konstanten (Präprozessoranweisungen) gearbeitet. Diese Konstanten sind:

#define LAUFZEIT 10

#define STARTKAPITAL 10000

#define ZINSSATZ 3.25

Der konstante Wert 10 wurde der symbolischen Konstanten LAUFZEIT zugewiesen usw. Diese konstanten Werte werden vor dem Hauptprogramm main() vereinbart und können an dieser Stelle global für das gesamte Programm verändert werden.

Konstanten werden in C üblicherweise groß geschrieben, um sie im Programmcode von Variablen zu unterscheiden. Für eine genauere Berechnung wurde hier der Datentyp double für die Variable kapital vereinbart.

1.7.4 Berechnung des ggT mit Hilfe des euklidischen Algorithmus

Mit dem euklidischen Algorithmus (benannt nach dem griechischen Mathematiker Euklid) lässt sich der größte gemeinsame Teiler (ggT) zweier natürlicher Zahlen berechnen. Der größte gemeinsame Teiler wird zum Kürzen von Brüchen benötigt.

Betrachten wir den Bruch

Hier kann man den größten gemeinsamen Teiler auch leicht im Kopf bestimmen. Zähler und Nenner lassen sich gemeinsam durch 2 und 4 teilen. Der größte gemeinsame Teiler ist demnach 4 und wir können statt auch bzw. 3 schreiben.

Um ein Programm zu schreiben, welches den größten gemeinsamen Teiler berechnet benötigen wir eine Abfolge von Vorschriften (Algorithmus). Der Algorithmus um den größten gemeinsamen Teiler zweier Zahlen zu bestimmen lautet:

Um den ggT zweier natürlicher Zahlen x und y zu bestimmen, führe folgende Schritte aus:

Solange x ungleich y ist wiederhole

{

Wenn x größer als y ist, dann ziehe y von x ab und weise das Ergebnis x zu.

Andernfalls ziehe x von y ab und weise das Ergebnis y zu.

}

Wenn x gleich y ist

{

x bzw. y ist der größte gemeinsame Teiler.

}

Diesen Algorithmus gilt es nun, in einem C-Programm umzusetzen:

#include <stdio.h>

int main(void)

{

int x,y;

printf ("Wert fuer den Zaehler (x): ");

scanf ("%i", &x); // liest den Wert für x ein

printf ("Wert fuer den Nenner (y): ");

scanf ("%i", &y); // liest den Wert für y ein

printf ("\nDer ggT von %i und %i ist: ",x,y);

while (x != y)

{

if (x < y)

else

}

printf ("%i",x);

fflush(stdin); // Tastaturpuffer leeren

getchar();

return 0;

}

Erläuterungen zum Programmcode:

Mit der Bibliotheksfunktion scanf() kann man Werte von der Tastatur einlesen. Wie die Funktion printf() hat auch scanf() als erstes Argument einen Formatstring. Hier wird bestimmt, welcher Datentyp verarbeitet werden soll.

Da in diesem Beispiel ganze Zahlen eingelesen, verarbeitet und ausgegeben werden, wird als Formatelement %i für den Datentyp Integer benutzt. Das &-Zeichen vor der Variablen x bzw. y zeigt an, dass es sich hier um einen Adressoperator handelt. Mit einem Adressoperator greift man auf die Speicheradresse einer Variablen zu.