UNIDAD II
Lenguajes Imperativos
Profesor Miguel Cantillana
Ingeniería en Computación e Informática
Trimestre 2020-1
funciones en lenguaje C
Funciones en C
- Las funciones nos permiten modularizar nuestro
código- Haciéndolo más legible
- Evitando repeticiones innecesarias
- Facilitando la reutilización del código
- Se utilizan para realizar tareas concretas
- Que dependan de un determinado número de parámetros (argumentos)
- Ya hemos usado varias: printf(), scanf(), rand() ...
- Ya hemos implementado una: main()
- Las funciones, como las variables, hay que declararlas antes de usarlas
- También hay que implementarlas
- La implementación sirve como declaración
Elementos de una función
-
Nombre:
- Un identificador
-
Argumentos:
- Son los distintos parámetros o valores que necesita la función para hacer sus operaciones
- Se especifica el tipo de cada uno de ellos
- Por defecto la función recibe una copia de cada parámetro => Paso de argumentos por valor
- Si modificamos el valor de la variable dentro de la función, la variable externa permanece igual
Elementos de una función
-
Resultado:
- Es el valor que devuelve la función una vez ejecutada
- Se especifica el tipo que va a tener
- Solo hay uno
- Si no se espera ningún valor se usa void
Declarando una función
- Estructura básica
tipo nombrefunción(tipo1 arg1, tipo2 arg2,…)
- nombrefunción: Un identificador único
- Tipo(i) : Tipo de cada uno de los argumentos
- Arg(i) : Nombre de cada uno de los argumentos
- Es el nombre que tendrá la variable que internamente usemos en la función
- No son necesarios en la declaración
Ejemplo: mayor()
int mayor(int a, int b) {
return (a > b ? a : b);
}
- Tipo: retorna int
- Nombre: mayor
- Parámetros formales: 2 enteros, a y b
- Retorna: mayor número entre a y b
- Cuerpo: return (a > b ? a : b);
- Función retorna el entero mayor entre a y b
Otra Implementación
int mayor(int a, int b) {
if (a > b){
return a;
}else{
return b;
}
}
- Sin usar el operador condicional
Ejemplo sumaCubos()
int sumaCubos(int x, int n) {
int i;
int suma = 0;
for (i = 0; i <= n; i++) {
suma = suma + x*x*x;
}
return suma;
}
Análisis de ejemplo sumaCubos()
- Tipo: retorna int
- Nombre: sumaCubos
- Parámetros formales: 2 enteros, x y n
-
Variables locales:
- Entero i (contador)
- Entero suma (acumula sumas)
-
Retorna: valor final de suma
- Acumula la suma de n veces x al cubo
Comando return
- Define el valor retornado por la función return expresión;
- Valor retornado debe corresponder al tipo de la función
- Comando return puede ser utilizado en cualquier parte de la función
- Expresión suele ir entre paréntesis
- Pero no es necesario en ANSI C
Prototipos
- Indica al compilador el tipo de la función y el tipo y número de los argumentos
- int suma(int, int);
- Llamado también declaración de la función
- Nótese que:
- El nombre de los argumentos no es necesario
- Recomendable incluirlos!
- Prototipo termina en ;
- El nombre de los argumentos no es necesario
Ejemplo
/* Declaracion de funcion */
int suma(int, int);
/* Uso de la funcion */
int c = suma(x, 4*h);
/* Definición de funcion */
int suma(int a, int b) {
return (a + b);
}
Argumentos
-
Paso por valor
- Función recibe una copia de los valores de los argumentos
- Función puede modificar copias sin alterar variables originales
-
Paso por referencia
- Función recibe dirección de los argumentos
- Modificaciones sí afectan variables originales
Paso por valor
- Error: función intercambia copias de las variables
- Valores de x e y afuera de función no cambian
void intercambio (int x, int y) {
int temp;
temp = x;
x = y;
y = temp;
}
Paso por referencia
- Función recibe direcciones de variables
- Usar operador & intercambio(&a, &b);
void intercambio (int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
Función main()
- Todas las funciones de C están al mismo nivel
- Todas las funciones tienen alcance global
- Son visibles en todo el archivo
-
main() es la única función ‘especial’ de C
- Es la primera función en ejecutarse
- Sólo puede haber una por programa
Perfil de uso de main()
- Estándar define
- int main(void), o
- int main(int argc, char *argv[])
- Únicos prototipos válidos!
- main() debe retornar un entero
- Valor es usado por el sistema operativo
- 0, o constante EXIT_SUCCESS
- Constante EXIT_FAILURE
- Incluir <stdlib.h>
- Valor es usado por el sistema operativo
Argumentos a main()
- Argumentos de línea de comando del programa
- int argc: número de argumentos del programa
- char *argv[]: puntero a un vector de cadenas de caracteres que contienen los argumentos
Guía de ejercicios
PROGRAMACION 1 - Funciones en C
By Miguel Cantillana
PROGRAMACION 1 - Funciones en C
Clase 5
- 345