Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda –...

41
Informatik II Grundlagen 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

Transcript of Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda –...

Page 1: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 2: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 3: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 4: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4

C-Programm 2

Page 5: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5

C-Programm 3

Page 6: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6

C-Programm 4

• Typischer Ablauf eines C-Programms

Page 7: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 8: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8

C-Programm 6

• Beispielprogramm hallowelt.c

Page 9: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 10: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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)

Page 11: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 12: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12

C-Bausteine 1

• Aus den "Grundbausteinen" von C ...

Page 13: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13

C-Bausteine 2

• ... werden "Programme"

Page 14: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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).

Page 15: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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)#

Page 16: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 17: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 18: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 19: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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)

Page 20: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 21: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 22: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 23: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 24: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24

Wie speichert C? 1

• Hauptspeicher

Page 25: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25

Wie speichert C? 2

• Beispiel: Zugriff auf Variable

Page 26: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26

Wie speichert C? 3

• Vor Programmstart

Page 27: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27

Wie speichert C? 4

• Programmstart und Aufruf von main()

Page 28: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28

Wie speichert C? 5

• Zuweisung a = 4;

Page 29: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29

Wie speichert C? 6

• Zuweisung b = 8;

Page 30: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30

Wie speichert C? 7

• Berechnung a * b;

Page 31: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31

Wie speichert C? 8

• Zuweisung c = a * b;

Page 32: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32

Wie speichert C? 9

• Danach

Page 33: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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);

}

Page 34: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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);

Page 35: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 36: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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!

Page 37: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37

Exkurs: Ausgabe 5

• Format erzwingt Anzahl +Typ der Parameter

Page 38: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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 \

Page 39: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 40: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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

Page 41: Informatik II Grundlagen der Programmierung Programmieren in C Erste Programme Hochschule Fulda – FB ET Sommersemester 2014 .

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