Page 159

3 Funciones

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

j = 20; printf ("%d\n", sumatorio(i, j)); return 0;

23 24 25 26

}

· 169 Este programa muestra por pantalla los 10 primeros n´ umeros primos. La funci´on siguiente genera cada vez un n´ umero primo distinto. Gracias a la variable global ultimoprimo la funci´on ((recuerda)) cu´ al fue el u ´ltimo n´ umero primo generado. Haz una traza paso a paso del programa (hasta que haya generado los 4 primeros primos). Muestra el estado de la pila y el de la zona de variables globales en los instantes en que se llama a la funci´on siguienteprimo y cuando ´esta devuelve su resultado diez primos.c 1

diez primos.c

#include <stdio.h>

2 3

int ultimoprimo = 0;

4 5 6 7

int siguienteprimo(void) { int esprimo , i ;

8

do { ultimoprimo++; esprimo = 1; for (i=2; i<ultimoprimo/2; i++) if (ultimoprimo % i == 0) { esprimo = 0; break; } } while (!esprimo); return ultimoprimo;

9 10 11 12 13 14 15 16 17 18 19

}

20 21 22 23

int main(void) { int i ;

24

printf ("Los 10 primeros n´ umeros primos\n"); for (i=0; i<10; i++) printf ("%d\n", siguienteprimo() ); return 0;

25 26 27 28 29

}

............................................................................................. No hay problema con que las variables locales a una funci´on sean vectores. Su contenido se almacena siempre en la pila. Este programa, por ejemplo, cuenta la cantidad de n´ umeros primos entre 1 y el valor que se le indique (siempre que no supere cierta constante N) con la ayuda de la criba de Erat´ ostenes. El vector con el que se efect´ ua la criba es una variable local a la funci´on que efect´ ua el conteo: eratostenes 1.c 1

eratostenes.c

#include <stdio.h>

2 3

#define N 10

4 5 6 7 8

int cuenta_primos(int n) //Cuenta el n´ umero de primos entre 1 y n. { char criba[N] ; int i, j, numprimos;

9 10 11 12

/* Comprobemos que el argumento es v´ alido */ if (n >= N) return -1; // Devolvemos −1 si no es v´ alido.

13 14

/* Inicializaci´ on */

Introducci´ on a la Programaci´ on con C

153

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement