Dr. Monika Meiler. Inhalt

Ähnliche Dokumente
Propädeutikum. Dipl.-Inf. Frank Güttler

Variablen, Konstanten und Datentypen

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt

Elementare Konzepte von

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

C-Programmierkurs Mathematik

S. d. I.: Programieren in C Folie diese Zeichen dürfen verwendet werden in

Einstieg in die Informatik mit Java

Dr. Monika Meiler. Inhalt

Programmierkurs C++ Variablen und Datentypen

Kapitel 2. Elementare Datentypen, Konstanten und Variablen

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

Grundlagen der Informatik 2. Typen

2.1 Fundamentale Typen

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

Elementare Datentypen in C++

Wiederholung, Abbruch von Schleifen, switch-anweisung Datentypen, char, formatierte Ausgabe

Ganze Zahlen, Ausdrücke Variablen/Konstanten

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

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grundelemente von C++

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

Java-Applikationen (Java-Programme)

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

Einstieg in die Informatik mit Java

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

7. Übung zur Vorlesung Grundlagen der Informatik

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

Einstieg in die Informatik mit Java

GI Vektoren

2. Datentypen und Deklarationen

Kapitel 5. Datentypen und Operatoren

Datentypen printf und scanf. Programmieren in C Dr. Michael Zwick

Escape-Sequenzen. Dr. Norbert Spangler

Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

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

Wie rechnet ein Rechner?

Java I Vorlesung Imperatives Programmieren

Algorithmen und Datenstrukturen

2. Programmierung in C

Programmiersprachen Einführung in C

2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.

Hello World! Eine Einführung in das Programmieren Variablen

Wo sind wir? Übersicht lexikale Struktur von Java

Der Umgang mit Zahlen. Ein wesentlicher Unterschied: int oder float. Beispiel: int oma, opa, summe; float messwert, mittel; char zeichen, z1, z2, c;

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Datentypen (elementare) Kontrollstrukturen. Präprozessoranweisungen

Algorithmen zur Datenanalyse in C++

Kapitel 3: Lexikalische Syntax

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

4. Daten. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Eine Reihe häufig benötigter Datentypen ist in C vordefiniert

3. Datentypen, Ausdrücke und Operatoren

Wertebereich und Genauigkeit der Zahlendarstellung

Einführung in die Programmierung Wintersemester 2008/09

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

Motivation und Überblick

2.5 Primitive Datentypen

Programmieren in C / C++ Grundlagen C 2

Inhalt. Zeichen und Zeichenketten (engl. Strings)

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

Die Programmiersprache C

Teil I. Konzepte imperativer Programmierung

In C++ kann man fünf Teilsprachen, die bezüglich Syntax und Semantik differieren, unterscheiden. Objektorientierte Erweiterungen von C

Datentypen: integer, char, string, boolean

Programmierkurs Python I

Zeichen. Datentyp char. char ch = 'x'; Page 1. Zeichen braucht man zur Verarbeitung von Texten, Namen, Bezeichnungen. Zeichencodes

4.2 Programmiersprache C

Einfache Rechenstrukturen und Kontrollfluss

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

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Übersicht. Peter Sobe 1

Einfache Rechenstrukturen und Kontrollfluß

2.2 Einfache Datenstrukturen

Grundlagen der Programmierung

Grundlagen zu Datenobjekten und Operatoren

Programmierung. Grundlagen. Tina Wegener, Ralph Steyer. 2. Ausgabe, 1. Aktualisierung, April 2014

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

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

1. Referenzdatentypen: Felder und Strings

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

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

Kap 2. Aufbau eines Programms Variablen, Konstanten und Deklarationen

Programmierkurs C++ Lösungen zum Übungsblatt 3. Nils Eissfeldt und Jürgen Gräfe. 2. November Aufgabe 5

Programmiervorkurs Einführung in Java Tag 1

Transkript:

Inhalt 2 C-Objekte... 2-2 2.1 Das Alphabet... 2-3 2.2 Variablen und Konstanten... 2-4 2.2.1 C-Variablen... 2-4 2.2.2 C-Standarddatentypen... 2-4 2.2.3 C-Konstanten... 2-6 2.2.4 C-Variablendeklaration... 2-7 Propädeutikum 2-1/7

2 C-Objekte Objekte sind i.r. mathematische Größen mit denen man in Algorithmen operieren kann. Diese müssen in der Maschine dargestellt und die Operationen durch die Hardware oder als Programme installiert werden. Euklidischer Algorithmus zur Berechnung des größten gemeinsamen Teilers. ggt( 53 667, 25 527) = 201 53 667 : 25 527 = 2, Rest 2 613 25 527 : 2 613 = 9, Rest 2 010 2 613 : 2 010 = 1, Rest 603 2 010 : 603 = 3, Rest 201 603 : 201 = 3, Rest 0 Die mathematische Größen sind hier die natürlichen Zahlen, die vom Euklidischen Algorithmus benötigte Operation ist die Restbildung der ganzzahligen Division. Umsetzung im Rechner: Algorithmus Programm Codierung Objekt Daten Decodierung ggt.c /* * Berechnen des groessten gemeinsamen Teilers * der Zahlen a = 53667 und b = 25527. */ # include <stdio.h> int main() { /* natuerliche Zahlen */ unsigned int a = 53667, b = 25527, c; do { c = a % b; /* Rest der ganzzahligen Division */ a = b; b = c; /* Vertauschen der Werte */ } while( c!= 0); } printf( "Ergebnis: %d\n", a); return 0; C-Grundobjekte: Ganze Zahlen Gleitpunktzahlen Zeiger (Adressen) Propädeutikum 2-2/7

2.1 Das Alphabet Der Zeichensatz von C umfasst 92 druckbare Zeichen und 7 Steuerzeichen. Druckbare Zeichen: 26 Großbuchstaben des englischen Alphabets A.. Z 26 Kleinbuchstaben des englischen Alphabets a.. z (keine Umlaute, kein ß!) 10 Ziffern 0.. 9 30 Sonderzeichen! # % & ` ( ) * + - '. / : ; < = >? [ \ ] ^ _ { } Leerzeichen Groß- und Kleinbuchstaben sind signifikant. Steuerzeichen: Sie dienen der Steuerung von Ausgabegeräten wie Bildschirm und Drucker, teilweise auch für die Eingabe verwendbar, etwa von der Tastatur. Ihre Implementierung ist systemabhängig. Folgende Escapesequenzen sind definiert: \a Akustischer Laut (alert) \b Versetzen um eine Position nach links (backspace) \f Seitenvorschub (formfeed) \n Zeilenvorschub (linefeed, new line) \r Positionierung am Zeilenanfang (carriage return) \t Horizontaler Tabulator (horizontal tab) \v Vertikaler Tabulator (vertical tab) Beispiel s.o.: printf("hallo, Welt\n"); Entwerter: Vier weitere Escapesequenzen erzeugen druckbare Zeichen und dienen der Entwertung von C-Metazeichen: \' Entwerten des Abschlusssymbol für Zeichenkonstante \ Entwerten des Abschlusssymbol für Zeichenkettenkonstante \? Entwerten des Zeichens für Trigraphen (definierte Ersatzzeichen) \\ Entwerten des Backslashs als Escapesequenz C-Namen: Für die Bezeichnung der Objekte und ihrer Operationen in der Maschine (Konstanten, Variablen, Funktionen usw.) werden Namen (identifier) benötigt. Diese unterliegen folgenden Bedingungen: C-Namen sind frei wählbare, beliebig lange Wörter aus den 52 Buchstaben, 10 Ziffern und dem Unterstrich, die nicht mit einer Ziffer beginnen dürfen und keines der 32 C- Schlüsselwörter (Wörter der Sprache) sind. Es gelten allgemeine Regeln für die Wahl von Namen: Grundsätzlich sollten Namen den Inhalt beschreiben (sprechende Namen). Variablen- und Funktionsnamen beginnen mit einem Kleinbuchstaben Ist dieser aus mehreren Worten zusammengesetzt, so beginnt jedes neue Wort mit einem Großbuchstaben (readint). Konstantennamen bestehen aus nur Grossbuchstaben. Ist dieser aus mehreren Worten zusammengesetzt, so beginnt jedes neue Wort mit einem Unterstrich (MAX, MAX_ANZAHL). Propädeutikum 2-3/7

