• Keine Ergebnisse gefunden

¨Ubungspaket 4 Klassifikation von Dreiecken

N/A
N/A
Protected

Academic year: 2021

Aktie "¨Ubungspaket 4 Klassifikation von Dreiecken"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ubungspaket 4 ¨

Klassifikation von Dreiecken

Ubungsziele: ¨

1. Selbstst¨ andiges Entwickeln eines ersten Programms 2. Anwenden der Methoden des Software Life Cycles

3. Programmentwurf durch Anwendung der Methode der Schrittwei- sen Verfeinerung

4. Erstellen eines ersten, eigenen C-Programms 5. Finden von Programmierfehlern

Skript:

Kapitel: 6 bis 9 und 16 Semester:

Wintersemester 2021/22 Betreuer:

Thomas, Tim und Ralf Synopsis:

Nach dem ihr im 3. ¨ Ubungspaket ein in der Vorlesung entwickeltes Pro-

gramm auf dem Rechner zum Laufen gebracht habt, m¨ usst ihr nun euer

erstes eigenes Programm selber entwickeln. Im Rahmen der Programm-

entwicklung sollt ihr alle Phasen des Software Life Cycles anwenden.

(2)

Teil I: Stoffwiederholung

Aufgabe 1: Das Konzept der Fallunterscheidung

In Kapitel 9 des Skriptes haben wir die Fallunterscheidung eingef¨ uhrt. Erkl¨ are mit eigenen Worten, wof¨ ur sie verwendet werden kann und wie sie mittels der Methode der Schrittweisen Verfeinerung dargestellt wird!

Aufgabe 2: Die Fallunterscheidung in C

Erkl¨ are kurz, wie die Fallunterscheidung in der Programmiersprache C implementiert wird!

Gib zus¨ atzlich mindestens vier Beispiele f¨ ur eine

” sinnvolle“ Fallunterscheidung in C an!

Einf¨ uhrung in die Praktische Informatik, Wintersemester 2021/22 4-1

(3)

Aufgabe 3: Detailfragen zur Speicherorganisation

Wie kann man die Speicheradressen von Variablen und Funktionen ausgeben?

Variablen:

Funktionen:

(4)

Teil II: Quiz

Aufgabe 1: Phasen des Software Life Cycle

Wie heißen die einzelnen Phasen des Software Life Cycle und worauf zielen sie ab?

1. Phase Name:

Ziele:

2. Phase Name:

Ziele:

3. Phase Name:

Ziele:

4. Phase Name:

Ziele:

5. Phase Name:

Ziele:

6. Phase Name:

Ziele:

Einf¨ uhrung in die Praktische Informatik, Wintersemester 2021/22 4-3

(5)

Teil III: Fehlersuche

Aufgabe 1: Syntaxfehler

Unser Programmiererteam, die Tri Angels haben in folgendes Programm je Zeile einen Fehler eingebaut. Finde, erkl¨ are und korrigiere sie.

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

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

