• Keine Ergebnisse gefunden

C - Grundlagen und Konzepte C-Datenstrukturen

N/A
N/A
Protected

Academic year: 2022

Aktie "C - Grundlagen und Konzepte C-Datenstrukturen"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

C - Grundlagen und Konzepte C-Datenstrukturen

Andreas Gadelmaier

2. Juli 2014

(2)

Inhaltsverzeichnis

1

Einleitung:

Warum brauchen wir Datenstrukturen?

2

Hauptteil:

1. struct

2. union

3. array

4. string

5. enum

6. typedef

(3)

Warum brauchen wir Datenstrukturen?

Essenziell zum Programmieren

Effizient

(4)

Struct

Sammelstruktur

Fassen verschiedene Komponenten zusammen

Diese Komponenten sind von unterschiedlichen Typen

Anzahl der Komponenten ist unbegrenzt

(5)

Syntax

Deklaration von Name und Inhalt:

1 s t r u c t B a n k K u n d e { 2 c h a r v o r n a m e [ 2 0 ] ; 3 c h a r n a c h n a m e [ 2 0 ] ; 4 int k o n t o n u m m e r ; 5 f l o a t k o n t o s t a n d ; 6 } K u n d e ;

(6)

BankKunde

(7)

Beispiel

Kontoinhaber

1 s t r u c t B a n k K u n d e K u n d e 2

3 K u n d e . v o r n a m e = " Max " ;

4 K u n d e . n a c h n a m e = " M u s t e r m a n n " ; 5 K u n d e . k o n t o n u m m e r = 1 2 3 4 5 6 7 ; 6 K u n d e . k o n t o s t a n d = 9 8 7 6 5 . 3 2 ;

(8)

BankKunde max

(9)

Zugriff

1 p r i n t f ( " K o n t o d a t e n : ␣ \ n 2 V o r n a m e ␣ = ␣ % s ␣ \ n

3 N a c h n a m e ␣ = ␣ % s ␣ \ n 4 K o n t o n u m m e r = ␣ % d ␣ \ n 5 K o n t o s t a n d ␣ = ␣ % f "

6 , max . v o r n a m e 7 , max . n a c h n a m e 8 , max . k o n t o n u m m e r 9 , max . k o n t o s t a n d );

(10)

Ausgabe

Kontodaten:

Vorname = Max

Nachname = Mustermann

Kontonummer = 1234567

Kontostand = 98765.32

(11)

Syntax

Setzt sich aus verschiedenen Komponenten zusammen Definition von Variablen im selben Speicherbereich Der Speicherbedarf wird durch die gr¨ oßte Komponente bestimmt

1 u n i o n K u n d e n d a t e n { 2 int k u n d e n n u m m e r ; 3 s h o r t f i l i a l e ; 4 } D a t e n ;

(12)

Beispiel

Anwendungsbereiche d¨ urfen sich nicht ¨ uberschneiden

1 D a t e n max

2 max . k u n d e n n u m m e r = 1 2 3 4 5 6 ; 3 p r i n t f ( " % d " , max . k u n d e n n u m m e r );

Ausgabe: 123456

(13)

Beispiel

1 D a t e n max

2 max . k u n d e n n u m m e r = 1 2 3 4 5 6 ;

3 p r i n t f ( " % d \ n " , max . k u n d e n n u m m e r );

4 max . f i l i a l e = 2 2 6 ;

5 p r i n t f ( " % d " , max . f i l i a l e );

Ausgabe f¨ ur Kundennummer: 123456

Ausgabe f¨ ur Filiale : 226

(14)

Gefahr

Variablen teilen sich einen Speicherbereich

Fehler die daraus resultieren sind schwer zu finden

1 D a t e n max

2 max . k u n d e n n u m m e r = 1 2 3 4 5 6 ; 3 max . f i l i a l e = 2 2 6 ;

4 p r i n t f ( " % d \ n " , max . k u n d e n n u m m e r );

5 p r i n t f ( " % d " , max . f i l i a l e );

Ausgabe f¨ ur Kundennummer: Falsch

(15)

Syntax

Sammelstruktur

Deklaration von Typ und Gr¨ oße Gleiche Typen

M¨ oglichkeit 1

1 f l o a t m o n a t l i c h e r K o n t o s t a n d [ 1 2 ] ; 2

3 m o n a t l i c h e r K o n t o s t a n d [ 0 ] = 2 3 5 0 . 0 0 ; 4 m o n a t l i c h e r K o n t o s t a n d [ 1 ] = 2 1 6 7 . 2 0 ; 5 m o n a t l i c h e r K o n t o s t a n d [ 2 ] = 2 8 0 0 . 7 0 ;

(16)

Syntax

M¨ oglichkeit 2

1 f l o a t m o n a t l i c h e r K o n t o s t a n d [ 1 2 ] = { 2 3 5 0 . 0 0 , 2 2 1 6 7 . 2 0 ,

3 2 8 0 0 . 7 0 , 4 5 2 6 0 . 9 0 , 5 5 7 2 0 . 5 0 , 6 . . . . } ;

(17)

Zugriff

Bei nicht Inizialisierung 0

1 int i ;

