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



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

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

Java-Programmierung mit NetBeans

Erwin Grüner

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

Objektbasierte Entwicklung

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

Fallunterscheidung: if-statement

1 Vom Problem zum Programm

Modellierung und Programmierung 1

Übersicht Programmablaufsteuerung

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

Diana Lange. Generative Gestaltung Operatoren

Klausur in Programmieren

Kontrollstrukturen, Strukturierte Programmierung

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

2. Programmierung in C

5. Tutorium zu Programmieren

Informatik Repetitorium SS Volker Jaedicke

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

Übungen zu C++ Kapitel 1

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

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

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

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Computerarithmetik ( )

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einführung in die Programmierung (EPR)

Programmierkurs Java

Kontrollstrukturen - Universität Köln

Sin-Funktion vgl. Cos-Funktion

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Klausur in Programmieren

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Klausur in Programmieren

Java Einführung Operatoren Kapitel 2 und 3

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Whitebox-Tests: Allgemeines

PVL 3 - Roulette. (5 Punkte) Abgabe bis

Angewandte Mathematik und Programmierung

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Prüfung Computation, Programming

Zahlensysteme. von Christian Bartl

Grundlagen der Informatik

Excel Funktionen durch eigene Funktionen erweitern.

I.1 Die Parrot Assemblersprache

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

Einführung in die Programmierung

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Überblick. Lineares Suchen

25 kann ohne Rest durch 5 geteilt werden! ist wahr

Wirtschaftsinformatik I

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Aufgabensammlung Bruchrechnen

FB Informatik. Fehler. Testplan

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Beispiel(unten ist der Spielfeldrand):

Grundlagen von C. Ausarbeitung von Jonas Gresens

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

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

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Einführung in die Programmiersprache C

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

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

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Zeichen bei Zahlen entschlüsseln

Java: Vererbung. Teil 3: super()

2 Einfache Rechnungen

Einführung in die Programmierung

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

Objektorientierte Programmierung

Der Gabelstapler: Wie? Was? Wer? Wo?

Tutorium Rechnerorganisation

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

Falte den letzten Schritt wieder auseinander. Knick die linke Seite auseinander, sodass eine Öffnung entsteht.

Modul 122 VBA Scribt.docx

Einführung in die Java- Programmierung

Wir arbeiten mit Zufallszahlen

Mediator 9 - Lernprogramm

Aufgabe 6 Excel 2013 (Fortgeschrittene) Musterlösung

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Schritt 1 - Ein Spielfeld

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

Klausur in Programmieren

3 Die Grundrechenarten

Was meinen die Leute eigentlich mit: Grexit?

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

2A Basistechniken: Weitere Aufgaben

Berechnungen in Access Teil I

Die Post hat eine Umfrage gemacht

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Übungen Programmieren 1 Felix Rohrer. Übungen

Informatik für Schüler, Foliensatz 12 Pseudo-Zufallszahlen

Transkript:

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

Addition von Zahlen 1 2 3 4 5 #include <stdio.h> int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z; /* Summe ausgeben */ printf("summe = %d \n", sum); return 0; Prof. Dr. Nikolaus Wulff Programmieren in C 2

Felder Felder (engl. Arrays) werden durch eckige Klammern hinter dem Variablennamen deklariert. Auf die einzelnen Elemente des Feldes wird dann mit einem Index zugegriffen. Beim Feld mit N Elementen erfolgt die Zählung nach C Konvention von 0 bis N-1. 1 2 3 4 int feld[3]; feld[0] = 1; feld[1] = 2; feld[2] = 3; /* OK max. Index==2 */ feld[3] = 4; /* Illegal! */ Prof. Dr. Nikolaus Wulff Programmieren in C 3

Addition der Feldelemente 1 2 3 4 5 #include <stdio.h> int main() { int sum, feld[3]; feld[0] = 1; feld[1] = 2; feld[2] = 4; sum = feld[0] + feld[1] + feld[2]; /* Summe ausgeben */ printf("summe = %d \n", sum); return 0; Prof. Dr. Nikolaus Wulff Programmieren in C 4

Auswertung der Kommandozeile Vom Betriebssystem werden an die main-methode die Argumente übergeben, mit der das Programm gestartet wurde. Hierzu wird ein int als Anzahl für die Argumente und ein Zeichenketten Feld/Array mit den einzelnen Argumenten an die main-methode übergeben. #include <stdio.h> int main(int argc, char* argv[]) { printf("# Argumente = %d \n", argc); return 0; Prof. Dr. Nikolaus Wulff Programmieren in C 5

Ausgabe der Argumente Die Argumente der Kommandozeilen sollen mit der der printf-methode ausgegeben werden: #include <stdio.h> int main(int argc, char* argv[]) { printf("# Argumente = %d \n", argc); printf("0. Arg = %s \n", argv[0]); printf("1. Arg = %s \n", argv[1]); printf("2. Arg = %s \n", argv[2]); return 0; Was passiert bei weniger als 3 Argumenten? Prof. Dr. Nikolaus Wulff Programmieren in C 6

NullPointer argv[0] ist der Programm Name. argv[1],..., argv[argc-1] sind die Argumente. Wird versucht mehr als die argc-1 Argumente auszugeben, so ist dies ein Fehler und führt zu einem NullPointer: Prof. Dr. Nikolaus Wulff Programmieren in C 7

Syntax der while-schleife Die while-schleife hat eine sehr einfache Syntax: while( <expr> ) statement; Die auf die while-bedingung folgende Anweisung sollte aus Gründen der Les- und Warbarkeit immer in geschweifte Klammern, als Block, geschrieben werden. C kennt keine boolschen Ausdrücke wie false und true. 0 entspricht in C dem logischen Wert false. Die Anweisung {statement; wird so lange ausgeführt, bis <expr> einen Wert gleich 0 liefert. Prof. Dr. Nikolaus Wulff Programmieren in C 8

Die while-schleife 1 2 3 int main(int argc, char *argv[]) { int index; index = 0; printf("# Args %d \n",argc); while(index < argc) { printf("%d. Arg %s\n",index,argv[index]); index = index + 1; return 0; Die while Schleife 3 2 wird so lange ausgeführt, bis die Bedingung index < argc verletzt ist. So wird ein unzulässiger Index vermieden. Prof. Dr. Nikolaus Wulff Programmieren in C 9

Addition per While-Schleife #include <stdio.h> int main() { int i, sum, feld[] = {0,1,2; i = sum = 0; while(i < 3) { sum = sum + feld[i]; i = i + 1; /* Schleifen Ende */ /* Summe ausgeben */ printf("summe = %d \n", sum); return 0; Prof. Dr. Nikolaus Wulff Programmieren in C 10

Themperaturumrechnung Es soll ein Programm zum Umrechnen von Celsius in Fahrenheit Grade entwickelt werden. F = C * 9/5 + 32 Das Programm soll beginnend bei einem Minimumwert alle Fahrenheitumrechnungen ausgeben bis ein maximaler Celsius Wert erreicht ist. Die Schrittweite wird entsprechend vorgegeben. Prof. Dr. Nikolaus Wulff Programmieren in C 11

Fahrenheit nach Celsius 1 2 3 4 5 6 #include <stdio.h> int main() { int fahr, celsius; int min, max, step; min = -40; step = 10; max = 110; celsius = min; while(celsius < max) { fahr = 9*celsius/5 + 32; printf("%3d C sind %3d F\n", celsius,fahr); celsius = celsius + step; return 0; Prof. Dr. Nikolaus Wulff Programmieren in C 12

Ganz- und Gleitzahlen Ganz- und Gleitzahlen werden unterschiedlich behandelt: Bei Ganzzahlenarithmetik werden Nachkommastellen abgeschnitten. D. h. 9/5=1.8 wird zu 1 und 5/9=0.555555 zu 0 verkürzt, wenn eine int Variable verwendet wird! Die beiden auf dem ersten Blick identischen Anweisungen liefern vollkommen unterschiedliche Ergebnisse. fahrenheit = 9/5*celsius + 32; fahrenheit = 9*celsius/5 + 32; Prof. Dr. Nikolaus Wulff Programmieren in C 13

Rundungsfehler bei int fahrenheit = 9*celsius/5 + 32; Große Fehler ergeben sich bei Divisionen mit Ganzzahlen (int/long). fahrenheit = 9/5*celsius + 32; Für arithmetische Berechnungen sind Gleitkommazahlen erforderlich. Prof. Dr. Nikolaus Wulff Programmieren in C 14

Gleitkommaarithmetik 1 2 3 4 #include <stdio.h> int main() { float fahr, celsius; float min, max, step; min = -40; step = 10; max = 110; celsius = min; while(celsius < max) { fahr = 9.0/5.0*celsius + 32.0; printf("%5.1f C sind %5.1f F\n",celsius,fahr); celsius = celsius + step; return 1; Prof. Dr. Nikolaus Wulff Programmieren in C 15

Die for-schleife Das Hochzählen einer Variable bis zu einem bestimmten Wert kommt in der Datenverarbeitung so häufig vor, das C hierfür noch eine andere Schleifenvariante definiert, die for-schleife: #include <stdio.h> int main() { float f, c; for(c=0; c < 100; c = c + 10) { f = 9.0/5.0*c + 32.0; printf("%5.1f C sind %5.1f F\n", c, f); return 1; Prof. Dr. Nikolaus Wulff Programmieren in C 16

Syntax der for-schleife Die for-schleife besteht aus drei Teilen: <expr 1 > der Initialisierung, z.b. i=0 <expr 2 > der Abbruchbedingung, z.b. i < 10 <expr 3 > der Inkre- oder Dekrementierung, z.b. i = i+1 for( <expr 1 >; <expr 2 >; <expr 3 >) statement; Die Teile werden unterschiedlich häufig ausgewertet: <expr 1 > wird einmal am Schleifenanfang bewertet <expr 2 > wird vor jeder Wiederholung bewertet <expr 3 > wird nach jeder Wiederholung bewertet Prof. Dr. Nikolaus Wulff Programmieren in C 17

Fallstricke bei Schleifen Wird die Kombination aus Schleifenbewertung und -inkrementierung falsch programmiert, kann es zu schweren Fehlverhalten kommen. Dies passiert häufig dann wenn die Abbruchbedingung nicht erreicht wird: for(c = 0; c < 100; c = c - 10) { /* loop for ever */ f = 9.0/5.0*c + 32.0; printf("%5.1f = %5.1f F\n", c, f); Dieses Programm läuft in einer Endlosschleife... Prof. Dr. Nikolaus Wulff Programmieren in C 18

Rückwärts Zählen Um rückwärts zu Zählen müssen die Start- und die Abbruchbedingung der Schleife entsprechend angepasst werden. Z.B. Start=100 C, Ende =0 C und dann in Schritten von 10 C rückwärts: for(c = 100; c >= 0; c = c - 10) { /* decrement by 10 */ f = 9.0/5.0*c + 32.0; printf("%5.1f = %5.1f F\n", c, f); Nun terminiert das Programm wie gewünscht. Prof. Dr. Nikolaus Wulff Programmieren in C 19