Programmieren in C Grundlagen C 1

Slides:



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

der Universität Oldenburg
Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
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
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Objekte und Arbeitsspeicher
Zusammenfassung Vorwoche
Das erste Programm (Folie 16)
Einführung in C++ und das objektorientierte Programmieren (OOP)
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Einführung in die Programmiersprache C 1
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmiersprache C 4
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Programmierung 1. Einführung Seite 1
Arduino Kurs Abend 2.
Prof. Dr.-Ing. Franz-Josef Behr
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
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
Programmieren in C Überblick C "Was ist wichtig?"
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
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
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
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
Programmieren in C "Was ist wichtig?"
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Variablen und Datentypen
Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Programmieren in C Dateien
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Programmieren in C / C++ Erste Schritte mit C++ Klassen und Objekte
Programmieren in C Grundlagen C 2
Programmieren in C Wie speichert C
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Projektmodul DM Kurze Einführung C-Programmierung
Programmieren in C Module und Bibliotheken
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung
Hochschule Fulda – FB AI Sommersemester 2018
SS 04 Christiane Rauh Christian Hellinger
Implementieren von Klassen
 Präsentation transkript:

Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Wintersemester 2014/15 http://c-ai.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

C-Programm 1 Ein C-Programm besteht (vereinfacht dargestellt) aus  Daten  Funktionen Daten Eingangsdaten  Ergebnisdaten evtl. (viele) Zwischendaten Konstante Daten  Werte unveränderbar Variable Daten  Werte veränderbar Funktionen  verarbeiten die Daten Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Programm 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Programm 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Programm 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Programm 5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

