Actualizado el 15 de Noviembre del 2020 (Publicado el 27 de Febrero del 2018)
21.492 visualizaciones desde el 27 de Febrero del 2018
19,0 MB
558 paginas
Creado hace 20a (27/04/2004)
PROGRAMACI~N EN c
Metodología, algoritmos
y estructura de datos
.
.
,>'
as
'.
.
L
Ignacio Zahonero Martinez
Departamento de Lenguajes y Sistemas Informáticos e Ingeniería del Software
Facultad de Informática/Escuela Universitaria de Informática
Universidad Pontificia de Salamanca. Cumpus Madrid
MADRID BUEN,OS AIRES CARACAS -,GUATEMALA. LISBOA MÉXICO
NUEVA YORK PANAMA SAN JUAN SANTAFE DE BOGOTA SANTIAGO SA0 PA,ULO
AUCKLAND HAMBURG0 LONDRES MILAN MONTREAL NUEVA DELHI PARIS
SAN FRANCISCO SIDNEY SINGAPUR ST. LOUIS TOKIO *TORONTO
CONTENIDO
Prólogo
, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xv
PARTE I. METODOLOGíA DE LA PROGRAMACIÓN
Capítulo 1. Introducción a la ciencia de la computación y a la programación . . . . .
1.1. ¿Qué es una computadora? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
..
1.2. Organización física de una computadora (hardware) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1. Dispositivos de EntradafSalida (E/S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2. La memoria central (interna) .
. . . . . . . . .
1.2.3. La Unidad Central de Proceso (UCP) . . . . .
1.2.4. El microprocesador . . . . . . . . . . . . . . . . . . .
1.2.5. Memoria auxiliar (externa) . . . . . . . . . . . . .
1.2.6. Proceso de ejecución de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.7. Comunicaciones: módems, redes, telefonía RDSI y ADSL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.8. La computadora personal multimedia ideal para 1
1.3. Concepto de algoritmo . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1. Características de los algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. El software (los programas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5. Los lenguajes de programación
1.5.4. Lenguajes de alto nivel
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
..............................
. . . . . . . . .
1.6. El lenguaje C: historia y características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
......................
1.6.1. Ventajas de C
1.6.2. Características
1.6.3. Versiones actu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Capítulo 2. Fundamentos de programación . . . . .
2.1. Fases en la resolución de problemas .
. .
2.1.1. Análisis del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.2. Diseño del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.3. Herramientas de la programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4. Codificación de un programa . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
......................
P
2
4
4
5
6
9
10
10
12
12
13
15
16
17
19
20
20
21
22
22
23
23
23
25
25
26
26
27
28
30
31
32
33
36
V
vi
Contenido
2.1.7. Documentación y
2.2. Programación modular . . . . .
2.3. Programación estructura
2.3.1. Recursos abstractos . . . . . . . . . . .
. . . . . . . . . .
tructurada: estru
. . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . _ . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . _ . . .
. . . . . . . . . . . . . . . . .
. . . . . . _ . . . . . . . . . .
2.7. Métodos formales de verificación de programas
. . . _ . . . . . . . . . . . . .
. . . . . . . . . . .
2.6.8. Iteración y e
2.7.1. Aserciones
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
37
38
38
49
40
40
40
41
42
42
43
52
53
54
55
55
56
56
57
57
57
58
58
59
60
60
62
63
64
65
65
66
. . . . . . . _ . . . . .
. . . . . . . . . . . . .
. . . . . . . .
2.8. Factores en la calidad del software . . . .
PARTE II. FUNDAMENTOS DE PROGRAMACI~N EN c
Capítulo 3. El lenguaje C: elementos bá
. . . . . . . . . _ . . . . . .
. . . . . . . , . _ . . .
3.1. Estructura general de un programa en
3.1.1. Directivas del prepro
3.1.2. Declaraciones global
3.1.3. Función main ( ) . . .
3.1.4. Funciones definidas PO
3.1.5. Comentarios . . . . . . . . . . . . . . .
3.2, Creación de un programa . . . . . . . . . . . . . . . .
3.3. El proceso de ejecución de
3.4. Depuración de un program
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . _ . . . . . . . . . . . . . . . 82
3.4.2. Errores lógicos . . .
3.4.5. Errores en tiempo de
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
90
90
90
?
Contenido
vi¡
3.6.5. Signos de puntuación y separadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.6. Archivos de cabecera
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . . . .
. . . . . . . . . . . . . . .
3.7. Tipos de datos en C . .
3.7.1. Enteros(int) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.2. Tipos de coma flotante ( f 1 oat
3.7.3. Caracteres (char) . . . . . . . . . . . . . . . .
3.8. El tipo de dato LÓGICO . . . . . . . . . .
3.8.1. Escritura de valores lógicos
. . . . . . .
92
92
92
93
97
98
101
103
105
105
106
106
106
107
114
1 16
116
117
119
120
136
136
137
3.9. Constantes
. . . . . . . . . . . . . . .
. . . . . . . . . . . . .
es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.2. Constantes definidas (simbólicas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9.3. Constantes enumeradas . .
3.9.4. Constantes declaradas con
. . . . . . . . .
latile.. . . . .
. . . . . . . .
3.10. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.,
3.10.1. Declaracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10.2. Inicialización de variables
. . . .
3.10.3. Declaración o definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11. Duracióndeunavariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11.1. Variables locales .
. . . .
. . . . . .
3.11.2. Variables globales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.11.3. Variables dinámicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . .
. .
3.12. Entradas y salidas
. . . . . . . .
3.12.1. Salida . . .
. . . . . . . .
3.12.2. Entrada . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.12.3. Salida de cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.12.4. Entrada de cadenas de caracteres . . .
. . . . .
. . . .
3.13. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.14. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111
112
. . . . . . . 112
113
113
Capítulo 4. Operadores y expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1. Operadores y expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Operador de asignación . .
4.3. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
.
. . . .
.
.
.
. . . . .
4.3.1. Asociatividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.2. Uso de paréntesis
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Operadores de increment
n y decrementación
4.5. Operadores relacionales . . . . . . . . . . . . . . . . . . . .
4.6. Operadores lógicos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1. Evaluación en cortocircuito . . . . . .
4.6.2. Asignaciones booleatias (lógicas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
Comentarios de: Programación en C, Metodología, algoritmos y estructura de datos (0)
No hay comentarios