lunes 18 de mayo de 2009

CURSO FUNCIONES EN C. FUNCIONES DE BIBLIOTECA.

C ofrece un conjunto de funciones estándar que dan soporte a las operaciones que se realizan con más frecuencia. Estas funciones están agrupadas en bibliotecas. Para utilizar cualquiera de las funciones que forman parte de C, solo hace falta realizar una llamada a esa función.
Las funciones que forman parte de la biblioteca estándar de C, funciones estándar o predefinidas, están divididas en grupos. Todas las funciones que pertenecen a un mismo grupo se definen en el mismo fichero de cabecera.
Cuando deseamos utilizar cualquiera de las funciones estandar de C, primero debemos usar la directiva de precompilación #include para incluir los ficheros cabecera en nuestro programa. Por otra parte, antes de utilizar una función, primero debemos conocer las características de dicha función, es decir, el número y tipo de datos de sus argumentos y el tipo de valor que devuelve. Esta información es proporcionada por los prototipos de función.
Los grupos de funciones estándar más comunes son:
- entrada/ salida estándar.
- matemáticas.
- de conversión.
- diagnóstico.
- de manipulación de memoria.
- control de procesos.
- ordenación.
- directorios.
- fecha y hora.
- búsqueda.
- manipulación de cadenas.
- gráficos.
Podemos incluir tantos ficheros de cabecera como nos haga falta, incluyendo los ficheros de cabecera que hemos creado y donde hemos definido nuestras funciones.

miércoles 13 de mayo de 2009

CURSO FUNCIONES EN C. RECURSIVIDAD. ( 3º PARTE)

En muchas ocasiones, la resolución de un problema mediante un afuncion recursiva resulta conceptualmente más clara que la resolución mediante una función interactiva. Tal es el caso de algunas estructuras de datos como los árboles binarios, cuyo manejo es sencillo mediante una función recursiva. Sin embargo, la función interactiva resulta mucho más compleja. Es evidente que hay tareas que se pueden resolver mediante funciones recursivas o funciones interactivas, aunque es el programador el que tiene que optar por una solución u otra.

Autor: "Fundamentos de programación" de J.M.Molina y F.Chamorro, ed.McGraw-Hill

viernes 1 de mayo de 2009

CURSO FUNCIONES EN C. RECURSIVIDAD ( 2º PARTE)

En la función, en el caso de que el argumento utilizado en la llamada sea 1, ésta devuelve 1, y en caso contrario se calcula un producto que involucra a la variable número y una nueva llamada a la función cuyo argumento es menor en una unidad (número -1).
El funcionamiento de una función recursiva se realiza almacenando las llamadas pendientes, con sus argumentos, en la pila en tiempo de ejecución.
Autor: Curso Fundamentos de programación de J.M.Molina y F.Chamorro , ed. McGraw-Hill

martes 28 de abril de 2009

CURSO FUNCIONES EN C. RECURSIVIDAD ( 1º PARTE)

Las funciones en C pueden ser recursivas, en otras palabras, pueden llamarse a si mismas directa o inidrectamente. La recursividad directa es el proceso mediante el que una función se llama a si misma desde el propio cuerpo de la función, mientras que la recursividad indirecta implica más de una función.
Un proceso recursivo tiene que tenr una condicion de finalización, ya que de lo contrario podria continuar infinitamente.
Un ejemplo típico de aplicación de la recursividad es el cálculo del factorial de un número entero.
Autor: Fundamentos de Programación de J.M.Molina y F.Chamorro. Ed. McGrill

jueves 16 de abril de 2009

CURSO FUNCIONES EN C. PASO DE ARGUMENTOS Y PUNTEROS (CUARTA PARTE)

Si a continuación asignamos un valor a la variable dato, éste se almacenaría en la dirección de memoria bffff120. En el caso de puntero, si le asignamos un contenido (la dirección de la variable dato), la dirección en memoria de la variabl e dato se almacenaría en la dirección 0012fed4. Supongamos que realizamos las sigguientes asignaciones:Negrita

dato= 99
puntero = &dato;

Debemos recordar que mediante el operador & obtenemos la dirección de una variable.

Una vez realizada la asignación anterior,disponemos de dos maneras de acceder al contenido de la variable dato. La primera forma de acceder es mediante el nombre de la variable y la segunda mediante el puntero que apunta a dicha variable. Para acceder a la variable dato mediante puntero, se utiliza el operador *.
Una utilidad del paso de argumentos por referencia se relaciona con la devolución de valores desde una función. Como ya sabemos, en C una función solo puede devolver un único valor. Sin embargo, a menudo se hace necesario que una función devuelva más de un valor, y aquí es donde podemos utilizar el paso de argumentos por referencia.
Además, la utilización del paso de argumentos por referencia nos permite ahorrar tiempo y espacio. En el caso que deseáramos pasar algo a una función cuyo tamaño sea grande, por ejemplo una estructura, seria conveniente pasarla por referencia, ya que si lo hacemos por valor, se tiene que realizar una copia de la misma y colocarla en la pila, lo que implica consumo de tiempo y espacio.
A
utor: Fundamentos de programación, de J.M.Molina y F.Chamorro, ed. McGraw-Hill.

jueves 9 de abril de 2009

CURSO FUNCIONES EN C. PASO DE ARGUMENTOS Y PUNTEROS (TERCERA PARTE)

Como se puede observar el valor de i ha cambiado puesto que la función modificar ha utilizado la dirección de memoria de esta variable en la sentencia de asignación * variable = 9. Analicemos detenidamente este ejemplo. Lo primero que tenemos que tener en cuenta es la premisa de que en C todos los argumentos se pasan por valor sigue siendo cierta. Lo que sucede es que en este caso estamos pasando el valor de la dirección de memoria de la variable i y no el valor de su contenido. Para pasar la dirección de memoria de una variable se utiliza el operador &. Al finalizar la función, el valor ded dicha dirección permanece igual y lo que se ha modificado es el contenido de esa dirección de memoria. Dentro de la función se utilizan los punteros para tabajar con las direcciones de memoria (*variable).
Dado que el paso de argumentos por referencia es común en C, conviene que en este punto ampliemos el concepto de puntero.
Consideremos las siguientes declaraciones:

int dato;
int * puntero;

La primera de las declaraciones reserva memoria para almacenar una variable de tipo entero (int) mientras que la segunda declaración reseva memoria para almacenar una dirección. A pesar de que apuna a una variable de tipo entero, lo que se va a almacenar es una dirección. Como en el fundo un puntero puede apuntar a cualquier cosa., C permite la declaración de punteros tipo void. Supongamos que el compilador reserva la dirección en hexadecimal bffff120 para la variable dato y la dirección en hexadecimal 0012fed4 para el puntero.
Autor: Fundamentos de Programación, de J.M.Molina y F.Chamorro ed.McGraw Hill

viernes 27 de marzo de 2009

CURSO FUNCIONES EN C. PASO DE ARGUMENTOS Y PUNTEROS . 2' PARTE

Como ya hemos visto, cuando se pasa un argumento por valor, realmente se pasa una copia de
éste, y si esta copia se modifica el argumento general no se ve modificado. Sin embargo, em muchas ocasiones lo que queremos es que una función cambie los valores del los argumentos que le pasamos. Para lograrlo se utiliza lo que se conoce como paso de argumentos por referencia. En estos casos, no se pasa una copia del argumento, sino el argumento mismo.
Cuando realizamos un paso de argumentos por referencia en C, realmente lo que estamos pasando son direcciones de memoria. En otras palabras, lo que le pasamos a la función son las direcciones de memoria de los argumentos. Esta operación se logra mediante la utilización de punteros. De este modo,cuando llamamos a una función, lo que realmente le pasamos son punteros a los argumentos que deseamos modificar.

Autor:" Fundamentos de programación" de autor J.M.Molina y F.Chamorro, Ed.McGraw Hill.