Vorlesung 2: Programmieren mit C - FB2

Werbung
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
Vorlesung 2:
Programmieren mit C
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
URL zur Lehrveranstaltung
http://www.fbmnd.fh-frankfurt.de/~raimann
•
Dr. J. Raimann
Folien zur Vorlesung, Übungsaufgaben, ...
1
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
Dev C++
• Kostenlose C/C++-Entwicklungsumgebung
•
Download der aktuellen Version unter folgender URL
http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe
-> anschließend muss ein Mirror-Server für den Download ausgewählt
werden (z.B. Düsseldorf)
• siehe auch Website des Herstellers: http://www. bloodshed.net
• Es können auch andere Entwicklungsumgebungen verwendet werden,
wie z.B.
• MS Visual C++ (Express Edition) http:// www.microsoft.com/germany/express/product /visualcplusplusexpress.aspx
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Literatur
• Die Programmiersprache C, hrsg. von RRZN, Universität Hannover, KFA
(erhältlich bei H. Ünsal (Geb. 1, Raum 348), Kosten: 4,00 €)
Siehe dazu auch: http://www.fh-frankfurt.de/de/ fh_ffm/verwaltung_einrichtungen / abteilungen/
rechenzentrum/arbeitsbereiche/it_service_centre/rrzn_handbuecher .html
• Brian W. Kernighan/ Dennis M. Ritchie: "Programmieren in C", Hanser/Prentice
Hall, 1990
• J. Goll/U. Bröckl/M. Dausmann: C als erste Programmiersprache, Vom
Einsteiger zum Profi, 4. Aufl., Teubner, 2003
• H. Erlenkötter/V. Reher: Programmiersprache C: eine strukturierte Einführung,
rororo Taschenbuch
Im Internet
• J. Wolf: C von A bis Z, - Das umfassende Handbuch für Linux, Unix und
Windows; 2. aktualisierte und erweiterte Auflage 2006, zu finden unter
http://www.galileocomputing.de/openbook/c_von_a_bis_z/
• Diverse C-Einführungen im WWW
Dr. J. Raimann
2
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
"The only way to learn a new programming
language is by writing programs in it"
Brian W. Kernighan/Dennis M. Ritchie: The C Programming Language,
1978
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Unterscheidung der Programmiersprachen
• Maschinensprache (binäre Zeichenfolgen)
• Maschinennahe Sprache (Assembler, mit mnemotechnischen
Abkürzungen für die Binärfolgen)
• Höhere Programmiersprachen, z.B.
• Fortran, 1957
• Cobol, 1960
• Algol, 1960
• Basic, 1965
• PL/1, 1967
• Pascal, 1974
• C, ab 1972
• Ada, 1979
• Java, 1995
Dr. J. Raimann
3
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Schematischer Ablauf der Problemlösung mit dem Computer
Problem/
Aufgabenstellung
Nachdenken
Algorithmus
Programmieren
Programm in
höherer
Progr.sprache
Übersetzen
Programm in
Maschinensprache
Programmlauf
Problemlösung
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Von der Idee zum Programm
Summe zweier natürlicher
Zahlen a und b
Festlegung Algorithmus:
Computer lateinisch „computare“,
soviel wie „rechnen“
c=a+b
IDE =
Quelldatei (Source-File) erstellt mit Editor
Integrated
Development
Environment
Übersetzerprogramm (Compiler)
Assembler / Maschinensprache
LOAD a,%r0
LOAD b,%r1
Linker (Verbindung von fertigen Objekten)
ADD
%r0,%r1
STORE %r1,c
Software
Dr. J. Raimann
4
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Editieren – Kompilieren – Linken
• Programmieren bedeutet einen Algorithmus in einer definierten
Sprache zu beschreiben -> Editieren
• Geschriebene Programme müssen vor der Ausführung kompiliert,
d.h. in Maschinensprache übersetzt werden (Compiler).
• Zusätzlich werden häufig schon vorhandene Funktionen aus
Funktionsbibliotheken in das Programm eingebunden (Linker).
• Das Ergebnis des Linkens und Kompilierens ist eine .EXE-Datei in
Maschinensprache, die vom Prozessor abgearbeitet werden kann
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Hilfsmittel zur Beschreibung von Algorithmen
•
Umgangssprache
•
•
•
•
Pseudocode
Programmablaufplan
Datenflußplan
Struktogramm
Einlesen X
Einlesen Y
Wenn X > Y
Dann Z = X
Sonst Z = Y
Ausgabe Z
Der Motor M läuft solange die Tasten A und B gedrückt werden.
Dr. J. Raimann
5
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
Geschichte der Programmiersprache C (1)
• 1972 bis 1978: D. M. Ritchie, K.Thompson und B. W. Kernighan
(Bell Laboratories der Fa. AT & T) entwickeln die
Programmiersprache C parallel zu dem Betriebssystem Unix,
dessen wesentliche Teile in C geschrieben sind
• Zielsetzung: eine höhere Programmiersprache zu entwickeln, mit
der das Betriebssystem UNIX neu geschrieben und auf andere
Rechnertypen portiert werden konnte
• C sollte die strukturierte Programmierung unterstützen und
dennoch so schnell wie Assembler sein
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Geschichte der Programmiersprache C (2)
• Von ALGOL wurde die Möglichkeit der strukturierten
Programmierung für C übernommen. Hinsichtlich des
Zeigerkonzepts besteht eine gewisse Ähnlichkeit mit der von N.
Wirth entwickelten Programmiersprache Pascal.
• 1989: Standardisierung durch ANSI
• ab 1980: C++ als objektorientierte Erweiterung von C (B.
Stroustrup)
Dr. J. Raimann
6
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
Vorteile von C
• universell einsetzbar
• maschinennäher als die meisten anderen höheren Programmiersprachen
-> kompakte und schnelle Codes
• Nachteile von ASSEMBLER-Sprachen wurden vermieden
• Gute, schnelle und auch kostenfreie Compiler erhältlich
• Klar definierter Sprachstandard, weitgehend unabhängig von speziellen
Hardware-Konfigurationen und Betriebssystemen. C-Programme sind
daher in hohem Maße portabel.
• Große Anzahl von Operatoren ermöglicht eine effiziente und kompakte
Programmierung
• C erzwingt eine strukturierte Programmierung
• C enthält verhältnismäßig wenig Sprachelemente
• Umfangreiche Bibliotheken mit Standard-Funktionen verfügbar
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Nachteile von C
• C-Programme sind oft schwer lesbar
• C verführt zu trickreichem und undurchsichtigem Programmieren
• Es gibt in C viele Fallen (insbesondere im Zusammenhang mit Zeigern),
die zu unvorhergesehenen Nebenwirkungen und Fehlem führen können,
ohne dass der Compiler durch eine Fehlermeldung oder Warnung darauf
aufmerksam machen würde.
• Viele Fehler, z.B. Bereichsüberschreitungen bei der Indizierung von
Arrays, werden nicht vom Compiler abgefangen
• Fehlende strenge Typisierung von C ist nachteilig (strenge Typisierung
heißt: für einen definierten Datentyp sind nur definierte Operationen
zulässig)
Dr. J. Raimann
7
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Erstes C-Programm: Hello, World
#include <stdio.h>
/* Erstes C-Programm */
#include <stdlib.h>
int main (void)
{
printf ("HELLO, WORLD\n") ;
system("PAUSE");
return 0 ;
}
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Grundlegende Eigenschaften und Elemente von C
• Programmtext wird formatfrei eingegeben
• Programmzeilen werden mit Semikolon ; abgeschlossen
• Kommentare werden in /* ... */ eingeschlossen
• mit # beginnende Anweisungen sind sogenannte PräprozessorAnweisungen
• der Funktionskörper wird durch geschweifte Klammern { } begrenzt
• Die Funktion main, die jedes C-Programm besitzen muss, stellt das
Hauptprogramm dar
• Mit return kann ein Wert an das aufrufende Programm zurückgegeben
werden
• \n ist eine sogenannte ESC-Sequenz, die einen Zeilenvorschub erzeugt
Dr. J. Raimann
8
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
Grundlegende Eigenschaften und Elemente von C
• keine Unterscheidung von Funktionen und Prozeduren
• Unterscheidung von Groß-/Kleinschreibung
• Namen (Bezeichner) können Ziffern, Buchstaben und den Unterstrich _
enthalten, wobei jedoch das erste Zeichen keine Ziffer sein darf.
Zwischen Klein- und Großbuchstaben wird unterschieden. Namen dürfen
keine Schlüsselwörter enthalten, da diese als Sprachbestandteile von C
eine vordefinierte Bedeutung haben.
• C-Schlüsselwörter werden klein geschrieben
• der Befehl system ("PAUSE"); bewirkt, dass das Ausgabefenster bis
zum Drücken einer Taste stehen bleibt. Um system verwenden zu
können muss die Library stdlib.h in das Programm eingebunden
werden
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Die Ausgabe-Funktion printf (formatierte Ausgabe)
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("Der Befehl printf kann ");
printf("nicht nur Texte ausgeben \n");
printf("sondern auch rechnen:\n\n");
printf("Das Produkt von 13 * 7 ist %i \n", 13 * 7);
system("PAUSE");
}
%i = Formatangabe, fungiert als
Platzhalter; der Wert von 13*7 wird
hier eingesetzt und als Zahl formatiert
ausgegeben
Dr. J. Raimann
\n = Escape-Sequenz ->
Zeilenendezeichen (newline)
9
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
Ausgabe mit printf
•
Prototyp/Funktion ist definiert in stdio.h
•
Wichtige Formatanweisungen in Zeichenketten (Escape-Sequenzen):
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
C – Schlüsselwörter (1)
• auto
• break
Speicherklassenbezeichner
Zum Herausspringen aus Schleifen oder
der switch-Anweisung
• case
Auswahl-Fall in switch-Anweisung
• char
Typ-Bezeichner
• const
Attribut für Typangabe
• continue
Fortsetzungsanweisung
• default
Standardeinsprungmarke in switchAnweisung
• do
Teil einer Schleifen-Anweisung
• double
Typ-Bezeichner
• else
Dr. J. Raimann
Teil einer Einfach- oder
Mehrfachalternative
10
Fachhochschule Frankfurt am Main
FB 2
Fachhochschule Frankfurt am Main
FB 2
Höhere Programmiersprache
SS 2008
Modul 12: Höhere Programmiersprache
SS 2008
C – Schlüsselwörter (2)
• enum
Aufzählungstyp-Bezeichner
• extern
Speicherklassenbezeichner
• float
Typ-Bezeichner
• for
Schleifenanweisung
• goto
Sprunganweisung
• if
Teil einer Alternative oder bedingten
Anweisung
• int
Typ-Bezeichner
• long
Typ-Modifizierer bzw. Typ-Bezeichner
• register
Speicherklassen-Bezeichner
• return
Rücksprung-Anweisung
• short
Typ-Modifizierer bzw. Typ-Bezeichner
Fachhochschule Frankfurt am Main
FB 2
Modul 12: Höhere Programmiersprache
SS 2008
C – Schlüsselwörter (3)
• signed
Typ-Modifizierer bzw. Typ-Bezeichner
• sizeof
Operator zur Bestimmung der Größe von
Variablen
Dr. J. Raimann
• static
Speicherklassenbezeichner
• struct
Strukturvereinbarung
• switch
Auswahlanweisung
• typedef
Typnamenvereinbarung
• union
Datenstruktur mit Alternativen
• unsigned
Typ-Modifizierer bzw. Typ-Bezeichner
• void
Typ-Bezeichner
• volatile
Attribut für Typangabe
• while
Schleifenanweisung
11
Herunterladen