Hochschule Fulda – FB ET Sommersemester 2014

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
3. Operatoren und Ausdrücke
Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Variablen und Datentypen
der Universität Oldenburg
der Universität Oldenburg
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Objekte und Arbeitsspeicher
Java- Syntax.
Robotik mit LEGO Mindstorms
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
Zusammenfassung Vorwoche
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Hochschule Fulda – FB ET Sommersemester 2010
Grundkonzepte Java - Klassendefinition
Informatik 1 Übung 2.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Programmieren in C Einführung
Primär(x)f(x)a[x]new typeof sizeof checked unchecked Unär+-~!++x--x x++ x-- (T)x Multip./Divis.*/% Addition/Subtr.+- shift > kleiner/größer = is gleich/ungleich==!=
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Programmieren in C Einführung
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
PHP: Operatoren und Kontrollstrukturen
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Einführung
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Ausflug printf() Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Annäherung an C
Programmieren in C Grundlagen C 3
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Programmieren in C Grundlagen C 2
Programmieren in C Sortieren, Suchen
Programmieren in C "Was ist wichtig?"
Übersicht Nachtrag zu Ausdrücken
Einführung in die Programmierung mit Java
Variablen und Datentypen
Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Grundlagen C 2
Programmieren in C Grundlagen C 1
Programmieren in C Wie speichert C
Projektmodul DM Kurze Einführung C-Programmierung
SS 04 Christiane Rauh Christian Hellinger
 Präsentation transkript:

Informatik II Grundlagen der Programmierung Programmieren in C Ausdrücke, Operatoren Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

Wiederholung 1 Definition von Variablen (und Konstanten und Funktionen)  Festlegung von Datentyp Namen / Identifier Speicherplatz Lebensdauer und Scope Deklaration von Variablen (und Konstanten und Funktionen)  Festlegung von Parametertypen bei Funktionen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wiederholung 2 Typwandlung implizit Beispiel: int * float  float * float explizit durch Typecast (type) variable Beispiel: (float) int * float Beispiel ... int a = 10, b = 4, c = 8, d = 1; float x = 2.5, y; ... y = a / x + b / c + d; // Ergebnis? ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3

Wiederholung 3 Sichtbarkeit von Variablen (und Konstanten) abhängig vom Ort der Definition in Block {}  Block ausserhalb Block  global im Programm ausserhalb Block static  im Modul (Quelltext) Lebensdauer von Variablen (und Konstanten) abhängig von der Speicherklasse in Block {}  Blocklebensdauer in Block static  Programmlebensdauer ausserhalb Block  Programmlebensdauer Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4

Wahl von Datentypen 1 Aufgabenstellung bestimmt Typen der Daten Zahlen in Mathematik und Wissenschaft double reicht meist aus float i.d.R. zu ungenau long double in Spezialfällen Anzahlen oder Ganze Zahlen int reicht oft aus unsigned mit doppeltem Wertebereich Geldbeträge? Komplexere Daten? Z.B. Adressen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5

Wahl von Datentypen 2 Beispiel: Fakultätsfunktion n! mit Datentyp unsigned long (0 bis 4.294.967.295) 1! = 1 2! = 2 * 1! = 2 3! = 3 * 2! = 6 4! = 4 * 3! = 24 5! = 5 * 4! = 120 6! = 6 * 5! = 720 7! = 7 * 6! = 5040 8! = 8 * 7! = 40320 9! = 9 * 8! = 362880 10! = 10 * 9! = 3628800 11! = 11 * 10! = 39916800 12! = 12 * 11! = 479001600 13! = 13 * 12! = 1932053504 falsch! 14! = 14 * 13! = 1278945280 falsch! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6

