• Like
  • Save
Metodos funciones
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Metodos funciones

  • 339 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
339
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ingeniería Mecánica y Automotriz 1 Informática IICAPITULO 1.- FUNCIONESTiempo de vida de los datos Según el lugar donde son declaradas puede haber dos tipos de variables. Globales: las variables permanecen activas durante todo el programa. Se creanal iniciarse éste y se destruyen de la memoria al finalizar. Pueden ser utilizadas encualquier función. Locales: las variables son creadas cuando el programa llega a la función en laque están definidas. Al finalizar la función desaparecen de la memoria. Si dos variables, una global y una local, tienen el mismo nombre, la localprevalecerá sobre la global dentro de la función en que ha sido declarada. Dos variables locales pueden tener el mismo nombre siempre que esténdeclaradas en funciones diferentes./* Variables globales y locales. */#include <iostream.h>int num1=1;void main() /* Escribe dos cifras */{ int num2=10; cout<<num1<<endl; cout<<num2;}Funciones Las funciones son bloques de código utilizados para dividir un programa enpartes más pequeñas, cada una de las cuáles tendrá una tarea determinada. Su sintaxis es: tipo_función nombre_función (tipo y nombre de argumentos) { bloque de sentencias } tipo_función: puede ser de cualquier tipo de los que conocemos. El valordevuelto por la función será de este tipo. Por defecto, es decir, si no indicamos eltipo, la función devolverá un valor de tipo entero ( int ). Si no queremos queretorne ningún valor deberemos indicar el tipo vacío ( void ). nombre_función: es el nombre que le daremos a la función. tipo y nombre de argumentos: son los parámetros que recibe la función. Losargumentos de una función no son más que variables locales que reciben un valor.Este valor se lo enviamos al hacer la llamada a la función. Pueden existir funcionesque no reciban argumentos.Ing. Alberto Moreno C.
  • 2. Ingeniería Mecánica y Automotriz 2 Informática II bloque de sentencias: es el conjunto de sentencias que serán ejecutadas cuandose realice la llamada a la función. Las funciones pueden ser llamadas desde la función main o desde otrasfunciones. Nunca se debe llamar a la función main desde otro lugar del programa.Por último recalcar que los argumentos de la función y sus variables locales sedestruirán al finalizar la ejecución de la misma.1.3.- Declaración de las funciones Al igual que las variables, las funciones también han de ser declaradas. Esto eslo que se conoce como prototipo de una función. Para que un programa en C seacompatible entre distintos compiladores es imprescindible escribir los prototipos delas funciones. Los prototipos de las funciones pueden escribirse antes de la función main obién en otro fichero. En este último caso se lo indicaremos al compilador mediantela directiva #include. En el ejemplo adjunto podremos ver la declaración de una función ( prototipo ).Al no recibir ni retornar ningún valor, está declarada como void en ambos lados.También vemos que existe una variable global llamada num. Esta variable esreconocible en todas las funciones del programa. Ya en la función mainencontramos una variable local llamada num. Al ser una variable local, ésta tendrápreferencia sobre la global. Por tanto la función escribirá los números 10 y 5./* Declaración de funciones. */#include <iostream.h>void funcion(void); /* prototipo */int num=5; /* variable global */void main() /* Escribe dos números */{ int num=10; /* variable local */ cout<<num<<endl; funcion(); /* llamada */}void funcion(void){ cout<<num;}Paso de parámetros a una función Como ya hemos visto, las funciones pueden retornar un valor. Esto se hacemediante la instrucción return, que finaliza la ejecución de la función, devolviendoo no un valor. En una misma función podemos tener más de una instrucción return. La formade retornar un valor es la siguiente: return ( valor o expresión ); El valor devuelto por la función debe asignarse a una variable. De lo contrario,el valor se perderá.Ing. Alberto Moreno C.
  • 3. Ingeniería Mecánica y Automotriz 3 Informática II En el ejemplo puedes ver lo que ocurre si no guardamos el valor en unavariable. Fíjate que a la hora de mostrar el resultado de la suma, en el cout,también podemos llamar a la función./* Paso de parámetros. */#include <iostream.h>int suma(int,int); /* prototipo */void main() /* Realiza una suma */{ int a=10,b=25,t; t=suma(a,b); /* guardamos el valor */ cout<<"a+b=”<<t;}int suma(int a,int b){ return (a+b);} Ahora veremos lo que se conoce como paso de parámetros. Existen dos formas de enviar parámetros a una función: Por valor: cualquier cambio que se realice dentro de la función en elargumento enviado, NO afectará al valor original de las variables utilizadas en lallamada. Es como si trabajaramos con una copia, no con el original. No es posibleenviar por valor arrays, deberemos hacerlo por referencia. Por referencia: lo que hacemos es enviar a la función la dirección de memoriadonde se encuentra la variable o dato. Cualquier modificación SI afectará a lasvariables utilizadas en la llamada. Trabajamos directamente con el original./* Paso por valor. */#include <iostream.h>void intercambio(int,int);void main() /* Intercambio de valores */{ int a=1,b=2; cout<<"a=”<<a<<endl; cout<<”b=”<<b<<endl; intercambio(a,b); /* llamada */ cout<<a<<” , “<<b;}void intercambio (int x,int y){ int aux; aux=x; x=y; y=aux; cout<<"a=”<<x<<endl; cout<<”b=”<<y<<endl;}Ing. Alberto Moreno C.
  • 4. Ingeniería Mecánica y Automotriz 4 Informática IIPara enviar un valor por referencia se utiliza el símbolo & ( ampersand ) delante dela variable enviada. Esto le indica al compilador que la función que se ejecutarátendra que obtener la dirección de memoria en que se encuentra la variable. Vamos a fijarnos en los ejemplos. En el ejemplo anterior podrás comprobar queantes y después de la llamada, las variables mantienen su valor. Solamente semodifica en la función intercambio ( paso por valor ). En el siguiente ejemplo podrás ver como las variables intercambian su valor trasla llamada de la función ( paso por referencia ). Las variables con un * son conocidas como punteros, el único dato en C quepuede almacenar una dirección de memoria./* Paso por referencia. */#include <iostream.h>void intercambio(int *,int *);void main() /* Intercambio de valores */{ int a=1,b=2; cout<<"a=”a<<endl; cout<<”b=”<<b<<endl; intercambio(&a,&b); /* llamada */}void intercambio (int *x,int *y){ int aux; aux=*x; *x=*y; *y=aux; cout<<"a=”<<*x<<” , “<<”b=<<*y;}Los argumentos de la función main Ya hemos visto que las funciones pueden recibir argumentos. Pues bién, lafunción main no podía ser menos y también puede recibir argumentos, en estecaso desde el exterior. Los argumentos que puede recibir son: argc: es un contador. Su valor es igual al número de argumentos escritos en lalínea de comandos, contando el nombre del programa que es el primer argumento. argv: es un puntero a un array de cadenas de caracteres que contiene losargumentos, uno por cadena. En este ejemplo vamos a ver un pequeño programa que escribirá un saludo porpantalla (Programa : ARGUMENTO.C)./* Argumentos de la main. */Ing. Alberto Moreno C.
  • 5. Ingeniería Mecánica y Automotriz 5 Informática II#include <iostream.h>main(int argc,char *argv[]) /* argumentos */{cout<<"nCurso de Programación en Cn";cout<<"Programa de ejemplo.nn";if (argc<2){ cout<<"Teclee: ARGUMENTO su_nombre"; exit(1); /* fin */}cout<<"Hola:”<<argv[1];}Ing. Alberto Moreno C.
  • 6. Ingeniería Mecánica y Automotriz 6 Informática IIPROBLEMAS PROPUESTOS 11. Especifique el resultado que se obtiene al ejecutar el siguiente programa. #include <iostream.h> void velresult (int distancia, int tiempo ) { float vel; vel = (float) distancia / tiempo; cout<<“La velocidad Kmph:”<<vel; } void main ( ) { int distancia, tiempo; distancia = 100; tiempo = 2; velresult (distancia, tiempo); velresult (400, 10); }2. Escriba una función llamada bisuma que calcule la suma de dos variables num1 y num2 enteras y regrese un resultado entero.3. Escriba una función llamada media_de_3 que reciba como parámetro un dato entero y lo divida entre 3. Suponga que el dato enviado a la función es el total de sumar 3 números, por lo que el resultado de esta función será la media de los 3 datos.4. Escriba un programa completo que lea tres valores enteros para las variables a, b, c, que enseguida invoque a las funciones bisuma y media_de_3 de los ejercicios anteriores y que, por último, despliegue el valor promedio de los tres datos con un mensaje apropiado. ¿Qué cambios necesitaría realizar a las funciones para obtener el promedio de más de 3 datos?5. Escriba una función llamada cuadrado que tenga un parámetro de entrada llamado longitud y entregue como resultado el perímetro del cuadrado cuyo lado sea la longitud especificada y su área. Todas las variables son reales.6. Escriba una función llamada magnitud que tenga cuatro parámetros de entrada llamados x1, x2, y1, y2 y que entregue como resultado la distancia entre dos puntos cuyas coordenadas son (x1, y1) y (x2, y2) según la siguiente fórmula: dist = ( y 2 − y1 ) 2 + ( x 2 − x1 ) 27. Un piso rectangular que mide 12 metros por 15 metros está cubierto parcialmente por tapetes circulares. El radio de un tapete es un metro. El radio del otro es de dos metros.Ing. Alberto Moreno C.
  • 7. Ingeniería Mecánica y Automotriz 7 Informática II Escriba un programa que encuentre el área de la parte del piso que está descubierta. El programa deberá tener: a) Una función que reciba como parámetro el radio de un círculo y que regrese el valor del área de ese círculo. Suponga que el radio y el área son reales. b) Una función con dos parámetros reales que calcule el área de un rectángulo de base y altura dadas.8. Escriba una función llamada digfinal que tenga un parámetro de entrada llamado número y que entregue como resultado el dígito de las unidades del número. Por ejemplo, si el número es 234, el resultado es 4.9. Escribe una función que tome 3 parámetros: dos de tipo enteros y uno de tipo carácter. La función deberá sumar, restar, multiplicar o dividir los valores de los dos primeros parámetros dependiendo del código indicado en el tercer parámetro, y devolver el resultado.10. Escribe una función que devuelva el (a) factorial, (b) n-simo número de Fibonacci, de su argumento.11. Escribe una función que diga si sus dos argumentos son múltiplo el uno del otro (no importa cuál de cuál).12. Escribe una función que devuelva si su argumento n es o no es primo. NOTA: Tener en cuenta que basta con probar la divisibilidad por los números desde el 2 hasta la n . Lo cual ahorra muchas operaciones. Si además consideramos que basta con saber si es par o no al principio, podemos ahorrarnos la mitad de las pruebas de divisores, eliminando todos los pares. Por fin una última mejora, importante, es eliminar los múltiplos de tres.13. Escribe una función que devuelva el n-símo número primo (1 es el primero), recibiendo n como argumento.14. Escribe una función que ‘escriba’ los números primos hasta el numero que se le pasa como parámetro.Ing. Alberto Moreno C.
  • 8. Ingeniería Mecánica y Automotriz 8 Informática IIIng. Alberto Moreno C.