Modulare Programmierung und Bibliotheken



Ähnliche Dokumente
Propädeutikum. Dipl.-Inf. Frank Güttler

Programmentwicklung mit C++ (unter Unix/Linux)

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Einführung in die C-Programmierung

Einführung in die Programmierung

Compiler und Präprozessor (1) Erstellen eines Projektes

Deklarationen in C. Prof. Dr. Margarita Esponda

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Projektverwaltung Problem Lösung: Modulare Programmierung

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

DLLs (dynamic loaded libraries) mit MingW erstellen

Zählen von Objekten einer bestimmten Klasse

Einführung in die C++ Programmierung für Ingenieure

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Objektorientierte Programmierung

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

1. Übung zu "Numerik partieller Differentialgleichungen"

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Eine Einführung in C-Funktionen

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Inhaltsverzeichnis. Vorwort...XIII. Aufbau des Buches...

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Dr. Monika Meiler. Inhalt

Vorkurs C++ Programmierung

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Objektbasierte Entwicklung

1 Vom Problem zum Programm

Einführung in die Java- Programmierung

Windows Explorer Das unbekannte Tool. Compi-Treff vom 19. September 2014 Thomas Sigg

Informationen zur Verwendung von Visual Studio und cmake

Die Programmiersprache C99: Zusammenfassung

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Einführung in die Informatik Tools

Testen mit JUnit. Motivation

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Programmierung mit NQC: Kommunikation zwischen zwei RCX

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Die Programmiersprache C

Import und Export von Übergängern

Innere Klassen in Java

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Unified Communication Client Installation Guide

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Objektorientiertes Programmieren mit Suse Linux

Anleitung. Lesezugriff auf die App CHARLY Termine unter Android Stand:

Informatik Repetitorium SS Volker Jaedicke

2010 Ing. Punzenberger COPA-DATA GmbH. Alle Rechte vorbehalten.

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Einführung in die Programmierung

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.

egovernment für das Open Source CMS Contao

ecaros2 - Accountmanager

Einführung in wxwidgets & wxdev-c++

Objektorientierte Programmierung für Anfänger am Beispiel PHP

D a s P r i n z i p V o r s p r u n g. Anleitung. - & SMS-Versand mit SSL (ab CHARLY 8.11 Windows)

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Arbeiten mit UMLed und Delphi

Grafische Benutzerschnittstellen in C++ mit GTKmm Betriebssystemunabhängig gestalten 1. WILLKOMMEN IN DER WELT VON GTK+

Kurzanleitung zu XML2DB

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Java Einführung Packages

Grundlagen. Kapitel 1

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Einführung in die Programmierung (EPR)

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Tutorium Rechnerorganisation

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

Übersicht. C Modularisierung. Präprozessor, Compiler, Linker. Präprozessor, Compiler, Linker. Präprozessor, Compiler und und Linker Linker

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Softwarepraktikum: Einführung in gcc / g++

2. Semester, 2. Prüfung, Lösung

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Sudoku-Informatik oder wie man als Informatiker Logikrätsel löst

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Print2CAD 2017, 8th Generation. Netzwerkversionen

Anleitung zum Prüfen von WebDAV

IPETRONIK TESTdrive SDK V02.00

FastGov Die Verwaltung beschleunigen. Antragsbearbeitung. 10. November Prof. Dr. rer. pol. Reza Asghari

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Einführung in Javadoc

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Transkript:

Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25

Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung Modulare Programmierung Allgemeines Module in C - Vorwort Module in C - Umsetzung Bibliotheken Einführung Übersicht über wichtige Bibliotheken Anwendungsbeispiel in C Zusammenfassung Quellen Ludwig Eisenblätter 2 von 25

Motivation Warum modulare Programmierung? Hohe Komplexität und großer Umfang von Softwareprojekten Erweiterung der imperativen Programmierung Aufteilung eines Projekts in logische Teilblöcke Wiederbenutzung von Code Nutzung von Bibliotheken Ludwig Eisenblätter 3 von 25 Motivation

Modulare Programmierung - Allgemeines Modularisierung von Software Obere Abstraktionsebene (Programmierung im Großen) Gestaltung und Anordnung von Modulen Definition und Zusammenführung von Programmeinheiten Interaktion von Modulen Untere Abstraktionsebene (Programmierung im Kleinen) Steueranweisungen Funktionale Abstraktion Datenabstraktion (Datenstrukturen) Ludwig Eisenblätter 4 von 25 Module Allg.

