• Keine Ergebnisse gefunden

¨Ubungspaket 10 Fallunterscheidungen

N/A
N/A
Protected

Academic year: 2021

Aktie "¨Ubungspaket 10 Fallunterscheidungen"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ubungspaket 10 ¨

Fallunterscheidungen

Ubungsziele: ¨

1. Umgang mit der einfachen Fallunterscheidung, 2. sowie mehrfachen Fallunterscheidung und 3. problemangepasster Auswahl

Skript:

Kapitel: 24 und 25 Semester:

Wintersemester 2021/22 Betreuer:

Thomas, Tim und Ralf Synopsis:

Die meisten C-Programme k¨ onnen nicht einfach von oben nach unten

abgearbeitet werden. Zwischendurch muss der Programmablauf immer

mal wieder in die eine oder andere Richtung ge¨ andert werden, wie wir es

schon bei den ersten Programmieraufgaben gesehen haben. In diesem

Ubungspaket gehen wir nun genauer auf die einfache sowie mehrfache ¨

Fallunterscheidung ein.

(2)

Teil I: Stoffwiederholung

Aufgabe 1: Einfache Fallunterscheidung

Erkl¨are die einfache Fallunterscheidung anhand folgender Punkte mit eigenen Worten:

Struktogramm: Schrittweise Verfeinerung:

C Syntax: Zwei konkrete Beispiele:

Aufgabe 2: Einfache Fallunterscheidung geschachtelt

Erkl¨are an einem Beispiel eine geschachtelte Fallunterscheidung (eine innere Fallunter- scheidung in einer ¨außeren)

Schrittweise Verfeinerung: C-Beispiel:

(3)

Aufgabe 3: Mehrfache Fallunterscheidung

Erkl¨are mit eigenen Worten die mehrfache Fallunterscheidung anhand folgender Punkte:

Schrittweise Verfeinerung:

Struktogramm:

Ein konkretes Beispiel:

(4)

Teil II: Quiz

Aufgabe 1: Ablauf: einfache Fallunterscheidung

Gegeben sei folgendes kleines Programm:

1 # i n c l u d e < s t d i o . h >

2

3 int m a i n ( int argc , c h a r ** a r g v )

4 {

5 int i ;

6 s c a n f ( " % d " , & i ) ;

7 if ( i > 1 )

8 p r i n t f ( " i = % d \ n " , i ) ; 9 if ( i > 1 && i < 6 )

10 p r i n t f ( " i = % d \ n " , i ) ;

11 if ( i > 1 || i == -4 )

12 p r i n t f ( " i = % d \ n " , i ) ;

13 if ( i < 0 )

14 if ( i > -10 )

15 p r i n t f ( " i = % d \ n " , i ) ; 16 e l s e p r i n t f ( " i = % d \ n " , i ) ;

17 }

Notiere, welcheprintf()-Zeilen f¨ur welche Werte der Variablen i ausgef¨uhrt werden:

Ausgef¨uhrte Zeilen

i 8 10 12 15 16

-20 . . . . . . . . . . . . . . . . . . . .

-5 . . . . . . . . . . . . . . . . . . . .

-4 . . . . . . . . . . . . . . . . . . . .

0 . . . . . . . . . . . . . . . . . . . .

3 . . . . . . . . . . . . . . . . . . . .

8 . . . . . . . . . . . . . . . . . . . .

(5)

Mehrfache Fallunterscheidung:

Gegeben sei folgendes kleines Programm:

1 # i n c l u d e < s t d i o . h >

2

3 int m a i n ( int argc , c h a r ** a r g v )

4 {

5 int i ;

6 s c a n f ( " % d " , & i ) ;

7 s w i t c h ( i )

8 {

9 c a s e 0: p r i n t f ( " i = % d \ n " , i ) ; b r e a k ; 10 c a s e 2: p r i n t f ( " i = % d \ n " , i ) ;

11 c a s e 4: p r i n t f ( " i = % d \ n " , i ) ;

12 c a s e 6: p r i n t f ( " i = % d \ n " , i ) ; b r e a k ; 13 c a s e -1: p r i n t f ( " i = % d \ n " , i ) ;

14 c a s e -3: p r i n t f ( " i = % d \ n " , i ) ; b r e a k ; 15 d e f a u l t : p r i n t f ( " i = % d \ n " , i ) ; b r e a k ;

16 }

17 }

Notiere, welcheprintf()-Zeilen f¨ur welche Werte der Variablen i ausgef¨uhrt werden:

Ausgef¨uhrte Zeilen

i 9 10 11 12 13 14 15

-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

0 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

(6)

Teil III: Fehlersuche

Aufgabe 1: Fehler in Fallunterscheidungen

In den folgenden Programmen sind Dr. Dreamein paar kleine Fehler unterlaufen. Finde diese und korrigiere sie direkt im Quelltext.

Einfache Fallunterscheidung:

1 # i n c l u d e < s t d i o . h >

