Operatoren (1) Operatoren (2)

Ähnliche Dokumente
2. Programmierung in C

2. Programmierung in C

4.2 Basisdatentypen und einfache Anweisungen

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Einstieg in die Informatik mit Java

Unterlagen. CPP-Uebungen-08/

Einführung in die Programmierung Wintersemester 2011/12

Einstieg in die Informatik mit Java

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

3. Anweisungen und Kontrollstrukturen

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

String-Konkatenation

C++ - Einführung in die Programmiersprache Schleifen

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Grundlagen der Programmierung

Kapitel 3: Variablen

Algorithmen zur Datenanalyse in C++

Grundlagen der Informatik 2. Operatoren

Programmieren I. Kapitel 5. Kontrollfluss

Schleifenanweisungen

Vorlesung 6: Operatoren, Logische Ausdrücke

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Java Einführung Operatoren Kapitel 2 und 3

5. Elementare Befehle und Struktogramme

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

2. Programmierung in C

Einführung in die Programmierung

Die Programmiersprache C Eine Einführung

Grundlagen der Programmierung

Vorlesung Programmieren

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

2.5 Programmstrukturen Entscheidung / Alternative

Fallunterscheidung: if-statement

Primitive Datentypen

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Elementare Konzepte von

3. Grundanweisungen in Java

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Übersicht Programmablaufsteuerung

Schleifen in C/C++/Java

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Javakurs für Anfänger

RO-Tutorien 3 / 6 / 12

3.4 Struktur von Programmen

4. Ablaufsteuerung (Kontrollstrukturen)

Programmieren in C/C++ und MATLAB

Informationsverarbeitung

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

Tag 3 Repetitorium Informatik (Java)

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Programmierkurs Java

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

L6. Operatoren und Ausdrücke

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

JAVA-Datentypen und deren Wertebereich

Einfache Rechenstrukturen und Kontrollfluss II

VORKURS INFORMATIK EINE EINFÜHRUNG IN JAVASCRIPT

Funktionales C++ zum Ersten

JavaScript und PHP-Merkhilfe

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

Einstieg in die Informatik mit Java

Grundlagen der C++ - Programmierung für das MiniBoard von qfix 1

Inhalt. Peter Sobe 63. Felder in C

Programmierkurs Python I

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

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

Informatik I - Einstiegskurs

Grundlagen der C++ und der Java-Programmierung

Übersicht Shell-Scripten

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

Einführung in die Programmierung mit Go

Programmiertechnik Kontrollstrukturen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

3. Datentypen, Ausdrücke und Operatoren

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Programmierung in C. Grundlagen. Stefan Kallerhoff

9 Anweisungen und Kontrollstrukturen

Prinzipieller Grundaufbau eines einfachen C-Programmes

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Zyklen: break und continue

C- Kurs 04 Anweisungen

Webbasierte Programmierung

Welche Informatik-Kenntnisse bringen Sie mit?

Transkript:

Operatoren (1) Binäre Operatoren + - * / % < <= ==!= >= > & ^ << >> && Addition Subtraktion Multiplikation Division Divisionsrest Vergl. auf kleiner Vergl. auf kleiner oder gleich Vergl. auf gleich Vergl. auf ungleich Vergl. auf größer oder gleich Vergl. auf größer bitw. UND-Verknüpfung bitw. ODER-Verknüpfung bitw. Exkl.-Oder-Verknüpfung bitw. Linksverschieben bitw. Rechtsverschieben log. UND-Verknüpfung log. ODER-Verknüpfung Arithmetik Vergleich Bitoperationen Logische Verknüpfungen Zahlen, mit Einschränkung Adressen nur ganze Zahlen Alle Typen Ganzzahlige Typen Boolesche Werte Peter Sobe 34 Operatoren (2) Unäre Operatoren, Postfix- und Präfix-Operatoren & * + - Adresse von Inhalt von pos. Vorzeichen neg. Vorzeichen Refernzierung Dereferenzierung Arithmetik alle Typen Zeiger Zahlen ~ bitw. Invertierung Bitoperationen ganzz. Typen! logische Invertierung Log. Verknüpfung boolesche Werte (type) Typecast C-Allzweck-Cast viele Typen sizeof sizeof ++ -- sizeof expr.: Speicherbedarf sizeof (type):speicherbedarf Inkrementierung Dekrementierung Postfix und Präfix Ausdrücke Typen ganzz. Typen und Zeiger Peter Sobe 35

