2. Programmierung in C

Ähnliche Dokumente
2. Programmierung in C

Inhalt. 4.7 Funktionen

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

2. Programmierung in C

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

2. Programmierung in C

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Programmierung mit C Zeiger

2. Programmierung in C

Vorkurs C++ Programmierung

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Deklarationen in C. Prof. Dr. Margarita Esponda

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Programmieren in C / C++ Grundlagen C 4

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

2. Programmierung in C

Die Programmiersprache C

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Elementare Datentypen in C++

Welche Informatik-Kenntnisse bringen Sie mit?

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

Grundlagen der Programmierung in C Funktionen

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Einführung in die C-Programmierung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

2. Programmierung in C

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Kurze Einführung in die Programmiersprache C++ und in Root

Einführung in die Programmiersprache C

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

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

Programmiertechnik Klassenmethoden

Arrays (Felder/Vektoren)

Einführung in die Programmierung

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

10 Die Programmiersprache C99: Zusammenfassung

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Java Einführung Methoden. Kapitel 6

5. Unterprogrammtechnik/Module

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Grundlagen der Programmierung

Die Programmiersprache C99: Zusammenfassung

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Zeiger: Der Adressoperator &

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

Speicher und Adressraum

Programmierkurs Python I

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse

Java Kurs für Anfänger Einheit 5 Methoden

Modul 122 VBA Scribt.docx

Präzedenz von Operatoren

Speicherklassen (1) Lokale Variablen

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Zusammenfassung des Handzettels für Programmieren in C

Grundlagen der Programmiersprache C++

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Klausur in Programmieren

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

Elementare Konzepte von

Einführung in Java. Arne Hüffmeier. Angelehnt an Java-Vorkurs der Freitagsrunde. Methoden implementieren. Michelle Liebers, Dennis Hoffmann

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

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

JAVA - Methoden - Rekursion

Prozeduren und Funktionen

Algorithmen & Programmierung. Rekursive Funktionen (1)

Funktionen in Python

6. Zeiger Allgemeines Definition eines Zeigers

Übersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen

Einführung in die Programmierung

JAVA-Datentypen und deren Wertebereich

Funktionen und Parameter

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff

Repetitorium Informatik (Java)

Vorlesung Programmieren

Informatik I - Einstiegskurs

Eine Einführung in C-Funktionen

3. Basiskonzepte von Java

Informatik I: Einführung in die Programmierung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einstieg in die Informatik mit Java

Die Programmiersprache C Eine Einführung

Transkript:

2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss) Funktionen Felder (Arrays) Zeiger, Zeigerarithmetik, Zeiger-Dereferenzierung Zeichenketten (Strings) Benutzerdefinierte Datentypen Speicherverwaltung und Datenstrukturen Dateiarbeit Bitlevel-Verarbeitung Peter Sobe 1

Funktionen Funktionen erlauben, dem Programmcode hierarchisch zu strukturieren ein Hauptprogramm steuert dabei die Abfolge von Schritten, die einzelnen Schritte können durch Funktionen realisiert werden mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen Programmteile mehrmals leicht variiert auszuführen, gesteuert durch Parameter Rekursive Algorithmen, indem eine Funktion sich selbst mit abgeänderten Parametern aufruft Die Benutzung vorgefertigter Funktionen einer Standardbibliothek, z.b. für Einund Ausgabe, für Zeichenkettenverarbeitung usw. Zusammenstellung und Sammeln von Hilfs-Funktionen, die ein Programmierer persönlich oft benutzt

Allgemeines Prinzip: Funktionsdefinition (1) Rückgabetyp Funktionsname (Parameterliste) { Block mit Deklarationen und Anweisungen return ausdruck ;

Eine Funktion wird wie folgt definiert: Funktionsdefinition (2) Rückgabetyp Funktionsname ( Parameterliste ) { return ; Durch den Funktionsnamen wird die Funktion an anderer Stelle aufgerufen. Die Parameterliste enthält eine durch Komma getrennte Folge von Parametern, jeweils mit Typangabe und Variablenname. Eine Funktion kann einen Wert mit dem angegebenen Rückgabetyp zurückgeben. Dazu muss in der Funktion return Wert ausgeführt werden.

C-Programme als Folgen von Funktionen Ein C-Programm stellt eine Folge von Funktionsdefinitionen dar, wobei eine Funktion als Hauptprogramm (main) gekennzeichnet sein muss. In den Funktionen befinden sich wiederum Aufrufe anderer Funktionen. Funktionsdefinitionen können in C nur global sein und dürfen nicht im Block einer anderen Funktion bzw. des Hauptprogramms stehen.

Funktionen in C (1) Beispiel 1: Funktion mit float-rückkehrwert float max(float a, float b) { if (a>b) return a; else return b; Beispiel 2: Funktion ohne Rückkehrwert void druck(float x) { printf( \n x=%f,x); Beispiel 3: Hauptprogramm mit Funktions-Aufruf void main( ) { float c=4.0f, d=5.99f; druck(max(c,d));

Funktionen in C (2) Beispiel mit Ausgabeparameter in der Parameterliste: void fakultaet(int x, double *w) { int i; *w=1.0; for (i=2; i<=x; i++) *w = *w * (double)i; Aufruf der Funktion: int i; double y; for (i=0;i<40;i++) { fakultaet(i,&y); printf("i=%03d, fak(i) =%.0lf \n",i,y);

Funktionen in C (3) Benennung einer Funktion: Funktionsnamen unterliegen den gleichen Einschränkungen wie Variablennamen. Beispielsweise darf keine Ziffer am Beginn eines Funktionsnamen stehen. Groß- und Kleinschreibung wird unterschieden, d.h. Myfun() und myfun() sind zwei unterschiedliche Funktionen. Parameter: Eine durch Komma getrennte Liste einzelner Typbezeichner und Variablenbezeichner beschreiben die Parameter. Die als Parameter angegeben Variablen sind innerhalb des Prozedurkörpers gültig und überlagern gleichnamige globale Variablen. Die Parameter werden bei Aufruf der Funktion auf diese Variablen kopiert (Call by Value). Parameter, die als Ausgabe einer Funktion agieren, sind als Zeiger zu übergeben (Call by Reference). Dann wird der Zeiger kopiert, die Änderung des Werts erfolgt auf dem Originalspeicherplatz.

Funktionen in C (4) Bei einer C-Funktionsdefinition stellen die Parameter quasi Platzhalter dar. Für diese Parameter werden dann beim Funktionsaufruf Argumente eingesetzt. Die Anzahl, die Reihenfolge und der Typ von Argumenten beim Funktionsaufruf muss immer mit Anzahl, Reihenfolge und Typ der Parameter bei der Funktionsdefinition übereinstimmen. Felder und Zeichenketten werden als Zeiger übergeben. Dabei wird ausgenutzt, dass der Feldbezeichner ein Zeiger auf das erste Element ist. void ausgabe_zeile(char *postitionsstring, int x, int y, float p) { printf( Luftdruck an Position %s (%d,%d): %f \n, postionsstring, x, y, p); ausgabe_zeile( Zugspitze, 51, 13, 998.17);

Funktionen in C (5) Rückgabewert: Funktionen können einen Wert zurückliefern. Damit kann die Funktion wie eine Ausdruck benutzt werden. in Zuweisungen... wert = myfun(a,b); // myfun liefert einen Wert zurück als Teilausdruck if ( fun(a)<fun(b) ) { als Parameter einer anderen Funktion printf("der Funktionswert an der Stelle %f ist %f \n", x, fun(x) ); Wird die Angabe des Rückgabetyps weggelassen, nimmt der Compiler standardmäßig integer an. Funktionen, die keinen Wert zurückgeben sollen, werden mit den Rückgabetyp void gekennzeichnet.

Funktion Typ des Rückkehrwertes Bei einer C-Funktionsdefinition muss vor dem Funktionsnamen ein Typ (des Rückkehrwertes) angegeben werden. Dieser Typ kann ein in C bekannter Standardtyp, wie z.b. int, unsigned long, char, double,... sein. Es ist darauf zu achten, dass der Typ des Ausdrucks in der return- Anweisung mit dem Typ des Rückkehrwertes kompatibel ist.

Rekursive Funktionen (1) In C/C++ können Funktionen rekursiv definiert werden. Das kann in direkter oder indirekter Form geschehen. Bei einer direkten Rekursion enthält die Funktionsdefinition einen Aufruf von sich selbst, während im indirekten Fall eine andere Funktion aufgerufen wird, die wiederum, die zu definierende Funktion ruft. Da die Verwaltung aller lokalen Größen ohnehin durch den Compiler in einem Runtime-Stack vorgenommen wird, muss der Programmierer bei der Definition rekursiver Funktionen nichts besonderes beachten. Allerdings müssen stets Anweisungen vorhanden sein, die den rekursiven Aufruf begrenzen, um ein Endlos-Aufrufen zu verhindern.

Rekursive Funktionen Beispiel ( vgl. rekursive Algorithmen bei Struktogrammen FIBONACCI-Zahlen): fibo(n)= fibo(n-1) + fibo(n-2) Rekursionsabbruch fibo(1)=1 fibo(2)=1 int fibo(int n) //rekursive Definition { if (n<3) return 1;else return (fibo(n-1)+fibo(n-2)); void main() { int i=1,f=1; printf("\nberechnung der FIBONACCI-Zahlen im Intervall [1,100]"); printf("\n\n x fibo(x)\n------------"); while ((f=fibo(i))<=100) { printf("\n%2d %3d",i,f); i++;

Funktionen vorläufige Zusammenfassung Eine Funktion besteht aus Rückgabetyp, Funktionsname, Parameterliste und einem Anweisungsblock, der in geschweifte Klammern {, eingefasst wird. Rückgabetyp kann jeder gültige Typ sein, auch selbstdefinierte Typen, Strukturen oder Zeiger. Die Anweisung return dient zur Rückgabe eines Wertes aus der Funktion. Mit return wird die Funktion verlassen. Die Ausführung wird dann mit der Anweisung fortgesetzt, die dem Funktionsaufruf folgt. Funktionen, die keinen Wert zurückgeben, erhalten den Rückgabetyp void. Funktionen können sich selbst aufrufen: Rekursion