Funciones de tipos de datos

Las funciones son una parte del codigo que realizan una tarea especifica, una función está asociada con un identificador o nombre que se utiliza para referirse a ella desde el resto del programa, las funciones permiten modularizar el código, lo que facilita su mantenimiento, reutilización y comprensión.

Toda función en el lenguaje C debe estar declarada mediante su prototipo, definida mediante el código de la función e invocada desde la función principal o desde otra función.

Declaracion de una Función

Declarar una funcion consiste en definir cual va ser su nombre, qué tipos de datos tiene como entrada (argumentos) y que tipo de dato devuelve.

Toda funcion bien definida debe recibir uno o varios valores a partir de los cuales calculará el valor de salida, un claro ejemplo comunmente usado son las funciones matematicas como potencia ya que son funciones en la vida real aunque desde prespectiva de programacion son lo mismo, un ejemplo seria siguiente.

      • 4^4 = 256

Este devuelve un resultado con base elevada al exponente, por lo tanto para declarar una función basta con darle un nombre y declarar los tipos de dato y darle un valor de retorno como se muestra a continuacion.

      • tipo_de_retorno nombre_de_la_funcion(tipo_parametro1 parametro1, tipo_parametro2 parametro2, …) ;

Normalmente es lo que se llama prototipo de una funcion y por ende es equivalente a su declaracion, a continuacion mostraremos ejemplos de como declarar una función.

                                             

Llamada a una Función

Las funciones son llamadas o invocadas desde otras funciones, normalmente se realiza para ejecutar un codigo definido dentro de la funcion.

La sintaxis de una invocación típica de una función en C es:

Variable=nombre_funcion (val_arg1, val_arg2,… ,val_argn);

Donde Variable ha de ser ( con algunos matices que veremos mas adelante) del tipo que devuelve la función y los elementos val_arg1 serán variables o constantes de los tipos de los argumentos en el mismo numero y orden. Mostraremos un ejemplo de como se hace el llamado de una función.

      • Pot = potencia (3.4,2); // pot de tipo float

En una invocacion el nombre de la función es un valor del tipo devuelto y por lo tanto, tambien puede intervenir en cualquier tipo de expresiones de acuerdo con el tipo devuelto. Por ende mostraremos a continuación como se declara y hace el llamado de una función.

                       

Definir una Función

La definición de una función es el conjunto de sentencias o instrucciones necesarias para que la función pueda realizar su tarea cuando sea llamada, En otras palabras es el código correspondiente a la función.

A continuacion mostramos un codigo sobre como se define una función.

                                         

Dentro de la funcion se debe declarar la funcion y establecer una cabecera que en este caso es “suma” seguido de eso los argumentos formales que son enteros a y b para que posteriormente se pueda retornar dichos parametros, cabe recalcar que es importante repetir que los parametros formales en la cabecera de la función son variables locales a la funcion, es decir, solo cobran sentido dentro del codigo de definicion.

Nota: si una función no retorna ningun valor su tipo de retorno sera void.

Las funciones con tipos de datos se refieren a las funciones que tienen un tipo de retorno especificado, esto quiere decir que la función devuelve un valor de tipo de dato particular despues de realizar operaciones.

Importancia

 Las funciones son fundamentales y tienen una gran importancia en el desarrollo de software estructurado y modular.  En este caso las funciones en el lenguaje c son muy importantes por varias razones clave.

      • Aprendes la Modularización de codigo
      • Aprendes sobre la abstracción y encapsulamiento
      • Mejoras  la legibilidad y mantenibilidad del programa
      • Promueve buenas Prácticas de programacion y enseñanzas
      • Mejorá tu Flexibilidad y escalabilidad al momento de realizar el codigo.

Antes de continuar con la informacion mencionaremos la funcion mas importante que siempre estará presente, la función main.

Funcion main

Todo programa C debe tener una funcion principal main, aunque en algunos distintos casos puede ser la funcion Void (que veremos mas adelante) 

Aunque la funcion main es el punto de entrada del programa, desde donde comienza la ejecución del mismo. Todas las instrucciones que forman parte del programa se ejecutan en algún momento después de la llamada a la función 

                                                                                                                                 

Funcion void

Una función tipo void es la que no devuelve ningún valor al finalizar su ejecución. Estas funciones se utilizan cuando se necesita realizar ciertas operaciones sin necesidad de devolver un resultado explícito. 

Caracteristicas de las funciones tipo void

      • No tienen tipo de retorno
      • Pueden realizar acciones o efectos secundarios: Tales como imprimir pantalla, modificar variables globales etc.
      • Pueden tener parámetros: ya que permiten pasar información a la función para que realice ciertas operaciones.

