Datentypen Übersicht. C Datentypen und Operatoren. Deklaration. Übersicht. Um eine Variable zu nutzen, muss sie zunächst deklariert werden



Ähnliche Dokumente
Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Ganze Zahlen, Ausdrücke Variablen/Konstanten

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Variablen, Konstanten und Datentypen

Hello World! Eine Einführung in das Programmieren Variablen

Programmieren in C / C++ Grundlagen C 2

Grundstruktur eines C-Programms

Fliesskommazahlen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Informatik Vorkurs - Vorlesung 2

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Grundlagen der Informatik 2. Typen

Programmierkurs C++ Variablen und Datentypen

Einstieg in die Informatik mit Java

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Operatoren und Ausdrücke

Grundlagen der Informatik 2. Operatoren

Elementare Konzepte von

2. Programmierung in C

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

Programmiertechnik Skalare Typen,Variablen, Zuweisungen

Algorithmen zur Datenanalyse in C++

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Vorkurs Informatik WiSe 16/17

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

Projekt 3 Variablen und Operatoren

Programmiersprachen Einführung in C

3/4/2009. Schalter: Ein vs. Aus Lochkarten: Loch vs. Kein Loch Boolean/Wahrheitswerte: true vs. false

Informatik I (D-ITET)

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

RO-Tutorien 3 / 6 / 12

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Dr. Monika Meiler. Inhalt

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Informatik I (D-MAVT)

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

C-Programmierkurs Mathematik

Unterlagen. CPP-Uebungen-08/

[E-1] Wolf, Jürgen: C von A bis Z. Galileo Computing, 3. Auflage,

Programmiervorkurs Einführung in Java Tag 1

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

4.2 Programmiersprache C

Kompaktkurs Einführung in die Programmierung. 3. Fundamentale Datentypen, Ausdrücke

RO-Tutorien 17 und 18

2. Datentypen und Deklarationen

Einfache Rechenstrukturen und Kontrollfluss

Einstieg in die Informatik mit Java

Einfache Rechenstrukturen und Kontrollfluß

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Operatoren in C. Gastvorlesung Andreas Textor

Kapitel 2. Elementare Datentypen, Konstanten und Variablen

Elementare Datentypen in C++

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Vorkurs Informatik WiSe 17/18

Einstieg in die Informatik mit Java

Primitive Datentypen und Felder (Arrays)

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Kapitel 3: Variablen

Einführung in die Programmierung mit VBA

3. Java - Sprachkonstrukte I

Einstieg in die Informatik mit Java

Java Datentypen und Variablen

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Java I Vorlesung Imperatives Programmieren

Java-Applikationen (Java-Programme)

Übersicht. Peter Sobe 1

2 Sprachelemente von C und C++

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Escape-Sequenzen. Dr. Norbert Spangler

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Variablen und Konstanten (1) Allgemeines

Propädeutikum. Dipl.-Inf. Frank Güttler M. Sc. Stephan Fischer

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Einstieg in die Informatik mit Java

Programmieren 1 C Überblick

Operatoren in C/C++ und Java:

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Datentypen: integer, char, string, boolean

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

3. Java - Sprachkonstrukte I

Basiswissen in Informatik

Transkript:

Datentypen Übersicht C Datentypen und Operatoren 1 2 Übersicht Deklaration Deklaration und und Kommentare Basistypen Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) Programmierstil Um eine Variable zu nutzen, muss sie zunächst deklariert werden Deklarationen können ausserhalb von Funktionen stehen Globale Variablen Im Rest der Datei bekannt Deklarationen können am Anfang eines Blocks stehen (nach der öffnenden geschweiften Klammer) Lokal im Block Gültigkeitsbereich 3 4

Deklaration Deklaration Eine Deklaration hat die Form: Typbezeichnung Variablenname; /* Erklaerung */ Beispiele Zu einer Deklaration in jedem (nicht auf ein paar Zeilen beschränkten) Programm gehört eigentlich immer ein beschreibender Kommentar Auf den folgenden Seiten wird aus Platzgründen gelegentlich darauf verzichtet :-) int zahl; float wertalt, wertneu; /* Zaehler fuer eingegebene Werte */ /* Wert vor und nach Bearbeitung */ Zur Erinnerung: Comment - Your program should read like an essay! 5 6 Kommentare Deklaration mit Initialisierung /* Ein Kommentar, der sich über mehrere Zeilen erstrecken Man kann einer Variablen auch gleich einen Wert zuweisen Typbezeichnung Variablenname = Wert; kann */ Beispiele // Dieser Kommentar wird durch das Zeilenende begrenzt // Existiert erst ab C99! int zahl = 42; float wertalt = 3.14, wertneu = 3.14; 7 8

