MezData-Logo Lösungen Button :PI-BASIS: Klassenarbeit 2 Musterlösung: Aufgabe 3 Programmanalyse

final int m = 3;      // Konstante deklarieren
int stack[] = new int[m]; // Array deklarieren
int sp= -1;

void push(int n){
  if (sp<m-1){
    sp++;
    stack[sp] = n;
  }
}

int pop(){
  int t;
  if (sp<0) return -1;
  t = stack[sp];
  sp--;
  return t;
}

void ButtonClick(){ // Anfang
  push(2);
  push(5);
  Ausgabe(pop());
  push(7);
  Ausgabe(pop());
  Ausgabe(sp);
}                   // Ende
Anweisung Kommentare Berechnungen m stack[] sp Punkte
  Anfang   3 {?,?,?} -1  
push(2); 2 auf den Stack legen
Anweisung Kommentare n
if (sp<m-1) true 2
sp++; Stackpointer +1 2
stack[sp] = n; 2 auf den Stack 2
3 {2,?,?} 0 1
push(5); 5 auf den Stack legen
Anweisung Kommentare n
if (sp<m-1) true 5
sp++; Stackpointer +1 5
stack[sp] = n; 5 auf den Stack 5
3 {2,5,?} 1 2
Ausgabe(pop()); Ausgabe(5)
Anweisung Kommentare t
if (sp<0) false ?
t = stack[sp];   5
sp--; Stackpointer -1 5
return t; Rückgabe 5 5
3 {2,5,?} 0 2
push(7); 7 auf den Stack legen
Anweisung Kommentare n
if (sp<m-1) true 7
sp++;   7
stack[sp] = n; 7 auf den Stack 7
3 {2,7,?} 1 1
Ausgabe(pop()); Ausgabe(7)
Anweisung Kommentare t
if (sp<0) false ?
t = stack[sp];   7
sp--; Stackpointer -1 7
return t; Rückgabe 7 7
3 {2,7,?} 0 1
Ausgabe(sp); Ausgabe(0)   3 {2,7,?} 0 1
  Ende   8

a) Struktogrammdarstellung push

Hinweis: GZ = Ganze Zahl

nach Strukturierte Programmentwicklung (ABI) nach EasyCode Punkte
Funktion push(n : GZ)

Zugriff auf globales m : GZ

Seiteneffekte: sp, stack[] : GZ

4

b) Struktogrammdarstellung pop

nach Strukturierte Programmentwicklung (ABI) nach EasyCode Punkte
Funktion pop() : GZ

Seiteneffekte: sp, stack[] : GZ

Lok. Var.: t : GZ

6

d) push(n) fügt n in den stack[] ein und erhöht den Stackpointer sp um eins.
pop gibt das oberste Element des stack[] zurück und erniedrigt sp um eins.
2