Działanie programu
Marek Deutsch
wat-wdp@wp.pl
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
#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
#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
#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
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
Mechanizm wywołania
procedury (rekurencja)
• wywołanie procedury
rekurencyjnej
• działanie procedury rekurencyjnej
• obsługa stosu
#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
#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
#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
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}
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); /* * */
}