Deklaration Bezeichner Mit der Deklaration einer Variablen weist man den Compiler an, für diese Variable Speicherplatz zu reservieren, und diesen Speicherplatz mit der Variablen zu verknüpfen Extern Deklaration Schlüsselwort extern vorangestellt: Variable, die in einem anderen Programmteil definiert wird: extern int zahl; // nur Deklaration - Definition muss Wie in Java... Sie müssen aus Buchstaben, Ziffern und Unterstrichen bestehen Es wird zwischen Gross- und Kleinschreibung unterschieden Umlaute sind nicht erlaubt Sie dürfen nicht mit Ziffern beginnen Sie sollen nicht mit einem Unterstrich beginnen Sie dürfen nicht Schlüsselwörtern entsprechen // woanders erfolgen 9 10 Bezeichner Namenskonventionen Falsch: 6namen (beginnt mit Ziffer) char (Schlüsselwort) Übergabe (Umlaut) Berechne_a/b (Sonderzeichen) Anfangsbuchstaben der Wörter gross geschrieben: int dieerstezahl; Name sollte den Zweck erklären Bei grossen Projekten sinnvoll: Kürzel für Modul voranstellen Variablen werden gemischt, Konstanten ganz in Grossbuchstaben geschrieben Oft sinnvoll: Klassen, Pointer und mittels typedef definierte Typen durch einen vorgestellten Buchstaben kennzeichnen 11 12

Übersicht Ganzzahltypen Deklaration und Kommentare Basistypen Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) int short int long int unsigned int unsigned short int unsigned long int Programmierstil Genaue Grössen/Wertebereiche compilerabhängig Normalerweise in der Datei limits.h beschrieben Achtung: Überlauf gibt in der Regel keine Fehlermeldung 13 14 Ganzzahltypen Ganzzahlige Literale Auch char kann zu den Ganzzahltypen gezählt werden Typ int: (s. später) Diverse abkürzende Schreibweisen sind möglich - folgende Deklarationen sind gleichbedeutend: dezimal 15 20 hexadezimal 0xF 0x14 oktal 017 024 long i; signed long int i; Die führende Null für Oktalzahlen stellt eine häufige Fehlerquelle dar, wenn z.b. der besseren Übersicht im Programmcode halber ein Array etwa mit 001, 002, 003,..., 999 gefüllt wird Achtung! 15 16

Ganzzahlige Literale Mehr zu Ganzzahltypen Typ long int : dezimal 15L 20L Auch der Kleinbuchstabe l ist möglich - nicht verwenden, da leicht mit 1 (eins) verwechselt Achtung: Nicht davon ausgehen, dass Compiler eine Bereichsüberprüfung vornimmt: unsigned int vorzeichenlos = -1; printf("%u", vorzeichenlos); Achtung! Typ unsigned int: dezimal 15u 20u Ergibt zum Beispiel (compilerabhängig): 4'294'967'295 Auch der Grossbuchstabe U ist möglich 17 18 Mehr zu Ganzzahltypen Zeichentypen Vorzeichenbehaftete ganze Zahlen werden im Zweierkomplement- Format gespeichert char Kann verwendet werden wie Ganzzahltypen Ein Byte ASCII-Zeichensatz (<= 127) Beispiel char zeichen = 'd'; zeichen = zeichen + 'A' - 'a'; // zeichen ist 'D' 19 20

Zeichen- und Stringliterale Stringliterale Zeichen werden in einzelne Anführungsstriche (Apostrophe) eingeschlossen: 'a' Steuerzeichen werden durch Backslash-Sequenzen dargestellt: \n Linefeed \t Tab Strings werden in Anführungszeichen eingeschlossen: \0 NUL... "Text" Alle Zeichen auch in der Form \ooo oktal oder \xhh Strings in C sind Arrays von Zeichen mit einem Null-Byte hexadezimal möglich am Ende \t \11 \x9 sind daher gleichwertig 21 22 Stringliterale Gleitpunkttypen Strings werden mit NUL abgeschlossen Strings, die nur durch Zwischenraum getrennt sind, werden float double long double zusammengefasst Genaue Grössen/Wertebereiche compilerabhängig char str_2[]= "Dieser lange String ist korrekt ueber " Normalerweise in der Datei float.h beschrieben "mehrere Zeilen verteilt worden, " Achtung: Ungenauigkeit von Gleitpunktberechnungen "um die Lesbarkeit zu erhoehen."; Rundungsfehler, die sich im Laufe von Berechnungen verstärken können 23 24

