Tema 2: Lenguajes de Programación de Sistemas: C - SSOO

Preview:

Citation preview

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Tema 2:Lenguajes de Programación de Sistemas: C

SSOO - Curso 2005/06

E. Domínguez C. Villarrubia

Departamento de Tecnologías y Sistemas de InformaciónEscuela Superior de Informática

Universidad de Castilla - La Mancha

Noviembre de 2005

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Índice

1 Organización de las Declaraciones en la BibliotecaEstándar C

Funciones de Entrada/Salida, de Clasificación deCaracteres y de Tratamiento de CadenasFunciones MatemáticasFunciones de Utilidad General y para el Manejo de ListasVariables de ArgumentosFunciones de Fecha y HoraLímites Definidos por la Implementación

2 Entrada/Salida en modo stream

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Tema 2: Lenguajes de Programación de Sistemas: C

Sesión 7:La Biblioteca Estándar y la Entrada/Salida

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Resumen de Contenidos de la Sesión Anterior

En la sesión anterior hemos vistoDeclaración y uso de estructurasDeclaración y uso de unionesDeclaración y uso de enumeraciones

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

La Biblioteca Estándar C

Organización

La biblioteca estándar puede estar dividida en variosarchivosEl gestor de compilación del sistema de desarrolloenlazará automáticamente algunas de las funcionesnecesitadas, pero otras deberán ser enlazadas indicandoexplícitamente los archivos de biblioteca que las contienenEn el caso del sistema de desarrollo GNU, la bibliotecatiene dos partes: la general, que se enlazaautomáticamente, y la matemática m.a, que se enlaza apetición

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

La Biblioteca Estándar C

UtilizaciónEn un programa es necesario incluir un prototipo de unafunción antes de poder usarlaLas funciones de la biblioteca estándar están declaradasen archivos de cabecera preparados para su inclusión enel código fuente del programador mediante la directiva#include del preprocesadorEsos archivos de cabecera pueden ser incluidos variasveces sin problema

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

La Biblioteca Estándar C

InformaciónEn UNIX se puede acceder a la información de manual decualquier función de la biblioteca estándar (incluidos losnombres de las cabeceras necesarias) con la orden delshell

1 man 3 <nombre_de_funcion >

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones de Entrada/Salida

UtilizaciónCabecera a incluir: stdio.hFunciones para realizar E/S directa o en modo stream decaracteres o con formato y funciones de error en E/SEjemplos: printf, scanf, fopen, fclose, fgetc, fgets, fputc,ferror, feof

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones de Clasificación de Caracteres

UtilizaciónCabecera a incluir: ctype.hFunciones para determinación de clase de caracteresEjemplos: isalpha, isdigit, islower, isupper, isalnum

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones de Tratamiento de Cadenas

UtilizaciónCabecera a incluir: string.hFunciones para el tratamiento de las operaciones concadenas de caracteresEjemplos: strcpy, strncpy, strcat, strncat, strcmp, strncmp,strlen

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones Matemáticas

UtilizaciónCabecera a incluir: math.hFunciones para la realización de operaciones de cálculomatemáticoEjemplos: sin, cos, tan, asin, acos, atan, exp, log, log10,pow, sqrt, sinh, cosh, tanh

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones de Utilidad General

UtilizaciónCabecera a incluir: stdlib.hFunciones para conversión numérica, asignación yliberación de memoria y otrasEjemplos: atof, atoi, atol, malloc, free, realloc, rand, abs,abort, exit

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones para el Manejo de Listas Variables deArgumentos

UtilizaciónCabecera a incluir: stdarg.hFunciones para el manejo de listas variables deargumentosEjemplos: va_start, va_arg, va_end

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Funciones de Fecha y Hora

UtilizaciónCabecera a incluir: time.hFunciones para la manipulación de los formatos de fecha yhoraEjemplos: time, ctime, localtime, asctime

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

E/S, Caracteres y CadenasFunciones MatemáticasUtilidad General y Listas VariablesFunciones de Fecha y HoraLímites Definidos por la Implementación

Límites Definidos por la Implementación

UtilizaciónCabeceras a incluir: limits.h y float.hSe definen aquí constantes para especificar el tamaño delos enteros (en limits.h) y constantes relacionadas con laaritmética de punto flotante (en float.h)

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Entrada/Salida en modo stream

1 # inc lude < s t d i o . h># inc lude < s t d l i b . h>

3

void f i l e c o p y ( FILE ∗ , FILE ∗ ) ;5

/∗ cat : concatenacion de arch ivos ∗ /7 main ( i n t argc , char ∗argv [ ] )

{9 FILE ∗ fp ;

char ∗prog = argv [ 0 ] ; /∗ nombre de l programa11 para er ro res ∗ /

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Entrada/Salida en modo stream (cont.)

1 i f ( argc == 1) /∗ s in args ; cop ia r l a entradaestandar ∗ /

3 f i l e c o p y ( s td in , s tdou t ) ;else

5 while(−−argc > 0)i f ( ( fp = fopen (∗++ argv , "r" ) ) == NULL ) {

7 f p r i n t f ( s tde r r , "%s: no se puede abrir %s\n" ,prog , ∗argv ) ;

9 e x i t ( 1 ) ;}

11 else {f i l e c o p y ( fp , s tdou t ) ;

13 f c l o s e ( fp ) ;}

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Entrada/Salida en modo stream (cont.)

i f ( f e r r o r ( s tdou t ) ) {2 f p r i n t f ( s tde r r , "%s: error al escribir stdout\n" ,

prog ) ;4 e x i t ( 2 ) ;

}6 e x i t ( 0 ) ;

}

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

Entrada/Salida en modo stream (cont.)

1 /∗ f i l e c o p y : copia e l a rch ivo i f p a l a rch ivo ofp ∗ /

3 void f i l e c o p y ( FILE ∗ i f p , FILE ∗ofp ){

5 i n t c ;

7 while ( ( c = getc ( i f p ) ) != EOF)putc ( c , ofp ) ;

9 }

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

ResumenLecturas Recomendadas

Resumen

En esta sesión hemos vistoOrganización de la biblioteca estándar CUso de las cabeceras en los módulos fuenteEntrada/Salida en modo stream

E. Domínguez, C. Villarrubia Tema 2

Puntos Desarrollados en la Sesión AnteriorOrganización de las Declaraciones en la Biblioteca Estándar C

Entrada/Salida en modo streamResumen y Lecturas Recomendadas

ResumenLecturas Recomendadas

Lecturas Recomendadas

Lecturas recomendadasB. W. Kernighan, D. M. Ritchie. El Lenguaje deProgramación C. 2a ed. Prentice Hall. 1991. Capítulo 7.B. W. Kernighan, D. M. Ritchie. El Lenguaje deProgramación C. 2a ed. Prentice Hall. 1991. Apéndice B.

E. Domínguez, C. Villarrubia Tema 2