Publicado el 14 de Abril del 2018
1.587 visualizaciones desde el 14 de Abril del 2018
1.000,7 KB
175 paginas
Creado hace 12a (17/05/2013)
UNIVERSIDAD DE M ÁLAGA
Dpt. Lenguajes y CC. Computación
E.T.S.I. Informática
Ingeniería Informática
Fundamentos de Programación
con
el Lenguaje de Programación
C++
Vicente Benjumea y Manuel Roldán
17 de mayo de 2013
2
Este obra está 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ón 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 Cre-
ative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Usted es libre de:
• Copiar, distribuir y comunicar públicamente la obra.
• Hacer obras derivadas.
Bajo las siguientes condiciones:
• Reconocimiento (Attribution) – Debe reconocer los créditos 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ólo puede distribuir la obra generada bajo una licencia
idéntica a ésta.
Entendiendo que:
• Renuncia – Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del
titular de los derechos de autor
• Dominio Público – Cuando la obra o alguno de sus elementos se halle en el dominio
público según la ley vigente aplicable, esta situación no quedará 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érminos de la
licencia de esta obra.
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
Índice general
Prólogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I Programación Básica
1. Un Programa C++
2. Tipos Simples
2.1. Declaración Vs. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Tipos Simples Predefinidos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Tipos Simples Enumerados
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Constantes y Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Operadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6. Conversiones Automáticas (Implícitas) de Tipos . . . . . . . . . . . . . . . . . . . .
2.7. Conversiones Explícitas de Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8. Tabla ASCII
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.9. Algunas Consideraciones Respecto a Operaciones con Números Reales . . . . . . .
3. Entrada y Salida de Datos Básica
3.1. Salida de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Entrada de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. El “Buffer” de Entrada y el “Buffer” de Salida . . . . . . . . . . . . . . . . . . . .
4. Estructuras de Control
4.1. Sentencia, Secuencia y Bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Declaraciones Globales y Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Sentencias de Asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Sentencias de Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Sentencias de Iteración. Bucles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Programación Estructurada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5. Subprogramas. Funciones y Procedimientos
5.1. Funciones y Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Definición de Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3. Ejecución de Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4. Paso de Parámetros. Parámetros por Valor y por Referencia . . . . . . . . . . . . .
5.5. Criterios de Modularización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.6. Subprogramas “en Línea” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.7. Declaración de Subprogramas. Prototipos
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.8. Sobrecarga de Subprogramas
5.9. Pre-Condiciones y Post-Condiciones
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.10. Ejemplos
3
7
9
11
15
15
15
17
18
19
20
21
22
22
25
25
26
28
29
29
29
30
31
33
35
35
37
37
38
39
39
41
41
42
42
43
44
4
6. Tipos Compuestos
ÍNDICE GENERAL
6.1. Paso de Parámetros 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ón de Problemas Utilizando Tipos Compuestos
. . . . . . . . . . . . . . .
7. Búsqueda y Ordenación
7.1. Búsqueda Lineal (Secuencial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Búsqueda Binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Ordenación por Intercambio (Burbuja) . . . . . . . . . . . . . . . . . . . . . . . . .
7.4. Ordenación por Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.5. Ordenación por Inserción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6. Aplicación de los Algoritmos de Búsqueda y Ordenación . . . . . . . . . . . . . . .
8. Algunas Bibliotecas Útiles
II Programación Intermedia
9. Almacenamiento en Memoria Secundaria: Ficheros
9.1. Flujos de Entrada y Salida Asociados a Ficheros
. . . . . . . . . . . . . . . . . . .
9.2. Entrada de Datos desde Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . .
9.3. Salida de Datos a Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4. Ejemplos
10.Módulos y Bibliotecas
10.1. Interfaz e Implementación del Módulo . . . . . . . . . . . . . . . . . . . . . . . . .
10.2. Compilación Separada y Enlazado . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3. Espacios de Nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
47
48
54
56
64
69
69
69
70
71
71
72
77
81
83
84
85
87
89
95
95
97
98
11.Tipos Abstractos de Datos
105
11.1. Tipos Abstractos de Datos en C++: Clases . . . . . . . . . . . . . . . . . . . . . . 106
11.1.1. Definición de Clases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
11.1.2. Utilización de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
11.1.3. Implementación de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11.1.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
11.2. Tipos Abstractos de Datos en C++: Más sobre Clases . . . . . . . . . . . . . . . . 116
11.2.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
12.Introducción a la Programación Genérica. Plantillas
129
12.1. Subprogramas Genéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
12.2. Tipos Abstractos de Datos Genéricos . . . . . . . . . . . . . . . . . . . . . . . . . . 132
13.Memoria Dinámica. Punteros
139
13.1. Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
13.2. Gestión de Memoria Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
13.3. Operaciones con Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . . . . . 142
13.4. Paso de Parámetros de Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . 144
13.5. Listas Enlazadas Lineales
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
13.6. Abstracción en la Gestión de Memoria Dinámica . . . . . . . . . . . . . . . . . . . 149
13.7. Tipo Abstracto de Datos Lista Enlazada Genérica . . . . . . . . . . . . . . . . . . 150
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
ÍNDICE GENERAL
5
14.Introducción a los Contenedores de la Biblioteca Estándar (STL)
157
14.1. Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
14.2. Deque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
14.3. Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
14.4. Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
14.5. Resolución de Problemas Utilizando Contenedores
. . . . . . . . . . . . . . . . . . 169
15.Bibliografía
Índice
173
173
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
6
ÍNDICE GENERAL
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
Prólogo
Este manual pretende ser u
Comentarios de: Fundamentos de Programación con el Lenguaje de Programación C++ (0)
No hay comentarios