Tipos de funciones en C
- De biblioteca: Son rutinas preescritas que realizan operaciones o cálculos que se usan comúnmente.
- Definidas por el programador: Son las que el programador crea en sus programas para realizar sus propias tareas y que podrán formar parte también de módulos o bibliotecas de funciones.
Funciones en C
Una función en C es un segmento independiente de código fuente diseñado para realizar una tarea específica y bien definida. Es un subprograma que proporciona un valor o resultado según sean sus argumentos (parámetros) de entrada.
Paso de vectores numéricos
Los argumentos array se pasan de forma diferente que los elementos con un único valor. Si se especifica el nombre de un array como argumento real, no se hace una copia para la función de los elementos del array.
Paso de cadenas de caracteres
Como las cadenas de caracteres son vectores de caracteres, se pueden pasar cadenas de caracteres entre funciones pasando únicamente un puntero al primer elemento de la cadena.
Funciones y estructuras
La mayoría de las nuevas versiones de C (ANSI) permiten que una estructura completa sea transferida directamente a una función como argumento y devuelta directamente mediante la instrucción return (los arrays no se pueden devolver mediante la instrucción return).
Recursividad
Diremos que un programa hace uso de la recursividad cuando contenga una función que se llama a sí misma. Un programa que tenga una función recursiva trabaja de forma similar a uno que contenga un bucle.
Pila en tiempo de ejecución
La recursividad se implementa mediante uso de una pila en tiempo de ejecución. La pila es una estructura de datos especial utilizada para almacenar las variables y los valores de los parámetros para cada función en un programa.
Macros en C
El preprocesador de C
El preprocesador que incluye todo compilador de C es una potente y flexible herramienta que nos ofrece varias posibilidades como la inclusión de ficheros y la definición de constantes, entre otras.
Archivos Cabecera
También se denominan header file, o include file (o fichero de inclusión). Son archivos, normalmente en forma de código fuente, que el compilador incluye de forma automática al procesar algún otro archivo fuente.
División del programa en varios archivos
Al programar en C lo habitual es dividir el programa en varios archivos diferentes y estructurar el programa en módulos. Por tanto para un programa tendremos:
- El archivo principal (.c), que contiene la función main.
- Archivos cabecera (.h), que contienen los prototipos de las funciones.
- Librerías (.c), que contienen las funciones.
Tipos de Almacenamiento
Se refiere a la permanencia de la variable en el programa, es decir el tiempo que la variable está activa o vida de la variable. El tiempo de vida se refiere al intervalo de tiempo que transcurre desde que se crea la variable hasta que se destruye. Los tipos de almacenamiento son auto, static, register y extern.
Ámbito de una Variable
El ámbito de una variable define la visibilidad de la misma, es decir, desde dónde se puede acceder a dicha variable. En cuanto al ámbito, las variables pueden ser locales o globales.
Programación Modular
La programación modular hace referencia a la división de un programa en partes más manejables llamados segmentos o módulos. Hasta ahora, los programas que hemos construido constaban de un solo bloque de código. Este bloque estaba formado por la función main(). Pero utilizar un solo bloque de código puede suponer ciertas desventajas:
- El programa se puede volver largo y complejo.
- El número de errores puede ser considerable debido al tamaño del programa.
- El programa debe ser realizado por una sola persona.
Para solucionar esto lo que se hace es dividir el programa en partes lo más independientes posibles.
Diseño descendente
Un buen diseñador será capaz de identificar qué módulos principales componen un programa a partir de los requisitos que deba cumplir dicho programa. Una vez identificados los módulos será necesario descomponer cada módulo en sus correspondientes funciones y procedimientos principales.
Ventajas de la programación modular:
- El coste de resolver varios problemas de forma aislada es con frecuencia menor que el de abordar el problema global.
- Facilita el trabajo simultáneo de distintos grupos de programadores.
- Posibilita en mayor grado la reutilización del código en futuras aplicaciones así como el mantenimiento.
Entrada y Salida por Flujo
Es como se denomina a la E/S secuencial.
Flujo de datos:
Conjunto de bytes que viajan en serie (secuencialmente) desde el dispositivo de almacenamiento a la memoria del ordenador o viceversa, a través de un conducto o canal.
Stream (variable de tipo flujo):
Representa el conducto con el dispositivo de E/S del que queremos obtener o enviar datos. Es el canal a través del cual fluyen los datos. Técnicamente, un stream es el enlace lógico utilizado en el programa para leer o escribir datos desde y hacia los dispositivos. También es la asociación de la memoria (buffer) con el dispositivo-fichero físico.
Buffer:
Es un lugar de almacenamiento temporal de datos o memoria intermedia. Se almacenan en ella los octetos leídos del archivo o escritos en él. Así, cuando se lee un archivo del disco, se almacena en el buffer una porción de datos de tamaño fijo (un bloque del disco).
Tipo de datos FILE *
FILE es una abstracción usada en C para trabajar con un fichero. La variable flujo se declara de tipo FILE *. La variable flujo será entonces un puntero a un fichero (o puntero a una estructura que contiene una serie de campos con información del fichero).
Calificadores de apertura de archivos en C
Calificador | Significado |
---|---|
«a» | Abierto para añadir datos. Los datos nuevos se añaden al final del archivo o se crea un archivo nuevo (si no existe). |
«r» | Abierto para lectura. El archivo debe existir. |
«w» | Abierto para escritura. Los datos son escritos desde el principio (borra el contenido que haya en el archivo) o se crea un nuevo archivo (si no existe). |
«a+» | Abierto para lectura y añadir datos. Si el archivo no existe se crea. |
«r+» | Abierto para lectura y escritura. El archivo debe existir. |
«w+» | Abierto para lectura y escritura. Se escribe desde el principio del archivo. Si existe el archivo lo borra, si no existe lo crea. |