Las sintaxis de la funcion void es muy sencilla la cual es la que te presentamos a continuacion.

                     

Este es un codigo simple en donde se trata de imprimir un mensaje de bienvenida declarando una funcion void con el mensaje que nosotros queramos en este caso del de bienvenida para que al momento de introducirlo al main no va tener la necesidad de devolver algún valor.

Las funciones void son utiles para encapsular acciones o procedimientos que no requeren una salida explicita, pero contribuyen a la estructura y organización del codigo.

sentencia return

  • La sentencia return se utiliza dentro de una función para devolver un valor al punto de llamada o invocación de la función. Cuando una función termina su ejecución y alcanza una instrucción return, el valor especificado después de return es devuelto como resultado de la función.

La sintaxis general de la sentencia return es:

      • return valor_de_retorno;

En el ejemplo de alado la función sumar recibe 2 enteros a y b, por ende calcula la suma y luego utiliza el return resultado para devolder ese valor al punto de la llamada ( osea la función main). Por logica la variable suma en main recibe el valor devuelto por  realizar la operacion aritmetica y posteriormente lo imprime en la pantalla.

En dicho ejemplo se muestra como se define y se utiliza una funcion en c con sus parametros, ya que realiza una operación específica y devuelve un valor como resultado. En este caso la operacion es una suma  de 2 variables que son declaradas y almacenadas en una variable llamada resultado_suma para solo gacerle el llamado y así solo agregarla al mensaje del printf.

al final el resultado de la suma es 30.

Funciones que reciben y devuelven valores

Las funciones que reciben y devuelven valores son fundamentales para realizar operaciones y cálculos en un programa. Estas funciones aceptan uno o más parámetros como entrada, realizan ciertas operaciones en base a estos parámetros, y luego devuelven un resultado utilizando la declaración return

En la sintaxis de una función que reciba y devuelva valores seria la siguiente.

      • tipo_de_dato_de_retorno nombre_de_la_funcion(tipo_parametro1 param1, tipo_parametro2 param2){
      • // cuerpo de la funcion
      • return valor_de_retorno
      • }

Funciones de entrada y salida

Función Print

La función printf permite escribir una lista de datos de acuerdo con un formato establecido. Esta acepta diferentes tipos de argumentos: carácter, valor numérico entero o real, o una cadena de caracteres, y los escribe según un formato especificado sobre la salida estándar. 

La forma de escribir el printf en C es la siguiente

      • printf (“formato”, arg1, arg2, …, argn);

Los  arg1 pueden ser constantes, variables o expresiones en general, y formato es  una serie de caracteres en la cual se pueden encontrar dos clases de datos: un mensaje o texto a escribir literalmente, y los símbolos especificadores del formato con el cual se van a escribir las variables dadas como argumentos.  Mostraremos un ejemplo

                                           

indicadores o especificadores

Dentro de los mensajes del print tambien pueden ir especificaciones de formato, los cuales nos permiten imprimir diferentes tipos de numeros que realizemos en la operacion que llamamos con el print. Dichos especificadores de formato deben ir precedidos del caracter %. Algunos de ellos son los siguientes.

      • %c  imprime un solo caracter (char)
      • %d  imprime un entero decimal ( int)
      • %ld  imprime un numero entero largo (long)
      • %f   imprime un numero real  (float)
      • 1f    imprime un numero real  (double)
      • %s  imprime una cadena de caracteres
      • %x o %X  imprime un entero Hexadecimal
      • %o  imprime un entero sin signo decimal
      • %e o %E  imprime un numero de punto flotante con notacion cientifica
      • %p  imprime un puntero

                             

Ancho

El ancho dentro de la función print se refiere al numero minimo de caracteres que se deben imprimir para un valor especifico.Especificar el ancho en el Printf permite controlar el formato de salida y puede ser util para alinear los valores de salida.

Cuando se utiliza el ancho en printf(), se especifica como un número entero precedido por el símbolo de porcentaje %. Un ejemplo sensillo es:

%5d : Este indica que el entero debe imprimirse en un campo de ancho de 5 caracteres. Si el valor tiene menos de 5 caracteres, se agregan espacios en blanco a la izquierda para alcanzar el ancho especificado. 

En el codigo se veria de la siguiente manera: 

                                                                                                

Presicion

La precision del printf se refiere al numero de digitos que se deben imrpimir despues del punto decimal para valores de punto flotante, o de igual forma podria decirse que es el numero maximo de caracteres que deben imprimirse para una cadena de caracteres.

La precision se  especifica con un punto (.) seguido de un número entero. Tomemos el siguiente ejemplo:

 %0.2f : este indica que se deben imprimir dos dígitos después del punto decimal para un valor de punto flotante.

por ello en el codigo declaramos una variable tipo float llamada

        • Pireal= 3.14159265358979323846;

 

logicamente en el resultado se imprime con solo dos digitos despues del punto decimal. Dando un simple resultado de 

        • Numero con precisiOn de 2 decimales: 3.14
Tamaño

El tamaño del printf se refiere al ancho mínimo del campo en el que se imprimirá el valor. Especificar el tamaño permite controlar la cantidad mínima de caracteres que ocupará la impresión de un valor, y puede ser útil para alinear la salida.

Dentro del codigo el tamaño especifica como un numero entero precedido por el simbolo de porcentraje %. Tomemos otro ejemplo utilizando el mismo codigo de int=42

%5d : indica que el entero debe imprimirse en un campo ancho de 5 caracteres, Si el valor tiene menos de 5 caracteres, se agregaran espacios en blanco a la izquierda para alcanzar el tamaño especificado.

                 

En el ejemplo si el entero tiene menos de 5 digitos se agregarán espacios en blanco a la izquierda para alcanzar el tamaño especificado. Si entero tiene mas de 5 digitos se imprimirá sin cambiar su longitud.

En el caso de la variable entero =42  solo tiene 2 digitos, por ende la salida en la consola seria:

      • Entero con tamaño de campo de 5: 42
Codigo de ejemplo

             

             

Función Scanf

La funcion scanf permite leer valores desde la entrada estándar (teclado) y almacenarlos en las variables que se especifican como argumentos. 

Generalmente se utiliza el scanf junto con especificadores de formato para especificar el tipo de dato que se espera leer y como se deben interpretar, al igual que el printf esta utiliza indicadores los cuales suelen ser los mismos.

La sintaxis basica del scanf es:

      • scanf(“formato”, &variable);
      • En donde “formato” es una cadena de caracteres que especifica el formato que se va leer y “&variable” es la dirección de memoria donde se almacenará el valor leido.

para leer un valor n de tipo int y un valor x de tipo double. Estos valores se introducirán desde la entrada estándar separándolos por espacios. Logicamente con el scanf, le estamos pidiendo al usuario que escriba algo siempre y cuando cumpla con las condiciones de dicho scanf, ya sea entero, caracter, simbolo etc.

De igual manera utilizando el scanf se puede emplear para asignar valores a variables y utilizarlas junto a los operadores conocidos para resolver operaciones. 

A continuacion un codigo de un scanf basico donde se le pide un numero entero al usuario.

                       

Especificadores de formato.

Como es sabido para poder establecer los scanf van de la mano con los especificadores de formato que son igual de parecidos que los del printf, todo esto es para que el codigo pueda leer solo lo que esta permitido en esa linea de scanf.

      • %d: Para leer un entero decimal.
      • %f: Para leer un número de punto flotante.
      • %c: Para leer un solo carácter.
      • %s: Para leer una cadena de caracteres.
      • %lf: Para leer un número de punto flotante de doble precisión.
      • %x, %X: Para leer un entero en formato hexadecimal.
      • %o: Para leer un entero en formato octal.
      • %u: Para leer un entero sin signo decimal.
      • %p: Para leer un puntero.

Estos son los mas usados para la correcta lectura del scanf.

Modificadores

Los modificadores se utilizan para especificar cómo se debe interpretar la entrada proporcionada por el usuario. Aquí están los modificadores más comunes que se pueden usar con scanf():

      • ‘*’ El modificador asterisco, indica que el valor leido se debe ignorar y no se almacenará en ninguna varfiable, por ende es util para descartar valores de entrada no deseados.
      • & : Se utiliza para obtener la direccion de memoria de la variable donde se almacenará el valor leido. Es necesario para leer y almacenar valores correctamente.
      • “Espacios en blanco” : Se utilizan para ignorar los saltos de linea en blanco
      • Anchura: Especifica la anchura maxima de la cadena de caracteres a leer, esto es util para evitar desbordamientos en el bufer del compilador.
      • [^\n] : Se utiliza para leer una linea completa, incluidos los espacios en blanco.
Codigo de Ejemplo

Se muestra un codigo de ejemplo usando el scanf añadiendo operadores artimeticos.

    ,               

     

Otras funciones de entrada y salida

Hay varias funciones de entrada y salida en el lenguaje C.Dependiendo de el tipo de operacion es la que se va utilizar, por ello te mostramos algunos mas usadas.

          • getchar() y putchar()
          • gets() y puts()
          • fgets() y fputs()
          • fscanf() y fprintf()
          • getch() y getche()

Generalmente estas se ocupan pero de forma muy minima, ya que se estandarizó el scanf para leer datos y el printf para imprimirlo en pantalla ante cualquier codigo.

Funciona gracias a WordPress Inspiro WordPress Theme por WPZOOM