4.2 Programmiersprache C

Ähnliche Dokumente
RO-Tutorien 3 / 6 / 12

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Algorithmen zur Datenanalyse in C++

Operatoren (1) Operatoren (2)

Elementare Datentypen in C++

C-Programmierung: Ausdrücke und Operatoren#Division.2F

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

RO-Tutorien 15 und 16

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

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

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

Einführung in die C-Programmierung

Programmieren in C / C++ Grundlagen C 2

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

Einstieg in die Informatik mit Java

Kapitel 5. Datentypen und Operatoren

4 Formelsammlung C/C++

F Zeiger, Felder und Strukturen in C

2. Programmierung in C

Unterlagen. CPP-Uebungen-08/

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

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

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

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

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

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

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

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

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Programmieren I. Kapitel 5. Kontrollfluss

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

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Einfache Datentypen in JAVA

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

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

PIC16 Programmierung in HITECH-C

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

Grundlagen der Informatik 2. Operatoren

C- Kurs 03 Ausdrücke und Operatoren

Tutorium Rechnerorganisation

Anweisungen zur Ablaufsteuerung

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

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Einführung in die Programmierung Wintersemester 2011/12

Vorlesung 6: Operatoren, Logische Ausdrücke

Physische Datenstrukturen

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Deklarationen in C. Prof. Dr. Margarita Esponda

Algorithmen und Datenstrukturen

2. Programmierung in C

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

Einführung in die Programmiersprache C

Kapitel 3: Variablen

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Die Programmiersprache C Eine Einführung

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Arrays (Felder/Vektoren)

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Wertebereich und Genauigkeit der Zahlendarstellung

Funktionales C++ zum Ersten

Einführung in C. EDV1-04C-Einführung 1

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Modellierung und Programmierung 1

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

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

3. Java - Sprachkonstrukte I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Java I Vorlesung Imperatives Programmieren

Programmierkurs C++ Variablen und Datentypen

Intensivübung zu Algorithmen und Datenstrukturen

3. Anweisungen und Kontrollstrukturen

Zusammenfassung des Handzettels für Programmieren in C

Modul 122 VBA Scribt.docx

Kap 9. Bitoperationen und -strukturen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Informatik I Programmieren in C

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Die Programmiersprache C. 2. Strukturen, Felder und Funktionen

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

Advanced Programming in C

10 Die Programmiersprache C99: Zusammenfassung

Vorkurs C++ Programmierung

Die Programmiersprache C99: Zusammenfassung

Primitive Datentypen und Felder (Arrays)

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Programmierung mit C Zeiger

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

Transkript:

4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen. Neben dem Vorzeichen unterscheiden sie sich im Zahlenbereich: sizeof(short) <= sizeof(int) <= sizeof(long) float, double Elementare Datentypen für Fließkommazahlen. float hat die geringere Genauigkeit und geringeren Speicherbedarf. char Elementarer Datentyp für ASCII-Zeichen (andere Zeichentabellen mit 256 Einträgen möglich). Er enthält stets ein Zeichen. Beispiele für Variablendeklarationen: int a; unsigned short s; float f; char c; F1

Aufzählungen: enum typename { value1, value2,...}; Aufzählungen werden als Typ definiert und dann genutzt. Dies kann auch in einer Anweisung geschehen. Beispiele: (1) enum Tehestand {ledig, verheiratet, geschieden, verwitwet}; enum Tehestand stand; stand = ledig; (2) enum Tehestand {ledig, verheiratet, geschieden, verwitwet} stand; stand = ledig; void Nichttyp wird genutzt, um anzugeben, dass eine Funktion keinen Wert zurückliefert, also eine Prozedur ist. F2

4.2.2. Operatoren auf elementaren Datentypen Operationen für ganze Zahlen (int, short, long,...) Postfix-Inkrement name++, Postfix-Dekrement name--, Präfix-Inkrement ++name, Präfix-Dekrement --name, Vorzeichen -name, Speichergröße sizeof(name), Adresse &, Umwandlung (typename) name, Multiplikation *, ganzzahlige Division /, Rest bei Division %, Addition +, Substraktion -, bitweise Verschiebung << >> (nicht mit short als erstem Operanden), Vergleiche < > <= >= ==!=, Bitoperationen & ^, logische Negation!, logisches Und &&, logisches Oder, Bedingungsoperator?:, Zuweisungen = += -= *= /= %= <<= >>= &= ^= =, Sequentielle Auswertung, Bemerkung: Logische Werte werden in C als ganze Zahlen betrachtet, wobei 0 für falsch(false) und alle anderen Werte für richtig(true) stehen. F3

Operationen für Fließkommazahlen (float, double) Vorzeichen -name, Speichergröße sizeof(name), Adresse &, Umwandlung (typename) name, Multiplikation *, Division /, Addition +, Substraktion -, Vergleiche < > <= >= ==!=, Zuweisungen = += -= *= /=, Sequentielle Auswertung, Operationen auf Zeichen (char) Speichergröße sizeof(name), Adresse &, Umwandlung (typename) name, Vergleiche < > <= >= ==!=, Zuweisung =, Sequentielle Auswertung, F4

Operationen auf Aufzählöungstypen (enum) Speichergröße sizeof(name), Adresse &, Umwandlung (typename) name, Vergleiche < > <= >= ==!=, Zuweisung =, Sequentielle Auswertung, F5

4.2.3. Bausteine für strukturierte Datentypen Felder, Arrays: type name[length] Ein Array mit fester Länge wird durch Angabe des Typs und des Namens vereinbart, wobei hinter dem Namen in eckigen Klammern die Länge vorgegeben wird. Der Zugriff erfolgt dann über eckige Klammern. Beispiel: int a[5]; a[3] = 4; Multidimensionale Felder Diese Felder werden einfach durch mehrfache eckige Klammern deklariert. Beispiel: double matrix[3][3]; Datensätze: struct typename { type1 component1; type2 component2;...}; Datensätze oder Rekords werden mit Hilfe von struct definiert. Als Zugriffsoperator dient der Punkt. Beispiel: struct Tstudent {char vorname[20]; char nachname[20]; unsigned int alter;}; struct Tstudent student; student.vorname = 'Martin'; F6

Zeiger: type *name; Zeiger sind ein elementarer Datentyp, der auf einen Speicherbereich zeigt, der gerade so groß wie der angegebenen Typ ist. Der Stern * in der Deklaration zeigt an, dass ein Pointer und keine Variable deklariert werden soll. Operationen: *, &, ++, --, (Typname), +, -, <, >, >=, >=, ==,!=, =, +=, -=,, Der * dient als rechtsseitiger Operator auch zum Referenzieren. Zeigt der Zeiger auf ein struct und soll auf eine Komponente zugegriffen werden, kann statt (*zeiger).komponente auch zeiger->komponente geschrieben werden. Der rechtsseitige Adressoperator & liefert die Adresse eines Datenobjekts und somit einen Wert für die Zuweisung zum Zeiger. Die Zusatzfunktionen malloc() und free() dienen dem dynamischen Erstellen und Löschen von Datenobjekten. Zeiger werden zum Aufbau von dynmia Listen, Stapeln, Schlangen, Bäumen, dynamischen Arrays usw. benutzt. Beispiel: int *p; int i; i = 3; p = &i; *p = 5; // setzt i auf 5! F7

4.2.4. Prioritätsebenen für Operatoren 17. Konstantennamen, Indizes [ ], Funktionsaufrufe ( ), Auswahl. -> 16. Postfix-Inkrement, -Dekrement ++ -- 15. Präfix-Inkrement ++ --, Vorzeichen -, Speicherbedarf sizeof, Negation!, Indirektion & * 14. Umwandlung (Typname) 13. Multiplikative Operatoren * / % 12. Additive Operatoren + - 11. Verschiebung << >> 10. Relationen < > <= >= 9. Gleichheit ==!= F8