Anweisung / Ausdruck 1 Programm setzt sich aus vielen Anweisungen (Zuweisungen, Vergleichen, Operationen, Funktionsaufrufen, usw.) zusammen Anweisung (statement) im strengen Sinn ist in C unbekannt Anweisung hat kein auswertbares Ergebnis Beispiel: Zuweisung in Pascal, Ada, … integer i; i := 123; Variable i hat nach Zuweisung den Wert 123, die Zuweisung selbst ist allerdings nicht weiter auswertbar! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Anweisung / Ausdruck 2 C kennt keine Anweisungen (statements), sondern nur Ausdrücke (expressions) Ausdruck hat einen Wert (wie in Assembler!) Beispiel: Zuweisung in C int i; i = 4711; // wird nicht ausgewertet Zuweisung kann auch ausgewertet werden: int a, b, c, i, j; a = b = c = 3; // c = 3; b = c; a = b; if(i = 4711); ... while(j = 1) ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Anweisung / Ausdruck 3 Ausdruck  Gültige Kombination von Konstanten, Variablen, Operatoren Funktionsaufrufen Reihenfolge der Auswertung Vorrangregeln der Operatoren legen Reihenfolge der Auswertung implizit fest Klammern ( ) legen Vorrangregeln explizit fest Sind Vorrangregeln nicht eindeutig  Reihenfolge der Auswertung nicht definiert Compiler kann Ausdrücke / Teilausdrücke effizient auswerten / optimieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Operatoren 1 Szene aus: Is' was, Doc? (1972) - youtube Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Operatoren 2 Was können wir mit Daten/Werten machen? Speichern, Zuweisen, Auslesen, … Verknüpfen Verändern In C mit Operatoren Operator liefert neuen Wert Operator operiert auf Operanden Operatoren aus der Mathematik gut bekannt z.B. die Operatoren + - * / C bietet aber sehr viel mehr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11

Operatoren 3 Zahl der Operanden Position des Operators unär - ein Operand, Bsp.: 4711 oder -3456 binär - zwei Operanden, Bsp.: 4711 + 3456 ternär - drei Operanden Position des Operators Infix - steht zwischen den Operanden Präfix - steht vor den Operanden Postfix - steht nach den Operanden Linksassoziativität / Rechtsassoziativität Bsp.: x + y + z = (x + y) + z Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12

Vorrangregeln bei Operatoren Operatorenklasse Operatoren Assoziativität Unär ! ~ ++ -- + - Von rechts nach links Multiplikativ * / % Von links nach rechts Additiv + - Shift << >> Relational < <= > >= Gleichheit == != Bitweise & ^ | Logisch && || Bedingte Bewertung ?: Zuweisung = op= Reihung , Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 1 Bekannt: Ganze Zahlen, Integerzahlen Typen short, int, long, long long Speicherbedarf maschinenabhängig short <= int <= long <= long long Heute: short 16 Bit, int / long 32 Bit, long long 64 Bit Vorzeichen signed mit Vorzeichen unsigned vorzeichenlos Konstanten, Beispiele: int a = 4711, b = -18; dezimal short x = 0x20 sedezimal (Basis 16) int y = 020; oktal (Basis 8) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 2 Dezimal-, Sedezimal-, Binärdarstellung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 3 binprt.c – Integer dez / hex / binär ausgeben Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 4 Operatoren / Operationen: Zuweisung = Beispiel: int i; i = 4711; Vorzeichen + - Beispiel: int j = -4711; Arithm. Op. + - * / % Beispiel: k = 2010 - i + j * 3 % 8; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 5 Vergleichsoperatoren == != < > <= >= expr1 op expr2 Ergebnis: wahr  1, falsch  0 Ergebnistyp  int Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Logische Operatoren ! && || Ganzzahloperatoren 6 Logische Operatoren ! && || Ergebnis: wahr  1, falsch  0 (Typ int) expr1 op expr2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 7 Bitoperatoren ~ & | ^ expr1 op expr2 bzw. ~expr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 8 Bitshiftoperatoren << >> expr1 op expr2 Bits in expr1 um expr2 Bits verschoben Bsp. 1 << 2 1 um 2 Bits nach links Bsp: n >> 5 n um 5 Bits nach rechts Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 9 bitops.c - Bitoperationen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 10 bitshift.c – Bitshift links und rechts Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Ganzzahloperatoren 11 Inkrement- / Dekrementoperatoren ++ -- Linkseitiger Operator ++n --n n wird erst inkrementiert / dekrementiert das Resultat wird danach als Ergebnis geliefert Rechtsseitiger Operator n++ n-- n wird erst als Ergebnis geliefert n wird danach inkrementiert / dekrementiert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenoperatoren 1 Bekannt: Einzelzeichen 8 Bit Speicherbedarf 1 Byte (8 Bit) Konstanten, Zeichen durch ' ' geklammert char c1 = 'A', c2 = '1', c3 = '\n' Sonderzeichen mit \ beschrieben, Bsp: '\n' Zeilentrenner (NL) '\t' Tabulator (TAB) '\0' Stringende (NUL) '\"' Anführungszeichen '\\' Backslash, Fluchtzeichen Darstellung im ASCII-Code  char Untertyp von Ganzzahlen int Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenoperatoren 2 ASCII-Zeichensatz 7 Bit Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenoperatoren 3 Repräsentation (ASCII): Sinnvolle Operatoren/Operationen bei char: = (Zuweisung) + - (arithm. Operationen) == != < > <= >= (Vergleich) Wird char als Byte (8 Bit-Integer) genutzt  alle int-Operationen sinnvoll Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenoperatoren 4 ascii.c – ASCII-Tabelle ausgeben Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichenoperatoren 5 „Zeichenarithmetik“ Was bedeutet: n = '2' - '0'; // ? Jedes Zeichen hat einen Wert, der dem Index des Zeichens in der ASCII-Tabelle entspricht '0'  4810 und '2'  5010  n = '2' - '0' = 50 – 48; // = 2 Beispiel: int c, n; printf( Ziffer 0 .. 9 eingeben: ); c = getchar(); n = c - '0'; // n = Dezimalwert von c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Fließkommaoperatoren 1 Bekannt: Fließkommazahlen Typen float, double, long double Speicherbedarf float < double < long double float 32 Bit, double 64 Bit, long double 128 Bit Repräsentation nach IEEE 754 Beispiel: float 32 Bit Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Fließkommaoperatoren 2 Konstanten, Beispiele: float p = 3.141, a = -21.56, b = 0.5467 1.0 0.0 (Obacht: 1 oder 0  int) 7.0e-3 (0.007) 7.6543e2(765.43) Operatoren / Operationen: = (Zuweisung) + - (Vorzeichen) + - * / (arithm. Op.) == != < > <= >= (Vergleich) Vorsicht bei Vergleichsoperationen wegen Ungenauigkeiten in Darstellung (z.B. bei 0.0) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Weitere Operatoren 1 Spezielle Zuweisungsoperatoren  verkürzte Schreibweise für Operationen auf Variablen a op= b  a = a op b Arithm. Operatoren: + - * / % Bitoperatoren: << >> & | ^ Beispiele: int n = 12 n -= 24 n /= 3 n <<= 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Weitere Operatoren 2 Operator sizeof Liefert Größe von Typen / Variablen in Bytes Beispiel: long l; sl = sizeof(l) sd = sizeof(double) Beispiel: Sun Sparc 32 Bit Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Weitere Operatoren 3 Komma-Operator , Erlaubt die Aneinanderreihung mehrerer Ausdrücke Wert = Wert des letzen Teilausdrucks Beispiel (etwas sinnlos): Beispiel (sinnvoller): for(i = 0, j = 0, k = 1; … ) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Weitere Operatoren 4 Bedingte Bewertung ? : expr1 ? expr 2 : expr3 Verkürzte Formulierung von Bedingungen Auswertung Erst Auswertung von expr1 Wenn expr1 ≠ 0 dann gesamter Ausdruck expr2 Sonst gesamter Ausdruck expr3 Beispiel max(a, b) und min(a, b): Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Beispiel: EA-Simulation 1 Microcontroller mit E/A-Geräten, z.B. Sensoren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36

Beispiel: EA-Simulation 2 Schematischer Aufbau eines Embedded System Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37

Beispiel: EA-Simulation 3 Modell EA-Register für EA-Simulation Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38

Beispiel: EA-Simulation 4 Modellierung der EA-Register in C typedef unsigned char byte; static byte eac; // EA-Control static byte ead1; // EA-Data 1 static byte ead2; // EA-Data 2 Status-/Programmierbits als CPP-Makros #define EAC_R 0x01 // Data Ready: 00000001 #define EAC_D1 0x02 // Read/Write D1: 00000010 #define EAC_D2 0x04 // Read/Write D2: 00000100 #define EAC_I 0x08 // Initialize: 00001000 #define EAC_R1 0x10 // Data1 Read: 00010000 #define EAC_R2 0x20 // Data2 Read: 00100000 #define EAC_W1 0x40 // Data1 Write: 01000000 #define EAC_W2 0x80 // Data2 Write: 10000000 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39

Beispiel: EA-Simulation 5 Initialisierung EA-Gerät: data1, data2 lesen if(ea_ctrl(eac) & EAC_R) // EA bereit? eac = EAC_I | EAC_R1 | EAC_R2; // EA progr. Lesen von data1, data2 c = ea_ctrl(eac); // control lesen if(c & EAC_R) { // EA bereit? if(c & EAC_D1) { // Daten in data1 d1 = ea_read(ead1); // ... lesen ... // ... verarbeiten } if(c & EAC_D2) { // Daten in data2 d2 = ea_read(ead2); // ... lesen ... // ... verarbeiten } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40

Beispiel: EA-Simulation 6 easim.c – EA-Simulation Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41 41

Beispiel: EA-Simulation 7 easim in Aktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42