3 [

4 int i , j k , l ;

5 i = 1; j = 2; k = 3; l = 2:

6 if ( i == 1

7 p r i n t f ( " i ist 1\ n ) ; 8 if ( i == 1 &&& j == 3 )

9 p r i n t f ( " i ist 1 und j ist 3\ " ) ; 10 if ( k == 1 && [ j == 3 || l < 5) )

11 p r i n t ( " k ist 1 und j ist 3 o d e r l k l e i n e r 5\ n " ) ; 12 if ( i = > 2 * ( j + k ) * l || l == 2 )

13 p r i n t f " der k o m p l i z i e r t e a u s d r u c k ist w a h r \ n " ;

14 $ }

(6)

Teil IV: Anwendungen

Aufgabe 1: Vor¨ uberlegung: Klassen von Dreiecken

In der Mathematik werden Dreiecke, die durch die drei Seiten a, b und c beschrieben werden, in die folgenden f¨ unf Klassen eingeteilt. Beschreibe jede Klasse mittels einer Formel (a, b und c) sowie mindestens einem Zahlenbeispiel.

1. Kein Dreieck: Die Dreiecksungleichung besagt, dass die Summe zweier Seiten immer echt gr¨ oßer sein muss als die dritte Seite:

2. Gleichseitiges Dreieck:

3. Gleichschenkliges Dreieck:

4. Rechtwinkliges Dreieck:

5. Gew¨ ohnliches Dreieck:

Einf¨ uhrung in die Praktische Informatik, Wintersemester 2021/22 4-5

(7)

Aufgabe 2: Entwicklung eines Dreiecksprogramms

In dieser Aufgabe geht es um die eigenst¨ andige Entwicklung eines Programms zur Klassi- fikation von Dreiecken. Dabei sollt ihr alle Phasen des Software Life Cycle nacheinander durchlaufen (siehe auch Skriptkapitel 7), was durch die folgende Gliederung unterst¨ utzt werden soll. Die Klassifikation der einzelnen Dreiecke kann gem¨ aß Aufgabe 1 erfolgen.

Innerhalb dieser Aufgabe bezeichnen wir die drei Seiten des Dreiecks mit a, b und c.

1. Aufgabenstellung

Entwickle ein Programm, das drei Zahlen f¨ ur die Seiten a, b und c einliest. Das Programm soll ¨ uberpr¨ ufen, ob es sich um ein Dreieck handelt und ggf. die zutreffenden Dreiecksklassen ausgeben.

Beispiel: Eingabe: 3, 4, 5 Ausgabe: rechtwinkliges Dreieck

Das Programm soll auch erkennen, falls get¨ atigte Eingaben unsinnig sind. Hierzu z¨ ahlt beispielsweise die Eingabe negativer Seitenl¨ angen.

Hinweis: Bei der Programmentwicklung kann davon ausgegangen werden, dass im- mer nur ganze Zahlen vorkommen, sodass der Datentyp int verwendet werden kann.

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

3. Testdaten

Testfall a b c Dreiecksklasse(n)

1

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

2

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

3

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

(8)

4. Implementierung

Handsimulation: Trage in nachfolgender Tabelle ein, welche Ausdr¨ ucke ausgewertet und welche Ausgaben get¨ atigt werden.

Eingabe: 2 3 4

Ausdr¨ ucke und Variablen Zuweisung Auswertung Ausgabe Variable a: Wert: undef.

. . . .

Variable b: Wert: undef.

. . . .

Variable c: Wert: undef.

. . . .

a>0 und b>0 und c>0

. . . .

a=b und b=c

. . . .

a=b oder a=c oder b=c

. . . .

a 2 +b 2 =c 2 oder b 2 +c 2 =a 2 oder a 2 +c 2 =b 2

. . . .

Einf¨ uhrung in die Praktische Informatik, Wintersemester 2021/22 4-7

(9)

5. Kodierung

(10)

Handsimulation: Im Sinne eines effizienten Arbeitens ist es sehr lohnenswert, das auf Papier entwickelte C-Programm vor dem Eintippen mittels einer Handsimulation f¨ ur einige ausgew¨ ahlte Testdaten zu ¨ uberpr¨ ufen. Trage hierzu in nachfolgender Ta- belle (von oben nach unten) ein, welche Ausdr¨ ucke ausgewertet und welche Ausgaben get¨ atigt werden. Eine m¨ ogliche Testeingabe lautet: 3, 4, 5.

Eingabe: 3, 4, 5

Zeile Variablen Aktion Resultat/Effekt

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

6. Speicherorganisation

Um ein besseres Gef¨ uhl f¨ ur die internen Dinge eines C-Programms zu bekommen, sollt ihr diesmal auch eine

” Speicherkarte“ erstellen, deren Eintr¨ age ¨ ublicherweise abstei- gend sortiert sind (die großen Adressen oben, die kleinen unten). F¨ ur alle Variablen und Funktionen sind jeweils ihre Namen und Adressen einzutragen. Bei Variablen ist ferner anzugeben, wie viele Bytes sie im Arbeitsspeicher belegen. Hinweise findet ihr in der ersten Programmieraufgabe aus Aufgabenblatt 3 sowie in Kapitel 8 des Skriptes. Verwende folgende Tabelle, in der bereits zwei Beispiele (fast vollst¨ andig) eingetragen sind:

Adresse Name Typ Gr¨ oße

0x

... . . . .

0x

... . . . .

0x

...

main Funktion

. . . .

0x

...

a Variable: int

. . . .

0x

... . . . .

0x

... . . . .

Einf¨ uhrung in die Praktische Informatik, Wintersemester 2021/22 4-9

Referenzen

ÄHNLICHE DOKUMENTE

Die abschließende Freigabe (Release) für den Einsatz in der Produktion und die ständige Wartung (Maintenance) der Software sind zwei wesentliche Schritte, die bei der

 bauxite

Country-level means of performance and standard deviations from the FIMS data collected in 1964 - at teen age for the cohort group considered - are presented in Table 1a. As shown

• der Server eines WCMS enthält das Content Repository, verwaltet den Workflow, sowie das Rechtekonzept und bietet Schnittstellen nach außen. • es entstehen große Lasten auf

Unlike industrial products, whose quality can be easily defined through a series of mechanical, physical or chemical properties, the quality of food products

Nehmen wir nun an, dass unser Programm zwei unterschiedliche Schwellwertfunktionen sowie eine cos-Funktion ben¨ otigt. Eine sehr einfache Implementierung w¨ urde beispielsweise je

Durch /* ist der hintere Teil kein Kommentar, da man Kommentare so nicht schachteln kann.

Dabei sollt ihr alle Phasen des Software Life Cycle nacheinander durchlaufen (siehe auch Skriptkapitel 7), was durch die folgende Gliederung unterst¨ utzt werden soll.