Está en la página 1de 62

Fundamentos de

Programación
Tema 4
Comenzando a programar

Administración de Sistemas Informáticos 17/10/08 19:21


Contenido
 Las funciones y el diseño modular
 Estructura de una función
 Argumentos de funciones (paso por Valor)
 La instrucción return
 Punteros
 Argumentos de funciones (paso por Referencia)
 Variables Globales y Locales
 Modos de almacenamiento
 El Preprocesador
 Compilación y enlazado
 Bibliotecas
 La biblioteca de ANSI de C y las extensiones de
Borland
Administración de Sistemas Informáticos 17/10/08 19:21
1. Las funciones y el diseño
modular
 Cuando los problemas son arduos, es
aconsejable distribuir el programa en módulos
(en funciones).
 Ventajas
– Los módulos son reutilizables a lo largo del programa.
– Se puede utilizar en diferentes programas.
– Los programas modulares son más fáciles de leer, de
depurar y de mantener.
– Los nombres descriptivos clarifican la organización
del programa.
– Las funciones se pueden desarrollar y depurar por
separado.
Administración de Sistemas Informáticos 17/10/08 19:21
1. Las funciones y el diseño
modular
 Las funciones se pueden considerar como
"cajas negras", definidas exclusivamente
por la información que hay que
suministrarles (su entrada) y el producto
que devuelven (su salida).
 Podremos interesarnos sólo por el diseño
global del programa dejando para más
tarde el resolver los detalles.

Administración de Sistemas Informáticos 17/10/08 19:21


2. Estructura de una función
 Consta de dos partes principales: el
encabezamiento y el cuerpo.

 En el encabezamiento de una función se colocan:


- Las instrucciones del preprocesador
- La clase
- El tipo
- El nombre
- Los argumentos

Administración de Sistemas Informáticos 17/10/08 19:21


2. Estructura de una función
 La clase (static o extern): Informa de su accesibilidad o
visibilidad, es decir, su ámbito de actuación dentro del
programa.
 El tipo: Es el valor que retorna la función. Si la función no
retorna ningún valor se utilizará el tipo void.
 El nombre por el que se identifica a la funcion.

 Los argumentos. Se disponen unos paréntesis entre los


cuales van los posibles argumentos o parámetros formales,
separados por comas si son varios. Para cada parámetro
formal hay que especificar su tipo y su identificador. A
través de éstos la función intercambia información con
aquella desde la que ha sido llamada. Al igual que antes, se
insertará la palabra void entre los paréntesis si la función no
recibe argumentos.

Administración de Sistemas Informáticos 17/10/08 19:21


2. Estructura de una función
 El cuerpo contiene las diversas sentencias que
forman la función, así como las definiciones y/o
declaraciones de variables a emplear.
 Entre otras podremos encontrar la sentencia
return mediante la cual la función retorna
un valor.

 Las funciones usadas por main() o por cualquier


otra función hay que declararlas antes de éstas.
 Esta declaración previa de cada función se
conoce como declaración del prototipo de
función.

Administración de Sistemas Informáticos 17/10/08 19:21


2. Estructura de una función
 Cada declaración de prototipo debe coincidir con
la correspondiente definición de función, excepto
– no es necesario precisar los identificadores de los
argumentos
– detrás de los paréntesis se coloca un punto y coma
 En C++, a la hora de declarar el prototipo de una
función que no utiliza argumentos, es equivalente
colocar entre paréntesis la palabra void o no
colocar nada.

Administración de Sistemas Informáticos 17/10/08 19:21


2. Estructura de una función
 Para llamar a una función se escribe su nombre
seguido por paréntesis y un punto y coma.
 Si una función NO recibe argumentos, a la hora
de llamarla se colocan detrás del nombre los dos
paréntesis.
 Cuando el programa en su ejecución se encuentra
con una llamada a una función:
– realiza las instrucciones indicadas en ésta
– cuándo termina, regresa a la siguiente línea de la
llamada.

Administración de Sistemas Informáticos 17/10/08 19:21


3. Argumentos de funciones (paso
por valor)
 Es frecuente que cuando una función f1()