Gleitpunktliterale Grössen der Basistypen Typ double: Es gilt: dezimal 203.5 exponential 2.035E2 (auch e möglich) sizeof(short int) <= sizeof(int) <= sizeof(long int) sizeof(float) <= sizeof(double) <= sizeof(long double) Typ float: dezimal 1.414F Die tatsächlichen Grössen sind compilerabhängig exponential 2.035E2F (auch f möglich) Wie kann man die aktuellen Grössen feststellen? Typ long double: Dateien limits.h und float.h dezimal 203.5L 25 26 Typische Grössen Übersicht Typ Byte Wertebereich Wertebereich (signed) (unsigned) Deklaration und Kommentare Basistypen [un]signed char 1-128..127 0..255 [un]signed short (int) 2-32768..32767 0..65535 [un]signed int 4-2147483648..2147483647 0..4294967295 [un]signed long (int) 8-2^63..2^63-1 0..2^64-1 Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) Programmierstil Typ Byte Wertebereich float 4 +/- 3.4E +/- 38 double 8 +/- 1.7E +/- 308 long double 10 +/- 1.7E +/- 4932 27 28

Konstanten (ab ANSI-C) Aufzähltypen Werden wie Variablen deklariert, allerdings mit vorgestelltem const Müssen bei der Deklaration auch definiert werden const float EULERZAHL =! 2.718281828459; Beispiel enum frucht { Apfel, Birne, Zitrone }; const unsigned long int MAXIMUM = 87000; Dem ersten Element wird der Wert 0 zugewiesen, Eine const-variable kann nicht an eine Funktion dann 1, 2,... übergeben werden, die eine nicht konstante Variable erwartet 29 30 Aufzähltypen Aufzähltypen Der Typbezeichner kann auch weggelassen werden: Der Wert eines Elements wird in Ausdrücken automatisch ermittelt enum { Apfel, Birne, Zitrone }; Verschiedene Aufzähltypen sind untereinander nicht kompatibel (type cast verwenden) Die Ein-/Ausgabe von Aufzähltypen ist nicht vordefiniert Ähnlich wie: Bei der Definition können auch andere Werte zugewiesen werden const Apfel = 0; const Birne = 1; const Zitrone = 2; enum frucht { Apfel = 17,... }; 31 32

Bool Einfache abgeleitete Typen Ein Typ bool kann also folgendermassen definiert werden: Format enum bool {false = 0, true = 1}; typedef basistyp abgeleitetertyp; In C++ ist der Typ bool bereits vordefiniert (aber nicht in allen Compilern...) Beispiel typedef int Index; Index i, j; 33 34 Übersicht Operatoren und Ausdrücke Deklaration und Kommentare Basistypen Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) Programmierstil Bis auf wenige Ausnahmen wie in Java Der Zuweisungsoperator gibt als Rückgabewert den zugewiesenen Wert zurück a=b=c=5; // Danach sind alle drei Variablen gleich 5 Vorsicht Fehler: if (i = 1) {... } Die Bedingung ist eine Zuweisung, die immer wahr ist Achtung! 35 36

Arithmetische Operatoren Bit-Operatoren 37 38 Bit-Operatoren Bit-Operatoren Beispiel unsigned char a = 5, b = 6; r = a & b; // ergibt 4 r = ~r; // ergibt 251 r = r >> 4; // ergibt 15 39 40

Logische Operatoren Logische Operatoren Dieser Ausdruck weist a den Wert 5 oder 12 zu, je nachdem ob b Null ist oder nicht: a = 5 +!!b * 7; Integerzahlen werden als wahr interpretiert, wenn sie ungleich Null sind, sonst als falsch Viele Probleme entstehen durch Verwechseln von && und & bzw. und Achtung! 41 42 Logische Operatoren Vergleichsoperatoren Dieser Ausdruck weist a den Wert 5 oder 12 zu, je nachdem ob b Null ist oder nicht: a = 5 +!!b * * 7; 7; if (b == 0) a = 5; else a = 12; Eine solche Programmierung führt zu schlecht lesbaren Programmen! Ergeben wie die logischen Operatoren Wahrheitswerte, d.h. 0 oder 1 Viele Probleme durch Verwechseln von == und = 43 44

