Vorlesung. Ingenieurinformatik 1. PD Dr.-Ing. Frank Lobeck. Universität Duisburg Essen Campus Duisburg. Einführung in die Programmiersprache C

Größe: px
Ab Seite anzeigen:

Download "Vorlesung. Ingenieurinformatik 1. PD Dr.-Ing. Frank Lobeck. Universität Duisburg Essen Campus Duisburg. Einführung in die Programmiersprache C"

Transkript

1 Vorlesung Ingenieurinformatik 1 Einführung in die Programmiersprache C PD Dr.-Ing. Frank Lobeck 1 V-C-Prg IPD 2008 UNIVERSITÄT D U I S B U R G E S S E N Universität Duisburg Essen Campus Duisburg

2 Einleitung 2 V-C-Prg IPD 2008

3 Einleitung Computerprogramme sind so genannte ausführbare Dateien. Unter Windows können Programme durch Doppelklicken ausgeführt werden. Ein Computerprogramm muss in einer für den Computer verständlichen Sprache (genauer gesagt für das Betriebssystem) vorliegen, damit es ausgeführt werden kann. Da der binäre Programmcode für Menschen schwer lesbar ist, werden Programmiersprachen verwendet. Aus dem Code einer Programmiersprache wird ein für den Computer verständlicher Code generiert: Textueller Ersatz Header-Datei Test.h Src-Datei Test.c Präprozessor Syntaxprüfung Header-Datei stdio.h Übersetzung in Binärformat Compiler Objekt-Datei Test.obj Binden der Objektdateien Bibliotheks-Datei stdlib.lib Linker Programm-Datei Test.exe 3 V-C-Prg IPD 2008

4 Entwicklungsumgebung 4 V-C-Prg IPD 2008

5 Visual Studio Die Entwicklungsumgebung Visual Studio ermöglicht die komplette Entwicklung und Test von C-Programmen. Der erste Schritt zur Erstellung eines Programms ist das Erzeugen eines neuen Projektes. Damit ein lauffähiges C-Projekt erstellt wird, müssen die nachfolgend beschriebenen Schritte ausgeführt werden. 1. Datei Neu - Projekt 5 V-C-Prg IPD 2008

6 Visual Studio 2. Win32-Konsolenanwendung auswählen 3. Projektnamen eingeben 4. Verzeichnis auswählen 5. OK wählen 6. Unter Anwendungseinstellungen : Leeres Projekt wählen 6 V-C-Prg IPD 2008

7 Visual Studio 7. Eine neue Datei erstellen 7. Diese Datei als C-Datei speichern. 7 V-C-Prg IPD 2008

8 8. Die Datei dem Projekt hinzufügen. In der Projektmappe Quelldateien auswählen Rechte MT Hinzufügen Vorhandenes Element Die neu erstellte C-Datei auswählen Visual Studio 8 V-C-Prg IPD 2008

9 Visual Studio 9. Nun steht ein neues leeres Projekt zur Verfügung. Im nächsten Schritt kann der Programm-Code in die C-Quelltext- Datei eingegeben werden. Der Quelltext wird mit Hilfe des Befehls: Erstellen - <Projektname> erstellen in ein ausführbares Programm übersetzt. Das erste C-Programm: 9 V-C-Prg IPD 2008

10 C-Grundlagen 10 V-C-Prg IPD 2008

11 Grundelemente von Struktogrammen V Verarbeitung W Bedingung V 1 V 2 F Bedingte Verarbeitung (z.b. if... else...) Initialisierung Bedingung Zählschleife Verarbeitung Bedingung Verarbeitung abweisende Schleife Schrittsteuerung Verarbeitung Bedingung nichtabweisende Schleife 11 V-C-Prg IPD 2008

12 Allgemeines Problem: Quadratwurzel ziehen Auflisten der Teilprobleme TP01 = Zahl einlesen TP02 = Zahl überprüfen TP03 = Zahl negativ > Hinweis: keine Lösung TP04 = Zahl positiv > Wurzel ziehen TP05 = Ergebnis ausgeben TP06 = Vorgang wiederholen? TP07 = Ist der eingegebene Wert eine Zahl? Eine Programmiersprache verarbeitet definierte Sprachelemente, deren Verwendung und Kombination einer bestimmten Syntax-Regel unterliegen. Sprachelemente sind unter anderem: Variablen, Konstanten, Ausdrücke Wertzuweisungen Lese- und Schreib-Anweisungen Verzweigungen, Schleifen Funktionen Zur Strukturierung werden so genannte Steuerzeichen wie ( ) [ ] %, : usw. verwendet. 12 V-C-Prg IPD 2008 /* Dies ist der Code Quadratwurzel ziehen */ #include <stdio.h> #include <math.h> void main ( ) float zahl, wurzel ; int i ; char buchstabe ; do printf ( Gib Zahl ein: ) ; i = scanf ( %f, &zahl ) ; if ( i!= 1) printf ( Dies ist keine Zahl! ) ; else if ( zahl < 0 ) printf ( Wurzelwert ist imaginär ) ; else wurzel = sqrt ( zahl ) ; printf ( Wurzelwert = %f, wurzel ) ; printf ( Wurzelziehen fortsetzen = j ) ; scanf ( %c, &buchstabe ) ; while ( buchstabe == j ) ; return ;

13 Bezeichner, Datentypen, Ausdrücke, Anweisungen Alle Variablen, Konstanten, Funktionsnamen, etc. werden allgemein Bezeichner genannt. Bezeichner erhalten als 1. Zeichen immer einen Buchstaben oder das Sonderzeichen _ (underline). Alle folgenden Zeichen können Buchstaben, Ziffern oder das Zeichen underline sein, deren Kombination frei wählbar ist. Grundsätzlich sollte der gesamte Quellcode mit Kleinbuchstaben ohne Umlaute geschrieben werden. Einzige Einschränkung sind die Konstanten, diese werden zur besseren Unterscheidung groß geschrieben. Werte von Variablen können jederzeit geändert werden, Konstanten wie z.b. PI = nicht. Richtige Beispiele für Bezeichner: breite, _ab, hoehe, x_koordinate, y1, fb12_prof_anz Falsche Beispiele: 1x, x-wert, höhe, a&b Hinweis: Es wird zwischen Groß- und Kleinschreibung unterschie-den, d.h., a1 nicht gleich A1 Bezeichner können verschiedene Werte unterschiedlicher Art annehmen. Diese Unterschiede müssen vorab definiert werden. Dies geschieht mit Hilfe der sogenannten datentyp-anweisung. Hierbei wird im Wesentlichen zwischen Werten mit oder ohne Nachkommastellen und Texten unterschieden. Als Datentypen sind erlaubt: Datentyp float double int short long char void Art des Wertes Gleitkommawert Gleitkommawert Festkommawert Festkommawert Festkommawert Textzeichen Ohne Wert Wertebereich: von -3.4 * bis 3.4 * von -1.7 * bis 1.7 * von bis von bis von * 10 9 bis 2.14 * 10 9 von 0 bis 255 (ASCII-Zeichen) Definition: float breite, hoehe ; double x, y, z ; int i, k, j ; short zahl ; long ziffer ; char zeichen, text [ ] ; [ ] wird später erklärt. Operatoren = Zuweisung + Addition - Subtraktion * Multiplikation / Division ++ Inkrement -- Dekrement 13 V-C-Prg IPD 2008