llame a otra, f2(), exista un intercambio de
información.
 A su vez, f2() podrá retornar a f1() un valor
a través de la sentencia return, pero también
puede retornar otros valores mediante los
mencionados argumentos o parámetros.
 Al definir una función se pueden colocar entre
los paréntesis unas variables, precedidas de sus
respectivos tipos, que se denominan argumentos
formales.

Administración de Sistemas Informáticos 17/10/08 19:21


3. Argumentos de funciones (paso
por valor)
 Para darle un valor al argumento formal se
utiliza, en la sentencia de llamada a la función,
un argumento efectivo o parámetro actual.
– una constante
– una variable
– una expresión
 El parámetro enviado es un valor específico
que se asigna a la variable conocida como
argumento formal.
 La variable que recibe el valor tiene su propia
dirección de memoria (paso por valor).
Administración de Sistemas Informáticos 17/10/08 19:21
3. Argumentos de funciones (paso
por valor)
 Los argumentos formales son locales a la
función que los utiliza.
 Cuando se necesita enviar más de un parámetro
se puede formar una lista (de argumentos
efectivos/argumentos formales) separándolos por
comas.
 Los argumentos efectivos y los formales, para
una determinada función, deben coincidir en:
– número
– en tipo
– en orden
Administración de Sistemas Informáticos 17/10/08 19:21
4. La instrucción return
 El valor de cualquier expresión que aparezca
a continuación de return queda asignado
como valor de retorno de la función.
 El valor devuelto puede ser asignado en el
módulo de llamada a una variable, o utilizado
como parte de una expresión.
 El tipo del valor que se retorna debe coincidir
con el que se escribe delante del nombre de la
función que debe ser idéntico al que se antepone
al prototipo.
Administración de Sistemas Informáticos 17/10/08 19:21
4. La instrucción return
 El valor de retorno puede ser una
expresión cualquiera y no precisa
paréntesis.
 Tiene el efecto adicional de finalizar la
ejecución de la función y devolver el
control a la sentencia siguiente a la de la
llamada.
– Incluso si la sentencia no es la última de la
función.

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 Un puntero contiene una dirección de
memoria donde probablemente habrá algún
dato que nos interesa.
 Esto significa que un puntero apunta o
señala a un espacio físico en memoria RAM
y puede referenciar cualquier objeto que se
encuentre en ella: variables de cualquier tipo
básico, arrays, estructuras, etc.

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 Los punteros permiten acceder a los datos de
forma indirecta, a través de su dirección, y entre
sus ventajas están:
– Hacer que una función devuelva más de un valor.
– Crear un código más compacto y eficiente ya que al
usarlos nos acercamos a la forma de trabajar de la
máquina.
– Manejar los arrays y cadenas de forma eficiente.
– Soportar el uso de estructuras dinámicas, etc.

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 El operador & (ampersand) es un operador
unario que devuelve la dirección de
memoria de su operando.
 Se le suele llamar operador de dirección.

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 Ej. Si la variable p es un puntero a entero y la variable n
un número entero, es posible realizar la asignación

p = &n;

para hacer que p apunte a n, es decir, que p contenga la


dirección de memoria donde se encuentra n

p D11FF34 n
D256789 D11FF34

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 Existen tanto constantes puntero como variables
puntero.
– &x es una constante puntero y representa la dirección
de la variable x. Es una constante ya que x no va a
cambiar de dirección durante la ejecución del
programa, y se dice &x apunta (o es un puntero) a x.
– Si una variable contiene la dirección de otra variable
(de un objeto, en general), se dice que la primera es
un puntero a la segunda.

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 Se declaran escribiendo el tipo del puntero (tipo
base del puntero) y un asterisco seguido del
nombre de la variable puntero.
tipo *nombre;
 Lo habitual es que una variable puntero apunte a
variables del mismo tipo que el tipo que se ha
declarado para ella, puesto que existen
determinadas acciones con punteros que
requieren conocer el tipo de dato al que apuntan
para calcular el tamaño de almacenamiento.
Administración de Sistemas Informáticos 17/10/08 19:21
5. Punteros
 El operador de dirección o ampersand (&) y el
operador de indirección o asterisco (*) se
anulan al aplicarlos a la vez de la forma: *(&x).
 Al declarar una variable como puntero hay que
indicar el tipo de variable a la que está apuntando
(tipo base del puntero), ya que las variables de
tipos distintos ocupan diferentes cantidades de
memoria, y existen operaciones con punteros
que requieren conocer el tamaño de
almacenamiento (véase el apéndice de este tema
ARITMÉTICA DE PUNTEROS).

Administración de Sistemas Informáticos 17/10/08 19:21


5. Punteros
 El operador de indirección * aplicado a un
puntero, da el valor almacenado en la dirección
apuntada por el mismo.

Para acceder al contenido de n basta escribir su


nombre o acceder mediante el puntero que la
apunta *p.

p D11FF34 *p
D256789 D11FF34

Administración de Sistemas Informáticos 17/10/08 19:21


6. Argumentos de funciones
(paso por referencia)
 El convenio de paso de parámetros en C es la
llamada por valor.
 Se puede crear una llamada por referencia
pasando un puntero al argumento.
 Como lo que se pasa a la función es la dirección
del argumento, se puede modificar el valor del
argumento dentro de la función.
 Los punteros se pasan a las funciones como
cualquier otro valor pero declarándolos como de
tipo puntero.
<tipo> *<nombre de variable>

Administración de Sistemas Informáticos 17/10/08 19:21


6. Argumentos de funciones
(paso por referencia)
 El operador * se utiliza para acceder a la
variable a la que apunta su operando.
 A las funciones que usan parámetros de
tipo puntero se deben llamar con la
dirección de los argumentos (PASO POR
REFERENCIA).
intercambia(&x,&y);

Administración de Sistemas Informáticos 17/10/08 19:21


6. Argumentos de funciones
(paso por referencia)
 Ejemplo:

void intercambia(int *u, int *v)


{
int aux;
aux = *u;
*u = *v;
*v = aux;
}

Administración de Sistemas Informáticos 17/10/08 19:21


7. Variables Globales y Locales
– Las variables globales son accesibles a lo largo de
todo el programa y se pueden utilizar en cualquier
parte del código.
– Se crean definiéndolas fuera de cualquier función.
– Atención: si la definición de la variable global está
por debajo de la función o en otro archivo, será
necesario declararla en la función que se quiere
emplear usando la palabra clave extern.
– Las variables globales mantendrán sus valores durante
toda la ejecución del programa.

Administración de Sistemas Informáticos 17/10/08 19:21


7. Variables Globales y Locales
– Si dentro de una función se define una
variable local con el mismo nombre que una
variable global, todas las referencias a ese
nombre dentro de la función hacen referencia
a la variable local y no tienen efecto sobre la
variable global.
– El almacenamiento de las variables globales
tiene lugar en una región de memoria fija
definida para este propósito por el compilador.

Administración de Sistemas Informáticos 17/10/08 19:21


7. Variables Globales y Locales
– Se debería evitar el uso de variables globales por:
 Consumen memoria durante toda la ejecución del programa.
 Hace que las funciones sean más dependientes.

 Puede provocar errores en el programa debido a efectos


colaterales no deseados.
– Las variables locales son variables que sólo son
conocidas por las funciones que las usan. Incluso en el
caso de usar el mismo nombre de variable en distintas
funciones, el ordenador es capaz de distinguirlas
puesto que tienen un ámbito distinto y por tanto, a
todos los efectos, son diferentes.

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 Cada variable tiene un tipo, un identificador, un
valor y un modo de almacenamiento, que
puede ser : extern, auto, static o register.
 El modo de almacenamiento de una variable
queda establecido por el lugar donde se define y
por la palabra clave empleada, y determina:
1. Las funciones en las que dicha variable es accesible
(Ámbito).
2. Cuánto tiempo va a persistir una variable en
memoria (Tiempo de vida).

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 auto
- Todas las variables declaradas en una función son, por
defecto, automáticas.
- Opcionalmente, se puede utilizar la palabra auto para
declararlas.
- Los argumentos formales son necesariamente variables
automáticas.
- Las variables automáticas tienen alcance local, o sea,
sólo son conocidas en la función donde se han definido.
- Por ello, está permitido emplear los mismos
identificadores para variables diferentes en distintas
funciones.
Administración de Sistemas Informáticos 17/10/08 19:21
Ejemplo de auto
#include <stdio.h>

void main(void)
{
auto int a=3; /* Es lo mismo que int a, puesto
que es local*/
printf("%d",a);
getchar();
}

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 extern
– Cuando una variable se define fuera de una función se
dice que es externa. Dicha variable externa puede ser
declarada dentro de la función que la emplea
utilizando la palabra clave extern: esta palabra clave
informa al ordenador que debe buscar la definición de
la variable fuera de la función.
– Las variables externas tienen alcance global y
permanecen en memoria durante toda la ejecución del
programa, ya que al no pertenecer a ninguna función
en concreto no pueden eliminarse al acabar ninguna
de ellas.

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 extern
- Se puede omitir por completo el grupo de declaraciones
extern si las definiciones originales aparecen en el
mismo fichero y antes de la función que las utiliza.
- Cuando se omite la palabra clave extern en una
variable de una función, y su nombre coincide con el de
una variable externa, se crea una nueva variable distinta y
automática con el mismo nombre.
- Conviene ponerle "auto" para especificar expresamente
que se ha evitado una definición de variable externa.

Administración de Sistemas Informáticos 17/10/08 19:21


Ejemplo de extern
#include <stdio.h>
int a=34;
void main(void)
{
extern int b; /* Se dice que la variable b es externa, pero
que está en otro lugar del fichero fuente */
b=56;
printf("a=%d, b=%d",a,b); /* Puede usarse a sin indicar
que es externa porque su definición está escrita antes que
la función que la usa */
getchar();
}
int b;

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 static
– Son variables permanentes dentro de su propia
función o archivo.
– No se pueden referenciar fuera de su función o
archivo, pero mantienen sus valores entre llamadas.
– Tienen alcance local a la función donde se definen.
– Se inicializan una sola vez, cuando se compila el
programa.
– Se induce al compilador a reservar memoria
permanente para almacenarla de la misma forma que
se hace para una variable global.

Administración de Sistemas Informáticos 17/10/08 19:21


Ejemplo de static
#include <stdio.h>
int f1(void)
{
static int n=0;
n++;
return n;
}
void main(void)
{
int a;
a=f1();
printf("a=%d\n",a);
a=f1();
printf("a=%d\n",a);
getchar();
}

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 register
– Originariamente, sólo se aplicaba a variables de tipo
int y char. Sin embargo, el estándar ANSI de C ha
ampliado su ámbito.
– register solicita al compilador que almacene la
variable de modo que permita el tiempo de acceso
más rápido posible.
 Para enteros y caracteres, normalmente, esto significa en el
registro de la CPU en vez de en memoria, donde se
almacenan las variables normales.
 Para otros tipos de variables, el compilador puede utilizar
cualquier otro que signifique disminuir su tiempo de acceso.
 De hecho, también puede ignorar por completo la solicitud.

Administración de Sistemas Informáticos 17/10/08 19:21


8. Modos de almacenamiento
 register
– En C++, se puede aplicar a las variables locales y a
los parámetros formales de una función pero no a las
variables globales.
– Debido a que una variable register puede estar
almacenada en un registro de la CPU, no se puede
obtener la dirección de una variable register (esta
restricción sólo se aplica a C, y no a C++).
– En general, las operaciones se realizan mucho más
rápido que sobre variables almacenadas en memoria
principal pues no requieren acceso a memoria.
 Esto hace que estas variables sean ideales para el control de
bucles.
Administración de Sistemas Informáticos 17/10/08 19:21
9. El Preprocesador
 El código de un programa C (o C++)
puede incluir instrucciones para el
compilador.
 Las directivas del preprocesador
comienzan con un signo # y deben
encontrarse en una sola línea.
 #include, #define, #if, #endif#, #pragma,
… son algunas de las directivas que
podemos encontrar en un programa C.

Administración de Sistemas Informáticos 17/10/08 19:21


9. El Preprocesador
 #define
– Especifica un identificador y una secuencia de
caracteres que se sustituirá por el identificador.
– El identificador se llama nombre de macro y el
proceso de sustitución se llama sustitución de macro.

– Ejemplos

 #define EURO 166.386


 #define CUADRADO(x) x*x

Administración de Sistemas Informáticos 17/10/08 19:21


9. El Preprocesador
 #define
– El formato general de la directiva es:

#define nombre_macro secuencia_caracteres


 Obsérvese que no aparece un punto y coma.

 Puede existir cualquier número de espacios entre el


identificador y la secuencia de caracteres, pero una vez que
ésta comienza, sólo puede terminar con un retorno de carro.

– La sustitución de macro es simplemente el reemplazo


de un identificador, por su cadena asociada.

Administración de Sistemas Informáticos 17/10/08 19:21


9. El Preprocesador
 #define
– Si la cadena supera la longitud de una línea, se puede
continuar en la siguiente línea colocando una barra
invertida al final de la línea.
– Es una práctica común entre los programadores de C
utilizar letras mayúsculas para los identificadores
definidos.
– También, es mejor poner todos los #define al
principio del archivo o, tal vez, en un archivo
separado, en lugar de distribuirlos a lo largo del
programa.

Administración de Sistemas Informáticos 17/10/08 19:21


9. El Preprocesador
 #include
– Indica al compilador que incluya el archivo fuente en
el que aparece dicha directiva
– El nombre del archivo fuente adicional se debe
encerrar entre comillas dobles o los símbolos < y >.
 Si se especifican nombres con camino explícito sólo se
buscarán los archivos incluidos en estos directorios.
 Si el nombre del archivo se encierra entre comillas, primero
se busca en el directorio de trabajo actual. Si el archivo no se
encuentra, se busca en el directorio estándar.
 Si se encierra entre los símbolos < y >, se busca el archivo en
los directorios estándares. En ningún momento se busca en el
directorio actual de trabajo.
Administración de Sistemas Informáticos 17/10/08 19:21
10. Compilación y enlazado
 Biblioteca y enlace
– La mayoría de los programas incluyen llamadas a
varias funciones que se encuentran en la biblioteca
estándar de C.
– El lenguaje C define una biblioteca estándar que
proporciona funciones que llevan a cabo las tareas
necesarias más comunes.
– Cuando se llama a una función que no forma parte del
programa, el compilador «recuerda» su nombre.
Posteriormente, el enlazador combina el código
escrito con el código objeto que se encuentra
actualmente en la biblioteca estándar.
Administración de Sistemas Informáticos 17/10/08 19:21
10. Compilación y enlazado
 Compilación separada.
– El C permite dividir un programa en varios archivos y
compilarlos por separado.
– Una vez compilados todos los archivos, estos se
enlazan entre sí, junto con las rutinas de la biblioteca,
para generar el código objeto completo del programa.
– Ventajas
 Una modificación que se realice en el código de uno de los
archivos no implica volver a compilar el programa completo
sino únicamente el módulo afectado.
 Se ahorra tiempo de compilación.

Administración de Sistemas Informáticos 17/10/08 19:21


10. Compilación y enlazado
 Mapa de memoria
– Un programa compilado en C crea y utiliza cuatro
regiones de memoria:
 La zona de memoria que contiene el código del programa.
 La zona donde se almacenan las variables globales y
estáticas.
 La zona de memoria dinámica (heap o montículo) que es la
región de memoria libre que puede utilizar el programa
mediante las funciones de asignación dinámica de C. Crece
hacia las direcciones altas de memoria.
 La pila (stack) que se utiliza para gran cantidad de tareas:

– Mantiene las direcciones de retorno de las funciones, los


