Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda –...
-
Upload
heinrike-arlinghaus -
Category
Documents
-
view
108 -
download
0
Transcript of Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda –...
Informatik IIGrundlagen der Programmierung
Programmieren in C
Erste Programme
Hochschule Fulda – FB ET
Sommersemester 2014
http://c-et.rz.hs-fulda.de
Peter Klingebiel, HS Fulda, DVZ
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
Trial and Error
• Programmieren in C: Trial and Error?
• Inspector Closeau - Der beste Mann bei Interpol
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3
C-Programm 1
• Ein C-Programm besteht (vereinfacht dargestellt) aus
Daten Funktionen• Daten
– Eingangsdaten Ergebnisdaten– evtl. (viele) Zwischendaten– Konstante Daten Werte unveränderbar– Variable Daten Werte veränderbar
• Funktionen verarbeiten die Daten
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
C-Programm 2
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
C-Programm 3
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
C-Programm 4
• Typischer Ablauf eines C-Programms
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7
C-Programm 5
• C-Programme bestehen aus Dateien in Verzeichnissen auf dem Rechner
• Der Quellcode befindet sich in C-Dateien– Reine Textdateien, keine Formatierung u.ä.– Bearbeitung mit einem Texteditor– Regel: Dateinamen ohne Umlaute, Leerzeichen,
Sonderzeichen– Empfehlung: Nur Kleinbuchstaben– Dateinamen endet auf .c– Beispiel: hallowelt.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8
C-Programm 6
• Beispielprogramm hallowelt.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9
C-Programm 7
• Kommentare– sollen Kode und Programm erläutern– mehrzeilige Kommentare mit /* */
geklammert– einzeilige Kommentare nach //
• Include-/Headerdateien– #include <stdio.h>– Preprozessor ersetzt die Zeile durch den Inhalt der
Datei stdio.h– Ggfs. mit Pfadnamen, z.B. bei eigenen Projekten– Mehr zum Preprozessor später
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10
C-Programm 8
• Jedes C-Programm hat eine main-Funktion– Hier startet die Programmausführung nach dem
Laden des Programms
• Aufruf einer Bibliotheksfunktion– printf("Hallo, Welt!\n");– zur Ausgabe der Zeichenkette auf der Konsole
• Exit-Status bei Programmende an das Betriebssystem bzw. an aufrufende Ebene– return(0);– Returncode des Programms ggfs. zur späteren
Auswertung (0 ok, 0 fehlerhaft)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
C-Programm 9
• Programm hallowelt auf der Konsole
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12
C-Bausteine 1
• Aus den "Grundbausteinen" von C ...
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13
C-Bausteine 2
• ... werden "Programme"
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
C-Bausteine 3
• Zeichensatz von C• Buchstaben (incl. Unterstrich)ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_
• Ziffern0123456789
• Semikolon (z.B. am Ende einer Anweisung);
• Punkt (Gleitpunktzahlen, Selektionsoperator).
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
C-Bausteine 4
• Sonderzeichen (Operatoren, Satzzeichen)( ) [ ] < > + - * / % ^ ~ & | = ! ? , :
• Anführungszeichen (Einzelzeichen, Strings)' "
• Blockklammern{ }
• Fluchtzeichen (für Sonderzeichen)\
• Doppelkreuz (Preprozessordirektiven)#
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16
C-Bausteine 5
• Reservierte Worte / Schlüsselworte
auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while
• C kennt nur 32 reservierte Worte
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17
C-Bausteine 6
• C-Programme verarbeiten Daten• Konstante Daten
– Werte sind unveränderbar
• Variable Daten– Werte sind im Programmlauf veränderbar
• Daten sind typisiert Datentypen• Datentypen bestimmen
– Darstellung der Werte im Rechner– Wertebereiche der Daten– benötigten Speicherplatz der Daten– zulässige Operationen auf den Daten
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
C-Bausteine 7
• Anweisungen– Statement, Ausdruck, "Kommando"– z.B. Variablendefinition int a;– z.B. Zuweisung a = 4711;– z.B. mathematischer Ausdruck a = a * 2;
• Funktionen– Unterprogramme, z.B. main()oder printf()– Kapselung von Funktionalität und internen Daten– Funktionen haben Typ und liefern einen Wert– kann auch ignoriert werden, z.B. bei printf() – Prozeduren = Funktionen ohne Rückgabewert
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19
C-Bausteine 8
• Vordefinierte Grunddatentypen in C
char Zeichen (ASCII-Kode, 8 Bit)int Ganzzahl (maschinenabhängig, meist 16 oder 32 Bit)float Gleitkommazahl (32 Bit, IEEE, etwa auf 6 Stellen genau)double doppelt genaue Gleitkommazahl (64 Bit, IEEE, etwa auf 12 Stellen genau)void ohne Wert (z.B. Zeiger)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
C-Bausteine 9
• Type-Modifier spezifizieren Grunddatentypen
short int, long int- legen Länge der Ganzzahl fest- maschinenabhängig, 16 Bit, 32 Bit - int kann auch fehlenlong double - Gleitkommazahl, erw. Genauigkeit- oft 128 Bit, IEEEsigned, unsigned - char/int mit/ohne Vorzeichen
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
C-Bausteine 10
• Bezeichner (Identifier) sind Namen für Variable, Konstanten, Funktionen, Typen
• Identifier müssen mit einem Buchstaben oder Unterstrich beginnen
• danach können Buchstaben, Unterstriche und Ziffern folgen
• Groß- und Kleinschreibung wird streng unterschieden
• keine Sonderzeichen (z.B. $ oder #)• keine reservierten Worte• Vorsicht bei vordefinierten Funktionsnamen
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Variablen 1
• Variable sind Platzhalter für Daten• haben einen festgelegten Speicherort,
an dem der aktuelle Wert gespeichert wird• der aktuelle Wert (an seinem Speicherort)
ist veränderbar• Attribute von Variablen:
– Datentyp– Namen (Bezeichner, Identifier)– Lebensdauer / Speicherklasse– evtl. initialer Wert– Sichtbarkeit (Scope) im Programm
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Variablen 2
• Variablen-Definitionen, z.B.double u;short int i, tab = 5;char *hallo = "Hallo, Welt!";
• Position im Programm:– außerhalb von Funktionen– am Anfang eines Blocks, also nach {
• Wert ist veränderbar (Zuweisung, Operation)• Programmstruktur Lebensdauer / Scope
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Wie speichert C? 1
• Hauptspeicher
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Wie speichert C? 2
• Beispiel: Zugriff auf Variable
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Wie speichert C? 3
• Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Wie speichert C? 4
• Programmstart und Aufruf von main()
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Wie speichert C? 5
• Zuweisung a = 4;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
Wie speichert C? 6
• Zuweisung b = 8;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
Wie speichert C? 7
• Berechnung a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31
Wie speichert C? 8
• Zuweisung c = a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32
Wie speichert C? 9
• Danach
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 33
Exkurs: Ausgabe 1
• Aufbau eines C-Programms mit Ausgabe
#include <stdio.h>
int main(){
int a, b, c;
a = 4711; b = 13; c = a * b;
printf("c = %d\n", c);return(0);
}
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34
Exkurs: Ausgabe 2
• Einfache zeichenweise Ausgabe mit putchar(),z.B.: int c = '!'; putchar(c); // Zeichen auf stdout
• Ausgaben zeilenweise mit puts(), z.B.: char *s = "Hallo, Welt!"; puts(s); // String auf stdout
• Formatierte Ausgabe mit printf(),z.B.:i int n = 123; char *s = " Studierende"; printf("%d %s", n, s);
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 35
Exkurs: Ausgabe 3
• Formatierte Ausgabe mit printf()• Aufruf: printf(fmt, arg1, arg2, ...)• printf()hat variable Anzahl Parameter• printf()konvertiert und gibt die Parameter
unter Kontrolle des Formatstrings aus• Der Formatstring fmt ist eine Zeichenkette• Parameter args können auch fehlen• Die Parameter args müssen den Typ haben,
wie er im Formatstring fmt angegeben ist
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36
Exkurs: Ausgabe 4
• Wichtige Formatzeichen (Platzhalter) für Ausgabewerte im printf()-Formatstring: %c Einzelzeichen char %d Ganzzahl int %ld Ganzzahl long int %f Gleitkommazahl float %lf Gleitkommazahl double %s Zeichenkette char [] / char *
• Beispiel: int n = 123; char *s = "Studierende"; printf("%d %s", n, s);
• Formatstring "%d %s" erfordert 2 Parameter, Typen (int, char *) müssen übereinstimmen!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37
Exkurs: Ausgabe 5
• Format erzwingt Anzahl +Typ der Parameter
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38
Exkurs: Ausgabe 6
• Was passiert, wenn Typ des Platzhalters und Typ des Parameters nicht übereinstimmen?
• Gefährlich! C erfordert Sorgfalt!• Wichtige Sonderzeichen im Formatstring
(und auch als Einzelzeichen) \n Newline, Zeilensprung \t Tabulator \0 EOS - Endezeichen in String \' einfaches Anführungszeichen ' \" doppeltes Anführungszeichen " \% Prozentzeichen % \\ Fluchtzeichen \
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39
C-Programmierumgebungen 1
• Übersetzung passiert in mehreren Schritten:• C-Quellkode editieren• C-Preprozessor macht reine Textoperationen
C-Compiler übersetzt C-Quelltext in maschinenabhängigen Assemblercode
• Assembler erzeugt noch nicht ausführbaren Maschinencode, sog. Objektcode
• Linker montiert Objektcode und Bibliotheks-funktionen zu ausführbarem Programm
• Debuggen zur Fehlersuche
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40
C-Programmierumgebungen 2
• Klassischer Weg– Editor– Compiler– Linker – Debugger
• System C-Compiler (z.B. auf Unix/Linux)• TinyC Compiler• MinGW (Minimalist GNU for Windows)• Cygwin• GNU Compiler Collection
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41
C-Programmierumgebungen 3
• Integrierte Entwicklungsumgebung IDE• fasst Editor, Compiler, Linker, Debugger unter
einer Oberfläche zusammen– Code::Blocks– Netbeans– Eclipse– Microsoft Visual Studio Express– Bloodshed Dev C/C++
• Workflow der Programmentwicklung wird "geschmeidiger"
• Projekte intuitiver formulierbar