Actualizado el 21 de Marzo del 2018 (Publicado el 11 de Marzo del 2018)
1.714 visualizaciones desde el 11 de Marzo del 2018
1,3 MB
338 paginas
Creado hace 12a (06/07/2011)
UNIVERSIDAD DE M ´ALAGA
Dpt. Lenguajes y CC. Computaci´on
E.T.S.I. Inform´atica
Ingenier´ıa Inform´atica
Fundamentos de Programaci´on
con
el Lenguaje de Programaci´on
C++
Vicente Benjumea
Manuel Rold´an
6 de julio de 2011
2
Este obra est´a bajo una licencia Reconocimiento-NoComercial-CompartirIgual 3.0 Un-
ported de Creative Commons: No se permite un uso comercial de la obra original ni
de las posibles obras derivadas,
la distribuci´on de las cuales se debe hacer con una li-
cencia igual a la que regula la obra original. Para ver una copia de esta licencia, visite
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es ES o envie una carta a Creative Com-
mons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Usted es libre de:
• Copiar, distribuir y comunicar p´ublicamente la obra.
• Hacer obras derivadas.
Bajo las siguientes condiciones:
• Reconocimiento (Attribution) – Debe reconocer los cr´editos de la obra de la manera
especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene
su apoyo o apoyan el uso que hace de su obra).
• No comercial (Non commercial) – No puede utilizar esta obra para fines comerciales.
• Compartir bajo la misma licencia (Share alike) – Si altera o transforma esta obra,
o genera una obra derivada, s´olo puede distribuir la obra generada bajo una licencia
id´entica a ´esta.
Entendiendo que:
• Renuncia – Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor
• Dominio P´ublico – Cuando la obra o alguno de sus elementos se halle en el dominio
p´ublico seg´un la ley vigente aplicable, esta situaci´on no quedar´a afectada por la licencia.
• Otros derechos – Los derechos siguientes no quedan afectados por la licencia de ninguna
manera:
no se ven afectados por lo anterior.
◦ Los derechos derivados de usos leg´ıtimos u otras limitaciones reconocidas por ley
◦ Los derechos morales del autor
◦ Derechos que pueden ostentar otras personas sobre la propia obra o su uso, como
por ejemplo derechos de imagen o de privacidad.
• Aviso – Al reutilizar o distribuir la obra, tiene que dejar bien claro los t´erminos de la
licencia de esta obra.
Dpto. Lenguajes y Ciencias de la Computaci´on
Universidad de M´alaga
´Indice general
Pr´ologo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
I Programaci´on B´asica
1. Un Programa C++
2. Tipos Simples
2.1. Declaraci´on Vs. Definici´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Tipos Simples Predefinidos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Tipos Simples Enumerados
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Constantes y Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Operadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6. Conversiones Autom´aticas (Impl´ıcitas) de Tipos . . . . . . . . . . . . . . . . . . . .
2.7. Conversiones Expl´ıcitas de Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8. Tabla ASCII
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9. Algunas Consideraciones Respecto a Operaciones con N´umeros Reales . . . . . . .
3. Entrada y Salida de Datos B´asica
3.1. Salida de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Entrada de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. El “Buffer” de Entrada y el “Buffer” de Salida . . . . . . . . . . . . . . . . . . . .
3.4. Otras Operaciones de Entrada y Salida . . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Control del Estado del Flujo de Datos . . . . . . . . . . . . . . . . . . . . . . . . .
4. Estructuras de Control
4.1. Sentencia, Secuencia y Bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Declaraciones Globales y Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Sentencias de Asignaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Sentencias de Selecci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Sentencias de Iteraci´on. Bucles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Programaci´on Estructurada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5. Subprogramas. Funciones y Procedimientos
5.1. Funciones y Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Definici´on de Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Ejecuci´on de Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Paso de Par´ametros. Par´ametros por Valor y por Referencia . . . . . . . . . . . . .
5.5. Criterios de Modularizaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Subprogramas “en L´ınea” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
5.7. Declaraci´on de Subprogramas. Prototipos
5.8. Sobrecarga de Subprogramas y Operadores
. . . . . . . . . . . . . . . . . . . . . .
5.9. Par´ametros por Defecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
11
13
17
17
17
19
20
21
23
23
25
25
27
27
29
30
30
30
33
33
33
34
35
37
39
39
41
41
42
43
43
45
46
46
46
47
4
´INDICE GENERAL
5.10. Subprogramas y Flujos de Entrada y Salida . . . . . . . . . . . . . . . . . . . . . .
5.11. Pre-Condiciones y Post-Condiciones
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.12. Ejemplos
6. Tipos Compuestos
6.1. Paso de Par´ametros de Tipos Compuestos . . . . . . . . . . . . . . . . . . . . . . .
6.2. Cadenas de Caracteres en C++: el Tipo String . . . . . . . . . . . . . . . . . . . .
6.3. Registros o Estructuras
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Agregados: el Tipo Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Resoluci´on de Problemas Utilizando Tipos Compuestos
. . . . . . . . . . . . . . .
7. B´usqueda y Ordenaci´on
7.1. B´usqueda Lineal (Secuencial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. B´usqueda Binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Ordenaci´on por Intercambio (Burbuja) . . . . . . . . . . . . . . . . . . . . . . . . .
7.4. Ordenaci´on por Selecci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5. Ordenaci´on por Inserci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6. Ordenaci´on por Inserci´on Binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.7. Aplicaci´on de los Algoritmos de B´usqueda y Ordenaci´on . . . . . . . . . . . . . . .
48
48
49
51
51
52
59
62
71
77
77
78
79
80
80
81
82
8. Otros Tipos Compuestos en C
87
87
8.1. Agregados o Arrays Predefinidos
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2. Cadenas de Caracteres al Estilo-C . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
8.3. Uniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
8.4. Campos de Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
. . . . . . . . . . . . . . . 105
8.5. Resoluci´on de Problemas Utilizando Tipos Compuestos
9. Algunas Bibliotecas ´Utiles
II Programaci´on Intermedia
111
113
10.Almacenamiento en Memoria Secundaria: Ficheros
115
10.1. Flujos de Entrada y Salida Asociados a Ficheros
. . . . . . . . . . . . . . . . . . . 116
10.2. Entrada de Datos desde Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . 117
10.3. Salida de Datos a Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.4. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
. . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.5. Otros Tipos de Flujos de Ficheros
10.5.1. Ficheros Binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.5.2. Acceso Directo en Ficheros
. . . . . . . . . . . . . . . . . . . . . . . . . . . 129
10.5.3. Flujos de Entrada y Salida . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10.6. Flujos de Entrada y Salida Vinculados a Cadenas de Caracteres . . . . . . . . . . . 130
11.M´odulos y Bibliotecas
133
11.1. Interfaz e Implementaci´on del M´odulo . . . . . . . . . . . . . . . . . . . . . . . . . 133
11.2. Compilaci´on Separada y Enlazado . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.3. Espacios de Nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.4. Herramientas de Ayuda a la Gesti´on de la Compilaci´on Separada . . . . . . . . . . 141
12.Manejo de Errores. Excepciones
145
12.1. Errores de Programaci´on y Asertos . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
12.2. Situaciones An´omalas Excepcionales . . . . . . . . . . . . . . . . . . . . . . . . . . 146
12.3. Gesti´on de Errores Mediante Excepciones . . . . . . . . . . . . . . . . . . . . . . . 147
12.4. Excepciones Est´andares
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Dpto. Lenguajes y Ciencias de la Computaci´on
Universidad de M´alaga
´INDICE GENERAL
5
13.Tipos Abstractos de Datos
155
13.1. Tipos Abstractos de Datos en C++: Clases . . . . . . . . . . . . . . . . . . . . . . 156
13.1.1. Definici´on e Implementaci´on de Clases “en L´ınea” . . . . . . . . . . . . . . 156
13.1.2. Definici´on de Clases e Implementaci´on Separada . . . . . . . . . . . . . . . 159
13.2. M´etodos Definidos Autom´aticamente por el Compilador . . . . . . . . . . . . . . . 172
13.3. Requisitos de las Clases Respecto a las Excepciones . . . . . . . . . . . .
Comentarios de: Fundamentos de Programación con el Lenguaje de Programación C++ (1)