2

3 int m a i n ( int argc , c h a r ** a r g v )

4 {

5 int i , j , k ;

6 s c a n f ( " % d " , i ) ; s c a n f ( " % z " , & j ) ; 7 s c a n f ( " % d " , & k )

8 if ( i > j )

9 if ( i == k )

10 p r i n t f ( " i = % d \ n " , i ) ;

11 e l s e p r i n t f ( " j = % d k = % d \ n " , j , k ;

12 e l s e {

13 if ( k == -1 || -3 )

14 p r i n t f ( " so d o o f h i e r \ n " ) ; 15 p r i n t f ( " k a u m zu g l a u b e n \ n " ) ; 16 e l s e p r i n t f ( " na s e r v u s \ n " ) ;

17 }

(7)

Mehrfache Fallunterscheidung:

1 # i n c l u d e < s t d i o . h >

2

3 int m a i n ( int argc , c h a r ** a r g v )

4 {

5 int i ;

6 s c a n f ( " % d " , & i ) ;

7 s w i t c h ( i )

8 {

9 c a s e 0: p r i n t f ( " h u h u " ) ;

10 c a s e 1: p r i n t f ( " d o o f i \ n " ) ; b r e a k ;

11 c a s e 2 p r i n t f ( " wer ist h i e r ein d o e d e l ?\ n " ) ; 12 c s a e 3: p r i n t f ( " j e t z t r e i c h t ’ s a b e r \ n " ) ;

13 D E F A U L T : p r i n t f ( " j e t z t ist e n d g u e l t i g s c h l u s s \ n " ) ;

14 }

15 }

(8)

Teil IV: Anwendungen

Aufgabe 1: Korrelation zweier Variablen

In dieser Aufgabe verwenden wir die Fallunterscheidung, um die Korrelation zweier Ein- gangsgr¨oßen zu ermitteln. Die Programmentwicklung erfolgt nat¨urlich wieder gem¨aß der Struktur des Software Life Cycle.

1. Aufgabenstellung

Gegeben seien zwei Variablen i und j vom Typ int. Diese beiden Variablen haben beliebige Werte. Ferner haben wir eine Ergebnisvariableergebnis, die ebenfalls vom Typ int ist. Schreibe ein Programm, das die beiden Variablen wie folgt korreliert:

1. Ergebnis 1, wenn beide Variablen das gleiche Vorzeichen haben

2. Ergebnis -1, wenn beide Variablen ein unterschiedliches Vorzeichen haben 3. Ergebnis 0, wenn mindestens eine der beiden Variablen den Wert null hat.

2. Pflichtenheft: Aufgabe, Eingabe, Ausgabe, Sonderf¨alle

3. Testdaten

i j ergebnis

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i j ergebnis

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Implementierung (nur f¨ur die Bestimmung der Korrelation)

(9)

5. Kodierung

Aufgabe 2: Code-Umwandlung

1. Aufgabenstellung

Schreibe ein Programm, das f¨ur die Anpassung einer Steuerelektronik (beispielsweise eines Elektroautos) ein paar Konvertierungen vornimmt. Hierzu m¨ussen einige aus- gew¨ahlte Eingabewerte in neue Werte umgewandelt werden; alle anderen Werte sollen unver¨andert bleiben. Die Umwandlungstabelle sieht wie folgt aus:

alter Wert -1 0 4 5 12 13 14 17 34 35 neuer Wert

(10)

3. Implementierung

4. Kodierung

Referenzen

ÄHNLICHE DOKUMENTE

Schüler haben neben einer Identifikationsnummer einen Namen, eine Adresse und gehören einer einzigen Klasse an.. Klassen sind eindeutig durch ihre Klassennummer bestimmt und ihnen

Bei einem L-K-R Baum gilt, dass alle Knoten des linken Teilbaums kleinere Werte als der betrachtete Knoten haben und der rechte Teilbaum nur gr¨ oßere?. Dadurch weiß man beim

• Das Higgs kann nicht direkt nachgewiesen werden, schon allein aufgrund seiner Lebensdauer; je nach Masse zwischen 10 −43 s und 10 −46 s. • Je nach Masse werden ganz

Herausgeber und Redaktion freuen sich einerseits über zufriedene Leser und andererseits, dass sie es immer wieder geschafft haben, ein neues Heft mit interes- santem Inhalt

Igor freute sich, weil er mit seiner Mutter die Großeltern besuchen durfte. Igor freute sich, denn er durfte mit seiner Mutter die

gerade_laenge :: String

3.3 Texte überarbeiten: fremde Texte nach einfachen Kriterien überprüfen; eigene Texte nach einfachen, vorgegebenen Kriterien überarbeiten und bei Rückmeldungen an Mitschülerinnen

Es ist zu wenig Zeit / vermutlich nur für die Älteren interes- sant / ohne AG oder Firma klappt das nicht / die Schüler können so viel Verantwortung noch nicht übernehmen / die