• Keine Ergebnisse gefunden

Pr¨asenz¨ubung zum Kurs Algorithmische Mathematik II

N/A
N/A
Protected

Academic year: 2022

Aktie "Pr¨asenz¨ubung zum Kurs Algorithmische Mathematik II"

Copied!
33
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Pr¨ asenz¨ ubung zum Kurs Algorithmische Mathematik II

Averkov, Zeile, Jost

Email: clemens.zeile@ovgu.de, felix.jost@ovgu.de

Fakult¨at f¨ur Mathematik Otto-von-Guericke-Universit¨at Magdeburg

Sommersemester 2018 11. April 2018

(2)

Inhalt I

Organisatorisches Scheinkriterien Sonstiges und Fragen

Das Klassenkonzept inC++

Zeiger und Referenzen

(3)

Scheinkriterien

Ahnlich wie bei “Algorithmischer Mathematik 1”, Homepage:¨

http://www.math.uni-magdeburg.de/institute/imo/teaching/sose18/algomat2/

Teil 1:

I voraussichtlich10Ubungsbl¨¨ atter, (mind.50 %der Punkte)

I (mindestens) 1 ¨Ubungsaufgabe korrekt an der Tafel

I Abgabe in2erGruppen

I Ublicherweise 4 Aufgaben: eine Programmieraufgabe, drei Beweisaufgaben.¨

I F¨ur dieProgrammieraufgabe(n)gelten die Hinweise aus dem ersten Semester, Abgabenan algomath1718@ovgu.de

Teil 2:

I Mitte/Ende MaiAusgabeProgrammierprojekt

I Bearbeitung in3erGruppen

I Mitte/Ende JuniAbgabe.

I Um den Schein zu erhalten muss das Programmierprojekt erfolgreich pr¨asentiert werden.

(4)

Scheinkriterien

Ahnlich wie bei “Algorithmischer Mathematik 1”, Homepage:¨

http://www.math.uni-magdeburg.de/institute/imo/teaching/sose18/algomat2/

Teil 1:

I voraussichtlich10Ubungsbl¨¨ atter, (mind.50 %der Punkte)

I (mindestens) 1 ¨Ubungsaufgabe korrekt an der Tafel

I Abgabe in2erGruppen

I Ublicherweise 4 Aufgaben: eine Programmieraufgabe, drei Beweisaufgaben.¨

I F¨ur dieProgrammieraufgabe(n)gelten die Hinweise aus dem ersten Semester, Abgabenan algomath1718@ovgu.de

Teil 2:

I Mitte/Ende MaiAusgabeProgrammierprojekt

I Bearbeitung in3erGruppen

I Mitte/Ende JuniAbgabe.

I Um den Schein zu erhalten muss das Programmierprojekt erfolgreich pr¨asentiert werden.

(5)

Scheinkriterien

Ahnlich wie bei “Algorithmischer Mathematik 1”, Homepage:¨

http://www.math.uni-magdeburg.de/institute/imo/teaching/sose18/algomat2/

Teil 1:

I voraussichtlich10Ubungsbl¨¨ atter, (mind.50 %der Punkte)

I (mindestens) 1 ¨Ubungsaufgabe korrekt an der Tafel

I Abgabe in2erGruppen

I Ublicherweise 4 Aufgaben: eine Programmieraufgabe, drei Beweisaufgaben.¨

I F¨ur dieProgrammieraufgabe(n)gelten die Hinweise aus dem ersten Semester, Abgabenan algomath1718@ovgu.de

Teil 2:

I Mitte/Ende MaiAusgabeProgrammierprojekt

I Bearbeitung in3erGruppen

I Mitte/Ende JuniAbgabe.

(6)

Sonstiges und Fragen

I 1. ¨Ubungsblatt nach der Vorlesung am 5. April

I Ubungsaufgaben werden immer 1 Woche nach Abgabe besprochen¨

I Ubung am¨ 1. Maiwird am 3. Mai als Groߨubung nachgeholt

I Wann wollt ihr mit der ¨Ubung beginnen?

I Andere Fragen?

Mail-Adressen:felix.jost@ovgu.de, clemens.zeile@ovgu.de

(7)

Datentyp class

Zus¨atzlich zu denvordefinierten Datentypen(int, doubleusw.) kann man mit Klassen (Schl¨usselwortclass) eigene Typen definieren.

Diese bezeichnet man alsObjekte, da Klassen nicht nurDatenenthalten sondern auchMethoden, um diese zu verarbeiten und weiterzugeben.

Beispiele:

I Auto

I Hund

I Matrix

I Kunden einer Bank

I . . .

(8)

Datentyp class

Zus¨atzlich zu denvordefinierten Datentypen(int, doubleusw.) kann man mit Klassen (Schl¨usselwortclass) eigene Typen definieren.

Diese bezeichnet man alsObjekte, da Klassen nicht nurDatenenthalten sondern auchMethoden, um diese zu verarbeiten und weiterzugeben.

Beispiele:

I Auto

I Hund

I Matrix

I Kunden einer Bank

I . . .

(9)

Datentyp class

Zus¨atzlich zu denvordefinierten Datentypen(int, doubleusw.) kann man mit Klassen (Schl¨usselwortclass) eigene Typen definieren.

Diese bezeichnet man alsObjekte, da Klassen nicht nurDatenenthalten sondern auchMethoden, um diese zu verarbeiten und weiterzugeben.

Beispiele:

I Auto

I Hund

I Matrix

I Kunden einer Bank

I . . .

(10)

Motivation

I Realit¨at ist objektorientiert

I Vereinfachung und Kapselung

I Wiederverwendbarkeit

I Leichte Erweiterbarkeit

I Parallelisierbarer Entwicklungsprozess

(11)

Aufbau und Eigenschaften eines Objekts

I von Außen

I Objekt hat ¨offentliche Eigenschaften (Attribute)

I Objekt besitzt ¨offentlich definierte Funktionen (Methoden), welche sich auf seine Eigenschaften auswirken

I von Innen

I Verarbeiten der ¨uber Funktionsaufrufe eingehenden Befehle (Botschaft) zur ¨Anderungen der Eigenschaften

I “Interne” Funktionen und Eigenschaften, zur Wahrnehmung der ¨außeren Funktion

(12)

Aufbau und Eigenschaften eines Objekts

I von Außen

I Objekt hat ¨offentliche Eigenschaften (Attribute)

I Objekt besitzt ¨offentlich definierte Funktionen (Methoden), welche sich auf seine Eigenschaften auswirken

I von Innen

I Verarbeiten der ¨uber Funktionsaufrufe eingehenden Befehle (Botschaft) zur ¨Anderungen der Eigenschaften

I “Interne” Funktionen und Eigenschaften, zur Wahrnehmung der ¨außeren Funktion

(13)

Aufbau und Eigenschaften des Objekts Auto

I von Außen zug¨anglich

I Attribut

”Geschwindigkeit“ (nur lesend)

I Attribut Farbe: Rot

I Attribut Leistung: 160 kW

I Methoden

”beschleunigen“ und

”bremsen“

I definierte Funktionsweise

I Aufruf der Methoden ver¨andert die Geschwindigkeit

I von Innen

I Wird

”beschleunigen“ aufgerufen, mehr Kraftstoff an den Motor liefern

I Wird

”bremsen“ aufgerufen, Bremsanlage bet¨atigen

(14)

Folgen dieses Aufbaus f¨ ur das Objekt Auto

I F¨ur den externen Benutzer von

”Auto“ ist es vollkommen egal was passiert wenn er”beschleunigen“ m¨ochte

I Jedes

”Auto“-Objekt MUSS die Methoden

”beschleunigen“ und

”bremsen“

verstehen

I Der Aufruf der Methode

”beschleunigen“ ist von der konkreten Implementierung von”Auto“ vollkommen unabh¨angig

I ”Auto“-Objekte k¨onnen innerhalb des Programms beliebig ausgetauscht werden

(15)

Begriffe: Objekt – Klasse – Instanz

Bei der Arbeit mit Objekten unterscheidet man:

I Klasse:

I Zusammenfassungvon ¨ahnlichen Objekten, welche sich nur in Ihren Attributen unterscheiden

I Charakterisiertdie Objekte

I Schablone/ Prototyp

I Instanz

I Konkretes Objekt dasbestimmte Attributwerteaufweist

(16)

Beispiel class ”Dog”

1 #i n c l u d e <i o s t r e a m>

2

3 u s i n g n a m e s p a c e s t d ; 4

5

6 c l a s s Dog 7 {

8 p u b l i c:

9 i n t GetAge ( ) ;

10 v o i d S e t A g e (i n t a g e ) ; 11 p r i v a t e:

12 i n t i t s A g e ;

13 };

14

15 i n t Dog : : GetAge ( ) 16 {

17 r e t u r n i t s A g e ; 18 }

19