Modulare Programmierung - Allgemeines Definition eines Moduls Ein Modul ist eine abgeschlossene funktionale Einheit einer Software, bestehend aus einer Folge von Verarbeitungsschritten und Datenstrukturen. Inhalt eines Moduls ist häufig eine wiederkehrende Berechnung oder Bearbeitung von Daten, die mehrfach durchgeführt werden muss. (Wikipedia) Ludwig Eisenblätter 5 von 25 Module Allg.

Modulare Programmierung - Allgemeines Eigenschaften von Modulen Module bieten eine Trennung von Schnittstelle und Implementation (Kapselung): Schnittstelle definiert die Datenelemente für die Eingabe und Ausgabe Die Implementierung enthält den eigentlichen Programmcode Module können geschachtelt werden (Aufrufhierarchie) Vermeidung von redundantem Code Strukturierung von großen Softwareprojekten Verteilung von Programmierteams auf Module Ludwig Eisenblätter 6 von 25 Module Allg.

Modulare Programmierung Module in C Abgrenzung zur Objektorientierten Programmierung Modularisierung ist keine Objektorientierung Module bieten z.b. keine Vererbung / Polymorphie Die Glib führt Objektorientierung in C ein Zusätzlich auch andere Funktionen: Komplexe Datenstrukturen Threads Zeitfunktionen Speicherzugriffe u.vm. Details in entsprechendem Vortrag Ludwig Eisenblätter 7 von 25 Module C

Modulare Programmierung Module in C Vorwort: Deklaration / Definition Deklaration Definition char c; int i,j,k; double x,y,z; double func(double x); extern int a,b,c; Definition der Funktionen bzw. Variablen Ludwig Eisenblätter 8 von 25 Module C

Modulare Programmierung Module in C Vorwort: Geltungsbereich von Variablen und Funktionen geltungsbereich.c int i,j,k; double x,y,z; Externe Variablen (in Datei verfügbar) void func(); Funktionsprototyp (immer global verfügbar) extern int a,b,c; int main() { return 0; } void func() { int r = 0; Static int i = 0; } Externe Variablen (über Datei hinaus verfügbar) a,b,c sind hier nur deklariert, nicht definiert! Funktionsdefinition Interne Variable (in Funktion bzw. Block) Statische Variable (bleibt auch nach Funktionsaufruf bestehen) Ludwig Eisenblätter 9 von 25 Module C

Modulare Programmierung Module in C Umsetzung von Modulen in C Header-Datei.h Deklarationen, (ggf. Definitionen) Benutzungsschnittstelle Implementations-Datei.c Implementierung Modul (logische Einheit) #include "Header-Datei.h" Einbinden eines Moduls möglich über die #include Anweisung per Header-Datei Ludwig Eisenblätter 10 von 25 Module C

Modulare Programmierung Module in C Einbinden von Modulen über bedingtes Include Modul-1.h #ifndef _M1_H #define _M1_H Programm.c #include <stdio.h> #include "Module/Modul-1.h" #include "Module/Modul-2.h" void func1(); extern int a; #endif Modul-2.h #ifndef _M2_H #define _M2_H void func2(); extern int b; #endif Ludwig Eisenblätter 11 von 25 Module C

Modulare Programmierung Module in C Exkurs: Übersetzungseinheiten (Compilation units) Quelldateien (units, source files) preprocessing translation unit Präprozessor Übersetzungseinheit (translation unit) Übersetzer (Compiler) Objektdateien Objektdateien werden weiter verarbeitet / gelinkt Modul Ludwig Eisenblätter 12 von 25 Module C