14 Bezeichner, Datentypen, Ausdrücke, Anweisungen Ein Ausdruck ist eine Folge von Operatoren ( + * - / etc. ) und Operanden ( z. B. Bezeichner ), welche einen Wert berechnen und/oder ein Objekt bezeichnen und/oder den Typ eines Objektes festlegen oder ändern. Jeder Operand ist selbst ein Ausdruck. Im einfachsten Fall ist ein Ausdruck nur eine Konstante, Variable oder Funktionsaufruf. Durch die Operatoren werden Operanden zu komplexeren Ausdrücken, z.b.: x * y In C liefert jeder Ausdruck einen Typ ( datentyp ) und einen Wert. Ausdrücke mit den in der Mathematik üblichen Operatoren werden von links nach rechts unter Berücksichtigung der bekannten Rechenregeln (z.b. Punktrechnung geht vor Strichrechnung) berechnet. Operatoren, bei denen von rechts nach links gerechnet wird, werden in diesem Kurs nicht behandelt. Zunächst werden nur arithmetische Ausdrücke wie a + b behandelt. Zu einem späteren Zeitpunkt folgen noch logische Ausdrücke wie a > b. Jedes C-Programm besteht aus einer Folge von Anweisungen, die sequentiell abgearbeitet werden. Anweisungen werden durch ein Semikolon abgeschlossen. So wird jeder Ausdruck durch Anhängen eines Semikolons zu einer Anweisung. Die einfachste Anweisung ist die leere Anweisung, sie besteht nur aus einem Semikolon. In einer Dateizeile können mehrere Anweisungen stehen. Die Variablen erhalten ihren Wert in einer Zuweisungs-Anweisung mit Hilfe des Zuweisungsoperators = : < variable > = < ausdruck > ; Links vom Gleichheitszeichen steht eine Variable, deren Wert berechnet werden soll. Der Ausdruck kann eine Konstante, Variable, ein arithmetischer Ausdruck, ein logischer Ausdruck, ein Funktionsaufruf oder eine Kombination aus allen diesen Elementen sein. Nachfolgend einige Beispiele c = a + b ; i = m ; h = funktion ( a ) ; a = 3. ; z = 2. * funktion ( ) / ( a * b ) ; funktion (x ) ; a + b = c ; 2 = c ; funktion ( ) = z ; Die Beispiele in dieser Reihe sind syntaktisch falsch! In einer datentyp-anweisung können mehrere Variablen gleichen Datentyps in einer Liste, durch Komma getrennt, zusammengefaßt werden. Gleichzeitig können den Variablen in einer datentyp-anweisung Werte zugewiesen werden, z.b., float x = 3., y = 12., z ;. Alle anderen Variablen ( hier z ) erhalten den Wert 0 14 V-C-Prg IPD 2008

15 Rechengenauigkeit, mathematische Funktionen und Konstanten Für die Berechnung von arithmetischen Ausdrücken gelten die üblichen Regeln der Mathematik (Punktrechnung geht vor Strichrechnung). Die Berechnung erfolgt in der Regel von links nach rechts und bei Klammern von innen nach außen. Der Ausdruck rechts vom =-Zeichen wird unabhängig vom Datentyp links vom Gleichheits-zeichen berechnet und dann entsprechend dem Datentyp der Variablen zugewiesen und gegebenenfalls konvergiert. Aus diesem Grunde ist auch die folgende Anweisung erlaubt: k = k + 1 ; Zu beachten ist, dass bei jeder einzelnen Rechenoperation die jeweils beteiligten Datentypen zu berücksichtigen sind. Allgemein kann man sagen, ist an einer einzelnen Rechenoperation ein Gleitkommawert beteiligt, ist das Zwischenergebnis vom Typ Gleitkomma. Die folgenden Beispiele sollen dies verdeutlichen: Gegeben: float a, b, c, d ; int k, i, j, m ; a = 4. ; k = 4 ; b = 5. ; i = 5 ; c = 6. ; j = 6 ; Aufgabe 1: d = b / a ; d = i / k ; d = i / a ; m = a / b ; m = b / a ; Ergebnisse: d = d = d = m = m = Aufgabe 2: d = k / i + a * b / j ; Berechnen: d = k / i + a * b / j ; Ergebnis: d = Berechnen Sie die folgende Aufgabe m = k * i / j ; a) von links nach rechts m = b) von rechts nach links m = (falsch) Hinweis: Eine Konstante ohne Dezimalpunkt ist vom Typ int (Festkomma), mit vom Typ double (Gleitkomma). Lösen Sie nun die beiden Aufgaben, unter der Berücksichtigung, daß x, a, b vom Typ float sind. x = 10 / 3 ; x = x = 10. / 3 : x = x = 15. / 3. ; x = a = 8. / 3. ; b = 7. / 3. ; x = a + b ; x = 15 V-C-Prg IPD 2008

16 Rechengenauigkeit, mathematische Funktionen und Konstanten Häufig benötigen Sie für die Berechnung mathematische Funktionen, wie z.b., die Quadratwurzel oder die trigonometrischen Funktionen wie sin, cos, etc.. Die Leistungen dieser Funktionen stehen in einer so genannten Header-Datei (include-datei), die durch die folgende Präprozessoranweisung bereitgestellt werden: #include < math.h > Diese Anweisung muss am Anfang einer Quellcode-Datei stehen. Hier einige mathematischen C-Funktionen: sqrt ( double ) => Quadratwurzel ziehen sin (double ) => sinus-wert aus Bogenmaß abs ( int ) => Absolutwert berechnen fabs ( double ) => Absolutwert berechnen Beispiel: In einem Buchhaltungsprogramm wird an sehr vielen Stellen die Mehrwertsteuer berücksichtigt. Es ist bekannt, dass sich der Wert der MwSt in den letzten Jahren mehrmals geändert hat. Um dies in dem Programm zu berücksichtigen, müssten an all diesen Stellen der Wert des Mehrwertsteuersatzes manuell geändert werden. Dabei kann man natürlich sehr leicht eine Änderung vergessen und damit Fehler in das Programm einbringen. In solchen Fällen werden so genannte symbolische Konstanten verwendet. Diese Text-Konstanten werden mit Hilfe der folgenden Präprozessoranweisung formuliert: #define MWST 19 Der Präprozessor ersetzt in dem Quellcode vor der Übersetzung alle Zeichen <MWST> durch die Zeichen <19>. (Dieser Vorgang heißt auch Textersetzung). Die #define-anweisung muß vor der ersten Benutzung der Text-Konstanten (möglichst am Anfang des Quellcodes) stehen. Die Konstanten müssen groß geschrieben werden. 16 V-C-Prg IPD 2008

17 Kommentare, Schlüsselwörter, Block, Zusammenfassung C-Programme können formatfrei geschrieben werden. Zwischenräume (Leerzeichen) spielen keine Rolle. Jeder Anwender sollte dennoch genügend Gebrauch davon machen (vgl. 01/01), damit das Programm leichter lesbar ist. Des weiteren ist die Benutzung von Kommentarzeilen sehr sinnvoll, damit jeder zu einem späteren Zeitpunkt noch weiß, warum der Algorithmus in dieser Form realisiert worden ist. Ein Kommentar kann über mehrere Zeilen gehen und sieht so aus: /* beliebiger Kommentar */ Zu beachten sind hier jeweils immer nur die Anfangs- ( /* ) und die End- Markierungen ( */ ). /* Dieser Kommentar hat vier Zeilen */ In C haben einige Wörter eine ganz bestimmte Bedeutung. Diese Wörter werden auch Schlüsselwörter genannt und dürfen von dem Programmierer nicht anderweitig verwendet werden. Die Schlüsselwörter sind: auto double if static break else int struct case entry long switch char extern register typedef continue float return union default for short unsigned do goto sizeof while Mehrere Anweisungen können durch eine je eine vor- und hinten-angestellte zu einem sogenannten Block zusammengefaßt werden. Dieser Block wird dann von einer übergeordneten Anweisung wie eine Anweisung aufgefaßt. (Vergleiche auch Programmauszug unten). 17 V-C-Prg IPD 2008

18 Kommentare, Schlüsselwörter, Block, Zusammenfassung Mittels eines Programm-Auszuges sollen hier die bis jetzt bekannten Syntax-Regeln zusammengefaßt werden: Programmauszug #include < math.h > float a = 2., j = 3., c, wurzel ; c = ( i * j ) / 2. ; /* Berechnung einer Wurzel aus einem geometrischen Mittelwert */ wurzel = sqrt ( c ) ; Erläuterung Bereitstellung der mathematischen Funktionen => Beginn eines Blockes float => datentyp-bezeichnung, jeder Bezeichner muß einen Datentyp erhalten, => Trennzeichen zwischen gleichartigen Dingen. => Verwendung immer nur als Dezimalpunkt ; => Ende einer Anweisung = => Ergibt-Anweisung, Berechnung von links nach rechts nach üblichen Rechenregeln /* => Beginn einer Kommentarzeile */ => Ende einer Kommentarzeile sqrt => Aufruf einer mathematischen Funktion => Ende eines Blockes Übung: Formulieren Sie nun einen Programmauszug, der jeweils das Verhältnis der Flächen und der Umfänge von einem Kreis zu einem Quadrat berechnet. Der Durchmesser des Kreises entspricht der Diagonale des Quadrates. Der Programmauszug soll auch alle datentyp-anweisungen enthalten 18 V-C-Prg IPD 2008