8. bit-weises und & 7. bit-weises exklusives oder ^ 6. bit-weises oder 5. Logisches und && 4. Logisches oder 3. Bedingungsoperator Bedingung? Wert1 : Wert2 2. Zuweisung = += -= *= /= %= <<= >>= &= ^= = 1. Sequentielle Auswertung, F9

4.2.5. Steueranweisungen Bemerkungen: - Jede Anweisung endet mit einem Semikolon. - Die Zuweisung ist eine Anweisung und ein Operator, der den zugewiesenen Wert zurückgibt. - Es gibt auch eine goto-anweisung, die man aber vermeiden sollte. Komposition Verbundanweisung: { Anweisung1 Anweisung2... } Die geschweiften Klammern fassen mehrere Anweisungen zu einer einzigen Anweisung zusammen. F10

Alternation If-Anweisungen: if (Bedingung) Anweisung if (Bedingung) Anweisung1 else Anweisung2 Switch-Anweisung: switch (ganzzahliger Ausdruck) { case Konstante1 : Anweisung1 case Konstante2 : Anweisung2... default: AnweisungN } Vorsicht: Wenn der ganzzahlige Ausdruck Konstante1 ergibt und in Anweisung1 kein break; steht, wird Anweisung2 auch noch ausgeführt! F11

Iteration while-anweisung: while (Bedingung) Anweisung Führe Anweisung aus, wenn und solange Bedingung erfüllt ist! do-while-anweisung: do Anweisung while (Bedingung); Führe Anweisung aus und wiederhole dann, solange Bedingung erfüllt ist! for-anweisung: for (Ausdruck1; Ausdruck2; Ausdruck3) Anweisung Berechne Ausdruck1 (Initialisierung)! Wenn Ausdruck2 wahr ist (nicht 0 ergibt), führe Anweisung aus und berechne anschließend Ausdruck3! Prüfe nun wieder Ausdruck2, falls wahr: Anweisung, berechne Ausdruck3,...! break-anweisung, continue-anweisung break; bricht die Ausführung der Iteration ab und setzt Ausführung hinter der Iteration fort. continue; führt zu sofortigem Beenden der Anweisung und zum Sprung in die Bedingungsprüfung oder zum Berechnen von Ausdruck3. F12

4.2.6. Unterprogramme Alle Unterprogramme sind Funktionen. Eine Prozedur ist eine Funktion die den Nichttyp void zurückgibt. Definition einer Funktion resulttype functionname(type1 parameter1, type2 parameter2,...) { Anweisung}; Funktionen müssen vor Ihrem Benutzen deklarariert worden sein. Dies geschieht durch ihre Definition oder durch eine Deklaration: resulttype functionname(type1 parameter1, type2 parameter2,...); Jede Funktion darf jede andere Funktion aufrufen. Die Übergabe von Werten erfolgt durch die Parameter, deren Typ streng geprüft wird, wobei implizite Typumwandlungen häufig sind. F13

Es gibt nur einen Rückgabewert, dessen Typ der Signatur (resulttype) zu entnehmen ist. Die Zuweisung erfolgt in der Anweisung mittels der Returnanweisung return Ausdruck; return (Ausdruck); wobei dies auch den Rücksprung zur aufrufenden Funktion zur Folge hat. Es dürfen mehrere return-anweisungen in einer Funktion stehen. In Prozeduren bleibt der Ausdruck leer return; F14

4.2.7. Programmstruktur Jedes Programm muss eine Funktion main enthalten. Die Programmausführung beginnt mit dieser Funktion. Man kann ein Programm aus mehreren Dateien aufbauen und damit gliedern. F15

4.2.8. Beispiel (Primzahltest): #include <stdio.h> // Hinzufügen der IO-Standardbibliothek int isprime(int number) { int ist_primzahl, divisor; ist_primzahl = 1; for (divisor = number-1; divisor>1; divisor--) if (number % divisor == 0) {ist_primzahl = 0; break;}; return ist_primzahl; } void main() { printf('ist 13 eine Primzahl (1 - Ja, 0 Nein)? %d', isprime(13)); printf('ist 15 eine Primzahl (1 - Ja, 0 Nein)? %d', isprime(15)); } F16