Operatoren (3) Zuweisungs-Operatoren und sonstige Operatoren = Wertzuweisung Zuweisung Alle Typen += -= *= /= %= Addition Subtraktion Multiplikation Division Divisionsrest Arithmetik und Zuweisung Zahlen, mit Einschränkungen, Adressen nur ganze Zahlen &= = ^= <<= >>= bitw. UND-Verknüpfung bitw. ODER-Verknüpfung bitw. Eckl.-Oder-Verkn. bitw. Linksverschieben bitw. Rechtsverschieben Bitoperationen und Zuweisung ganzz. Typen?:, Formulierung bed. Ausdrücke Aufzählung in Klammerausdr. Ausdrücke Ausdrücke Fragezeichen-Operator zur verkürzten Formulierung bedingter Ausdrücke, siehe 4.3 Peter Sobe 36 Einfache Anweisungen Arithmetische Operatoren Einfache Zuweisung = summe=64; Addition + bzw. += Beispiele: summe = zahl + 61; summe = summe + 4; summe += 4; Subtraktion - bzw. -= Multiplikation * bzw. *= Division / bzw. /= Modulo-Operator % bzw. %= und weitere Operatoren... Jede Anweisung wird durch ein Semikolon abgeschlossen Peter Sobe 37

Initialisierung von Variablen, Vergleich Deklaration und Initialisierung: int i = 7; /* Speicherplatz wird reserviert, der mit 7 initialisiert wird */ Zuweisung: i = 8; /* Vorhandener Speicherplatz wird mit neuem Wert belegt.*/ Vergleichsoperatoren gleich == ungleich!= kleiner < kleiner gleich <= größer > größer gleich >= Peter Sobe 38 Vergleich Beispiele: if (zahl < 64)... if (zahl == 16)... if ((zahl >= 0) && (zahl <= 64))... // zahl aus dem Bereich [0..64] bool bo = 5 > 7; // bo erhält den Wert false int a = 5 > 7; // a erhält den Wert 0 int b = 5 < 7; // b erhält den Wert 1 Peter Sobe 39

Logische Verknüpfungen Logische Verknüpfungsoperatoren Logisches Und && Logisches Oder Logisches Nicht! Beispiele: if ( (!(zahl < 0)) && (!(zahl > 64)))... // Alle drei Abfragen sind gleich if ( (zahl >= 0) && (zahl <= 64) )... // bedeutend, sie testen, ob zahl if ( zahl >= 0 && zahl <= 64 )... // in dem Bereich 0..64 liegt Peter Sobe 40 Inkrement und Dekrement (1) zahl = zahl + 1; // kann verkürzt werden zu zahl += 1; // und nochmals zu zahl++; Entsprechend gibt es zahl--; für das Erniedrigen von zahl um 1. Beachte: zahl++; und ++zahl; sind nicht unbedingt das gleiche. int zahl1 = 64; int zahl2 = ++zahl1; // zahl2 und zahl1 sind nun beide 65 int zahl3 = zahl2++; // zahl3 ist 65 und zahl2 66. Peter Sobe 41

Inkrement und Dekrement (2) Pre-Increment und Post-Increment als Funktionen Pre-Increment: int zahl2 = ++zahl1; // entspricht int zahl2 =PreInc(zahl1); // mit int PreInc(int& i) { i = i + 1; return i; Post-Increment: int zahl2 = zahl1++; // entspricht int zahl2 =PostInc(zahl1); // mit int PostInc(int& i) { int temp=i; i = i + 1; return temp; Peter Sobe 42 Prioritäten von Operatoren 1! ~ ++ -- + - * & sizeof (type) unär, postfix, präfix 2 3 / % + - binäre arithmetische Operatoren 4 << >> Shift-Operationen 5 6 7 8 9 10 11 < <= > >= ==!= & ^ && Vergleichsoperatoren Bitoperationen logische Verknüpfungen 12 = += -= *= /= %= &= = = <<= >>= Zuweisungsoperatoren 13, Komma-Operator 1 ist die höchste Priorität, 13 die niedrigste Peter Sobe 43

Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern 4.6 Zeichen und Zeichenketten 4.7 Funktionen 4.8 Strukturen 4.9 Typen, Variable und Konstante Peter Sobe 44 4.3 Steuerfluss-Konstrukte Verbundanweisung if-anweisung switch-case-konstrukt while-schleife do-schleife for-schleife break-anweisung continue-anweisung Peter Sobe 45

Verbundanweisung Verbundanweisung Eine Verbundanweisung dient dazu, mehrere Anweisungen zu einer zusammenzufassen. Zu Beginn können auch Vereinbarungen stehen, die dann aber nur innerhalb dieser Verbundanweisung gelten. Eine Verbundanweisung kann auch leer sein, sie kann nur Anweisungen enthalten, und sie kann auch nur Vereinbarungen enthalten. Letzteres ist im allgemeinen nicht sinnvoll. Beispiel in C: { float buffer; buffer = x; x = y; y = buffer; Peter Sobe 46 Vereinbarungen, Anweisung, Verbundanweisung Jede Vereinbarung oder Anweisung wird in C und C++ durch ein Semikolon beendet. int i; i=99; i=i*2; Am Ende einer Verbundanweisung, d.h. nach der schließenden geschweiften Klammer, steht allerdings kein Semikolon. if (i>100) {printf(" i ist gross \n"); In C ++ können sich Vereinbarungen und Anweisungen beliebig abwechseln. In C stehen die Vereinbarungen vor den Anweisungen. Peter Sobe 47

if-anweisung (1) Die if-anweisung ist das Ausdrucksmittel für die Selektion in C, C++. ja Bedingung nein Anw / if ( Bedingung) Anw; if (Bedingung) Verbundanweisung int monat; printf("bitte Monat Ihres Geburtsdatums eingeben:"); scanf("%d",&monat); if (monat<1 monat>12) { printf( falscher Wert für Monat eingegeben!\n"); exit(exit_failure); Peter Sobe 48 if-anweisung (2) Bedingung ja nein Anw1 Anw2 char kuehlen = 0, heizen = 0; if (temperatur-zielwert > 2) { printf("zu warm -> kuehlen\n"); kuehlen = 1; else { if (zielwert temperatur > 2 ) { printf( zu kalt -> heizen\n"); heizen = 1; if ( Bedingung ) Anw1; else Anw2; if (Bedingung) Verbundanweisung1 else Verbundanweisung2 Peter Sobe 49

Bedingung ja nein var1 = var2 var1 = var3?-operator anstelle if If else Konstruktion: if ( Bedingung ) var1 = var2; else var1 = var3; Mit?-Operator: // Bedingte Zuweisung var1 = (Bedingung? var2 : var3 ); ja Bedingung nein var1 = wert var2 = wert If else Konstruktion: if ( Bedingung ) var1 = wert; else var2=wert; Mit?-Operator: // Bedingte Zuweisung (Bedingung? var1 : var2 ) = wert; Peter Sobe 50 switch-case-konstrukt (1) Zur Selektion unter mehreren alternativen Zweigen Fallausdruck Wert1 Wert2... sonst Anw_1 Anw_2... Anw_n Anw_0 switch(fallausdruck) { case Wert_1: Anw_1; break; case Wert_2: Anw_2; break; case Wert_n: Anw_n; break; default: // kann entfallen Anw_0; Peter Sobe 51

switch-case-konstrukt (2) Beispiel unsigned int tag, monat, jahr; // Eingabe des Datums switch(monat) { case 1: printf("januar"); break; case 2: printf("februar"); break; case 3: printf("maerz");break; default: printf("-undefiniert-"); In einen Fall (case) wird bei entsprechendem Wert (Konstante) des Fallausdrucks gesprungen. Nach case folgt eine oder mehrere Anweisungen. Achtung keine Verbundanweisung mit { Die break-anweisung ist erforderlich, damit nicht zusätzlich der jeweils folgende Fall auch abgehandelt wird! Peter Sobe 52 while-schleife (1) Bedingung Anweisung Allgemeine Formen: while ( Bedingung ) Anweisung; while ( Bedingung ) Verbundanweisung Die Anweisung oder Verbundanweisung wird solange wiederholt ausgeführt, wie die Bedingung zutrifft. Durch Änderungen der Variablenwerte wird die Bedingung i.d.r. nach endlich vielen Durchläufen irgendwann nicht mehr zutreffen und die Wiederholung endet. Trifft die Bedingung bei Eintritt in die Schleife nicht zu, wird die Anweisung nicht (auch nicht ein einziges mal) ausgeführt. Peter Sobe 53

while-schleife (2) int summe = 0; int i = 10; while (i >= 1) { // entspricht while (i>0), entspricht while (i) summe += i; --i; // oder i--; printf( Die Summe der Zahlen von 1 bis 10 ist %d \n, summe);. Peter Sobe 54 do-while-schleife (1) Bedingung Anweisung Allgemeine Formen: do Anweisung; while ( Bedingung); do Verbundanweisung while (Bedingung); Die do-while-schleife wird mindestens einmal durchlaufen. Die Anweisung oder Verbundanweisung wird solange noch einmal ausgeführt, wie die Bedingung nach der Ausführung zutrifft. Typischerweise ändert die Anweisung oder Verbundanweisung den Inhalt der Variable, die für die Bedingung benutzt werden. Damit wird erreicht, dass die Wiederholung irgendwann endet. Peter Sobe 55

do-while-schleife (2) int summe = 0; int i = 10; do { summe += i; --i; while (i >= 1); printf( Die Summe der Zahlen von 1 bis 10 ist %d \n,summe); Peter Sobe 56 for-schleife (1) Zählzyklus: Lv = awert (s) ewert Anw Entsprechende Form: for (Lv=awert; Lv<=ewert ; Lv=Lv+s) Anw Lv dient hier als Zählvariable Allgemeine Form: for ( Init-Ausdruck ; Bedingung ; Schritt-Ausdruck ) Anweisung; for ( Init-Ausdruck ; Bedingung ; Schritt-Ausdruck ) Verbundanweisung Solange die Bedingung erfüllt ist, wird die Anweisung wiederholt. Die Ausdrücke in der for-schleife können auch leer sein. Peter Sobe 57

for-schleife (2) int i; int summe = 0; for (i = 10; i > 0; --i) { summe += i; printf( Die Summe ist %d \n,summe); Peter Sobe 58 for-schleife (3) Wirkungsweise einer for-schleife als PAP: for ( Init-Ausdruck ; Bedingung ; Schritt-Ausdruck ) Anweisung Init-Ausdruck Bedingung ja nein Anweisung Schritt-Ausdruck Peter Sobe 59

break-anweisung Die break-anweisung kann in allen Schleifen verwendet werden, um die aktuelle Iteration vorzeitig zu beenden, d.h. vor Erreichen der normalen Ende-Bedingung. Es wird danach aus der Schleife herausgegangen. Anwendung für while-, do-while- und for-schleifen for (i=0; i<imax; i++) { if (bedingung1) { break;... if (bedingung2) { break;... if (bedingung3) { break;... Peter Sobe 60 continue-anweisung Die continue-anweisung kann in allen Schleifen verwendet werden, um die aktuelle Ausführung des Schleifenkörpers vorzeitig zu beenden, d.h. vor Erreichen der normalen Ende-Bedingung. Es wird dann mit der folgenden Iteration weiter gemacht. Anwendung für while-, do-while- und for-schleifen for (i=0; i<imax; i++) { // do something... if (bedingung) { continue;... // do somethinge else... Peter Sobe 61

Nutzung der verschiedenen Schleifen Die drei verschiedenen Varianten einer Schleife while, do-while und for können alternativ verwendet werden. Aspekte für eine sinnvolle Auswahl: Verwendung der while-anweisung, wenn die Anzahl der Iterationen n unbekannt ist, mit n >= 0 (auch null Durchläufe möglich!) Verwendung der do-while-anweisung, wenn im Gegensatz dazu n>=1 (mindestens ein Durchlauf!) und Bevorzugung der for-schleife dann, wenn die Anzahl der Iterationen schon bekannt ist. Peter Sobe 62