19 C-Element: Funktion In C werden die einzelnen Lösungsalgorithmen in Form von Funktionen formuliert, die bestimmte Aufgaben ausführen. Jede Funktion erhält einen Funktions-Namen. Dann folgt der Funktionsrumpf als Folge von Anweisungen in Form eines Blockes. Das Ende der Funktion wird durch eine return-anweisung angezeigt. Eine Funktion kann Eingabewerte und Ausgabe- oder Rückgabewerte besitzen. Auch das Hauptprogramm ist in C eine Funktion und muß den Namen main erhalten. Ohne eine Funktion main gibt es kein ausführbares Programm. Die Syntax einer Funktion in der allgemeinen Form lautet: Syntax: < datentyp > < funktionsname > ( < argumentliste > ) < Folge von Anweisungen ; > return ( < rückgabewert > ) ; Beispiel 1 void main ( ) int a = 2, b = 6, c ; c = a / b ; return ; Funktionen sind in sich abgeschlossen und alle in der Funktion definierten Variablen sind auch nur innerhalb der Funktion gültig. Funktionen können beliebig oft von anderen Funktionen aufgerufen werden. Eine Funktion kann über die Argumentliste mehrere Eingangswerte erhalten, aber nur einen Wert (rückgabewert) über den Funktionsnamen an die rufende Funktion zurückgeben (s. Beispiel 2). Die argumentliste (.. ) muß immer angeführt werden, auch wenn keine Eingangsparameter benötigt werden. Funktionen mit dem datentyp void, haben keinen rückgabewert und damit auch keine (.. ) hinter der return-anweisung. Wie trotzdem Variablen verändert werden können, die sowohl innerhalb als auch außerhalb des Gültigkeitsbereichs der Funktion vorkommen, wird zu einem späteren Zeitpunkt in dem Kapitel pointer (08/01) vorgestellt. 19 V-C-Prg IPD 2008

20 C-Element: Funktion Funktionen ermöglichen es, Programme in kleinere, mehr oder weniger selbständige Einheiten zu zerlegen und so die Übersichtlichkeit und Wartbarkeit der Programme zu erhöhen. Prinzipiell müssen alle in einem Programm benutzten Funktionen dem Compiler bekannt sein. Zunächst wird die Funktion mittel_wert definiert und dann von main aufgerufen. (s. Beispiel 2) Besser und übersichtlicher ist es, die jeweils benutzte Funktion vorab nur zu deklarieren (s. Beispiel 3) und die eigentliche Definition der Funktion zu einem späteren Zeitpunkt zu platzieren. Die Variablen m, i, k gelten nur in der Funktion mittel_wert. Die Variable c gilt nur in der Funktion main. Der Wert der Variablen m wird über den Funktionsnamen mittel_wert an die Funktion main zurückgegeben und der Variablen c zugewiesen. Beispiel 2 /* Definition der Funktion */ int mittel_wert ( int k, int i ) int m ; m = (k + i ) / 2 ; return ( m ) ; /* Hauptprogramm */ void main ( ) int c ; c = mittel_wert ( 2, 3 ) ; return ; Welchen Wert erhält c = Beispiel 3 /* Deklaration der Funktion */ int mittel_wert ( int, int ) ; /* Hauptprogramm */ void main ( ) int c ; c = mittel ( 2, 3 ) ; return ; /* Definition der Funktion */ int mittel_wert ( int k, int i ) int m ; m = (k + i ) / 2 ; return ( m ) ; 20 V-C-Prg IPD 2008

21 C-Element: Funktion Funktionen, die in verschiedenen Programmen benötigt werden, stehen in separaten Quell-Dateien < name.c >. Die Deklarationen werden dann in so genannten Header-Dateien < name.h > zusammengefaßt und mit einer #include- Anweisung eingelesen. Auf diese Art und Weise lassen sich die Funktionen leichter verwalten und ändern. #include mittel_wert.h void main ( ) < Anweisungen > /* Aufruf von mittel_wert */ j = mittel_wert ( 5, 7 ); Datei: mittel_wert.h int mittel_wert ( int, int ) ; Datei: mittel_wert.c Gesamte Definition der Funktion mittel_wert int mittel_wert ( int k, int i ) int m ; m = (k + i ) / 2 ; return ( m ) ; 21 V-C-Prg IPD 2008

22 C-Element: Funktion Im Zusammenhang mit der Benutzung von Funktionen soll hier auf den Unterschied von lokalen und globalen Variablen eingegangen werden. Die Variable x4 ist global, da sie außerhalb der Funktion deklariert wurde. Der Inhalt von x4 kann jederzeit verändert werden. Die Variablen x1, x2 und x3 sind lokal. Die Variablen x1 und x2 in den Funktionen main und mult sind völlig verschiedene Variablen. Ihr Gültigkeitsbereich beschränkt sich auf die jeweiligen Funktionen und deshalb sind ihre Werte auch nicht übertragbar. Dies bedeutet, die Variablen x1 und x2 sind nur Eingangs-werte für die Funktion mult. Ihre Veränderungen innerhalb der Funktion mult sind für die Werte von x1 und x2 in der Funktion main ohne Bedeutung. Der Rückgabewert kann auch ein ausdruck sein. Der datentyp des Rückgabewertes ( hier x1 ) muß mit dem datentyp der Funktion ( hier mult ) übereinstimmen. float mult ( float, float ) ; float x4 = -3. ; void main ( ) float x1, x2, x3 ; x1 = 5 ; x2 = 2 ; x3 = mult ( x1, x2 ) * x4 ; /* Wie groß sind hier x1, x2, x3, x4?*/ float mult ( float x1, float x2 ) x4 = 12. ; x1 = x1 * x2 ; return x1 ; x1 = x2 = x3 = x4 = 22 V-C-Prg IPD 2008

23 C-Element: Funktion Schreiben Sie nun gemäß unten stehender Skizze eine Funktion zur Berechnung der Spannung eines eingespannten Biegebalkens, der mit einer senkrechten Kraft am Ende (bei der Länge l ) des Balkens belastet wird. Der Querschnitt ist ein Rechteck mit den Abmessungen b und h. Mathematische Grundlagen: Moment = Kraft * Länge Spannung = Moment / Widerstandsmoment Widerstandsmoment = Breite * Höhe 2 / 6 Da die Lese- und Schreibanweisungen in C noch nicht bekannt sind, benutzen Sie bitte folgende Anwender-Funktionen zum Lesen und Schreiben von double-werten: Lesen Sie die Werte für Kraft und Länge einzeln mit der Funktion < eingabe ( beliebiger Text ) ; > ein, wobei der Bezeichner eingabe die jeweils von Ihnen eingegebenen Werte zurückliefert. Die Ausgabe der Spannung realisieren Sie mit der Funktion < ausgabe ( Text, < wert >, Text ) ; >. Beide Funktionen sind vom Typ double und die Deklarationen stehen in der Header-Datei < einaus.h >. Hinweis: Bevor Sie beginnen, sollten Sie die Dateien < einaus.h > und < einaus.c > in Ihr Heimatverzeichnis kopieren. Beide Dateien stehen auf dem BSCW-Server zum Download zur Verfügung. Skizze: F H L B 23 V-C-Prg IPD 2008

24 C-Elemente: scanf und printf In der Regel benötigt jedes Programm zur Berechnung die Eingabe von Werten und die Ausgabe der berechneten Ergebnisse. Die in dem Übungsbeispiel Biegebalken benutzten Funktionen eingabe und ausgabe sind Anwender-Funktionen, welche die Standard-Eingabe-Funktion ( scanf ) und die Standard-Ausgabe-Funktion ( printf ) von C beinhalten. (Standard: Eingabe von der Tastatur, Ausgabe auf den Bildschirm.) Die Eingabe eines Variablenwertes in C geschieht mit der Funktion scanf. Die Syntax lautet: scanf ( < formatparameter >, < &variable > ) ; Der Formatparameter (eine Kombiantion aus %-Zeichen und Buchstaben) gibt an, welchen Datentyp die einzulesende Variable erhalten soll. Sollen mit einer scanf-anweisung mehrere Variablen eingelesen werden, müssen entsprechend viele Formatparameter in Anzahl, Form und Reihenfolge mit der Variablen-Liste übereinstimmen. Das Zeichen & muss vor jedem Variablennamen in der scanf-anweisung angegeben werden. In den folgenden Anweisungen ist dieses Zeichen wieder wegzulassen. Die Erläuterung für diese Vorgehensweise erfolgt später in dem Kapitel pointer bzw. zeiger. C benutzt zum Einlesen des Variablenwertes einen Hilfspuffer mit dem Namen < stdin >. Da der Inhalt dieses Puffers nicht automatisch gelöscht wird, sollte nach jeder Benutzung von scanf der Inhalt der Datei mit dem folgenden Befehl gelöscht werden: fflush ( stdin ) ; Alle Ausgaben auf den Bildschirm, gleichgültig ob Sie a) einen Text, b) eine Variable oder c) eine Kombination von Text und Variable ausgeben wollen, werden mit der printf-anweisung ausgeführt. Statt einer Variablen kann auch ein ausdruck (s. 02/01) eingesetzt werden. Hierbei ist zu beachten, daß der Datentyp des ausdruck- Ergebnis dem Datentyp des Formatparameter entspricht. Hinweis: Formatparameter = fp genannt. 24 V-C-Prg IPD 2008