argumentos de las funciones y las variables locales.
– Almacena el estado actual de la CPU.
– Crece desde el límite superior de la memoria del programa
hacia abajo.
Administración de Sistemas Informáticos 17/10/08 19:21
10. Compilación y enlazado
 Cómo se compila y enlaza
– En los primeros tiempos de la era informática
al compilar un programa se obtenía código
absoluto y todas las direcciones a que se hacía
referencia en el programa se fijaban en tiempo
de compilación.
– El programa sólo se podía cargar y ejecutar
exactamente en una zona de memoria: la zona
para la que se compiló.

Administración de Sistemas Informáticos 17/10/08 19:21


10. Compilación y enlazado
 Cómo se compila y enlaza
– Actualmente cuando se compilan los programas se
obtiene código reubicable:
 El enlazador será el encargado de combinar físicamente
todos los archivos objeto para generar el archivo ejecutable.
 Los archivos objeto utilizan un direccionamiento relativo.

 Cuando hay referencias externas a otros archivos, es el


enlazador el encargado de sustituir las referencias externas
por las direcciones relativas apropiadas.
 Cuando el archivo se carga en memoria para su ejecución, el
cargador convierte automáticamente las direcciones
relativas en direcciones absolutas según la posición de
memoria en la que se carga el programa.

Administración de Sistemas Informáticos 17/10/08 19:21


10. Compilación y enlazado
 Cómo se compila y enlaza

Fases de la traducción y ejecución Utilidad


Traducción del código fuente a código máquina Compilador

Montaje de un archivo ejecutable, con todos los módulos que componen el Montador o
programa completo adecuadamente enlazados enlazador

Carga del programa en memoria principal Cargador

Ejecución del programa Sistema operativo

Administración de Sistemas Informáticos 17/10/08 19:21


11. Bibliotecas
 Las bibliotecas son parecidas a los archivos
objeto salvo que no todo el código de la
biblioteca se añade al programa.
 Una biblioteca es una colección de funciones.
– Un archivo de biblioteca almacena el nombre de cada
función, el código objeto de la función y la
información de reubicación necesaria para el proceso
de enlace.
– Sólo se añaden al archivo ejecutable las funciones que
se utilizan en el programa.
– Las funciones que son facilitadas con los
compiladores de C se encuentran en una biblioteca.
Administración de Sistemas Informáticos 17/10/08 19:21
11. Bibliotecas
 Bibliotecas estáticas y dinámicas.
– En una biblioteca estática el enlazador extrae los
módulos precisos cuando enlaza, y los inserta en el
fichero que contendrá la imagen ejecutable.
– En una biblioteca dinámica el enlazador solamente
guarda en el fichero ejecutable unas referencias a las
posiciones donde están las funciones requeridas en la
biblioteca.
– Al ejecutar el programa se ejecuta el cargador en
tiempo de ejecución (run-time loader) que carga en
memoria las funciones de la biblioteca dinámica y
ejecuta así el programa completo.
Administración de Sistemas Informáticos 17/10/08 19:21
11. Bibliotecas
 Bibliotecas estáticas y dinámicas.
– Al usar bibliotecas estáticas los ficheros ejecutables
son más grandes,
 El gasto de memoria del sistema es mayor, pues para cada
programa distinto que se esté ejecutando en cierto momento
y que use cierta función, provocará que dicha función esté
repetida en memoria.
– Al usar bibliotecas dinámicas los ficheros
ejecutables son más pequeños.
 Se tarda más en cargar el programa en memoria.
 El gasto de memoria es menor.

 Los archivos deben estar siempre disponibles.

Administración de Sistemas Informáticos 17/10/08 19:21


12. Bibliotecas
 Las funciones de la biblioteca usan ampliamente
una serie de tipos y macros del preprocesador,
que se definen apropiadamente en el fichero de
cabecera adecuado.
 En estos ficheros también se declaran los
prototipos de las funciones correspondientes, y
quizá alguna variable.
 Existen varias cabeceras normalizadas; cada una
de ellas corresponde a un grupo de funciones con
un determinado campo de acción.
Administración de Sistemas Informáticos 17/10/08 19:21
11. Bibliotecas
 No se debe confundir biblioteca con cabecera.
