Programacion

Páginas: 5 (1048 palabras) Publicado: 2 de abril de 2011
Tema

ADQUISICIÓN Y TRATAMIENTO DE DATOS

Departamento de Ciencias de la Computación e IA

Subprogramas en C

Objetivo

Una vez que tengamos un programa que resuelva un problema concreto, ser capaces de usarlo tantas veces como queramos sin tener que reescribirlo.

En C:

#include ... // Programa principal int main (int argc, char **argv) { ... } // Subprogramas ... // Funciones yprocedimientos

IMPORTANTE:

Los subprogramas sólo se ejecutan cuando son invocados desde el programa principal o desde otros subprogramas.

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-1-

Introducción

Para crear un subprograma, lo primero que tenemos que hacer es escribir su cabecera (prototipo), que incluye el nombre del subprogramay su lista de parámetros:

7 7 7

float sqrt (float x) ...

Además de la cabecera, tendremos que escribir el cuerpo de la función:

... // Calculamos la raíz cuadrada ... // Valor devuelto por la función return ...

Una vez que hemos completado la implementación del subprograma, podemos usarlo cuando lo necesitemos:

a b c x

= = = =

sqrt(4.0) 2*sqrt(a+delta) 1 / sqrt(b) (-b +sqrt(b*b-4*a*c))/(2*a)

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-2-

Parámetros formales y parámetros actuales

7

c = sqrt(2.33+sqrt(4*b)/34.12)

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-3-

Paso de parámetros por valor

El subprograma trabaja sobre una copia del valor delparámetro actual:

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-4-

Paso de parámetros por referencia

Todos los cambios que hagamos dentro del subprograma para modificar un parámetro pasado por referencia se reflejarán en el parámetro actual correspondiente.

PASO POR VALOR vs. PASO POR REFERENCIA

NOTA En ANSI C sólo existe el paso deparámetros por valor. El paso de parámetros por referencia lo simulamos utilizando punteros.
Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-5-

Funciones

Una función es un subprograma que devuelve, de forma explícita, un valor:

tipo nombre (parámetros formales) { ! Declaraciones locales ... ! Sentencias ejecutables ... ! Valor devueltoreturn ...; }

Ejemplo: Programa modular para sumar dos números

7

int suma (int a, int b) { return a+b; } int main () { int x,y,s; printf(“Escriba 2 números enteros"); scanf(“%d %d”, &x, &y); s = suma(x,y); printf(“La suma es %d", s); return 0; }

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-6-

Procedimientos

A diferencia de lasfunciones, no devuelven ningún valor:

void nombre (parámetros formales) { // Declaraciones locales ... // Sentencias ejecutables ... }

Llamada a la subrutina:

nombre (parámetros actuales)

Ejemplo: Visualizar un mensaje en pantalla

7

Declaración:
void mostrarMensaje(char *mensaje);

Uso:
mostrarMensaje(“Mensaje informativo”);

Implementación:
void mostrarMensaje (char *mensaje){ printf(“MiPrograma v1.0\n”); printf(“%s\n”, mensaje); }
Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-7-

Paso de parámetros en C

En C sólo existe el paso de parámetros por valor:

7

// Paso de parámetros por valor

void sub (int x, int y) { x = x+y; }

int main () { int z,t; z=5; t=10; printf("%d %d\n",z,t); // 5 10 sub(z,t);printf("%d %d\n",z,t); // 5 10 sub(z,4); printf("%d %d\n",z,t); // 5 10 sub(z,2*t+20); printf("%d %d\n",z,t); // 5 10 sub(3,20); printf("%d %d\n",z,t); // 5 10 sub(z+32,20); printf("%d %d\n",z,t); // 5 10 }

Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Granada

-8-

El paso de atributos por referencia se puede simular si utilizamos punteros (pasamos...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programación
  • Programacion
  • Programacion
  • Programación
  • Programacion
  • Programacion
  • Programacion
  • Programacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS