background image

 

 

Działanie programu

Marek Deutsch
wat-wdp@wp.pl

background image

 

 

Mechanizm wywołania 

procedury

• pamięć danych
• stos
• wywołanie procedury iteracyjnej
• przekazywanie parametrów do 

procedury

• określanie wartości parametrów 

wyjściowych

• rekord aktywacji procedury

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

tab[0] = 

tab[1] = 

tab[2] = 

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

tab[0] = 

tab[1] = 

tab[2] = 

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 17

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 17

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 1 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 37

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 2 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 37

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 2 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 3 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 3 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

adres powrotu z 
procedury = *

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  int pom;

  if (od_el <= do_el) {
     *suma = T[od_el];
     for(pom=od_el+1; pom <= 
do_el; pom++)
        *suma = *suma + T[pom];
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

Mechanizm wywołania 

procedury (rekurencja)

• wywołanie procedury 

rekurencyjnej

• działanie procedury rekurencyjnej
• obsługa stosu

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

tab[0] = 

tab[1] = 

tab[2] = 

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

background image

 

 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

PAO - stos

PAO - dane

tab[0] = 

tab[1] = 

tab[2] = 

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/        
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/       
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 2

do_el = 2

suma = adres zm. pom

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 2

do_el = 2

suma = adres zm. pom

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 11 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 2

do_el = 2

suma = adres zm. pom

pom = 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 11 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 31

adres powrotu z 
procedury = 4

T = adres tablicy tab

od_el = 1

do_el = 2

suma = adres zm. pom

pom = 11 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x =

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 31 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

adres powrotu z 
procedury = *

T = adres tablicy tab

od_el = 0

do_el = 2

suma = adres zmiennej x

pom = 31 

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];  /* 4 
*/         
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

tab[0] = 17

tab[1] = 20

tab[2] = 11

tab[3] =

tab[4] =

...

tab[98] =

tab[99] =

x = 48

adres powrotu z 
programu

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}

background image

 

 

PAO - stos

PAO - dane

#include<stdio.h>

typedef float Ttab[100];

void suma_elem (Ttab T, int 
od_el, int do_el,
                              float *suma)
{
  float pom;

  if (od_el == do_el)
      *suma = T[od_el];
  else  {
       suma_elem(T, od_el+1, do_el, 
&pom);  
       *suma = pom + T[od_el];        
 
  }
}

. . . . . 

main()
{
  Ttab tab;
  float x;

  printf("\nPodaj 3 liczby 
rzeczywiste: ");
  wczytanie_tab (tab, 3);
  suma_elem (tab, 0, 2, &x);
  printf("\nSuma liczb = 
%7.2f",x);  /* * */
}


Document Outline