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 ;

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>

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