– Una biblioteca es un archivo que contiene funciones y
objetos compilados en código máquina.
– En cambio, una cabecera suele ser un fichero de
texto con código fuente C; ahí están
fundamentalmente las declaraciones de las
funciones.
 Existen quince cabeceras normalizadas por
ANSI, y tres más que fueron añadidas en
septiembre de 1994 por ISO y tratan de la
internacionalización en más detalle que el
original ANSI/ISO de 1990.
Administración de Sistemas Informáticos 17/10/08 19:21
11. Bibliotecas
Cabeceras normalizadas
 assert.h  signal.h
 ctype. h  stdarg.h
 errno. h  wctype.h
 float . h  stddel. h
 limits.h  stdio. h
 iso646.h  stdlib.h
 locale. h  string. h
 math. h  time.h
 setjmp.h  wchar.h

Administración de Sistemas Informáticos 17/10/08 19:21


11. Bibliotecas
 Las cabeceras no tienen por qué ser ficheros de
texto fuente.
– En algunos sistemas pueden estar precompiladas, en
un formato especial para que el compilador tarde
menos en hacer su trabajo.
– En otros ni siquiera tiene que existir un fichero con
ese nombre; puede que simplemente el preprocesador
ya sepa qué es lo que tiene que hacer al recibir la
directiva include.
– Sin embargo en UNIX las cabeceras sí son ficheros
con texto, código fuente en C; y normalmente están en
el directorio /usr/include.
Administración de Sistemas Informáticos 17/10/08 19:21
11. Bibliotecas
 Todos los identificadores declarados en las
cabeceras deben considerarse reservados; esto es,
no deben redefinirse, ni usarse para otro
propósito al igual que todos los nombres de
macros o identificadores que empiecen por el
signo de subrayado (_).
 Las cabeceras pueden incluirse en cualquier
orden, incluso más de una vez, pero antes de que
se use cualquier función o macro definida en ella.
Suelen ponerse al principio del fichero.
 Use siempre la notación de ángulos para las
cabeceras estándar.
Administración de Sistemas Informáticos 17/10/08 19:21
12. La biblioteca de ANSI de C y
las extensiones de Borland.
 El comité ANSI (American National Standards
Institute) también se encargó de normalizar un
conjunto de funciones mínimo y lo más generales
y extensas posible.
 Están basadas en su mayor parte en unas que han
existido prácticamente desde que Dennis Ritchie
construyó el primer compilador, o que se han ido
añadiendo en máquinas UNIX a lo largo del
tiempo.
 Así que en 1989 el comité X3JI1 de ANSI
terminó el documento de normalización para el
lenguaje y las funciones.
Administración de Sistemas Informáticos 17/10/08 19:21
12. La biblioteca de ANSI de C y
las extensiones de Borland.
 Poco antes, otro Organismo internacional, ISO
(International Standards Organization), formó
otro Comité para lo mismo, pues veían que el de
ANSI era demasiado americano.
 Se pusieron de acuerdo y aceptaron incluir en la
biblioteca unas cuantas funciones nuevas y
modificar otras, de forma que se pudiera escribir
un programa que tuviera en cuenta las
características culturales de cada país, como los
separadores de decimales en números, o letras
formadas por más de un carácter. Aunque ISO
acabó su trabajo en 1990, éste sólo difiere del de
ANSI en la redacción.
Administración de Sistemas Informáticos 17/10/08 19:21
12. La biblioteca de ANSI de C y
las extensiones de Borland.
 El comité de ISO ha seguido trabajando y,
a propuesta de varios grupos y subcomités,
en septiembre de 1994, publicó un artículo
suplementario.
 A partir de 1995 nuevas reuniones quizá
produzcan la versión 2 del estándar ISO de
C, y quizá esto influya en modificaciones a
la biblioteca estándar.

Administración de Sistemas Informáticos 17/10/08 19:21


12. La biblioteca de ANSI de C y
las extensiones de Borland.
 Las funciones normalizadas de la biblioteca
estándar estarán presentes en un ambiente de
cómputo normal (sistema con teclado y monitor).
– Los programadores de sistemas como robots o
máquinas, así como los escritores de la propia
biblioteca pueden no tener ésta presente y usar
solamente C puro.
– También existen evidentemente muchísimas
bibliotecas especializadas en cualquier tema.
– Si un programa se puede escribir usando sólo la
biblioteca estándar, se podrá transportar a cualquier
ordenador que tenga un compilador C ANSI/ISO.
Administración de Sistemas Informáticos 17/10/08 19:21
12. La biblioteca de ANSI de C y
las extensiones de Borland.
 Borland C++ cumple con el estándar ANSI y
suministra todas las funciones definidas por éste.
 Sin embargo, para permitir una utilización y un
control de la computadora lo más completos
posible, Borland C++ contiene muchas funciones
adicionales no definidas por el estándar ANSI.
 Incluyen un conjunto completo de funciones de
pantalla y gráficos para DOS, funciones
especiales de asignación de 16 bits y funciones
de directorio.
– Siempre que no se piense transportar los programas,
se pueden utilizar estas funciones extendidas.
Administración de Sistemas Informáticos 17/10/08 19:21

También podría gustarte

  • Protocolos
    Protocolos
    Documento18 páginas
    Protocolos
    api-3813882
    100% (1)
  • TEMA4
    TEMA4
    Documento28 páginas
    TEMA4
    api-3813882
    Aún no hay calificaciones
  • Config Trijne
    Config Trijne
    Documento1 página
    Config Trijne
    api-3813882
    Aún no hay calificaciones
  • TEMA3
    TEMA3
    Documento40 páginas
    TEMA3
    api-3813882
    Aún no hay calificaciones
  • TEMA5
    TEMA5
    Documento38 páginas
    TEMA5
    api-3813882
    Aún no hay calificaciones
  • Presentacion 4
    Presentacion 4
    Documento62 páginas
    Presentacion 4
    api-3813882
    Aún no hay calificaciones
  • Funciones Paso Por Valor Ejercicios
    Funciones Paso Por Valor Ejercicios
    Documento2 páginas
    Funciones Paso Por Valor Ejercicios
    api-3813882
    100% (1)
  • TEMA1 Apendice
    TEMA1 Apendice
    Documento6 páginas
    TEMA1 Apendice
    api-3813882
    Aún no hay calificaciones
  • Funciones Conio
    Funciones Conio
    Documento2 páginas
    Funciones Conio
    api-3813882
    Aún no hay calificaciones
  • TEMA5
    TEMA5
    Documento38 páginas
    TEMA5
    api-3813882
    Aún no hay calificaciones
  • Ejemplos de Algoritmos
    Ejemplos de Algoritmos
    Documento12 páginas
    Ejemplos de Algoritmos
    api-3813882
    96% (26)
  • Presentacion 5
    Presentacion 5
    Documento65 páginas
    Presentacion 5
    api-3813882
    Aún no hay calificaciones
  • TEMA3
    TEMA3
    Documento41 páginas
    TEMA3
    api-3813882
    100% (1)
  • TEMA4
    TEMA4
    Documento28 páginas
    TEMA4
    api-3813882
    Aún no hay calificaciones
  • TEMA3
    TEMA3
    Documento41 páginas
    TEMA3
    api-3813882
    100% (1)
  • TEMA1 Apendice
    TEMA1 Apendice
    Documento6 páginas
    TEMA1 Apendice
    api-3813882
    Aún no hay calificaciones
  • Presentacion 2
    Presentacion 2
    Documento45 páginas
    Presentacion 2
    api-3813882
    Aún no hay calificaciones
  • Presentacion 6
    Presentacion 6
    Documento25 páginas
    Presentacion 6
    api-3813882
    Aún no hay calificaciones
  • Presentacion 1
    Presentacion 1
    Documento32 páginas
    Presentacion 1
    api-3813882
    Aún no hay calificaciones
  • Presentacion 3
    Presentacion 3
    Documento62 páginas
    Presentacion 3
    api-3813882
    Aún no hay calificaciones