Einführung in die Programmierung in C Organisatorisches DPS

Werbung
Organisatorisches
Wenn Sie kommen ...
... kommen Sie pünktlich
Einführung in die Programmierung in C
Hochschule Regensburg
13.03.2012.-13.07.2012
Universitätsstraße 31, 93053 Regensburg
Aus Respekt vor Ihren Mitstudierenden, während der Vorlesung ...
... keine Gespräche
... keine Telefonate
... bringen Sie sich adäquat ein
Prof. Dr. Jan Dünnweber
... Rück- und Zwischenfragen: Gerne!
Kontakt
http://dps.hs-regensburg.de
[email protected]
Sprechstunde, i.d.R. Freitags 11:30-12:30, sonst nach Vereinbarung
Prof. Dr. Jan Dünnweber, Folie 2 von 20
DPS-Homepage (Distributed and Parallel Systems)
Programmierung 1
In medias res: Unix und C
Warum eigentlich Unix?
Unix Varianten (FreeBSD, OpenBSD, NetBSD, Linux, . . . )
für jede gängige Hardware-Architektur kostenlos erhältlich
Kostenlose Compiler, Debugger, IDEs, . . . (GNU Software, fsf.org)
Der komplette Quell-Code des Systems ist verfügbar
... und Warum C?
Relativ alte Sprache (erste Version 1971) aber im Bereich der
Systemprogrammierung noch immer die Sprache der Wahl
C ist kompakt, transparent, maschinennah und hoch-performant
C ist nicht objekt-orientiert, high-level, plattformunabhängig
C ist eine optimale Grundlage für das Erlernen von C++, Java, etc.
Standardwerk zu C:
Brian W. Kernighan, Dennis M. Ritchie
Programmieren in C
2. Auflage, Hanser Verlag, 1990
http://dps.hs-regensburg.de
ISBN: 3-446-15492-3
Prof. Dr. Jan Dünnweber, Folie 3 von 20
Programmierung 1
Prof. Dr. Jan Dünnweber, Folie 4 von 20
Programmierung 1
Literatur
Werkzeuge für die C-Programmierung
C.L. Tondo und S. E. Gimpel, Das C-Lösungsbuch zu K&R 1989
ISBN 3-446-15946-0
M. McGrath, C Programming in easy steps, 2.te Auflage, 2006
ISBN 1-84078-323-0
Jürgen Wolf, C von A bis Z, 1200 Seiten, 2009
ISBN 978-3836214117
Jürgen Wolf, Grundkurs C, 9,90 EUR, 2010
ISBN 978-3836215466
P. Prinz und T. Crawford, C in a Nutshell, 2006
ISBN 978-0-596-00697-6
Steve Oualline, Practical C Programming, 1997
ISBN 978-1-56592-306-5
H. Erlenkötter, Programmieren in C, 4.te Auflage 2001
ISBN 3-499-60074-9, 12 EUR
Von Studenten empfohlen: “grünes Buch” ...
Prof. Dr. Jan Dünnweber, Folie 5 von 20
Programmierung 1
Editor, Compiler, IDE, etc.
Alle Übungen lassen sich auch von zu Hause aus bearbeiten.
Es werden nur OpenSource Werkzeuge verwendet
Als Entwicklungsumgebung dient die Eclipse IDE
◮
◮
Einheitliche Umgebung für Java und C
Minimierter einmaliger Lernaufwand
Alternativ könenn (für die ersten Übungen) auch nur die
rudimentären UNIX-Tools (vi & emacs) verwendet werden.
Auch diese werden in der Vorlesung behandelt
Der OpenSource gcc Compiler kann auch unter Windows,
nach der Installation von Cygwin oder MinGW benutzt werden
Prof. Dr. Jan Dünnweber, Folie 6 von 20
Alle Schlüsselwörter von C
Programmierung 1
C in einem Semester
In der folgenden Tabelle sind alle
Schlüsselwörter von ANSI C aufgelistet:
auto
break
case
char
continue default
do
double
enum
extern
float
for
if
int
long
register
short
signed sizeof
static
switch
typedef union unsigned
volatile
while
Um zügig in die Programmierung einzusteigen, wird die Verwendung
einzelner Befehle und Konzepte vorweg genommen (z. B. I/O),
bevor die Grundlagen systematisch eingeführt werden
const
else
goto
return
struct
void
Fundamentale Konzepte (z. B. Adress- und Speicherverwaltung)
werden wir mehrfach besprechen
Zur Kontrolle des eigenen Lernfortschritts ist v. a. die eigenständige
Bearbeitung der Übungsaufgaben nötig
In der Vorlesung werden wir den meisten Schlüsselwörtern
wieder “begegnen”
(nicht allen: z. B. goto nicht, da die Verwendung schnell zu schlechtem
Programmierstil “verführt”, ⇒ Edsger Dijkstras Artikel in ACM 3/68:
Go To Statement Considered Harmful)
Wir wollen das Ziel im Auge behalten
daher Schnellkurs aber kein Crash-Kurs
Prof. Dr. Jan Dünnweber, Folie 7 von 20
Programmierung 1
Prof. Dr. Jan Dünnweber, Folie 8 von 20
Programmierung 1
Agenda
Kurze Historie von C
Anfang der siebziger Jahre von Kernighan und Ritchie
für UNIX entwickelt
Inhalte der Vorlesung
C ist eine sehr systemnahe Sprache, die es ermöglicht
(fast) ohne Assembler auszukommen
ANSI C wurde 1988 standardisiert und existiert für
nahezu alle Betriebssysteme.
Elementare Einführung
C Programm Syntax
Datentypen, Variablen und Konstanten
Operatoren und Ausdrücke, Kontrollstrukturen
1983 wurde die objektorientierte Erweiterung C++ von
Bjarne Stroustrup in den Bell Laboratorien entwickelt
Viele Sprachen wie z. B. Java, Objective C, Perl, PHP etc. besitzen
eine C ähnliche Syntax und sind mit C Kenntnissen leicht zu
erlernen:
Man muss sich nur noch die objektorientierten
Paradigma aneignen
Funktionen und Programmstruktur
Zeiger, Felder und Strukturen
Ein- / Ausgabe und weitere Bibliotheksfunktionen
Prof. Dr. Jan Dünnweber, Folie 9 von 20
Programmierung 1
Prof. Dr. Jan Dünnweber, Folie 10 von 20
90s
Die wichtigsten Programmiersprachen
Java
Programmierung 1
Prinzipien der C-Programmierung
Ein Programm besteht aus einer Menge von Anweisungen
für den Computer
Delphi
Oberon
C++
Ada
ML
Modula
C
Prolog
Smalltalk
Pascal
BCPL
SIMULA
60s
PL360
LISP
50s
COBOL
Prof. Dr. Jan Dünnweber, Folie 11 von 20
PL/1
ALGOL 68
Basic
ALGOL
Assembler
Programmierung 1
Fortran
In den höheren Programmiersprachen sind diese Anweisungen in
einer dem Menschen verständlichen, lesbaren Form notiert, dem
sogenannten Quelltext ( Sourcecode)
Dieser besteht aus einer Folge von Zeichen:
◮ Den Buchstaben a-z, A-Z sowie dem Unterstrich
◮ Den Ziffern 0-9
◮ Sonderzeichen und dem Leerzeichen
Die Syntax der Sprache bestimmt die erlaubten Ausdrücke, die
verwendet werden dürfen
Prof. Dr. Jan Dünnweber, Folie 12 von 20
Programmierung 1
Aufbau von C Programmen
Primitive Datentypen
C-Programme bestehen aus Ausdrücken.
(i. e. ;-terminated expressions)
Beispiel:
int x; /* Eine Variable x wird deklariert */
x = 2 + 3; /* Der Variableninhalt wird
als 2+3=5 definiert */
Anweisungen können zu Blöcken zusammengefasst werden, die
durch geschweifte Klammern
eingeleitet und beendet werden.
Beispiel:
if(x>4)
/* Nur wenn x größer ist als 4 ... */
y = 2;
/* ... wird der Block ausgeführt
*/
Übung: Machen Sie sich anhand der Referenz
http://sourceware.org/gdb/current/onlinedocs/gdb
mit dem GNU-Debugger vertraut, analysieren Sie einfache
Beispiele von http://www.c.happycodings.com
Prof. Dr. Jan Dünnweber, Folie 13 von 20
Programmierung 1
Anweisungen und Ausdrücke
Bevor eine Variable verwendet wird, muss diese deklariert
werden, d. h. Typ und Name werden vereinbart
Beispiel:
int g; /* g ist eine ganze Zahl */
float r; /* r ist eine rationale Zahl */
char z; /* z ist eine einzelnes Zeichen */
Die Bezeichner (≈ Namen) g, r, z sind willkürlich gewählt
Den deklarierten Primitiven wird zur Laufzeit automatisch der
entsprechende Speicherplatz zugewiesen
Prof. Dr. Jan Dünnweber, Folie 14 von 20
Programmierung 1
Ein erstes Programm
Anweisungen (instructions) werden in C zu Ausdrücken
(expressions) zusammengefasst
Ein Ausdruck wird immer durch ein Semikolon beendet, z. B.
zpi = 2 * 3.14;
Dieser Ausdruck bedeutet: Multipliziere die Zahl 2 mit der Zahl 3.14
und weise das Ergebnis einer Variablen mit dem symbolischen
Namen “zpi” zu
Zuerst wird die rechte Seite des Satzes (Anweisung Multipliziere)
anschließend die linke Seite des Satzes (Anweisung Wertzuweisung
des Ergebnisses an “zpi” ausgeführt
Prof. Dr. Jan Dünnweber, Folie 15 von 20
C stellt verschiedene primitive Datentypen bereit,
z. B. ganze Zahlen (int), rationale Zahlen (float) und einzelne
Zeichen (char)
Programmierung 1
Testausgabe auf dem Bildschirm
Jedes C Programm besitzt eine main Funktion, die vom
Betriebssystem beim Programmstart aufgerufen wird
Die main Funktion gibt nach der Abarbeitung an das
Betriebssystem einen Rückgabewert zurück, der signalisiert,
ob der Aufruf erfolgreich war (return 0) oder nicht
(return −1 bzw. Fehlercode)
#include <stdio.h>
int main(int argc, char ∗∗argv) {
printf("Studieren ist toll!\n");
return 0;
}
Prof. Dr. Jan Dünnweber, Folie 16 von 20
/∗ Hello World ∗/
Programmierung 1
Bestandteile des C-“Klassikers” Hello World
/∗ Der C Klassiker∗/
#include <stdio.h>
/∗ Standard I/O Deklarationen einbinden∗/
/∗ main−Funktion ist der C Einstiegspunkt ∗/
int main(int argc, char ∗∗argv) {
/∗ Hello World per Funktion printf ausgeben ∗/
printf("Hello World!\n");
/∗ Das Programm mit return Wert 0 beenden ∗/
return 0;
}
Die main Funktion gibt die Zeichenkette “Hello Word” mit der
Bibliotheksfunktion printf aus
Die Funktion printf wird in der Datei stdio.h deklariert und per
include Anweisung bekannt gemacht
Was haben wir gelernt?
Zusammenfassung
C ist eine “alte” aber immer noch moderne Programmiersprache
C ist den Hochsprachen zuzurechenen, d. h. C muss vor der
Ausführung in Assembler übersetzt werden
Es gibt wenige Schlüsselwörter aber mächtige Kontrollstrukturen
Werkzeuge sind frei verfügbar (www.gnu.org)
Der sichere Umgang mit Variablen und Kontrollstrukturen, wie
Zuweisungen, Schleifen, Bedingungen usw. erfordern v. a.
viel Übung ..
Mit /* ... */ werden Kommentare im Quelltext markiert
Prof. Dr. Jan Dünnweber, Folie 17 von 20
Programmierung 1
Prof. Dr. Jan Dünnweber, Folie 18 von 20
Programmierung 1
Zugehörige Unterlagen
Herunterladen