25 C-Elemente: scanf und printf Alle Ausgaben auf den Bildschirm, gleichgültig ob Sie a) einen Text, b) eine Variable oder c) eine Kombination von Text und Variable ausgeben wollen, werden mit der printf-anweisung ausgeführt. Statt einer Variablen kann auch ein ausdruck (s. 02/01) eingesetzt werden. Hierbei ist zu beachten, daß der Datentyp des ausdruck- Ergebnis dem Datentyp des Formatparameter entspricht. Hinweis: Formatparameter = fp genannt. Syntax: a) printf ( <beliebiger Text > ) ; b) printf ( < fp >, < variable > ) ; c) printf ( text < fp > text, < variable > ) ; fp %d %hd %ld %f %lf %c %s Datentyp int short long float double char (1 Zeichen) char (Zeichenkette) Auch für die printf-anweisung gilt, daß die auszugebenden Variablen in Anzahl, Form und Reihenfolge mit den Formatparametern übereinstimmen müssen. Zur besseren Strukturierung der Ausgabe kann die Formatangabe durch weitere sogenannte Format-Zeichen ergänzt werden, z.b.: \n => neue Zeile an dieser Position %-d => ein Minuszeichen vor dem Buchstaben gestattet eine linksbündige Ausgabe, sonst rechtsbündig %3f => die Ziffer gibt die maximale Anzahl der Stellen für die Ausgabe an %6.2lf => maximale Anzahl von 6 Stellen inklusive 2 Nachkommastellen für die Ausgabe. Beispiel: int anzahl = 4 ; float flaeche = 17.2 ; printf ( Dies ist ein Test ) ; printf ( %-6d, anzahl ) ; printf ( Fläche = %8.2lf qmm, flaeche ) ; _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Aufgabe: Lesen Sie zwei ganze Zahlen ein und lassen den Mittelwert berechnen und ausgeben. int z1, z2, zs ; scanf ( %d %d, &z1, &z2 ) ; fflush ( stdin ) ; zs = ( z1 + z2 ) / 2 ; printf ( Mittelwert = %8d\n, zs ) ; 25 V-C-Prg IPD 2008

26 C-Elemente: scanf und printf Formulieren Sie nun die Variablendefinitionen und eine printf-anweisung für die folgende Ausgabe _ _ 5 Schrauben M 10 * 30.0 vernickelt. Hinweis: Innerhalb der beiden Zeichen ist in der printf-anweisung der gesamte Zeichenvorrat erlaubt, also auch Umlaute. Des weiteren werden hier auch alle Leerzeichen bei der Ausgabe berücksichtigt. Vor jeder scanf-anweisung sollte eine printf-anweisung dem Benutzer mitteilen, was eingelesen werden soll. Die Leistungen der scanf- und printf-anweisung erhalten Sie durch die Anweisung #include < stdio.h > vor der Anweisung void main. Falls Sie später mehrere Quellcode-Dateien haben, muß in jeder Datei diese #include Anweisung stehen, in der Sie eine scanf- oder printf- Anweisung formuliert haben. Hinweise bei der Benutzung der scanf-funktion. int i, j ; scanf ( %d %d, &i, &j ) ; Eingabe 1: 3 4 (Return-Taste) Eingabe 2: 3 (Return-Taste) 4 (Return-Taste) Hinweis: Wenn Sie vor dem 2. -Zeichen ein Blank einfügen, müssen Sie ein zusätzliches Zeichen (s. rechts) eingeben. Blanks zwischen den Formatparametern sind ohne Bedeutung. %d %d ^ Blank 3 (Return-Taste) 4 (Return-Taste) a (Return-Taste) Übung: Ersetzen Sie nun in Ihrer Übungsaufgabe Biegebalken die Anwender-Funktionen eingabe und ausgabe durch entsprechende scanf- und printf-anweisungen. 26 V-C-Prg IPD 2008

27 C-Elemente: scanf und printf Ein guter Programmierer überprüft, ob die vom Anwender eingegebenen Werte auch syntaktisch richtig sind. Wenn z.b. die Eingabe einer Zahl gefordert ist, darf der Anwender keinen Buchstabe eingeben. In diesem Fall ist die einzulesende Variable mit keinem Wert belegt und dies führt in der Regel zu einem Programmfehler bis hin zu einem Programmabbruch. Man kann dieses leicht überprüfen, da die scanf-funktion, wie jede andere Funktion einen Rückgabewert ( hier vom Typ int ) besitzt Ein kleines Beispiel wird dies verdeutlichen. Beispiel: int i, j, m ; m = scanf ( %d %d, &i, &j ) ; fflush ( stdin ) ; Eingabe: 3 4 m = Eingabe: 3 a m = Eingabe: a 4 m = Bis jetzt nützt diese Kenntnis noch nichts, da Sie noch keine Möglichkeit kennen, wie die fehlerhafte Eingabe programmintern erkannt und wiederholt werden kann. An späterer Stelle wird noch einmal auf die scanf-überprüfung eingegangen. Eine weitere Besonderheit. Wenn eine Zeichenkette mit scanf eingelesen werden soll, darf die Variable kein &-Zeichen erhalten. Die Begründung dafür erfolgt später im Zusammenhang mit der Behandlung von Pointern. 27 V-C-Prg IPD 2008

28 Auswahlkonstrukte: Zweiseitige Auswahl Syntax: zwei Auswahlmöglichkeiten ja Zweiseitige Auswahl Anweisungsblock 1 28 V-C-Prg IPD 2008 Bedingung=wahr? nein Anweisungsblock 2 Beispiel: if ( betrag <=0 ) else if <Bedingung> else <Anweisung 1> <Anweisung 2> printf ( Der Wert muss groesser Null sein!\n ); betrag = sqrt( Betrag ); printf ( Die Wurzel ist: %lf \n, betrag);

29 Auswahlkonstrukte Das Programm besitzt... eine Auswahlmöglichkeit zwei Auswahlmöglichkeiten mehrere Auswahlmöglichkeiten Einseitige Auswahl Zweiseitige Auswahl Mehrstufige Auswahl Mehrseitige Auswahl (Fallauswahl) ja Bedingung=wahr? nein Anweisung1 Anweisung1... bleibt leer ja Anweisungsblock 1 Bedingung=wahr? nein Anweisungsblock 2 ja Anweisungsblock 1 Bedingung=wahr? nein Bedingung=wahr? ja nein Anwei- Bedingung=wahr? ja nein sungsblock Anweisungs- Anweisungs- 2 block 3 block 4 29 V-C-Prg IPD 2008

30 C-Element: if Es kommt häufig vor, daß die Fortsetzung eines Programmes an eine Bedingung geknüpft ist. Will man aus einem Wert eine Quadratwurzel ziehen, so ist dies nur möglich, wenn der Wert >= 0 ist. Bei negativen Werten ist der Wurzelwert imaginär und somit nicht definiert. Ähnliches gilt für die Gleichung y = 1. / x, wenn x = 0 ist. Denn dann erhält y den Wert unendlich und dieser Wert ist nicht definiert. In derartigen Fällen ist die if-anweisung anzuwenden. Die Syntax lautet Programmauszug double wert, wurzel, x, y ; wert = -12. ; wurzel = sqrt ( wert ) ; x = 0. ; y = 1. / x ; if ( < ausdruck > ) < Anweisung ; > Die Anweisung wird nur ausgeführt, wenn der Ausdruck als logischer Ausdruck wahr ist oder wenn der Ausdruck als arithmetischer Ausdruck ungleich Null ist. Arithmetische Ausdrücke wie ( a + b / c ) bedürfen keiner besonderen Erläuterung (vgl. 02/01). Der Ausdruck kann auch nur jeweils eine Variable, eine Konstante oder ein Funktionsaufruf mit Rückgabewert sein. Beispiel: Gegeben: float a =2., b = 6., c = -3., x =5. ; if ( a + b / c ) x = 10. ; x = if ( 5 ) x = 10. ; x = Logische Ausdrücke wie z.b. ( a > b ) entstehen durch den Vergleich von 2 oder mehreren Werten miteinander. Der Ausdruck a > b bedeutet a größer b. Wenn a tatsächlich größer als b ist, so ist der Ausdruck wahr (int-wert = 1), wenn nicht ist der Ausdruck falsch (int-wert = 0). Hierbei können die Vergleichswerte, hier z.b. a und b selbst wiederum komplexe Ausdrücke sein. Logische Ausdrücke sind miteinander kombinierbar durch verschiedene UND- oder ODER-Verknüpfungen. Hierbei ist zu beachten, daß das UND stärker bindet als das ODER und der Gesamtausdruck einer UND-Verknüpfung nur wahr ist, wenn alle Teilausdrücke wahr sind. Beachten Sie bitte, daß durch Setzen von Klammern die Ausdrücke verändert werden können. Folgende Vergleichsoperatoren sind unter anderem erlaubt: 30 V-C-Prg IPD 2008

31 C-Element: if Operatoren a > b a >= b a == b a < b a <= b a!= b! a a && b a b Bedeutung a größer b a größer oder gleich b a identisch mit b a kleiner b a kleiner oder gleich b a ungleich b ungleich a a und b a oder b Gegeben: a = 2.; b = 3. ; c = -2. ; d = 0. ; g = 6. ; w oder f? if ( a < b g == d && c <= b ) w oder f? if ( a >= b ) if ( g!= (c * b ) ) if ( g / b == a ) w oder f? if ( d ) if ( b / c ) if ( c * c > b - a ) w oder f? if ( a < b g == d ) && c <= b ) Wenn statt einer Anweisung jeweils mehrere Anweisungen zur Ausführung kommen sollen, so sind die einzelnen Anweisung durch einen Block (vgl. 02/03) zu ersetzen.. Ein Block wird von der vorherigen Anweisung immer wie eine einzelne Anweisung aufgefaßt. if ( < ausdruck > ) < Anweisung 1 ; > < Anweisung 2 ; > Gegeben: x = 0. ; y = 1. ; if ( a > 1) x = 2 ; y = 3 ; if ( a > 1) x = 2 ; y = 3 ; Wenn a = 0. x = y = x = y = Wenn a = 2. x = y = x = y = if ( a = 1) x = 2 ; y = 3 ; x = y = x = y = 31 V-C-Prg IPD 2008

32 C-Elemente: else und else if Wenn in Abhängigkeit von dem Ergebnis eines Ausdrucks ( wahr oder falsch bzw. ungleich Null oder gleich Null ) die Ausführung von 2 alternativen Anweisungen ( Anweisung 1 sonst Anweisung 2 ) gefordert wird, so lautet die Syntax: if ( < ausdruck > ) < Anweisung 1 ; > else < Anweisung 2 ; > Ausdruck gleich wahr => Anweisung 1 falsch => Anweisung 2 Auch hier gilt, wenn mehrere Anweisungen in Abhängigkeit des Ausdruckes zur Ausführung gelangen sollen, ist ein Block anzuwenden Syntax: if ( < ausdruck > ) < mehrere Anweisungen ; > else < mehrere Anweisungen ; > Gegeben: a = 2. ; b = -2. ; d = 0. ; Wie groß ist: a = d = Wie groß wäre a und d, wenn b = 2. ist? a = d = Beispiel 1: if ( b > 0. ) a = 7. ; d = 1. ; else a = 3. ; d = -4. ; 32 V-C-Prg IPD 2008

33 C-Elemente: else und else if if-anweisungen lassen sich in vielfältiger Weise verschachteln, solange die Syntax nicht verletzt wird. So kann z.b. jede else- Anweisung mit einer if-anweisung kombiniert werden. Man spricht dann von einer else if-anweisung. Die Syntax lautet dann: Syntax: if ( < ausdruck 1 > ) < Anweisung 1 > ; else if ( < ausdruck 2 > ) < Anweisung 2 > ; else < Anweisung 3 > ; /* Fortsetzung des Programms */ Beispiel 2: d = 0. ; if ( zahl < 0 ) d = 7. ; else if ( zahl == 0 ) d = -10. ; else d = -5. ; Ergebnis für d, wenn: a) zahl = 7, d = b) zahl = -2, d = c) zahl = 0, d = Die Auswertung der beiden Ausdrücke ( ausdruck1, ausdruck2 ) führt dazu, daß nur eine der drei Anweisungen ausgeführt wird. Gleichgültig welche Anweisung ausgeführt wird (vgl. Beispiel 2 ). Die Fortsetzung der Bearbeitung des Programms erfolgt immer an der gleichen Stelle (s. Syntax links ). Übung: Sichern Sie nun in der Aufgabe Biegebalken Ihre Eingaben mittels if-anweisungen gegen Fehler ab. 33 V-C-Prg IPD 2008

34 C-Elemente: switch, case und break Das letzte Beispiel in 04/02 macht deutlich, dass die Anwendung mehrerer verschachtelter if-anweisungen zu einem recht unübersichtlichen Programmaufbau führen kann. Wenn der Vergleichsausdruck für eine Verzweigung entweder ein ganzzahliger Wert ( datentyp int, short oder long ) oder ein Text-Zeichen ( datentyp char ) ist, lassen sich mit Hilfe der switch-anweisung in Verbindung mit verschiedenen case-anweisungen derartige Algorithmen eleganter lösen. Die Syntax lautet: Ausdruck vom Typ int switch ( < ausdruck > ) case 1: < Anweisung 1 > ; < Anweisung 2 > ; break ; case 3: case 4: < Anweisung 3 > ; break ; default: < Anweisung 4 > ; /* Fortsetzung des Programms */ Ausdruck vom Typ char switch ( < ausdruck > ) case a : < Anweisung 1 > ; < Anweisung 2 > ; break ; case c : case p : < Anweisung 3 > ; break ; default: < Anweisung 4 > ; /* Fortsetzung des Programms */ Der Ausdruck in der switch-anweisung muß entweder vom Datentyp int (oben links) oder vom Datentyp char (oben rechts) sein. Die switch-anweisung ermittelt den Wert des Ausdruckes, der als Vergleichswert für die nachfolgenden case- Anweisungen dient. Bei Übereinstimmung werden die zur case-anweisung zugehörigen Anweisungen ausgeführt. In den case- Anweisungen dürfen nur Konstanten oder einzelne Text-Zeichen stehen. Eine Anweisung kann auch für verschiedene case- Konstanten gelten. Die Konstanten unterliegen keiner Reihenfolge, z.b. nach Größe geordnet. Die jeweils anschließende break-anweisung beendet den case-zweig und verhindert somit die Ausführung der nachfolgenden Anweisungen. Die Fortsetzung des Programms erfolgt immer nach der. Fehlt die break-anweisung werden alle Anweisungen nach der durch Vergleich gefundenen case-anweisung bis zur nächsten break-anweisung ausgeführt. Wird bei keiner der case-anweisung eine Übereinstimmung erzielt, werden die Anweisungen der default-anweisung ausgeführt. Die default- Anweisung ist nicht zwingend vorgeschrieben, sollte aber in der Regel als Fehlerhilfe von dem Programmierer für den Anwender genutzt werden. 34 V-C-Prg IPD 2008

35 C-Elemente: switch, case und break Ein typischer Anwendungsfall für die Kombination der switchund case-anweisungen ist das nach-folgende Beispiel. Sie möchten das untenstehende Menü ausgeben und in Abhängigkeit einer Ziffer unterschiedliche Programm-Leistungen realisieren. Rechts sehen Sie den zugehörigen Programmauszug. Menü-Übersicht = Werte einlesen 2 = Werte berechnen 3 = Ausgabe der Ergebnisse 4 = Programm beenden Gib Ziffer: Programmauszug int ziffer ; printf ( Menü-Übersicht \n ) ; printf ( 1 = Werte einlesen \n 2 = Werte berechnen ) ; printf ( 3 = Ausgabe der Ergebnisse \n 4 = Programm beenden ) ; printf ( \n Gib Ziffer: ) ; scanf ( %d, &ziffer ) ; fflush ( stdin ) ; switch ( ziffer ) case 1: eingabe (...) /* Anwender-Funktion */ break ; case 2: berechne (...) /* Anwender-Funktion */ break ; case 3: ausgabe (...)/* Anwender-Funktion */ break ; case 4: return ; break ; default: printf ( Ziffer %d nicht definiert! \n ) ; 35 V-C-Prg IPD 2008

36 Wiederholungskonstrukte Die Zahl der Wiederholungen ist... zahlenmäßig bekannt Zählergesteuerte Wiederholung von Bedingungen abhängig Bedingte Wiederholung Zählergesteuerte Wiederholung: for (<initialisierung> ; <bedingung> ; <iteration> ) <Anweisungen>... Kopfgesteuerte Wiederholung: while ( <bedingung>) <Anweisungen>... Kopfgesteuerte Wiederholung Fußgesteuerte Wiederholung Fußgesteuerte Wiederholung: Do while ( <bedingung> ); 36 V-C-Prg IPD 2008