2.2 Variablen und Konstanten 2.2.1 C-Variablen Euklidischer Algorithmus: Die mathematischen Objekte sind natürliche Zahlen. Diese müssen im Rechner abgespeichert werden und auch wieder aufgefunden werden. Drei Fragen sind zu klären: Wo befindet sich im Speicher die Zahl? Wie viel Speicherplatz benötigt sie? Wie wird sie abgespeichert? Daten werden als Bitfolgen abgespeichert, d.h. Folgen aus 0 und 1. Variablen dienen als Platzhalter im Speicher für die Daten und besitzen drei Grundbestandteile: Name Typ Wert Anfangsadresse der Bitfolge Länge der Bitfolge und ihre Interpretation die interpretierte Bitfolge Name C-Name, symbolischer Bezeichner für die Speicheradresse. Typ Es gibt Standardtypen für ganze Zahlen und Gleitpunktzahlen, deren Grenzen sind in <limits.h> und <float.h> deklariert. Des weiteren gibt es Zeigertypen und aus den Standardtypen und den Zeigern zusammengesetzte Typen. Wert Die Interpretation einer Bitfolge wird in einem späteren Kapitel abgehandelt. 2.2.2 C-Standarddatentypen Die Datentypen müssen nach ANSI-C folgende Mindestanforderungen erfüllen. Mindestschranken für die Wertebereiche (s. auch Anhang A): 1. Ein Byte muss 8 Bit lang sein. 2. Wertebereiche der ganzzahligen Typen: Typ kleinster Wert (MIN) größter Wert (MAX) Byte signed char - 127 ( = - 2 7 + 1 ) 127 ( = 2 7-1 ) 1 unsigned char 0 255 ( = 2 8-1 ) 1 signed short int - 32 767 ( = - 2 15 + 1 ) 32 767 ( = 2 15-1 ) 2 unsigned short int 0 65 535 ( = 2 16-1 ) 2 signed int - 32 767 ( = - 2 15 + 1 ) 32 767 ( = 2 15-1 ) 2 unsigned int 0 65 535 ( = 2 16-1 ) 2 signed long int - 2 147 483 647 ( = - 2 31 + 1 ) 2 147 483 647 ( = 2 31-1 ) 4 unsigned long int 0 4 294 967 295 ( = 2 32-1 ) 4 Propädeutikum 2-4/7

37 37 37 37 3. Wertebereich für Gleitpunkttypen: 10, 10 0 10,10 Genauigkeit (Dichte) für Gleitpunkttypen: Typ Genauigkeit Stellen Byte float 10-5 6 4 double 10-9 10 6 long double 10-9 10 6 Überlauf Laufzeitfehler Unterlauf Rundungsfehler -10 37-10 -37 10-37 10 37 neg. Überlauf 0 neg. pos. Unterlauf pos. Überlauf Auf verschiedenen Rechnern sind die Datentypen durchaus unterschiedlich implementiert. Mit dem Operator size_t sizeof( Typ) kann man die aktuellen Größen in Byte (size_t) des Typs Typ ermitteln. byte.c /* * Bestimmen der Speicherplatzgroesse in Byte * der Elementardatentypen */ #include <stdio.h> int main() { printf( "char=%d short=%d int=%d long=%d\n", sizeof( char), sizeof( short), sizeof( int), sizeof( long)); printf( "float=%d double=%d long double=%d\n", sizeof( float), sizeof( double), sizeof( long double)); return 0; } byte.out char=1 short=2 int=4 long=4 float=4 double=8 long double=16 "%d" dient als Formatbeschreiber für die Ausgabe ganzzahliger Werte mit der Funktion int printf( const char *,... ). Der Formatbeschreiber wird als Platzhalter in die Ausgabezeichenkette eingetragen, die Werte werden aus den Argumenten nach der Ausgabezeichenkette berechnet und in den Typ des Platzhalters konvertiert. Propädeutikum 2-5/7

2.2.3 C-Konstanten Konstanten sind explizit angegebene Objekte im Programm. Diese werden durch bloßes Hinschreiben definiert, besitzen einen Typ, der sich aus der Schreibweise der Konstanten ergibt. Konstanten haben einen Typ und einen unveränderbaren Wert, aber i. R. keinen Namen. Ganzzahlige Konstanten (integer-constant) decimalconstant { 1, 2, 3, 4, 5, 6, 7, 8, 9 }{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } * 1 Typ: int long unsigned long Beispiel: 1234 octalconstant 0{ 0, 1, 2, 3, 4, 5, 6, 7 } * Typ: int unsigned int long unsigned long Beispiel: 0123 = (123) 8 = 1*8 2 +2*8+3 = 64+16+3 = 83 hexa- 0{ x X }{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, a, B, b, C, c, D, d, E, e, F, f } + 2 decimal- constant Typ: int unsigned int long unsigned long Beispiel: 0x10Fa = (10fa) 16 = 1*16 3 +15*16+10 = 4096+240+10 = 4346 Gleitpunktkonstanten (floating-constant) fractional-constant (Festpunktschreibweise) Z. { 0 } * Z oder. { 0 } * Z oder Z. (Dezimalpunkt! Z decimal-constant) Typ: double Beispiel: 1.01234.1234 1. floating-constant { F Z }{ e E }{ + - }Z (Gleitpunktschreibweise) (F fractional-constant) Typ: double Beispiel: 1.e1 = 1.0*10 1 = 10..12e+3 = 0.12*10 +3 = 120. 5E-4 = 5*10-4 = 0.0005 1 * Iteration über eine Menge: Menge aller Wörter dieser Menge, einschließlich dem leeren Wort. 2 + Iteration über eine Menge: Menge aller Wörter dieser Menge, ausschließlich dem leeren Wort. Propädeutikum 2-6/7

Zeichenkonstanten (character-constant) Zeichenkonstanten sind ganze Zahlen vom Typ char, durch ihren Code verschlüsselt, i. R. ist es der ASCII-Code 3. Alphabetzeichen werden in Apostrophe eingeschlossen. 'A' '\n' 65 10 Explizite Angabe des Codes eines Zeichens: octal '\ooo' ooo ein bis dreistellige Oktalzahl '\100' '@' hexadecimal '\xhh' hh ein bis zweistellige Hexadezimalzahl '\x07' Bell Zeichenkettenkonstanten (string-literal) Zeichenkettenkonstanten sind unbenannte C-Konstanten und stehen im Zusammenhang mit Feldern. Sie sind als Abkürzung einer Folge von Zeichenkonstanten mit dem letzten Folgenglied \0 zu verstehen. Das Abschlusszeichen \0 wird dabei automatisch gesetzt. Zeichenkettenkonstanten werden in Ausführungszeichen eingeschlossen. " Zeichenkette " 2.2.4 C-Variablendeklaration Alle Variablen müssen vor dem ersten Zugriff deklariert werden, d. h. dem Compiler muss der Name und der Typ bekannt gegeben werden, damit er den entsprechenden Speicherplatz zur Verfügung stellt und die Interpretationsvorschrift kennt. Typ Variablenname [ = Konstante ], Variablenname [ = Konstante ],... ; int anzahl = 0; float zahl, summe = 0; float a = 1e10, b = 1e-10; Beispiel Euklidischen Algorithmus zur Berechnung des größten gemeinsamen Teilers: Zur Berechnung benötigt man drei Variablen für natürliche Zahlen: zwei für den Dividenden und den Divisor, anfangs mit Eingabewerten belegt, und einen zum Speichern für den Rest der ganzzahligen Division. unsigned int a = 53667, b = 25527, c; 3 ASCII American Standard Code for Information Interchange Propädeutikum 2-7/7