wywołanie procedury

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


Wyszukiwarka

Podobne podstrony:
Zdalne wywołanie procedury RPC
PROCEDURA OLUP
06 pamięć proceduralna schematy, skrypty, ramyid 6150 ppt
LAB PROCEDURY I FUNKCJE
proces nbsp pomocy nbsp, nbsp strategie nbsp i nbsp procedury nbsp SWPS[1][1] 4
Procedura systemowa Nadzór nad produktami niezgodnymi
procedura wypadek
13 choroby skory wywolane przez pasozyty
5 Potencjaly wywolane
procedura bada ewaluacyjnych - program zaj , procedura badań ewaluacyjnych
Niewydolność serca, Studia - ratownictwo medyczne, 3 rok, Zawansowane procedury ratunkowe
Grill - procedura postępowania
Procedury check in i check out oraz kompleksowa obsługa, powtórki do egzaminów
Procedury do redukcji zachowań niepożądanych wykorzystywane, terapia zajęciowa
nazwy w tabeli wyników, Studia - ratownictwo medyczne, 3 rok, Zawansowane procedury ratunkowe
Procedura Dopuszczenia Do Obrotu, STUDIA - Kierunek Transport, STOPIEŃ I, MATERIAŁY DODATKOWE

więcej podobnych podstron