37 C-Elemente: while, do und for Sie haben sicherlich auch festgestellt, dass bei einer fehlerhaften Eingabe die erneute Eingabe eines Wertes einen Rücksprung innerhalb des Programms erfordert. In anderen Programmiersprachen wird hier einfach die goto-anweisung benutzt. In C spricht man von einem schlechten Programmierstil, wenn in einer derartigen Situation die goto-anweisung benutzt wird. Wiederholungen werden in C immer mit Schleifen ausgeführt. Als Schleifen stehen die Elemente while, do und for zur Verfügung. Für alle Schleifen gelten folgende Randbedingungen: Es wird mindestens eine Schleifenvariable ( hier: < lauf > ) definiert. Zu Beginn der Schleife liegt ein Anfangswert ( hier: < startwert > ) vor. Ein Wert für die Änderung ( hier: < schritt > ) der Schleifenvariablen ist bekannt. Der Änderungswert darf auch negativ sein. Eine Bedingung ( hier: < abbruchbedingung > ) für die Dauer der Wiederholungen liegt vor. Solange die Abbruchbedingung wahr oder ungleich 0 ist (vgl. 04/01), wird die Wiederholung fortgesetzt. Der Wiederholungsbereich wird bei mehr als einer Anweisung durch einen Block (... ) definiert. Im Folgenden sehen Sie die Syntax der drei Schleifen im Vergleich: 37 V-C-Prg IPD 2008

