Programmierung mit C Funktionen

Größe: px
Ab Seite anzeigen:

Download "Programmierung mit C Funktionen"

Transkript

1 Programmierung mit C Funktionen

2 Funktionen... sind Unterprogramme (Subroutinen), mit denen Sie Teilprobleme einer größeren Aufgabe lösen können.... fassen Anweisungen zu einem Block zusammen, der eine bestimmte Aufgabe löst. Jeder dieser Blöcke hat einen eindeutigen Namen. Mit Hilfe dieses Namens wird eine Funktion aufgerufen. Jede Funktion ist unabhängig. Sie kann nur Werte von anderen Funktionen übergeben bekommen und diese unabhängig weiterverarbeiten.... können einen Wert an das aufrufende Programm zurückgeben. Programmiersprache C Folie 2

3 Beispiel Eine Funktion ist für die Eingaben des Benutzers zuständig. Eine weitere Funktion berechnet aus den Eingaben einen bestimmten Wert. Eine Funktion ist für die Ausgabe des berechneten Wertes zuständig. Eine Funktion ist für die Fehlerbehandlung zuständig. Alle Funktionen werden über die Hauptfunktion aufgerufen. Programmiersprache C Folie 3

4 Vorteile bei der Verwendung von Funktionen Die Aufgabenstellung wird in kleinere unabhängige Module eingeteilt und somit auch strukturiert Der Quellcode lässt sich besser lesen. Der Code einer Funktion kann in anderen Programmen wiederverwendet werden. Wiederholende Aufgaben werden in einer eigenständigen Funktion eingeschlossen. Diese Funktion kann von verschiedenen Stellen im Programm aufgerufen werden. Fehler lassen sich schneller finden, weil der Code nur an einer Stelle bearbeitet werden muss. Veränderungen lassen sich einfacher vornehmen und testen, weil nur Codefragmente betroffen sind. Programmiersprache C Folie 4

5 Arbeitsweise einer Funktion In einer Funktion wird eine bestimmte Aufgabe gelöst. Der Nutzer der Funktion muss nicht wissen, wie die Aufgabe gelöst wird. Dem Nutzer genügt es zu wissen, wie die Funktion aufgerufen wird. Die Funktion ist eine Blackbox. Der Funktion können Werte übergeben werden. Dem Nutzer der Funktion muss die Art / Typ der Werte bekannt sein. Einige Funktionen besitzen keine Eingabeparameter. Die Lösung der Aufgabe kann an den Aufrufer zurückgegeben werden. Nicht jede Funktion besitzt Rückgabeparameter. 123 Funktion Eingabeparameter Rückgabeparameter 146 Programmiersprache C Folie 5

6 Beispiel #include <stdio.h> int mal; void eingabe (void) { printf("bitte geben Sie eine Zahl ein: "); scanf("%ld", &mal); void ausgabe (int wert) { printf("ergebnis: %Ld\n", wert); int main(void) { int zahl; eingabe(); zahl = mal * 10; ausgabe(zahl); return 0; Programmiersprache C Folie 6

7 Beispiel #include <stdio.h> int mal; void eingabe (void) { printf("bitte geben Sie eine Zahl ein: "); scanf("%ld", &mal); void ausgabe (int wert) { printf("ergebnis: %Ld\n", wert); int main(void) { int zahl; eingabe(); zahl = mal * 10; ausgabe(zahl); return 0; Hier wird eine Zahl von der Tastatur eingelesen. Die Funktion gibt keinen Wert zurück und bekommt keinen Wert übergeben. Programmiersprache C Folie 7

8 Beispiel #include <stdio.h> int mal; void eingabe (void) { printf("bitte geben Sie eine Zahl ein: "); scanf("%ld", &mal); void ausgabe (int wert) { printf("ergebnis: %Ld\n", wert); int main(void) { int zahl; eingabe(); zahl = mal * 10; ausgabe(zahl); return 0; Das Ergebnis der Berechnung wird auf dem Bildschirm ausgegeben. Die Funktion gibt keinen Wert zurück, bekommt aber einen Integer-Wert übergeben. Programmiersprache C Folie 8

9 Beispiel #include <stdio.h> int mal; void eingabe (void) { printf("bitte geben Sie eine Zahl ein: "); scanf("%ld", &mal); void ausgabe (int wert) { printf("ergebnis: %Ld\n", wert); int main(void) { int zahl; eingabe(); zahl = mal * 10; ausgabe(zahl); return 0; Die Funktion main muss in jedem C-Programm vorhanden sein. Diese Funktion wird immer als erstes aufgerufen. Über diese Funktion können andere Funktionen aufgerufen werden. Der Hauptfunktion main wird kein Wert (gekennzeichnet mit void) übergeben, aber sie gibt einen Integer-Wert an das Betriebssystem zurück. Programmiersprache C Folie 9