20 v o i d Dog : : S e t A g e (i n t a g e ) 21 {

22 i t s A g e = a g e ; 23 }

24

i n t main ( )

(17)

Erstellen und Zerst¨ oren

Konstruktor:

I Dienen derErstinitialisierungvon Daten einer Klasse

I Klassenmethode, kein R¨uckgabewert, Name wie Klasse selbst

I Standardkonstruktor(ohne Argumente), Parameterkonstruktor ( ¨Ubergabe Parameter),. . .

I Compiler erzeugt automatisch Standardkonstruktor

I Automatischaufgerufen,wenneinObjekt erzeugtwird

Destruktor:

I Jede Klasse besitzt genau einen Destruktor

I Hauptaufgabe:Freigeben von dynamischem Speicherplatzder Klasse

I Hat den Namen der Klasse, wobeiTilde(∼) vorangestellt

I Keine Argumente, keinen R¨uckgabewert

I Compiler erzeugt automatisch Standarddestruktor

(18)

Erstellen und Zerst¨ oren

Konstruktor:

I Dienen derErstinitialisierungvon Daten einer Klasse

I Klassenmethode, kein R¨uckgabewert, Name wie Klasse selbst

I Standardkonstruktor(ohne Argumente), Parameterkonstruktor ( ¨Ubergabe Parameter),. . .

I Compiler erzeugt automatisch Standardkonstruktor

I Automatischaufgerufen,wenneinObjekt erzeugtwird

Destruktor:

I Jede Klasse besitzt genau einen Destruktor

I Hauptaufgabe:Freigeben von dynamischem Speicherplatzder Klasse

I Hat den Namen der Klasse, wobeiTilde(∼) vorangestellt

(19)

Beispiel Konstruktor/Destruktor

1 #i n c l u d e <i o s t r e a m>

2 u s i n g n a m e s p a c e s t d ; 3

4 c l a s s Dog 5 { 6 p u b l i c:

7 Dog ( i n t i n i t i a l A g e ) ;

8 ˜Dog ( ) ;

9 v o i d s e t A g e (i n t a g e )

10 {

11 i t s A g e=a g e ;

12 };

13

14 i n t g e t A g e ( )

15 {

16 r e t u r n i t s A g e ;

17 }

18

19 p r i v a t e:

20 i n t i t s A g e ;

21 };

22

23 Dog : : Dog (i n t i n i t i a l A g e ){ // E r s e t z e S t a n d a r d k o n s t r u k t o r 24 i t s A g e = i n i t i a l A g e ;

25 };

26

(20)

Zeiger

I Variable, die Speicheradresse enth¨alt

I Ber¨ucksichtigung des dort abgelegten Datentyps, Beispiel:int * p;

I Eindeutig addressierten Speicherstelle f¨ur jede Variable eines Programms

I Ermittlung der Adresse einer Variable mittels ”&“, Beispiel:p = &a;

I Dereferenzoperator (Zugriffsoperator) *<pointer>erlaubt (indirekten) Zugriff auf Daten auf welche der Pointer zeigt

I Zeiger auf Strukturen/Klassen:(*p).Attributundp->Attribut¨aquivalent

(21)

Zeiger-Beispiel

1 // P o i n t e r o p e r a t o r s 2 #i n c l u d e <i o s t r e a m>

3 u s i n g n a m e s p a c e s t d ; 4

