informatik ii grundlagen der programmierung programmieren in c erste programme hochschule fulda –...

Post on 06-Apr-2015

109 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related