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.
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
Aufgabe 3: Detailfragen zur Speicherorganisation
Wie kann man die Speicheradressen von Variablen und Funktionen ausgeben?
Variablen:
Funktionen:
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
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 $ }
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
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
. . . . . . . . . . . . . . . . . . .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
5. Kodierung
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
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .