Actualizado el 21 de Marzo del 2018 (Publicado el 26 de Febrero del 2018)
934 visualizaciones desde el 26 de Febrero del 2018
1,3 MB
193 paginas
Creado hace 8a (11/03/2016)
UNIVERSIDAD DE MÁLAGA
Dpto. Lenguajes y CC. Computación
E.T.S.I. Informática
Fundamentos de Programación
con
el Lenguaje de Programación
C++
Vicente Benjumea y Manuel Roldán
11 de marzo de 2016
2
Esta obra está bajo una licencia Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional
(CC BY-NC-SA 4.0) de Creative Commons: No se permite un uso comercial de la obra ori-
ginal ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una
licencia igual a la que regula la obra original. Para ver una copia de esta licencia, visite
http://creativecommons.org/licenses/by-nc-sa/4.0/deed.es_ES o envie una carta a Crea-
tive Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Usted es libre de:
• Compartir, copiar y distribuir públicamente la obra.
• Adaptar, remezclar, transformar y crear 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
Contenido
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. Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6. Sentencias de Asignación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7. Visibilidad de los identificadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8. Conversiones Automáticas (Implícitas) de Tipos . . . . . . . . . . . . . . . . . . . .
2.9. Conversiones Explícitas de Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10. Tabla ASCII
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11. Algunas consideraciones respecto a operaciones con números reales . . . . . . . . .
3. Entrada y Salida de Datos Básica
3.1. El “Buffer” de Entrada y el “Buffer” de Salida . . . . . . . . . . . . . . . . . . . . .
3.2. Salida de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Entrada de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Control del Estado del Flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Estructuras de Control
4.1. Sentencia, Secuencia y Bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Declaraciones Globales y Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Sentencias de Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Sentencias de Iteración. Bucles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Programación Estructurada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. 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
. . . . . . . . . . . . . . . . . . . . . . . . . .
3
7
9
11
15
15
16
17
17
19
20
21
22
22
22
23
25
25
26
27
29
31
31
31
32
37
41
42
45
45
46
48
48
50
50
51
51
52
4
CONTENIDO
5.10. Ejemplo. Números primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6. Tipos Compuestos
6.3. Registros o Estructuras
6.1. Paso de Parámetros de Tipos Compuestos . . . . . . . . . . . . . . . . . . . . . . .
6.2. Cadenas de Caracteres en C++: el Tipo string . . . . . . . . . . . . . . . . . . .
6.2.1. Entrada y Salida de Cadenas de Caracteres . . . . . . . . . . . . . . . . . .
6.2.2. Operadores predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.3. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1. Operaciones con registros completos . . . . . . . . . . . . . . . . . . . . . .
6.3.2. Entrada/Salida de valores de tipo registro . . . . . . . . . . . . . . . . . . .
6.3.3. Ejemplo. Uso de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Agregados: el Tipo Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.1. Operadores predefinidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.2. Ejemplos
6.4.3. Agregados Incompletos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
6.4.4. Agregados Multidimensionales
6.5. Resolución de Problemas Utilizando Tipos Compuestos. Agenda . . . . . . . . . .
7. Búsqueda y Ordenación
7.1. Algoritmos de Búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1. Búsqueda Lineal (Secuencial) . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.2. Búsqueda Binaria
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Algoritmos de ordenación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1. Ordenación por Selección . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.2. Ordenación por Intercambio (Burbuja) . . . . . . . . . . . . . . . . . . . . .
7.2.3. Ordenación por Inserción . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Aplicación de los Algoritmos de Búsqueda y Ordenación . . . . . . . . . . . . . . .
8. Algunas Bibliotecas Útiles
53
55
55
56
56
59
61
64
65
66
66
67
69
70
72
75
78
85
85
86
88
89
89
90
90
92
97
II Programación Intermedia
101
9. Almacenamiento en Memoria Secundaria: Ficheros
103
9.1. Flujos de Entrada y Salida Asociados a Ficheros
. . . . . . . . . . . . . . . . . . . 104
9.2. Entrada de Datos desde Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . 106
9.3. Salida de Datos a Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 108
9.4. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
10.Módulos y Bibliotecas
117
10.1. Interfaz e Implementación del Módulo . . . . . . . . . . . . . . . . . . . . . . . . . 117
10.2. Compilación Separada y Enlazado . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.3. Espacios de Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
11.Tipos Abstractos de Datos
129
11.1. Tipos Abstractos de Datos en C++: Clases . . . . . . . . . . . . . . . . . . . . . . 130
11.1.1. Métodos y Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.1.2. Definición de Clases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.1.3. Utilización de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1.4. Implementación de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.1.5. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.2. Tipos Abstractos de Datos en C++: Más sobre Clases . . . . . . . . . . . . . . . . 140
11.2.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
CONTENIDO
5
12.Memoria Dinámica. Punteros
153
12.1. Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
12.2. Gestión de Memoria Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
12.3. Operaciones con Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . . . . . 156
12.4. Paso de Parámetros de Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . 158
12.5. Listas Enlazadas Lineales
. . . . . . . . . . . . . .
Comentarios de: Fundamentos de la programación con el Lenguaje de Programación C++ (0)
No hay comentarios