Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7 Seminare / Praktikum M1/C1 : Mathe 13:15-14:45, C-Kurs 15:15-16:45h M2/C2 : C-Kurs 13:15-14:45, Mathe 15:15-16:45h M* Gruppe A, Raum S015 M* Gruppe B, Raum S211 M* Gruppe C, Raum S213 M* Gruppe D, Raum S215 C* Gruppe A, Raum A412 C* Gruppe B, Raum A410 C* Gruppe C, Raum A414 C* Gruppe D, Raum P401 Jörn Hoffmann C-Kurs Folie 1
C Kurs 2013 Dipl. Inf. Jörn Hoffmann jhoffmann@informatik.uni leipzig.de Universität Leipzig Technische Informatik
Fragen? Wozu programmieren? Warum gerade C? Was werde ich lernen? Wah, das werde ich nie können! Jörn Hoffmann C-Kurs Folie 3
Wozu Programmieren? Einstiegssprache Systemnaheprog. Eingebettete Systeme Automotive Spiele C-Programmierung Jörn Hoffmann C-Kurs Folie 4
Warum C? 09/2013 Sprache % +/- 1. C 17,0-2,3 2. Java 16,1-0,1 3. C++ 8,7-0,5 4. Objective-C 8,5-1,2 5. PHP 6,4 +0,8 6. C# 5,5-1,0 Tiobe Programming Index http://www.tiobe.com Jörn Hoffmann C-Kurs Folie 5
Warum C? Sonstige 38% C, C++, Obj-C 34% C# 6% PHP 6% Java 16% Jörn Hoffmann C-Kurs Folie 6
Was werde ich lernen? Theorie Syntax Sprachelemente Konzepte Praxis Umgang Moderne Anwendung Erprobte Methoden Hintergründe Verständnis Zusammenhänge Jörn Hoffmann C-Kurs Folie 7
Was kann ich noch lernen? Technische Informatik BIS Enterprise- Systems Parallelverarbeitung C / C++ C#, Java Visualisierung Verteilte Systeme Datenbanken Jörn Hoffmann C-Kurs Folie 8
Wah, das werde ich nie können! Vorlesung Praktikum Selbststudium C-Guru Jörn Hoffmann C-Kurs Folie 9
Wah, das werde ich nie können! C Die Programmiersprache C. Ein Nachschlagewerk RRZN Bücher, 18. Auflage 3,60 (2013) http://www.unileipzig.de/~boesze/softwarehandbuecher.ph p The C Programming Language Standartwerk Kernigham & Ritchie ISBN 978-0131103627 Jörn Hoffmann C-Kurs Folie 10
Programmiersprache C Merkmale Imperative bzw. Prozedurale Sprache Strukturierte Programmierung Vollständig Typisiert Einsatz Anwendungs- und Systemprogrammierung Betriebssystemunabhängig Von µc bis Superrechner Väter von C und Unix Dennis Ritchie (r.) Ken Thompson (l.) Besonderheiten Wenige Schlüsselwörter Direkte Speicherzugriffe Einfache Portierbarkeit der Programme Jörn Hoffmann C-Kurs Folie 11
Programmiersprache C Sprache der Programmierer Anwendungsprogramme und Systemprogrammierung Vereint Vorteile höherer Sprachen mit Vorzügen der maschinennahen Programmierung. Jörn Hoffmann C-Kurs Folie 12
Grundlagen Was ist eine Programmiersprache? Formale Sprache Formulierung von Datenstrukturen und Algorithmen Syntax und Semantik Computer Verarbeitung von Daten Abarbeitung einer endlichen Rechenvorschrift EVA-Prinzip Eingabe Verarbeitung Ausgabe Jörn Hoffmann C-Kurs Folie 13
ZRA 1 Jörn Hoffmann C-Kurs Folie 14
Module Quelldatei.c Headerdatei.h Funktionen Deklaration u. Definition Block Anweisungen Ausdruck Kontrollstrukturen Zuweisungen // main.c #include <stdio.h> Programmaufbau (informativ) int main() { printf( Hello World! ); return 0; } Typen Basis Datentypen Abgeleitete Datentypen Jörn Hoffmann C-Kurs Folie 15
Programmaufbau (formell) Prä prozessor Direktiven Globale Deklarationen Typ funktion_1(... ) Typ funktion_2(... )... Typ funktion_n(... ) int main(... ) { Lokale Deklarationen Anweisungsfolge } Typ funktion_1(... ) { Lokale Deklarationen Anweisungsfolge }... Jörn Hoffmann C-Kurs Folie 16
I. Editieren Vom Programtext zum ausführbaren Programm Quelldatei modul.c II. Übersetzen - Präprozessor - Compiler - Assembler Objektdatei modul.o Bibliothek Bibliothek Bibliothek lib1.so lib1.so lib1.so III. Binden Programm a.out IV. Ausführen Komandozeile $./a.out Jörn Hoffmann C-Kurs Folie 17
Befehle hallo.c $ gedit hallo.c & $ gcc Wall hallo.c -o hallo $./hallo Jörn Hoffmann C-Kurs Folie 18