5 i n t main ( ) 6 { 7

8 i n t i , j , ∗p i n t ; 9

10 i = 1 0 ; // i = 10

11 p i n t = & i ; // p o i n t e r i n i t i a l i z a t i o n 12 j=∗p i n t ; // a c c e s s on i n t

13

14 // c o u t<<” A d r e s s e von i : ”<<& i << e n d l ;

15 // c o u t<<” I n h a l t von p i n t ( a d r e s s e a u f i ) : ”<< p i n t <<e n d l ; 16 // c o u t<<” Z e i g e r von p i n t : ”<<∗p i n t << e n d l ;

17

18 // i = 5 ; 19

20 // c o u t<<” Z e i g e r von p i n t : ”<<∗p i n t << e n d l ; 21

22 // c o u t<<” j : ”<< j << e n d l ; 23

24 ∗p i n t = 0 ; // i = 0 c o u t<<” i : ”<< i <<e n d l ;

(22)

Dynamische Speicherallokation: new und delete

I Keywordnew: Neue Objekte auf dem Freispeicher erzeugen

I R¨uckgabewert ist eine Speicheradresse, welcher man einem Zeiger zuweisen muss

I Beispiel:int* px = new int;

I deletegibt den Speicherbereich wieder frei

(bei Programmende, Geltungsbereichende oder expliziter Aufruf)

I F¨ur jeden Aufruf vonnewkorrespondierender Aufruf vondelete

I Dynamische Speicherallokation: Gr¨oße wird erst sp¨ater festgelegt

I Beispiel: Matrix

(23)

Matrix-Beispiel

1 // Dynamic a r r a y 2D 2 #i n c l u d e <i o s t r e a m>

3 u s i n g n a m e s p a c e s t d ; 4

5 i n t main ( ) 6 {

7 i n t n , m, i , j ;

8 d o u b l e ∗∗b ; // p o i n t e r a t p o i n t e r s a t d o u b l e 9

10 c o u t<<” E i n g a b e Z e i l e n n : ”; c i n>>n ; 11 c o u t<<” E i n g a b e S p a l t e n m : ”; c i n>>m;

12

13 b =new d o u b l e∗ [ n ] ; // A l l o c a t e row p o i n t e r s 14

15 f o r ( i = 0 ; i <n ; i ++) {

16 b [ i ] =new d o u b l e[m ] ; // A l l o c a t e r o w s

17 }

18

19 f o r ( i = 0 ; i <n ; i++ ) { // i n i t i a l i z e b

20 f o r ( j = 0 ; j<m; j ++){

21 b [ i ] [ j ] = ( i +1)∗( j +1) ;

22 }

23 }

24 // . . .

f o r ( i = n−1; i>= 0 ; i−−){

(24)

Klassen-Beispiel

1 c l a s s tDatum { 2 p u b l i c:

3 tDatum ( ) ;

4 ˜ tDatum ( ) ; 5 };

6 tDatum : : tDatum ( ){

7 i n t Tag =0;

8 i n t Monat =0;

9 i n t J a h r =0;

10 };

11 tDatum : : ˜ tDatum ( ){ 12 };

13 // a l t e r n a t i v e i m p l e m e n t i e r u n g 14 c l a s s tDatum{

15 p u b l i c: 16 tDatum ( ){

17 i n t Tag =0;

18 i n t Monat =0;

19 i n t J a h r =0;

20 };

21 ˜ tDatum ( ){

22 };

23 };

24 i n t main ( ){ 25 tDatum h e u t e ;

(25)

Referenzen

I Alias(Pseudoname) f¨ur eine Variable

I Kann genauso wie Variable benutzt werden

I Deklaration mit Hilfe des ”&”Operators

I Adresse der Referenz identisch mit Adresse des Ziels der Referenz

I Kein zus¨atzlicher Speicher

I Verwendung u.a. zurParameter¨ubergabean Funktionen und Vereinfachung komplizierter Datenstrukturen

(26)

Referenzen-Beispiel

1 #i n c l u d e <i o s t r e a m>

2

3 u s i n g n a m e s p a c e s t d ; 4 i n t main ( )

5 { 6 i n t a , b ;

7 i n t & r e f = a ; // R e f e r e n z e n m u e s s e n a u f e t w a s z e i g e n

8 a = 5 ; // r e f = a = 5

9 b = 6 ; 10

11 c o u t<<” r e f : ”<< r e f<<” a : ”<<a<<” b : ”<<b<< e n d l ; 12

13 a = 8 ;

14 c o u t<<” r e f : ”<< r e f<<” a : ”<<a<<” b : ”<<b<< e n d l ; 15

16

17 r e f = b ;

18 c o u t<<” r e f : ”<< r e f<<” a : ”<<a<<” b : ”<<b<< e n d l ; 19

20 b =7;

21 c o u t<<” r e f : ”<< r e f<<” a : ”<<a<<” b : ”<<b<< e n d l ; 22

(27)

Aufgabe 2

1 // 1 . ) W e l c h e r F e h l e r i s t h i e r e i n g e b a u t ? 2 // 2 . ) Welche Werte h a b e n a , b , c , ∗d am Ende ? 3

4

5 #i n c l u d e <i o s t r e a m>

6

7 u s i n g n a m e s p a c e s t d ; 8

9 i n t main ( ) 10 { 11 i n t a ; 12 i n t& b = a ; 13 i n t& c = b ; 14 i n t ∗d = &c ; 15 a = 6 ; 16 ∗b = 7 ; 17 ∗d = 8 ; 18

19 r e t u r n 0 ; 20 }

(28)

Weitergehende Konzepte

I Vererbung

(OberklasseLandfahrzeug, KlassePKW erbt Eigenschaften von Klasse Landfahrzeug)

I Befreundete Klassen

(Gew¨ahre einer Nicht-Member-Funktion der Klassematrix Zugriff auf den privaten Teil einer Klassevektor)

I Templates

(Eine Klasse mit einem variablen Typen, der vom Nutzer selbst definiert wird sobald er das Template benutzt)

I Smart pointer

(abstrakter Datentyp, der einen Zeiger nachbildet und zus¨atzlich weitere F¨ahigkeiten besitzt, wie automatische Speicherverwaltung)

(29)

Definition Graph

Definition 4.1

Ein GraphG ist ein geordnetes Paar (V,E), wobeiV eine Menge von Knoten (englisch vertex/vertices, oft auch Ecken genannt) undEeine Menge von Kanten (engl. edge/edges, manchmal auch B¨ogen genannt) bezeichnet undE⊂V×V erf¨ullt sein soll.

Bemerkung: Unterscheidung zwischen gerichteten und ungerichteten Graphen

Beispiele:

I Knoten sind verschiedene St¨adte, Kanten Straßen.

I U-Bahn-Netz: Stationen und Verbindungen

I . . .

(30)

Definition Graph

Definition 4.1

Ein GraphG ist ein geordnetes Paar (V,E), wobeiV eine Menge von Knoten (englisch vertex/vertices, oft auch Ecken genannt) undEeine Menge von Kanten (engl. edge/edges, manchmal auch B¨ogen genannt) bezeichnet undE⊂V×V erf¨ullt sein soll.

Bemerkung: Unterscheidung zwischen gerichteten und ungerichteten Graphen

Beispiele:

I Knoten sind verschiedene St¨adte, Kanten Straßen.

I U-Bahn-Netz: Stationen und Verbindungen

I . . .

(31)

Definition Graph

Definition 4.1

Ein GraphG ist ein geordnetes Paar (V,E), wobeiV eine Menge von Knoten (englisch vertex/vertices, oft auch Ecken genannt) undEeine Menge von Kanten (engl. edge/edges, manchmal auch B¨ogen genannt) bezeichnet undE⊂V×V erf¨ullt sein soll.

Bemerkung: Unterscheidung zwischen gerichteten und ungerichteten Graphen

(32)

Adjazenzmatrix

Definition 4.2

SeiG = (V,E) ein Graph. Die zugeh¨orige AdjazenzmatrixA= (ai,j), i,j∈V ist durch seine Eintr¨age definiert als

ai,j=

1, falls (i,j)∈E,

0, sonst. (4.1)

(33)

Ubungsaufgabe 3 ¨

Implementieren Sie den KlassentypGraph. ¨Uberlegen Sie sich sinnvolle Variablen und Methoden. Insbesondere soll es m¨oglich sein Kanten ¨uber eine Adjazenzmatrix zu definieren und diese wiederum ausgeben zu lassen.

Referenzen

ÄHNLICHE DOKUMENTE

Jedes ausleihbare Buch kann durch einen Bibliotheksbenutzer ausgeliehen werden. Ein ausgeliehenes Buch muss spätestens nach drei Wochen

 Während der Ausführung einer Methode kann ein Objekt auch Methoden bei (anderen) Objekten aufrufen..

■ Eine Klasse enthält einen speziellen Repräsentanten, ein spezielles Objekt, ein Schablonenobjekt (Prototyp) für ihre Objekte. ■ Ein Objekt wird aus einer Klasse

(z.B. Quadrat) Lage, Position, Größe, Strichstärke, Strichfarbe, Füllfarbe, Füllmuster,

b) So viel Schnee ist aber nicht vorhanden: Es stehen nur 3 ' 400 m 3 Schnee zur Verfügung.. Dieses Aufgabenblatt muss zusammen mit der Arbeit abgegeben werden. Die

Dieses Aufgabenblatt muss zusammen mit der Arbeit abgegeben werden. Ergebnisse ohne Begründung werden nicht bewertet. Jede Aufgabe muss auf ein separates Blatt gelöst

Das Strassennetz auf der Insel besteht aus einer Ringstrasse, welche ganz ohne Steigung die Insel in der Höhe z = 1.5 umrundet, und aus einer weiteren Strasse, die den

d) F¨ uhren Sie auf obigem Graphen Depth–First–Search mit Zeitstempeln aus, beginnend mit Knoten 1.. e) F¨ uhren Sie auf obigem Graphen Breadth–First–Search aus aus, begin- nend