C-Programm 6 Typischer Ablauf eines C-Programms Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichensatz von C 1 Buchstaben (incl. Unterstrich) ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz _ Ziffern 0123456789 Semikolon (z.B. am Ende einer Anweisung) ; Punkt (Gleitpunktzahlen, Selektionsoperator) . Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Zeichensatz von C 2 Sonderzeichen (Operatoren, Satzzeichen) ( ) [ ] < > + - * / % ^ ~ & | = ! ? , : Anführungszeichen (Einzelzeichen, Strings) ' " Blockklammern { } Fluchtzeichen (für Sonderzeichen) \ Doppelkreuz (Preprozessordirektiven) # Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 1 C kennt 33 reservierte Worte auto break case char const continue default do double else enum extern float for goto inline if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 2 Aus den "Grundbausteinen" von C Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 3  werden "Programme" ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 4 auto Speicherklasse automatisch break Verlassen von Schleife/Mehrfachauswahl case Auswahl in Mehrfachauswahl char Typbezeichner für Zeichen const Attribut bei Typangabe continue Fortsetzungsanweisung default Standardauswahl bei Mehrfachauswahl do Schleifenanweisung double Typbezeichner Fließkommazahl else Teil von Einfach-, Mehrfachalternative Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 5 enum Typbezeichner für Aufzählungstyp extern Speicherklasse extern float Typbezeichner Fließkommazahl for Schleifenanweisung if Alternative oder bedingte Anweisung int Typbezeichner Ganzzahl long Typbezeichner Ganzzahl register Speicherklasse Register return Rückkehranweisung short Typbezeichner Ganzzahl Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Reservierte Worte in C 6 signed Typbezeichner, -modifizierer sizeof Operator zur Größenbestimmung static Speicherklasse statisch struct Strukturvereinbarung switch Auswahlanweisung typedef Typnamenvereinbarung union Datenstruktur mit Alternativen unsigned Typbezeichner, -modifizierer void Typbezeichner while Schleifenanweisung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Datentypen 1 Menge von Werten und Menge von Operationen auf diesen Werten Konstanten / Variablen Datentypen bestimmen Darstellung der Werte im Rechner benötigten Speicherplatz zulässige Operationen Festlegung des Datentyps implizit durch Schreibweise bei Konstanten explizit durch Deklaration bei Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Datentypen 2 Vordefinierte Grunddatentypen char Zeichen (ASCII-Kode, 8 Bit) int Ganzzahl (maschinenabhängig, meist 16 oder 32 Bit) float Gleitkommazahl (32 Bit, IEEE, etwa auf 6 Stellen genau) double doppelt genaue Gleitkommazahl (64 Bit, IEEE, etwa auf 12 Stellen genau) void ohne Wert (z.B. Zeiger) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Datentypen 3 Type-Modifier spezifizieren Grunddatentypen short int, long int - legen Länge der Ganzzahl fest - maschinenabhängig, 16 Bit, 32 Bit - int kann auch fehlen long double - Gleitkommazahl, erw. Genauigkeit - oft 128 Bit, IEEE signed, unsigned - char/int mit/ohne Vorzeichen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Bezeichner 1 Bezeichner (Identifier) für Konstanten, Variablen, Funktionen, Typen usw. müssen mit einem Buchstaben oder Unterstrich beginnen danach können Buchstaben, Unterstriche und Ziffern folgen Groß- und Kleinschreibung wird streng unterschieden keine Sonderzeichen (z.B. $ oder #) keine reservierten Worte Vorsicht bei vordefinierten Funktionsnamen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Bezeichner 2 Syntaxdiagramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Bezeichner 3 Backus-Naur-Form (BNF) letter ::= A|B|…|Y|Z|a|b|…|y|z|_ digit ::= 0|1|2|3|4|5|6|7|8|9 identifier ::= letter { letter | digit } BNF / EBNF zur Beschreibung formaler Sprachen Vielfältige Formen / Notationen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Bezeichner 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Konstanten Konstanten haben einen festgelegten, unveränderbaren Wert explizite Deklaration, z.B. const float pi = 3.141; implizite Notation, z.B. u = 2 * r * 3.141; mittels CPP textuelle implizite Ersetzung #define PI 3.141 ... u = 2 * PI * r; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Variablen 1 Variable sind Platzhalter für Daten haben einen festgelegten Speicherort, an dem der aktuelle Wert gespeichert wird der aktuelle Wert (an seinem Speicherort) ist veränderbar Attribute von Variablen: Datentyp Namen (Bezeichner, Identifier) Lebensdauer / Speicherklasse evtl. initialer Wert Sichtbarkeit (Scope) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Variablen 2 Deklaration / Definition von Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Variablen 3 Variablen-Definitionen, z.B. double u; short int i, tab = 5; char *hallo = "Hallo, Welt!"; Position im Programm: außerhalb von Funktionen am Anfang eines Blocks, also nach { Wert ist veränderbar (Zuweisung, Operation) Programmstruktur  Lebensdauer / Scope Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 1 Hauptspeicher Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 2 Beispiel: Zugriff auf Variable Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 3 Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 4 Programmstart und Aufruf von main() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 5 Zuweisung a = 4; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 6 Zuweisung b = 8; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 7 Berechnung a * b; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 8 Zuweisung c = a * b; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Wie speichert C? 9 Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 1 Wdh: Jede Variable hat einen Speicherort, d.h. eine Adresse im Hauptspeicher Zeiger (Pointer) sind Variable, die auf eine andere Variable verweisen, oder exakter: den Speicherort bzw. die Adresse dieser Variablen als Wert haben Pointerdefinition: int *ip; int i = 5; Adresszuweisung: ip = &i; Zugriff auf Wert: *ip = *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 2 Zugriff auf Variable mit Pointer Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 3 Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 4 Programmstart und Aufruf von main() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 5 Zuweisung i = 5; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 6 Zuweisung ip = &i; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 7 Berechnung *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 8 Zuweisung *ip = *ip + *ip; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 9 Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 10 Warum und wozu Zeiger? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Exkurs: Zeiger 11 In anderes Programmiersprachen, z.B. Ada oder Pascal, werden Pointer i.d.R. nur für dynamische Datentypen verwendet In C werden Zeiger leider schon von Anfang an für einfache Grundoperationen benötigt! Pointer notwendig für Eingaben: scanf("%d", &i); Pointer notwendig als Funktionsparameter: Funktionsdefinition: void getint(int *i) {} Funktionsaufruf: getint(&i); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 1 Wdh: Aufbau eines C-Programms: #include <stdio.h> int main(void) { int a, b, c; scanf("%d", &a); scanf("%d", &b); c = a * b; printf("c = %d\n", c); return(0); } Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 2 Jedes laufende C-Programm (= Prozess) hat voreingestellt drei Ein-/Ausgabekanäle: stdin Standardeingabe, meist Tastatur stdout Standardausgabe, meist Bildschirm stderr Standardfehlerausgabe, Bildschirm Die Standardkanäle sind umlenkbar: $ meinprog <InFile >OutFile 2>ErrFile Bei einigen C-Compilern ist unter Windows auch der Kanal stdprn als Standarddrucker definiert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 3 Einfache zeichenweise Ein- und Ausgabe mit getchar() und putchar(), z.B.: int c; c = getchar(); /* Zeichen von stdin */ putchar(c); /* Zeichen auf stdout */ Formatierte Ein- und Ausgabe mit printf() und scanf(), z.B.: int c; scanf("%c", &c); printf("%c", c); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 4 Obacht: getchar() liefert, bzw. putchar() benötigt als Parameter den Typ int! Typumwandlung von char  int erfolgt meist automatisch Hauptgründe: historisch ist char eine Art Untertyp von int die Zeichenkonstante EOF als Endekennzeichner für die Eingabe ist in stdio.h als -1 definiert Simples Kopierprogrammfragment: while((c = getchar())!= EOF) putchar(c); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 5 Formatierte Ausgabe mit printf() Aufruf: printf(fmt, args) printf() konvertiert und gibt die Parameter args unter Kontrolle des Formatstrings fmt auf stdout aus Der Formatstring fmt ist eine Zeichenkette Parameter args können auch fehlen Die Parameter args müssen den Typ haben, wie er im Formatstring fmt angegeben ist Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 6 Formatierte Eingabe mit scanf() Aufruf: scanf(fmt, args) scanf() konvertiert und liest die Parameter args unter Kontrolle des Formatstrings fmt von stdin ein Der Formatstring fmt ist eine Zeichenkette Die Parameter args müssen den Typ haben, wie er im Formatstring fmt angegeben ist Die Parameter args müssen Pointer sein Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 7 Wichtige Formatzeichen: %c Einzelzeichen / char %d Ganzzahl / int %ld Ganzzahl / long int %f Gleitkommazahl / float %lf Gleitkommazahl / double %s Zeichenkette / char * Wichtige Sonderzeichen \n Newline, Zeilensprung \t Tabulator \0 EOS - Endezeichen in String \' einfaches Anführungszeichen ' \" doppeltes Anführungszeichen " \% Prozentzeichen % \\ Fluchtzeichen \ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Noch ein Exkurs: Ein-/Ausgabe 8 Beispiele: char c; int a, b; double d; printf("integer a und b eingeben: "); scanf("%d %d", &a, &b); printf("a=%d b=%d\n", a, b); printf("char c und double d: "); scanf("%c %lf", &c, &d); printf("c=%c d=%lf\n", c, d); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Funktionsaufruf und Parameter Parameterübergabe als Werte (call by value), z.B. bei printf()  Variable werden als Werte in den Adressraum der Funktion kopiert Parameterübergabe als Adresse (call by reference), z.B. bei scanf()  Adressen der Variablen werden in den Adressraum der Funktion kopiert In der Funktion sind die Parameter Zeiger! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 1 Beispiel: Funktionsaufruf cbv Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 2 Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 3 Zuweisung a = 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 4 Kopie des Parameters an Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 5 Aufruf der Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 6 Zuweisung b = b * 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 7 Rückkehr aus Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by value 8 Variable a unverändert!!! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 1 Beispiel: Funktionsaufruf cbr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 2 Vor Programmstart Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 3 Wo ist der Unterschied cbv – cbr? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 4 Aufruf: Adresse der Variablen!!! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 5 In Funktion: Zeiger auf Variable!!! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 6 Zuweisung a = 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 7 Kopie der Adresse an Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 8 Aufruf der Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 9 Zuweisung *b = *b * 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 10 Rückkehr aus Funktion Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

Call by reference 11 Variable a verändert!!! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