Universit¨ at Paderborn Fakult¨ at V (EIM) Institut f¨ ur ET & IT
ANGEWANDTE DATENTECHNIK (SOFTWARETECHNIK)
Prof. Dr.-Ing. F. Belli
WS 2012/2013
Ubung 13 ¨
Ubungen zum Fach Grundlagen der Datenverarbeitung ¨
Ubung 13, Frontal¨ ¨ ubung am Mo. 28.01.2013 (14:00 bis 15:30 Uhr - Raum P7.2.01):
Aufgabe 1:
Betrachten Sie die folgende Funktion:
01 void func (int vektor[], int n) 02 {
03 int j,i, temp;
04 for (j=1; j<n; j++)
05 {
06 temp = vektor[j];
07 i = j-1;
08 while ((i>=0) && (vektor[i] > temp))
09 {
10 vektor[i+1] = vektor[i];
11 i--;
12 }
13 vektor[i+1] = temp;
14 }
15 }
1. ¨Uberlegen Sie sich, was der Algorithmus leistet.
2. Wieviele Schritte durchl¨auft die Funktion im schlechtesten Fall bei Aufruf eines Feldes der L¨ange n?
3. Wieviele Schritte durchl¨auft die Funktion im besten Fall bei Aufruf eines Feldes der L¨ange n?
4. Wie sieht jeweils die Notation im O-Kalk¨ul aus?
Hinweise:
Relevant f¨ur die Laufzeitanalyse (Bestimmung der Anzahl der Schritte) sind die Programmzeilen 3, 4, 6, 7, 8, 10, 11 und 13:
• Bestimmen Sie f¨ur jede Zeile, wie oft sie ausgef¨uhrt wird (Annahme: die Ausf¨uhrung erfolgt in kon- stanter Zeit).
• Summieren Sie jeweils diese Anzahl ¨uber alle Programmzeilen.
• Pn i=1
i=n(n2+1)
Universit¨ at Paderborn Fakult¨ at V (EIM) Institut f¨ ur ET & IT
ANGEWANDTE DATENTECHNIK (SOFTWARETECHNIK)
Prof. Dr.-Ing. F. Belli
WS 2012/2013
Ubung 13 ¨
Aufgabe 2:
Geben Sie f¨ur das folgende Programm Testf¨alle (Eingaben und erwartete Ausgaben) an, so dass die ¨Uber- deckungskriterien
1. C0 (Anweisungs¨uberdeckung) und 2. C1 (Zweig¨uberdeckung)
vollst¨andig erf¨ullt werden.
void main() {
int zahl1, zahl2, tmp;
scanf(" %d %d", &zahl1, &zahl2);
if ((zahl1>0) && (zahl2>0)) {
while (zahl1>0) {
if (zahl1<zahl2) {
tmp = zahl1;
zahl1 = zahl2;
zahl2 = tmp;
}
zahl1 = zahl1 - zahl2;
}
printf("%d \n", zahl2);
} else
printf("Falsche Eingabe\n");
}
Hinweise:
Ein Testfall ist ein Tupel der Ein- und der erwarteten Ausgabegr¨oße:tt= (tE,tA) hier:tt = ((zahl1, zahl2), erwartetes Ergebnis), Bsp.:t1 = ((16,12),4)
Ein Testfallsatz besteht aus einer Menge von Testf¨allen:TC0={t1, ..., tn}
Universit¨ at Paderborn Fakult¨ at V (EIM) Institut f¨ ur ET & IT
ANGEWANDTE DATENTECHNIK (SOFTWARETECHNIK)
Prof. Dr.-Ing. F. Belli
WS 2012/2013
Ubung 13 ¨
Aufgabe 3:
Betrachten Sie das folgende Programm:
void main() {
int a, b, x;
scanf(" %d", &a);
scanf(" %d", &b);
x = a % 3;
switch (x) {
case 0: x = a/b; break;
case 1: if (a>9) b = x-5; break;
case 2: while(x<b) b = b-1; break;
} }
1. Geben Sie eine minimale Anzahl Eingaben f¨ur die Variablen a und b an, so dass eine vollst¨andige Anweisungs¨uberdeckung (C0-Test) erreicht wird.
2. Wie hoch ist bei der Verwendung der oben gefundenen Testeingaben der Grad der Zweig¨uberdeckung (C1-Test)?
Hinweis: Zweig¨uberdeckung = Anzahl ausgef¨uhrter Zweige / Gesamtzahl aller Zweige im Programm