38 C-Elemente: while, do und for while lauf = startwert ; while ( < abbruchbedingung > ) < Anweisungen ; > lauf = lauf + schritt ; /* Fortsetzung des Programms */ do lauf = startwert ; do < Anweisungen ; > lauf = lauf + schritt ; while ( < abbruchbedingung > ) ; /* Fortsetzung des Programms */ for for ( lauf = startwert ; < abbruchbedingung > ; lauf = lauf + schritt ) < Anweisungen ; > /* Fortsetzung des Programms */ Bei allen drei Schleifen wird der Wiederholungsbereich solange durchlaufen, wie die Abbruchbedingung wahr oder ungleich Null ist. Bei Abbruch wird die Bearbeitung an der gekennzeichneten Stelle fortgesetzt. Des weiteren kann man auch mit Hilfe der break-anweisung (vgl. 04/03) in Verbindung mit einer if-anweisung den Wiederholungsbereich ebenfalls verlassen. Auch hier erfolgt eine Fortsetzung an der Stelle /* Forts... Bei der for-schleife ist die Reihenfolge für die Bearbeitung der Anweisungen in der for-anweisung zu beachten: a) Definition Startwert b) Überprüfen der Abbruchbedingung c) Ausführen der Anweisungen d) Veränderung der Schleifenvariablen e) Überprüfen der Abbruchbedingung f) siehe c), usw. Wenn Sie die drei Schleifen vergleichen, werden Sie feststellen, daß die do-schleife unabhängig vom Startwert und der Abbruchbedingung immer mindestens einmal durchlaufen wird. Aus diesem Grunde wird diese Schleife auch nichtabweisende oder fußgesteuerte Schleife genannt. Die beiden anderen Schleifen gehören zu den abweisenden oder kopfgesteuerten Schleifen. Welche Schleife zum Einsatz kommt, hängt in erster Linie vom Anwendungsfall ab. Es gibt keine zwingenden Gründe für die Verwendung der einen oder anderen Schleife. Übung: Ergänzen Sie die Übungsaufgabe Biegebalken so, daß Sie eine falsche Eingabe wiederholen können. 38 V-C-Prg IPD 2008

39 C-Element: Endlosschleife Berechnen Sie nun den Wert der Variablen < summe > und < i > in den folgenden drei Beispielen: summe = 0 ; i = 0 ; while ( i <= 5 ) i = i + 1 ; summe = summe + i ; summe = i = summe = 0 ; i = 0 ; do i = i + 1 ; summe = summe + i ; while ( i <= 5 ) ; summe = i = summe = 0 ; for ( i = 0 ; i <= 5 ; i = i + 1 ) summe = summe + i ; summe = i = Vorsicht: Bei der Formulierung der Abbruchbedingung ist unbedingt darauf zu achten, daß Sie keine so genannte Endlosschleife erzeugen. Wenn z.b. trotz Änderung der Schleifenvariablen die Abbruchbedingung immer wahr oder ungleich Null ist, führt dies zu einer ständigen Wiederholung des Programmabschnittes ohne Unterbrechung. Dies tritt z.b. ein, wenn im obigen Beispiel der Startwert i = 6 wäre. Manchmal wird dies durch den Programmierer gewollt. In diesem Fall kann er mit Hilfe der break-anweisung (vgl. 04/03) einen gewollten Abbruch erzielen. 39 V-C-Prg IPD 2008

40 C-Element: Endlosschleife Endlosschleife ohne Abbruch i = 0 ; summe = 0 ; while ( 2 ) i = i + 1 ; summe = summe + i ; Beispiel: Endlosschleife Nun können Sie das Beispiel von 04/03 entsprechend ergänzen. Die Ergänzung ist zur besseren Unterscheidung fett dargestellt. Menü-Übersicht = Werte einlesen 2 = Werte berechnen 3 = Ausgabe der Ergebnisse 4 = Programm beenden Gib Ziffer: Endlosschleife mit Abbruch i = 0 ; summe = 0 ; while ( 2 ) i = i + 1 ; summe = summe + i ; if ( i > 5 ) break ; Programmauszug int ziffer ; while ( 1 ) printf ( Menü-Übersicht \n ) ; printf ( 1 = Werte einlesen \n 2 = Werte berechnen ) ; printf ( 3 = Ausgabe der Ergebnisse \n 4 = Programm beenden ) ; printf ( \n Gib Ziffer: ) ; scanf ( %d, &ziffer ) ; fflush ( stdin ) ; switch ( ziffer ) case 1: eingabe (... break ; case 2: berechne (... break ; case 3: ausgabe (... break ; case 4: return ; break ; default: printf ( Ziffer %d nicht definiert! \n ) ; 40 V-C-Prg IPD 2008

41 C-Element: Felder Bisher konnte eine Variable immer nur einen Wert annehmen. Nun kommt es aber häufig vor, daß eine Variable gleichzeitig unterschiedliche Werte haben kann, so z.b. die Variable <lottozahl >, die 6 verschiedene Werte erhält. Gibt man den 6 gespielten Lottozahlen < zsi > und den 6 gezogenen Lottozahlen < zgi > jeweils 6 verschiedene Variablennamen, müßte man in einem Programm, welches zur Gewinnermittlung < anzahl > die gespielten mit den gezogenen Lottozahlen vergleichen soll, eine Vielzahl ähnlicher Anweisungen durchführen, z.b. int anzahl = 0, zs1, zs2, zs3, zs4, zs5, zs6, zg1, zg2, zg3, zg4, zg5, zg6 ; < hier werden die gespielten und gezogenen Zahlen definiert > if (zs1 == zg1 zs1 == zg2 zs1 == zg3 zs1 == zg4 zs1 == zg5 zs1 == zg6 ) anzahl = anzahl + 1 ; if (zs2 == zg1 zs2 == zg2 zs2 == zg3 zs2 == zg4 zs2 == zg5 zs2 == zg6 ) anzahl = anzahl + 1 ; usw. bis if (zs6 == zg1 zs6 == zg2 zs6 == zg3 zs6 == zg4 zs6 == zg5 zs6 == zg6 ) anzahl = anzahl + 1 ; In diesem Fall bietet es sich an, die Variablen jeweils als Feld ( array ) zu deklarieren. Ein Feld hat eine bestimmte Anzahl von Variablenwerten mit dem gleichen Variablennamen. Auf die einzelnen Werte wird über einen sogenannten Index oder eine Adresse zugegriffen. Adressen sind immer ganzzahlig und müssen deshalb vom Datentyp int sein. Die Länge des Feldes bzw. die Anzahl der Elemente wird mit Hilfe von 2 [ ] angegeben. Zu beachten ist, dass in C die erste Adresse immer den Wert < 0 > hat. Ein Feld wird folgendermaßen definiert: < datentyp > < variablenname > [ feldlänge ] ; Beispiel: int zahl [ 6 ], z1 ; z1 = zahl [ 2 ] ; Hier wird die Variable < zahl > mit 6 Werten definiert und der Variablen < z1 > das Element mit dem Index < 2 > zugewiesen. Zahl Adresse Wie groß ist? z1 = zahl [ 2 ] ; z1 = zahl [ 6 ] ; 41 V-C-Prg IPD 2008

42 C-Element: Felder Wenn Sie den obigen Programmauszug für den Vergleich der 6 Lottozahlen nunmehr mit Feldern in Verbindung mit einer Schleife durchführen, sieht daß so aus: int anzahl = 0, zs [ 6 ], zg [ 6 ], i, j ; < hier Definition der Zahlen > for ( i = 0 ; i < 6 ; i = i + 1 ) for ( j = 0 ; j < 6 ; j = j + 1 ) if ( zs [ i ] == zg [ j ] ) anzahl = anzahl + 1 ; Neben eindimensionalen Feldern gibt es auch mehrdimensionale Felder. Die Längen der einzelnen Felder müssen nicht gleich lang sein. Hier ein Anwendungsbeispiel aus der Mathematik: int matrix [ 3 ] [ 5 ], i, j ; matrix [ 0] [ 1] [ 2] [ 3] [ 4] [ 0] [ 1] [ 2] Ermitteln Sie: i = matrix [ 1 ] [ 3 ] ; i = j = matrix [ 2 ] [ 0 ] ; j = Bevor Sie eine neue Übungsaufgabe für die Anwendung von Feldern in Verbindung mit einer Schleife erhalten, erarbeiten Sie bitte noch das nächste Kapitel Textbearbeitung, damit die Übungsaufgabe Biegebalken (00/04) ergänzt und abgeschlossen werden kann. Die Erweiterung erfordert die Lösung von 2 Teilaufgaben: Die Eingabe der Werte soll in einer Funktion lies_double ( char text ) realisiert werden (07/01). Der Benutzer soll am Ende des Programms entscheiden, ob er die Berechnung wiederholen möchte (07/01). 42 V-C-Prg IPD 2008

43 C-Element: Zeichenketten - Strings Sie glauben, daß Sie bisher noch nicht den Datentyp char sondern ausschließlich numerische Werte mit den Datentypen float, double, int, short und long verarbeitet haben. Dieses ist nur bedingt richtig. In den von Ihnen benutzten printf- Anweisungen kommen jeweils Texte < Text > vor, die man auch Zeichenketten oder string nennt und diese sind vom Datentyp char. Während ein einzelnes Zeichen eine einfache Variable ist, werden Zeichenketten auch Stringvariablen oder indizierte Variablen genannt. Letztere werden als Felder mit Index definiert. Syntax: char buchstabe, zeile [ feldlänge ] ; Bei der Zuordnung von Werten wird der Wert einer einfachen char-variable jeweils mit einem einfachen < > vor- und hintenangestellten Anführungszeichen und der Wert einer indizierten char-variablen mit dem doppelten < > Anführungszeichen versehen. Belegung siehe Beispiel 1. Beispiel 1: char buchstabe ; char zeichenkette [20] = Ingenieurinformatik ; buchstabe = x ; buchstabe = zeichenkette [ 7 ] ; = zeichenkette [11] = s ; In Ingenieurinformatik wird der Buchstabe geändert. Beispiel 2: char zeile [ 80 ], zeichen ; printf ( Gib Zeichen ein ) ; scanf ( %c, &zeichen ) ; fflush ( stdin ) ; printf ( Gib Text ein ) ; scanf ( %s, zeile ) ; fflush ( stdin ) ; Beim Einlesen von Werten für char-variablen müssen Sie unterscheiden, ob es sich um ein einzelnes Zeichen oder eine Zeichenkette handelt. Bei einem einzelnen Zeichen müssen Sie die Variable mit dem &-Zeichen versehen (s. Beispiel 2), bei einer Zeichenkette auf keinen Fall, da dies ein Feld ist.. Bei der Übergabe von indizierten Variablen an eine aufgerufene Funktion muß in der Parameterliste der gerufenen Funktion die Feldlänge nicht angegeben werden. Hier wird automatisch die Länge des belegten Textes als Feldlänge angenommen. Wenn Sie trotzdem diese indizierte Variable mit einem Index versehen, so ist hier als Übergabewert nur das einzelne Zeichen an der Position des angegeben Index gemeint. 43 V-C-Prg IPD 2008

44 C-Element: Zeichenketten - Strings Zur Bearbeitung von Zeichenketten gibt es in C eine ganze Reihe von Funktionen. So kann z.b. mit der Funktion strlen ( char < zeichenkette > ) die Anzahl der belegten Zeichen von < zeichenkette > ermittelt werden. Der Wert für die Anzahl wird durch den Rückgabewert bereitgestellt. Die Leistungen der C-Funktionen für die String-Bearbeitung erhalten Sie durch den Aufruf der Header-Datei #include < string.h > ; # include < string.h > # include < stdio.h > int zeichen_suche ( char, char [ ] ) ; void main ( ) int anzahl ; char zeichen = e ; char zeile [13] = Testbeispiel ; anzahl = zeichen_suche ( zeichen, zeile ) ; printf ( %s enthält %d * den Buchstaben %c, zeile, anzahl, zeichen ) ; return ; int zeichen_suche ( char zeichen, char text [ ] ) int z_anz = 0, z_max, i ; z_max = strlen ( text ) ; for ( i = 0 ; i < z_max ; i = i + 1 ) if ( text [i] == zeichen ) z_anz = z_anz + 1 ; return ( z_anz ) ; Die Belegung von zeile [13] darf in dieser Form... nur bei der Initialisierung erfolgen. In einer Anweisung dürfen nur noch einzelne Zeichen, z.b. zeile [ i ] zugewiesen werden. Für die Zuweisung von Zeichenketten und die Anwendung weiterer Bearbeitungen von Zeichenketten gibt es verschiedene Funktionen ( s. 07/02). 44 V-C-Prg IPD 2008

45 C-Element: Zeichenketten - Strings Beachten Sie bitte, die folgende Besonderheit bei Textfeldern: Beim Einlesen von Texten wird bei einer Zeichenkette seitens C immer automatisch ein sogenanntes Null-Byte < \0 > hinten angefügt, mit welchem das Ende der belegten Zeichenkette markiert ist. Diese sogenannte Endmarke muß vorhanden sein, wenn Sie die Vielzahl der vorhandenen C-Funktionen zur Textbearbeitung nutzen wollen, d.h., wenn Sie selbst programmintern eine Zeichenkette belegen, müssen Sie selbst für die Zuordnung der Endmarke sorgen. Bei der Initialisierung (wie in Beispiel11) ist das Setzen der Endmarke durch den Anwender nicht erforderlich. Bei der Angabe der Groesse eines Textfeldes müssen Sie demnach immer ein Zeichen mehr angeben als im Text enthalten ist. char zeichenkette [20] = Ingenieurinformatik ; Der Text sieht intern folgendermaßen aus: Index Zeichen I n g e n i e u r i n f o r m a t i k \0 Da Texte in C als Felder vom Typ char behandelt werden, ist die Textbearbeitung nicht so einfach wie bei anderen Datentypen, wie beispielsweise bei int, double etc. Es ist z. B. nicht möglich einer Textvariable in einem C-Programm einen neuen Wert zuzuweisen in der Form: zeichenkette = Neuer Text ; <- FALSCH!!!! 45 V-C-Prg IPD 2008

46 C-Element: Zeichenketten - Strings Um Texte in C komfortabel bearbeiten zu können stehen eine Reihe von Hilfsfunktionen zur Verfügung. Die wichtigsten dieser Funktionen werden im Folgenden vorgestellt. Diese Funktionen stehen durch Einbinden der Headerdatei string.h zur Verfügung. int strlen ( <Zeichenkette>); Ermittelt die Länge eines Textes (ohne das abschließende \0 ) int n; char text[20] = Ingenieurinformatik ; n = strlen ( text); int sprintf ( Zeichenkette, Format,...); Welchen Wert hat n? Schreibt den angegebenen Ausdruck in Zeichenkette. Analog zu der bekannten Funktion printf. Diese Funktion kann benutzt werden, um einer Zeichenkette einen neuen Text zuzuweisen. anz = 3; sprintf (text, Es wurden %d Zahlen richtig getippt, anz ); int strcpy (Text1, Text2); Kopiert den Inhalt von Text2 in die Zeichenkette Text1. Kann ebenfalls für die Zuweisung benutzt werden. strcpy (text, IngInf ); printf ( %s, text ); strcpy ( text, Neuer, sehr langer Text ); printf ( %s, text ); int strcmp ( Text1, Text2); Welche Ausgabe erfolgt am Bildschirm? Vergleicht die beiden Zeichenketten Text1 und Text2. Das Ergebnis des Vergleichs kann über den Rückgabewert ausgewertet werden. Sind beide Texte identisch, liefert die Funktion den Wert V-C-Prg IPD 2008

47 C-Element: Pointer Bevor das C-Element Pointer bzw. Zeiger vorgestellt wird, soll zunächst noch einmal auf den Unterschied zwischen globalen und lokalen Variablen in den Beispielen A, B und C eingegangen werden. A int quadrat ( int ) ; void main ( ) int i, j ; /* lokal */ i = 2 ; j = quadrat ( i ) ; return ; /*** Funktion ******* / int quadrat ( int n ) int i ; /* lokal */ i = n * n ; n = 0 ; return ( i ) ; i = j = B int quadrat ( int ) ; int i ; /* global */ void main ( ) int j ; i = 2 ; j = quadrat ( i ) ; return ; /*** Funktion ******* / int quadrat ( int n ) i = n * n ; n = 0 ; return ( i ) ; i = j = C int quadrat ( int ) ; int i ; /* global */ void main ( ) int i, j ; /* lokal */ i = 2 ; j = quadrat ( i ) ; return ; /*** Funktion ******* / int quadrat ( int n ) int i ; /* lokal */ i = n * n ; n = 0 ; return ( i ) ; i = j = 1. In Beispiel A ist die Variable < i > jeweils nur als lokale Variable definiert, d.h., im Speicher gibt es 2 verschiedene Variablen mit dem Namen < i > und die Variable ist nur in der jeweiligen Funktion gültig. 2. In Beispiel B gibt es keine lokale Variable < i > sondern nur eine globale Variable < i >, d.h., beide Funktionen greifen auf die gleiche Variable im Speicher zurück. 3. Im Beispiel C gibt es sowohl eine globale Variable < i > als auch jeweils 2 lokale Variablen < i >. Grundsätzlich hat die lokale Variable < i > den Vorrang vor der globalen Variablen < i >. Überlegen Sie nun, welche Ergebnisse die Variablen < i > und < j > erhalten. 47 V-C-Prg IPD 2008

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

Fallunterscheidung: if-statement

Fallunterscheidung: if-statement Fallunterscheidung: if-statement A E 1 E 2 V 1 V 2 Syntax: if ( ausdruck ) Semantik: else anweisungsfolge_1 anweisungsfolge_2 1. Der ausdruck wird bewertet 2. Ergibt die Bewertung einen Wert ungleich 0

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

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

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

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Darstellung von Algorithmen Aus den Einführungsbeispielen und

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung) Hochschule München, FK 03 SS 2014 Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

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

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Kontrollstrukturen, Strukturierte Programmierung

Kontrollstrukturen, Strukturierte Programmierung , Strukturierte Programmierung Steuer- und Kontrollfluss Strukturierte Programmierung Arten von Strukturblöcken Sequenz Alternative Iteration C-Spezifisches Seite 1 Elementare Algorithmen SelectionSort

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Hinweise zur Übung Benötigter Vorlesungsstoff Ab diesem Übungskomplex wird die Kenntnis und praktische Beherrschung der Konzepte

Mehr

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

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

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

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

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, 11.15-13.00 Uhr Bearbeitungszeit: 105 Minuten Vorname: Nachname: Matrikelnummer: Legen Sie zu Beginn Ihren Studentenausweis

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Java-Programmierung mit NetBeans

Java-Programmierung mit NetBeans Java-Programmierung mit NetBeans Steuerstrukturen Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2012/13 Steuerstrukturen Steuerstrukturen Verzweigungen Alternativen abweisende nichtabweisende

Mehr

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07) 1. Aufgabe 6 Punkte Geben Sie Definitionen an für: float var; 1 a) eine float-variable var: b) einen Zeiger pvar, der float *pvar = &var; 1 auf die

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

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

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen

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

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

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen. Medizintechnik MATHCAD Kapitel. Einfache Rechnungen mit MATHCAD ohne Variablendefinition In diesem kleinen Kapitel wollen wir die ersten Schritte mit MATHCAD tun und folgende Aufgaben lösen: 8 a: 5 =?

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

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

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h> Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include main() { printf( hello world\n ); } Peter Sobe 1 Die Großfamilie der C-Sprachen

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

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

Datenaufbereitung in SPSS. Daten zusammenfügen

Datenaufbereitung in SPSS. Daten zusammenfügen Daten zusammenfügen I. Fälle hinzufügen Diese Schritte müssen Sie unternehmen, wenn die Daten in unterschiedlichen Dateien sind; wenn also die Daten von unterschiedlichen Personen in unterschiedlichen

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München MANUEL KALLWEIT & FABIAN KINDERMANN Literaturempfehlung: Vorlesungsskript von Heidrun Kolinsky zu FORTRAN 90/95: http://www.rz.uni-bayreuth.de/lehre/fortran90/vorlesung/index.html Schmitt, Günter (1996):

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, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Rundung und Casting von Zahlen

Rundung und Casting von Zahlen W E R K S T A T T Rundung und Casting von Zahlen Intrexx 7.0 1. Einleitung In diesem Werkstattbeitrag erfahren Sie, wie Zahlenwerte speziell in Velocity, aber auch in Groovy, gerundet werden können. Für

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

2. ZELLINHALTE UND FORMELN

2. ZELLINHALTE UND FORMELN 2. ZELLINHALTE UND FORMELN Aufgabe: In dem Beispiel Haushaltsbuch entwickeln Sie eine Kostenaufstellung, die alle monatlichen Ausgaben einzelner Sparten enthält. Darauf basierend berechnen Sie mit einfachen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung. Lineare Gleichungen mit einer Unbekannten Die Grundform der linearen Gleichung mit einer Unbekannten x lautet A x = a Dabei sind A, a reelle Zahlen. Die Gleichung lösen heißt, alle reellen Zahlen anzugeben,

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

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

Einführung in die Programmierung

Einführung in die Programmierung Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

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

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace. Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1

Tutorial. Bibliothek AutoGUITest V1.0. Windows-Benutzeroberflächen automatisiert testen. Ausgabe: 6.6.02. 06.06.02 / 13:51 Seite 1 Bibliothek AutoGUITest V1.0 Windows-Benutzeroberflächen automatisiert testen Tutorial Ausgabe: 6.6.02 06.06.02 / 13:51 Seite 1 Inhalt 1 Übersicht...3 2 Funktionsweise...3 3 Funktionsumfang...3 4 Einsatz

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Seite 1/7 Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Hier sehen Sie eine Anleitung wie man einen Serienbrief erstellt. Die Anleitung

Mehr

Beispiel(unten ist der Spielfeldrand):

Beispiel(unten ist der Spielfeldrand): Anleitung Side by Side ist ein Puzzle mit einfachen Regeln, das in einem 6x6 (oder größerem) Gitter gespielt wird. Ziel des Spieles ist es, die leeren Kästchen mit den Zahlen 1, 2, 3, 4 oder einem X zu

Mehr

SUDOKU - Strategien zur Lösung

SUDOKU - Strategien zur Lösung SUDOKU Strategien v. /00 SUDOKU - Strategien zur Lösung. Naked Single (Eindeutiger Wert)? "Es gibt nur einen einzigen Wert, der hier stehen kann". Sind alle anderen Werte bis auf einen für eine Zelle unmöglich,

Mehr

Ingenieurinformatik Diplom-FA (C-Programmierung)

Ingenieurinformatik Diplom-FA (C-Programmierung) Hochschule München, FK 03 WS 2014/15 Ingenieurinformatik Diplom-FA (C-Programmierung) Zulassung geprüft: (Grundlagenteil) Die Prüfung ist nur dann gültig, wenn Sie die erforderliche Zulassungsvoraussetzung

Mehr

Produktschulung WinDachJournal

Produktschulung WinDachJournal Produktschulung WinDachJournal Codex GmbH Stand 2009 Inhaltsverzeichnis Einleitung... 3 Starten des Programms... 4 Erfassen von Notizen in WinJournal... 6 Einfügen von vorgefertigten Objekten in WinJournal...

Mehr

Datenbanken Microsoft Access 2010

Datenbanken Microsoft Access 2010 Datenbanken Microsoft Access 2010 Abfragen Mithilfe von Abfragen kann ich bestimmte Informationen aus einer/mehrerer Tabellen auswählen und nur diese anzeigen lassen die Daten einer/mehrerer Tabellen sortieren

Mehr

1. So beginnen Sie eine Kalkulation

1. So beginnen Sie eine Kalkulation KASSE Eine iphone Apps von a-mass Dieses kleine Programm kann zur Buchführung, als Haushalts- oder Registrierkasse verwendet werden Es können laufende Kosten genauso wie jegliche Ausgaben oder Einnahmen

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

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr