Tutorium #4

Einführung in die (strukturierte) Programmierung

Gruppe 3 – Michael Schwarz prog-tutor-michael@iicm.tugraz.at
Gruppe 5 – Jörg Müller prog-tutor-joerg@iicm.tugraz.at
Gruppe 6 – Christoph Hack prog-tutor-hack@iicm.tugraz.at
Gruppe 8 – Anja Karl prog-tutor-anja@iicm.tugraz.at
Gruppe 9 – Manuel Weber prog-tutor-weber@iicm.tugraz.at

Tutoriumsinhalt

HW3 Besprechung - Häufige Fehler

HW3 Falle

HW3 Beispiele - Gut oder schlecht?

HW3 Beispiele - Gut oder schlecht?

HW3 Beispiele - Gut oder schlecht?

HW3 Beispiele - Gut oder schlecht?

HW3 Beispiele - Gut oder schlecht?

HW3 Beispiele - Gut oder schlecht?

Array

Beispiel

1int main() { 2 int fibo[5]; 3 fibo[0] = 1; 4 fibo[1] = 1; 5 fibo[2] = fibo[1] + fibo[0]; 6 fibo[3] = fibo[2] + fibo[1]; 7 fibo[4] = fibo[3] + fibo[2]; return 0; }
0x1000
0x1004
0x1008
0x100C
0x1010
0x1014
fibo   0x1000
0x1004
0x1008
0x100C
0x1010
0x1014
fibo   0x10001
0x1004
0x1008
0x100C
0x1010
0x1014
fibo   0x10001
0x10041
0x1008
0x100C
0x1010
0x1014
fibo   0x10001
0x10041
0x10082
0x100C
0x1010
0x1014
fibo   0x10001
0x10041
0x10082
0x100C3
0x1010
0x1014
fibo   0x10001
0x10041
0x10082
0x100C3
0x10105
0x1014

Variable-length-Arrays

Array als Funktionsparameter

  1. Array variabler Größe
    void foo(int bar[]) {
     [..]
    }
  2. Array fixer Größe
    void foo(int bar[8]) {
     [..]
    }
  3. Als Pointer
    void foo(int* bar) {
     [..]
    }

Spezielle Arrays: Mehrdimensionale Arrays

Mehr als 2 Dimensionen?

int cube[3][3][3];
int hypercube[3][3][3][3];

Beispiel: 4 Dimensionen

 int hypercube[3][3][3][3];

Möglichkeit 1: 4D-Würfel

Möglichkeit 2: Array von 3D Würfeln

Mehrdimensionale Arrays als Parameter

#include <stdio.h>

void printMatrix3(char matrix[][3])
{
  int y;
  for(y = 0; y < 3; y++)
  {
    printf("%c %c %c\n", matrix[y][0], matrix[y][1], matrix[y][2]);
  }
}

int main()
{
  char matrix[3][3] = { {'A', 'B', 'C'}, {'D', 'E', 'F'}, 
      {'G', 'H', 'I'} };
  printMatrix3(matrix);
}
Achtung: Nicht mehr möglich als Pointer zu übergeben!

Pointer

Pointer und Pointee

Pointer - Praxisbeispiel

1int main() { 2 int a = 3; 3 int x = 2; 4 int* ptr = &a; 5 *ptr = 4; 6 ptr = &x; 7 *ptr = 8; return 0; }
0x1000
0x1004
0x1008
0x100C
0x1010
a   0x10003
0x1004
0x1008
0x100C
0x1010
a   0x10003
x   0x10042
0x1008
0x100C
0x1010
a   0x10003
x   0x10042
0x1008
ptr   0x100C0x1000
0x1010
a   0x10004
x   0x10042
0x1008
ptr   0x100C0x1000
0x1010
a   0x10004
x   0x10042
0x1008
ptr   0x100C0x1004
0x1010
a   0x10004
x   0x10048
0x1008
ptr   0x100C0x1004
0x1010

HW4

Fragen?

Abgabe

Viel Erfolg bei HW4