2 for ( i =0; i < 1 2 ; i + + ) { 3 p r i n t f ( " K o n t o s t a n d : ␣ \ n 4 % f " , k o n t o s t a n d [ i ];) 5 } ;

6 put ( " ␣ " );

Ausgabe: 2350.00 2167.20 2800.70 5260.90 5720.50

(18)

Mehrdimensonale arrays

1 int t e r m i n k a l l e n d e r [ 3 6 5 ] [ 3 ] ={

2 {1 , 123 , 456} ,

3 {2 , 789 , 101} ,

4 {3 , 112 , 131} ,

5 { . . . } 6 };

(19)

string

Strings sind Zeichenketten

Char Arrays zum Speichern von Zeichenketten Funktionieren genau wie int Arrays

1 c h a r n a m e = ’ a ’ ;

2 c h a r n a m e [ 2 0 ] = ’ m ’ , ’ a ’ , ’ x ’ , ’ \0 ’ ; 3 c h a r n a m e [ 2 0 ] = " max " ;

(20)

charr Array

Char Arrays werden oft dynamisch erstellt

1 c h a r s t r i n g [] = ( " K o n t o ␣ ist ␣ l e e r ! " );

(21)

Mehrdimensonale char Arrays

1 c h a r K u n d e n l i s t e [ 3 ] [ 2 0 ] = { 2 " M u e l l e r "

3 , " K r a u s e "

4 , " S c h a e f e r "

5 };

(22)

enum

Enumeration ist eine Aufz¨ ahlung Quelltext wird lesbarer

MagicNumbers : x?

1 f l o a t d r u c k e Z i n s e n (int x ){

2 if( x < 6) p r i n t f ( " Z i n s s a t z ␣ bei ␣ 1 ,5% " );

3 e l s e( x >= 6) p r i n t f ( " Z i n s s a t z ␣ bei ␣ 2 ,7% " ) 4 };

(23)

Syntax

Elemente im enum sind Nummeriert

1 t y p e d e f e n u m{

2 januar , februar , maerz ,

3 april , mai , juni ,

4 juli , august , s e p t e m b e r , 5 oktober , n o v e m b e r , d e z e m b e r 6 } m o n a t e ;

7 f l o a t d r u c k e Z i n s e n ( m o n a t m ){

8 if( m < 6) p r i n t f ( " Z i n s s a t z ␣ bei ␣ 1 ,5% " );

9 e l s e( m = > 6) p r i n t f ( " Z i n s s a t z ␣ bei ␣ 2 ,7% " ) 10 };

(24)

Beispiel

1 int m a i n (){

2 d r u c k e Z i n s e n ( 4 ) ; 3 r e t u r n 0;

4 }

(25)

Beispiel

1 int m a i n (){

2 d r u c k e Z i n s e n ( mai );

3 r e t u r n 0;

4 }

(26)

typedef

Datenvereinbarung

Name f¨ ur bestehende Struktur

keine Unterscheidung zur Variablendeklaration

(27)

Beispiel

Mit typedef:

1 t y p e d e f c h a r c h a r a c t e r 2 c h a r a c t e r b u c h s t a b e = ’ A ’ ;

Ohne typedef:

1 c h a r b u c h s t a b e = ’ A ’ ;

(28)

Beispiel

Mit typedef:

1 t y p e d e f s t r u c t B a n k K u n d e { 2 c h a r v o r n a m e [ 2 0 ] ; 3 c h a r n a c h n a m e [ 2 0 ] ; 4 int k o n t o n u m m e r ; 5 f l o a t k o n t o s t a n d ; 6 } K u n d e ;

1 int m a i n ( ){

(29)

Beispiel

Ohne typedef:

1 int m a i n ( ){

2 s t r u c t B a n k K u n d e max ; 3 r e t u r n 0;

4 }

(30)

Quellen

Referenzen

ÄHNLICHE DOKUMENTE

Definition erste Kennziffer first index figure Schutz gegen feste Fremdkörper Foreign objects protection.

Textsorte Stil Kognitives Unterscheidungs- vermögen Analytische Kompetenz Fachtypische Denkweisen Argumentative Kompetenz

systeme für Zuckerrüben werden zur Zeit noch nicht angeboten. Für Teilbereiche wird daher in den beteiligten Betrieben immer auf In­.. sellösungen

Bargeldauszahlung mit der Debitkarte an fremden Geldautomaten in Fremdwährung [SparkassenCard und Mastercard Basis/Visa Basis]. In Euro innerhalb der

Erstellen Sie dazu eine Powerpoint-Präsentation mit maximal drei Folien und maximal sieben Wörtern pro Folie. Erzählen Sie nichts, was Sie nicht

– Wickelt Sequenz von Lese/Schreib-Kommandos als Transaktion ab (atomar: “ganz oder gar nicht“, isoliert: nur Ergebnisse kompletter Transaktionen sind sichtbar). – Wickelt

Eine optimale Strategie ist eine, deren Anwendung garantiert zu einer End-Konfiguration führt, deren Wert mindestens so groß ist wie der berechnete garantierte Gewinn. Eine

Anmerkung: Man hätte die Liste gleich in richtiger Folge Man hätte die Liste gleich in richtiger Folge aufbauen oder nachträglich umordnen können. Dann wäre aufbauen