Modulare Programmierung Module in C Kompilieren von Programmen mit Modulen Verschiedene Möglichkeiten: Manuelles Kompilieren & Linken, z.b. mit gcc: gcc -c modul-1.c gcc -c hauptprogramm.c gcc -o Hauptprogramm modul-1.o hauptprogramm.o Verwaltung und Kompilieren durch Makefiles Intelligente Systeme zur Verwaltung z.b. waf (http://code.google.com/p/waf/) Automatisches Build (inkl. Abhängigkeitsprüfung) durch IDE's z.b. Eclipse Ludwig Eisenblätter 13 von 25 Module C

Modulare Programmierung Module & Bibliotheken Module & Bibliotheken Bibliotheken werden wie Module eingebunden Für die #include Anweisung gilt: #include <stdio.h> #include <eigenebibliothek.h> #include <glib.h> Der Compiler sucht Bibliotheken im Standard-Pfad Per Parameter können andere Suchpfade angegeben werden (siehe späteres Beispiel) Ludwig Eisenblätter 14 von 25 Module & Bibliotheken

Motivation Modulare Programmierung Bibliotheken Geringer Funktionsumfang von C Nutzung der Funktionen der C-Standardbibliothek Nutzung von eigenen Bibliotheken Zentralisierung von Code Dadurch leichtere Wartbarkeit + (Sicherheits-) Updates Große Menge an bestehenden Bibliotheken für verschiedenste Anwendungsbereiche Ludwig Eisenblätter 15 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Populäre Bibliotheken glibc (GNU C Bibliothek, Implementierung der Std.-Bib.) gtk+ (GIMP Toolkit) GLib (Gnome Library) NAG C Library (Numerische Bibliothek) Libwww (Web-API) bzw. libcurl Ludwig Eisenblätter 16 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C - Grundaufbau Proseminar.c Bibliothek Proseminar libproseminar.h Bibliothek GLib libproseminar.c libproseminar.a Ludwig Eisenblätter 17 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C Code libproseminar.c #include <glib.h> #include <glib/gprintf.h> void demo() { g_printf( Benutzen der Glib Funktion g_printf() \n ); } Eigene Bibliothek nutzt Funktionen der GLib Zum Kompilieren muss die GLib eingebunden werden Ludwig Eisenblätter 18 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C Übersetzen der Bibliothek Einfaches Übersetzen per gcc funktioniert nicht: gcc -o libproseminar.o libproseminar.c libproseminar.c:1:18: fatal error: glib.h: Datei oder Verzeichnis nicht gefunden compilation terminated. Per Parameter muss die Library und der Include Pfad gesetzt werden Gängiges Tool: pkg-config Ludwig Eisenblätter 19 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Exkurs: pkg-config Tool zum Bereitstellen von Compiler- & Linker-Parametern Steht neben Unix z.b. auch für Windows zur Verfügung Wichtigste Befehle: pkg-config --list-all pkg-config --libs Bibliothek pkg-config --cflags Bibliothek pkg-config --help Ludwig Eisenblätter 20 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C Übersetzen der Bibliothek Übersetzen mit Hilfe von pkg-config gcc -c -o libproseminar.o libproseminar.c `pkg-config --cflags glib-2.0` Erzeugt die Objektdatei der Bibliothek Die Objektdatei kann dann in ein vorkompiliertes Archiv gewandelt werden (Statische Bibliothek): ar -rcs libproseminar.a libproseminar.o Ludwig Eisenblätter 21 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C Übersetzen des Programms Quellcode von Proseminar.c #include <libproseminar.h> int main(void) { demo(); return 0; } Übersetzen mit Hilfe von pkg-config gcc -o Proseminar Proseminar.c -lproseminar -I. -L. `pkg-config --libs glib-2.0` Ausgabe nach dem Übersetzen: ludwig@ludwig-pc:~/cprog/proseminar$./proseminar Benutzen der GLib Funktion g_printf() Ludwig Eisenblätter 22 von 25 Bibliotheken

Modulare Programmierung Bibliotheken Anwendungsbeispiel in C Übersetzen des Programms Übersetzen mit Hilfe von pkg-config gcc -o Proseminar Proseminar.c -lproseminar -I. -L. `pkg-config --libs glib-2.0` Hinweise zu den Parametern: -lbibliothek : Gibt die einzubindende Bibliothek an -I. : Fügt das aktuelle Verzeichnis als Include-Verz. hinzu -L. : Fügt das aktuelle Verzeichnis als Standard-Such-Pfad hinzu `pkg-config...` : Fügt die Ausgabe von pkg-config als Parameter hinzu Ludwig Eisenblätter 23 von 25 Bibliotheken

Fazit Modulare Programmierung Fazit Nutzung von Modulen und Bibliotheken ist gängige Praxis Leichtere Wartbarkeit / Wiederverwendung von Code Beim Übersetzen von Programmen mit Bibliotheken hilft pkg-config Probleme beim Übersetzen liegen i.d.r. an falschen Pfadangaben des Compilers IDE's oder ähnliche Tools helfen beim Verwalten Ludwig Eisenblätter 24 von 25 Fazit

Modulare Programmierung Quellen Helmke, Isernhagen - Softwaretechnik in C und C++, Hanser-Verlag, 2001 http://de.wikipedia.org/wiki/gtk%2b http://de.wikipedia.org/wiki/glibc http://code.google.com/p/waf/ http://de.wikipedia.org/wiki/glib http://pronix.linuxdelta.de/c/gtk/gtk_c_kurs_kapitel2.shtml http://www.programmerworld.net/resources/c_library.htm http://developer.gnome.org/glib http://linux.die.net/man/1/pkg-config Ludwig Eisenblätter 25 von 25 Quellen