Zusammengesetzte Operatoren Inkrement- und Dekrement Verknüpfung von Operation mit Zuweisung += -= *= /= %= b = 3; Für ganzzahlige Werte ausserdem: a = ++b; // b = b + 1; a = b; // (a und b sind 4) <<= >>= &= = ^= a = b++; // a = b; b = b + 1; // (a ist immer noch 4, b ist 5) 45 46 Arithmetische Abfrage Präzedenzen & Assoziationen Dreistelliger Operator Für Klarheit max = (a > b)? a : b; möglichst Klammern verwenden Aber: Meist besser lesbar: if (a > b) max = a; else max = b; 47 48

Einige mathematische Funktionen Übersicht Bibliothek laden: #include <math.h> sqrt(x) Berechnet die Quadratwurzel sin(x) Berechnet den Sinus exp(x) Berechnet die Exponentialfunktion bzgl. e log(x) Berechnet den natürlichen Logarithmus Deklaration und Kommentare Basistypen Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) Programmierstil abs(x) Berechnet den Absolutbetrag (nur für Integerzahlen) fabs(x) Berechnet den Absolutbetrag (als double) 49 50 Typenumwandlung (type casting) Typenumwandlung (type casting) Implizite Typenumwandlungen Auch bei Zuweisungen erfolgt implizite Typumwandlung Alle Operanden der Typen char, short oder enum (ggf. auch zu kleineren Typen) werden in int gewandelt Beispiele: Falls mit int nicht darstellbar, wird unsigned int verwendet double r; r = 3 / 2; // ergibt 1.0 Falls danach noch unterschiedliche Typen vorkommen, wird in die höheren Typen umgewandelt: r = 3 / 2.0; // ergibt 1.5 int a; int < unsigned int < long < unsigned long < float < double PI = 3.1415927; double < long double a = PI; // ergibt 3 51 52

Typenumwandlung (type casting) Beispiele zur Typumwandlung Explizite Typenumwandlung int i = 7, j = 3, k; double x; ( typname ) ausdruck k = i / j; // 7/3 = 2 ==> k = 2 x = i / j; // 7/3 = 2 ==> x = 2.0!!! x = (float) i / j; // 7.0 / 3.0 = 2.3333 ==> x = 2.333 x = 1.0 / 3 // 1.0 / 3.0 = 0.3333 ==> x = 0.333 x = 2.9438; k = x + i // 2.9438 + 7.0 = 9.9438 ==> k = 9 k = (int)x + i // 2 + 7 = 9 ==> k = 9 gleiches // Ergebnis aber schneller!! 53 54 Übersicht Programmierstil Deklaration und Kommentare Was bedeutet das? Basistypen int p,q,r; Konstanten und Aufzähltypen Operatoren und Ausdrücke Typenumwandlung (type casting) Programmierstil 55 56

Programmierstil Was bedeutet das? int p,q,r; Etwas besser:! Programmierstil Was bedeutet das? int p,q,r; Etwas besser: int account_number; int balance_owed; int account_number; int balance_owed; Gut: int account_number; int balance_owed;! // Index for account table // Total owed us (in pennies) 57 58 Programmierstil Programmierstil Schlechter Kommentar: Sehr wichtig: Konsistenz int top_limit; Besser: int top_limit; // Top limit is an integer // Number of items we can // load before loosing data Je nach Projektgrösse mehr oder weniger Regeln notwenig Verschiedene Ansätze zur Bezeichnung von Variablen: Klein geschrieben mit Underscores: account_number Gemischt gross/klein, klein beginnen: accountnumber Konstanten üblicherweise gross: MAX_ITEMS Regeln zur Benennung vereinbaren und immer einhalten 59 60

Programmierstil Übersicht Ähnliche Namen nach Möglichkeit vermeiden Anhang Schlecht: int total, totals; //... Besser: int entry_total, all_total; //... 61 62 C-Standards ASCII Tabelle 1978 K&R-Standard Quasi Standard durch das Buch The C Programming Language von Dennis Ritchie und Brian Kernighan 1988 ANSI C (C89) Standardisierung durch das ANSI Komitee (ein paar Änderungen gegenüber K&R) 1999 C99 Überarbeitete Version, von den meisten Compilern aber nur teilweise unterstützt (weit gehende Unterstützung im GNU C-Compiler) 63 64