10 Darstellung als Flussdiagramm main eingabe eingabe scanf() zahl = eingabe * 10 ausgabe ausgabe printf("ergebnis ) Programmiersprache C Folie 10

11 Darstellung als Struktogramm int main(void) eingabe() zahl = eingabe * 10 ausgabe(zahl) void eingabe(void) scanf() void ausgabe(int) printf(zahl) Programmiersprache C Folie 11

12 Aufbau von Funktionen Funktionen selber bestehen aus... dem Funktionskopf, der die Schnittstelle zum Aufruf darstellt.... dem Funktionsrumpf, der die Variablen und Anweisungen enthält, die zur Funktion gehören. Funktionen selber dürfen nicht verschachtelt werden. Eine Funktion kommt nicht innerhalb einer anderen Funktion vor. Eine Funktion kann nur innerhalb einer Funktion aufgerufen werden. int main(void) { int zahl; eingabe(); zahl = mal * 10; ausgabe(zahl); return 0; Funktionskopf Funktionsrumpf Programmiersprache C Folie 12

13 Funktionskopf Funktionstyp FktName (Argument1, Argument2,..., ArgumentN) Funktionstyp legt den Datentyp des Rückgabewerts fest. Der Datentyp legt den Bauplan für den Wert fest, den die Funktion zurückgibt. Wenn die Funktion keinen Rückgabewert besitzt, wird void genutzt. Es kann jeder in C bekannter Datentyp für die Rückgabe genutzt werden. Fktname... ist eine eindeutige Bezeichnung.... wird für den Aufruf der Funktion benötigt. Argumente (Übergabewerte)... werden in runden Klammern zusammengefasst. Die einzelnen Argumente werden durch Kommata getrennt. Jedes Argument besteht aus dem Datentyp und einem Variablennamen. Beispiel: funktion(int zahl, float wert). Sie können eine beliebige Anzahl von Argumenten übergeben. Wird kein Argument übergeben, wird zwischen die Klammern void oder nichts geschrieben. Programmiersprache C Folie 13

14 Name einer Funktion Der Name einer Funktion besteht aus den Zeichen a... z, A... Z und den Ziffern Im Funktionsnamen kann der Unterstrich genutzt werden. Als erstes Zeichen muss ein Buchstabe oder der Unterstrich gewählt werden. Funktionsnamen beginnen häufig mit Großbuchstaben. Die Bezeichnungen Summe() und summe() sind unterschiedlich. Die Namen der Funktion sind case-sensitiv. Alle Namen sollten aus einem bestimmten Sprachraum kommen. Funktionsnamen, die in den Standardbibliotheken vorkommen, sollten nicht für benutzerdefinierte Funktion genutzt werden. Programmiersprache C Folie 14

15 Beispiele für Funktionsnamen Wenn das Ergebnis der Funktion beschrieben werden soll, werden häufig Substantive genutzt. Mittelwert(), Integral(), TuermeVonHanoi(). Falls logische Operationen beschrieben werden, nutzen Funktionsnamen als erstes Wort Adjektive. kleinsterwert(), groesstermesswert(). Falls Funktionen keinen Rückgabewert liefern und die Aktion der Funktion beschrieben werden soll, werden häufig Substantive genutzt. FehlerAusgeben(), setexponent(), Auswaehlen(). Programmiersprache C Folie 15

16 Funktionsrumpf Ein Funktionsrumpf beginnt mit der geöffneten geschweiften Klammer und endet mit der geschlossenen geschweiften Klammer. Die geschweiften Klammern begrenzen einen Block, in dem zusammengehörige Anweisungen stehen. Die Anweisungen in einem Funktionsrumpf werden für die Lösung einer bestimmten Aufgabe benötigt. Wenn die geschlossene, geschweifte Klammer erreicht ist, ist die Funktion beendet. Es wird zum übergeordneten Programmteil zurückgesprungen. Mit Hilfe der Anweisung return (Wert); kann eine Funktion einen Wert an den übergeordneten Programmteil zurückgeben. Programmiersprache C Folie 16

17 Beispiel double CalcProduct(int wert, float zahl) { double ergebnis; ergebnis = wert * zahl; return ergebnis; Der Name CalcProduct ist die Bezeichnung der Funktion. Mit Hilfe diesen Namens wird die Funktion aufgerufen. double ist der Funktionstyp der Funktion CalcProduct. Die Funktion gibt Werte von diesem Datentyp an den Aufrufer zurück. Im Funktionsrumpf werden zwei Werte multipliziert. Das Ergebnis der Multiplikation wird mit Hilfe von return an den Aufrufer zurückgegeben. Programmiersprache C Folie 17

18 return-anweisung... gibt das Ergebnis, welches in der Funktion berechnet wurde, an den Aufrufer zurück.... beendet die Funktion und es wird an die Position des Aufrufs zurückgesprungen.... kann an jeder beliebiger Stelle in einer Funktion auftreten. Häufig steht sie am Ende einer Funktion.... kann zum Beispiel in Abhängigkeit einer Bedingung mehrfach vorkommen. Programmiersprache C Folie 18

19 Aufruf einer Funktion Rückgabewert = Funktionsname ( Arg1, Arg2,..., ArgN) Mit Hilfe des Funktionsnamens wird eine Funktion aufgerufen. Eine Funktion muss vor dem Aufruf definiert werden. In den runden Klammern werden die zu übergebenen Parameter aufgeführt. Die Parameter in der Argumentliste des Aufrufs müssen denselben Datentyp wie die Argumente im Funktionskopf besitzen. Beide Argumentlisten müssen dieselbe Anzahl von Parametern besitzen. Wenn keine Parameter übergeben werden, bleiben die runden Klammern leer. Der Rückgabewert einer Funktion kann mit Hilfe eines Gleichheitszeichen einer Variablen zugewiesen werden. Die Variable hat den gleichen Datentyp wie der Rückgabewert. Der Typ des Rückgabewertes wird durch den Funktionstyp angegeben. Programmiersprache C Folie 19

20 Beispiel double CalcProduct (int wert, float zahl) { double ergebnis; ergebnis = wert * zahl; return ergebnis; int main(void) { const int zahl = 3; const float wert = 4.5; int uebergabe; uebergabe = CalcProduct(zahl, wert); return 0; Programmiersprache C Folie 20

21 Funktionsprototypen Funktionsprototypen werden dazu genutzt, Funktionen vor dem Aufruf und vor ihrer Definition zu deklarieren. Prototypen bestehen aus dem Funktionskopf, der mit einem Semikolon abgeschlossen wird. In der Argumentliste wird nur der Datentyp der übergebenen Variablen angegeben. Der Name der Übergabevariablen wird nicht benötigt. Prototypen stehen häufig am Anfang eines C-Programms, um eine doppelte Vergabe von Funktionsnamen zu vermeiden. Mit Hilfe des Prototypen... wird dem Compiler mitgeteilt, dass eine Funktion mit dem angegebenen Namen existiert.... werden die Eigenschaften der Funktion festgelegt. Für die main()-funktion wird kein Prototyp benötigt. Die Hauptfunktion ist dem Compiler im Aufbau bekannt. Programmiersprache C Folie 21

22 Beispiel #include <stdio.h> int mal; void eingabe(void); void ausgabe(int); Prototypen int main(void) {... return 0; void eingabe (void) {... void ausgabe (int wert) {... Funktionen Programmiersprache C Folie 22

23 Beispiel double myrechnung(int, float); int main(void) { const int zahl = 3; const float wert = 4.5; int uebergabe; uebergabe = myrechnung(zahl, wert); return 0; Prototyp für die unten aufgeführte Funktion double myrechnung (int wert, float zahl) { double ergebnis; ergebnis = wert * zahl; return ergebnis; Programmiersprache C Folie 23

24 Variablen... können... innerhalb eines Blocks definiert werden. Diese Variablen werden als lokal bezeichnet. Sie sind nur innerhalb dieses Blocks gültig und bekannt.... am Anfang des Programms definiert werden. Diese Variablen werden als global bezeichnet. Diese Variablen sind im gesamten Programm bekannt.... als statische Variablen definiert werden. Diese Variablen behalten auch nach dem Verlassen des Blocks ihren Wert.... sollten so lokal wie möglich und so global wie nötig angelegt werden. Programmiersprache C Folie 24

25 Lokale Variablen Alle lokalen Variablen in dem neben stehenden Beispiel sind mit kursiver blauer Schrift geschrieben. Lokale Variablen werden innerhalb eines Blocks definiert. Ein Block ist immer durch die geschweiften Klammern begrenzt. Sobald ein Block betreten wird, wird die Variable immer wieder neu angelegt. Wird der Anweisungsblock verlassen, wird die Variable aus dem Speicher gelöscht. Das heißt, eine Variable lebt nur so lange wie der Block abgearbeitet wird. Die Variable ist nur innerhalb eines Blocks bekannt. int main(void) { int zahl; int mal; return 0; void berechne() { int zahl; int mal; Programmiersprache C Folie 25

26 Identische Namen In jedem Block kommt ein Variablenname exakt einmal vor. Jeder Variablenname ist ein Stellvertreter für eine Speicherzelle im Arbeitsspeicher. Die Speicherzelle wird freigegeben, sobald der Block verlassen wird. Aus diesen Grund können in verschiedenen Blöcken identische Namen genutzt werden. Zur besseren Lesbarkeit und Verständlichkeit können unterschiedliche Namen verwendet werden. Beispiel: mainfaktor in dem Hauptprogramm und potenzierenfaktor in der Funktion ptoenzieren. preisbrutto und preisnetto für die Kennzeichnung von Beträgen mit und ohne Steuern. int main(void) { int zahl; int mal; for(...){ int zahl; return 0; berechne() { int zahl; int mal; Programmiersprache C Folie 26

27 Globale Variablen... werden außerhalb einer Funktion definiert. Meist werden Sie am Anfang eines Programms definiert.... gelten für das gesamte Programm.... können von allen Funktionen in einem Programm genutzt werden. Eine lokale Variable, die den selben Namen wie eine globale Variable hat, hat Vorrang vor der globalen Variablen. Überlegen Sie sich genau, welche Variablen global gehalten werden sollten. Variablen, die selten oder nur in bestimmten Funktionen benötigt werden, sollten lokal gehalten werden. Bei der objektorientierten Programmierung wird auf globale Variablen verzichtet. Daher sollte man schon in C von deren Verwendung absehen. int globvar; int main(void){ int zahl; int mal; return 0; berechne() { int zahl; int mal; Programmiersprache C Folie 27

28 Beispiel int ergebnis; int potenzieren(int, int); ergebnis (global) undefiniert 1 int main(void){ int faktor; int potenz; faktor = 3; potenz = 3; ergebnis = 1; faktor (lokal) undefiniert 3 potenz(lokal) 3 ergebnis = potenzieren(faktor, potenz); return 0; faktor (lokal) int potenzieren(int faktor, int potenz) { int ergebnis; int count; for(count = 1; count <= potenz; count++){ ergebnis = ergebnis * faktor; return ergebnis; Programmiersprache C Folie 28 3 count (lokal) potenz(lokal) 21 3 ergebnis (lokal) ergebnis undefiniert * faktor

29 Existenz und Sichtbarkeit Bei einem Aufruf einer Funktion werden für alle lokalen Variablen neue Speicherzellen reserviert. Nach dem Ende der Funktion wird der Speicher wieder freigegeben. Die lokale Variable ist innerhalb der Funktion existent und sichtbar. Globale Variablen werden am Anfang eines Programms deklariert. Für globale Variablen wird am Anfang eines Programms Speicher bereitgestellt und am Ende des Programms freigegeben. Sie sind während der Laufzeit des Programms für alle Funktionen existent. Wenn eine lokale Variable in einem Block und eine globale Variable identische Namen besitzen, überdeckt die lokale Variable die globale Variable in diesem Block. Die globale Variable ist in diesem Block nicht sichtbar. Programmiersprache C Folie 29

30 Statische Variablen... bezeichnen immer dieselbe Speicherzelle, egal wie oft eine Funktion aufgerufen wird.... sind nur innerhalb der Funktion sichtbar, in der sie deklariert werden.... behalten auch nach dem Verlassen der Funktion den zugewiesenen Wert.... können global oder lokal sein.... müssen wie Konstanten schon bei ihrer Deklaration initialisiert werden. int main(void) { return 0; int berechne(int faktor) { int ergebnis; static int zahl = 1; ergebnis = faktor * 3; zahl++; return ergebnis; Programmiersprache C Folie 30

31 Speicherklassen Speicherklasse auto static extern register Beschreibung Diese Speicherklasse ist der Vorgabewert jeder Variablen. Ist keine Speicherklasse vereinbart, so gilt auto. Die Variablen sind nur innerhalb des vereinbarten Blocks { gültig. Nach dem Verlassen des Blocks wird die Variable gelöscht. Ablage: Stack. Die Variable wird über die Laufzeit der Funktion erhalten und steht beim nächsten Funktionsaufruf wieder zur Verfügung. Ablage: Datensegment Die Variable ist schon an anderer Stelle definiert und angelegt worden. Falls Programme aus mehreren Modulen zusammengesetzt werden, wird diese Speicherklasse benötigt. auto-variable, die nach Möglichkeit im Register der CPU abgelegt wird. Moderne Compiler optimieren oft selber die Zuordnung von CPU-Registern zu Variablen Programmiersprache C Folie 31

32 Funktionen und Module #include <stdio.h> int frage (int); int zahl; void main (void) { int wert = 2; int result; wert = 2; result = frage (wert); result = frage (zahl); Funktion Modul Programmiersprache C Folie 32

33 Variablen in Funktionen und Module #include <stdio.h> int frage (int); int zahl; void main (void) { Diese Variable gilt für das gesamte Modul. Die Variable kann in jeder Funktion in dem Modul genutzt werden. Die Variable ist global für das Modul. int wert = 2; int result; wert = 2; result = frage(wert); result = frage(zahl); Diese Variablen sind innerhalb der Funktion main() definiert. Diese Variablen gelten nur für diese Funktion. Sie sind lokal. In anderen Funktionen können diese Variablen nicht genutzt werden. Programmiersprache C Folie 33

34 Variablen in Funktionen #include <stdio.h> int frage (int eingabe) { int rueckgabe; Diese Variable ist innerhalb der Funktion definiert. Diese Variablen gelten nur für diese Funktion. Sie sind lokal. In anderen Funktionen können diese Variablen nicht genutzt werden. printf ("\n\nes wurde der Wert %d uebergeben",eingabe); printf ("\nbitte einen Integerwert, z.b. 2 : "); scanf ("%d",&rueckgabe); if(rueckgabe > 10){ int result; result = -1; Diese Variable ist nur printf ("\n...ist groesser als 10? innerhalb %d \n\n", des Blocks result); bekannt. Der Block beginnt und endet mit den geschweiften return rueckgabe; Klammern. Diese Variable ist nur lokal in diesem Block gültig. Programmiersprache C Folie 34

35 Lokale, globale und statische Variablen Programmiersprache C Folie 35

36 Parameter übergeben Wertparameter ("call by value"): Der Wert einer Variablen wird an eine Funktion übergeben. Es wird eine Kopie der Variablen erzeugt, die übergeben werden soll. Die Funktion hat nur Zugriff auf die Kopie, aber nicht auf das Original. Es ist nur eine Übergabe von Werten möglich. Die Argumentliste einer Funktion besteht aus Wertparameter, die mit Hilfe von Kommata getrennt werden. Referenzparameter ("call by reference"): Die Adresse einer Variablen wird übergeben. Als Referenz wird die Speicheradresse einer Variablen bezeichnet. Die Funktion greift direkt auf das Original zu. Über eine Referenz können Werte übergeben und zurückgegeben werden. In C ist diese Art der Übergabe mit Hilfe von Zeigern implementiert. (Wird später behandelt). Programmiersprache C Folie 36

37 "call by value" #include <stdio.h> void MyFunction(int wert); int main(void){ int zahl; zahl = 3; MyFunction(zahl); undefiniert 3 zahl return 0; void MyFunction(int wert){ wert = wert * 10; 30 3 wert Programmiersprache C Folie 37

38 "call by reference" #include <stdio.h> void MyFunction(int wert); int main(void){ int zahl; int *wert; zahl = 3; wert = &zahl; *wert = *wert * 10; undefiniert 30 3 Adresse undefiniert von zahl zahl wert return 0; Programmiersprache C Folie 38

39 Hauptfunktion main(void) Genau eine Funktion in einem Programm muss den Namen main() tragen. Diese Funktion wird beim Programmstart als erstes ausgeführt. Nach dem C89-Standard kann die Hauptfunktion den Funktionstyp void besitzen. Nach C99-Standard gibt die Hauptfunktion int zurück. Mit Hilfe der Anweisung return 0; teilt die Hauptfunktion dem Betriebssystem mit, dass das Programm ordnungsgemäß beendet wurde. Fehlermeldungen haben eine Nummer, die die Meldung eindeutig identifiziert. Die Fehlernummern sind größer oder kleiner als 0. Aus diesen Grund wird eine Null bei einer fehlerfreien Ausführung des Programms zurückgegeben. Programmiersprache C Folie 39

40 Programmausführung Aus dem Betriebssystems heraus wird das Programm eines Anwenders aufgerufen. Für das Betriebssystem ist die Anwendung ein Unterprogramm, das nach der Beendigung an die aufrufende Stelle des Betriebssystems zurückkehrt. Programmiersprache C Folie 40

41 Programmausführung Das Hauptprogramm kann weitere Unterprogramme aufrufen, die nach der Beendigung zu dem übergeordneten Programm zurückkehren. Ein Sprung in ein Unterprogramm kann von beliebiger Stelle beliebig oft erfolgen. Programmiersprache C Folie 41

42 Stacks und Queues Ein Stack ist ein Speicherbereich, bei dem die zuletzt eingetragenen Daten zuerst wieder ausgelesen werden. Man verwendet hier auch den Begriff LIFO-Speicher (Last in, first out). Eine Queue ist ein Speicherbereich bei dem die zuerst geschriebenen Daten zuerst wieder ausgelesen werden. In diesem Fall spricht man von einem FIFO-Speicher (First in, First out). Programmiersprache C Folie 42

43 Stacks und Queues Information ein aus Information ein Stackpointer aus Stack Queue Programmiersprache C Folie 43

44 Unterprogramme Häufig benutzte Softwareroutinen können in Form von Unterprogrammen realisiert werden. Der Prozessor verwendet hierzu den Call-Befehl. Dieser Befehl sorgt dafür, dass die Adresse des Befehls nach dem Call- Befehl auf den Stack geschrieben wird. Nach Abarbeitung der Routine wird mit dem RET-Befehl (Return from Subroutine) die Rücksprungadresse vom Stack geholt und die Programmabarbeitung fortgesetzt. Programmiersprache C Folie 44

45 Unterprogrammaufruf Hauptprogramm Unterprogramm $100 $102 $104 $106 $108 $10A $10C Befehl 1; Befehl 2; CALL UP1 Befehl 4; Befehl 5; Befehl 6; Befehl 7;... Stackp. während UP-Aufr Stackp. vor UP-Aufr $200 $202 $204 $ UP1:Befehl1 Befehl2 Befehl3 RET Programmiersprache C Folie 45

46 Ablauf Unterprogrammaufruf Es wird das Programm ab Adresse 100 abgearbeitet Auf Adresse 104 steht der Unterprogrammaufruf CALL UP1, welcher das Unterprogramm UP1 aufruft Der Prozessor schreibt die Adresse des Befehls, die nach dem Unterprogrammaufruf steht (Befehl 4 auf Adresse $106) auf den Stack. Der Stackpointer wird auf die nächste freie Speicherstelle im Stack gesetzt. Der Programmzähler wird mit der Adresse des Unterprogramms geladen ($200) und die Abarbeitung fortgesetzt. Am Ende des Unterprogramms steht der Befehl RET (Return from Subroutine). Dieser Befehl bewirkt, dass der Stackpointer um ein Datenwort erhöht wird und die Adresse vom Stack als neuer PC geladen wird. Programmiersprache C Folie 46

47 Geschachtelter Unterprogrammaufruf Hauptprogramm Unterprogramm 1 Unterprogramm 2 $100 $102 $104 $106 $108 $10A $10C Befehl 1; Befehl 2; CALL UP1 Befehl 4; Befehl 5; Befehl 6; Befehl 7;... $200 $202 $204 $206 $208 Währ UP2-Aufr. Währ UP1-Aufr. UP1:Bef1 Befehl2 CALL UP2 Befehl3 RET $210 $212 $214 $ vor UP-Aufr. 106 Stack UP2:Bef1 Befehl2 Befehl3 Befehl4 RET Programmiersprache C Folie 47

48 Geschachtelte Unterprogramme In Unterprogrammen können wiederum Unterprogramme aufgerufen werden. Es läuft wiederum der gleiche Vorgang ab: Die Rücksprungadresse wird auf den Stack geschrieben. Es wird in das zweite Unterprogramm verzweigt. Am Ende des Unterprogramm wird in das aufrufende Programm zurückgekehrt. Durch die LIFO-Struktur des Stacks kehrt das Programm jeweils an die aufrufende Stelle zurück. Bei entsprechend großem Stack-Speicherbereich lassen sich somit beliebig viele geschachtelte Unterprogrammaufrufe tätigen. Programmiersprache C Folie 48

49 Ablage auf dem Stack Der Stack ist dynamisch. Der Stack wächst automatisch zu der kleineren Speicheradresse hin und schrumpft wieder, falls die abgelegten Daten nicht mehr benötigt werden. Der Stack arbeitet nach dem LIFO (Last in - First out) - Prinzip. Was zuerst auf dem Stack abgelegt wird, wird als erstes herausgegeben. Für jede Funktion wird ein Datenblock auf dem Stack erstellt. Dieser Datenblock wird als Stack-Frame (Rahmen) bezeichnet. In einem Stack- Frame werden die folgende Daten gespeichert: Alle Argumente einer Funktion,... alle lokalen, nicht-statischen Variablen,... die Rücksprungadresse,... Inhalte, die gesichert werden müssen,... Rückgabewerte, falls vorhanden, und... kurzfristig Zwischenergebnisse. Programmiersprache C Folie 49

50 Bibliotheksfunktionen... werden häufig als Systemfunktionen oder Runtime-Library bezeichnet.... werden teilweise vom C-Standard definiert. Jeder Compiler kann aber eigene Funktionen für die Maussteuerung etc. anbieten.... werden einzeln gespeichert und sind fertig compiliert.... sind fertig compiliert und liegen meist als Objektdateien vor.... werden in Bibliotheken implementiert. Bibliotheksdateien haben die Dateiendung ".lib" und sind im Verzeichnis C:\Pfad_zum_Compiler\Lib abgelegt. Die Bibliotheken werden meist zusammen mit dem Compiler oder Entwicklungsumgebung vertrieben. Der Linker sucht nach eingebundenen Bibliotheksfunktionen und fügt den Code in das Programm ein. Programmiersprache C Folie 50

51 Bibliotheksfunktionen deklarieren Die Deklaration einer Bibliotheksfunktion... steht in einer so genannten Header-Dateien. Der Prototyp einer Standard-Bibliotheksfunktionen ist normiert. Die Funktion wird mit ihren Namen aufgerufen, bekommt manchmal Parameter übergeben und gibt teilweise einen Wert an den Aufruf zurück. Programmiersprache C Folie 51

52 Header-Dateien... fassen Funktionen zu einem bestimmten Thema zusammen.... die Funktionen enthalten, die häufig benötigt werden, sind vordefiniert und werden mit dem Compiler oder der Entwicklungsumgebung ausgeliefert. Sie befinden sich unter Windows meist im Verzeichnis C:\Pfad_zum_Compiler\Include und können mit Hilfe eines Texteditors oder IDE angesehen werden. Mitgelieferte Header-Dateien können über #include<name_der _Header-Datei> in das eigene Programm eingebunden werden. Beispiele für vordefinierte Header-Dateien: math.h enthält mathematische Funktionen. time.h enthält Funktionen zur Datums- und Zeiterfassung. stdio.h enthält Funktionen zur Ein- und Ausgabe von Daten. Programmiersprache C Folie 52

53 Rekursive Funktionen... sind Funktionen, die sich selber aufrufen. Jede Rekursion benötigt eine Abbruchbedingung. Andernfalls kommt es zu einer Endlosschleife verbunden mit einem Stacküberlauf. int Division (int wert, int zahl) { if ( wert >= zahl) { return(1 + Division(wert - zahl, zahl)); if ( wert!= 0) { printf("rest %d\n", wert); return 0; int main(void) { int ergebnis; ergebnis = Division (7,2 ); printf ("Ergebnis =%d\n", ergebnis); return 0; Programmiersprache C Folie 53

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

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

5. Unterprogrammtechnik/Module

5. Unterprogrammtechnik/Module 5. Unterprogrammtechnik/Module Unterprogramm/Modul: separate Programmeinheit, mit Anweisungen, die eine bestimmte Aufgabe erfüllen bekommt i.a. Argumente (Werte, Informationen) vom aufrufenden Programm

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

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

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, 2. Aktualisierung, Dezember 2013 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende

Mehr

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

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Praktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration

Praktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration Praktikum Ingenieurinformatik Termin 4 Funktionen, numerische Integration 1 Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren 1.1. Funktionen Eine Funktion ist

Mehr

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

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

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, September 2011 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende Beispiel geht

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Prozeduren und Funktionen

Prozeduren und Funktionen OSZ Handel I - Gymnasiale Oberstufe (Abt. V) In Anlehnung an: Duden Informatik (3.Auflage, Dudenverlag, 2001, S. 477). Prozeduren und Funktionen Fach: Informatik Parameter sind Platzhalter in einer Prozedur

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz FH München, FB 03 FA WS 06/07 Ingenieurinformatik Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz Zulassung geprüft vom Aufgabensteller: Teil I Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Summe Note Aufgabensteller:

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Inhalt. 4.7 Funktionen

Inhalt. 4.7 Funktionen Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

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

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R.

Mehr

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

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

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Erste Schritte der Programmierung in C

Erste Schritte der Programmierung in C Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.

Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe. Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Ingenieurinformatik (FK 03) Übung 4

Ingenieurinformatik (FK 03) Übung 4 FG TECHNISCHE INFORMATIK I II U41 00 TA 03 Ingenieurinformatik (FK 03) Übung 4 VORBEREITUNG Erstellen Sie das Struktogramm der Funktion trapez für die Übung 4b mithilfe des Programms Structorizer. ÜBUNG

Mehr

Benutzerfunktionen Was ist eine Funktion, was ist eine Prozedur?

Benutzerfunktionen Was ist eine Funktion, was ist eine Prozedur? Was ist eine Funktion, was ist eine Prozedur? Aufbau einer "Prozedur" (d.h. ohne Rückgabewerte) sub FktName (Parameter) {Anweisungsblock sub ausgabe {print "Hallo Welt!" Aufbau einer "Funktion" (d.h. mit

Mehr

BKTM - Programmieren leicht gemacht.

BKTM - Programmieren leicht gemacht. BKTM Programmieren leicht gemacht. + Struktogramm Das Struktogramme ist eine Entwurfsmethode für die strukturierte Programmierung. Es ist nach der DIN 66261 genormt. Es ist 1972/73 von Dr. Isaac Nassi

Mehr

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

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

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

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

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

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Funktionen in PHP 1/7

Funktionen in PHP 1/7 Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt

Mehr

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C: Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung

Mehr

Unterprogramme, Pointer und die Übergabe von Arrays

Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen.

Anweisungsblöcke (dazu zählen auch Programme) werden in geschweifte Klammern eingeschlossen. Programmierung in C++ Seite: 1 Beispielprogramm 1: Programmierung in C++ int main() int hoehe = 3; int grundseite = 5; double flaeche = hoehe*grundseite*0.5; cout

Mehr

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 3 Grundlagen 3.1 Starten eines C++ Programms Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 1. Programme, die vom Interpreter der Programmiersprache Zeile für Zeile interpretiert

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

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

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

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

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

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

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr

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

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

Compiler und Präprozessor (1) Erstellen eines Projektes

Compiler und Präprozessor (1) Erstellen eines Projektes Compiler und Präprozessor (1) Erstellen eines Projektes Projekte bestehen meist aus mehreren Dateien, z.b. Quelldateien, Funktionssammlungen in Bibliotheken Zur Definition eines Projektes sind folgende

Mehr

Kurzeinführung in C. Johannes J. Schneider 27.10.2004

Kurzeinführung in C. Johannes J. Schneider 27.10.2004 Kurzeinführung in C Johannes J. Schneider 27.10.2004 1 Einleitung C ist eine in vielen Bereichen sehr häufig verwendete Programmiersprache, die von der Betriebssystemprogrammierung bis hin zur Programmierung

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Modulare Programmierung und Bibliotheken

Modulare Programmierung und Bibliotheken 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

Mehr

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten

Mehr

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 5. Vorlesung 09.11.2016 1 Beispiel: Hello World #include Beginn Hauptprogramm int main() { Blockbeginn printf("hello World\n"); Einbinden der Headerdatei(en) für

Mehr

C- Kurs 04 Anweisungen

C- Kurs 04 Anweisungen C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

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

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

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

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

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

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016

Mehr

C für Java-Programmierer

C für Java-Programmierer Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

Kapitel 1. Grundlagen

Kapitel 1. Grundlagen Grundlagen Dieses Kapitel beschreibt die nötigen Schritte zur Erstellung eines lauffähigen C- Programms. Diese Schritte können Sie auf Ihrem System anhand von einführenden Beispielen nachvollziehen. Die

Mehr

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

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

2 Einfache Rechnungen

2 Einfache Rechnungen 2 Einfache Rechnungen 2.1 Zahlen Computer, auch bekannt als Rechner, sind sinnvoller eingesetzt, wenn sie nicht nur feste Texte ausgeben, sondern eben auch rechnen. Um das Rechnen mit Zahlen zu verstehen,

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Schleifenanweisungen

Schleifenanweisungen Schleifenanweisungen Bisher: sequentielle Abarbeitung von Befehlen (von oben nach unten) Nun: Befehle mehrfach ausführen (= Programmschleife): for-anweisung - wenn feststeht, wie oft z.b.: eine Berechnung

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Vorlesung Informatik I

Vorlesung Informatik I Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr