Actualizado el 5 de Enero del 2021 (Publicado el 15 de Abril del 2018)
4.568 visualizaciones desde el 15 de Abril del 2018
1,3 MB
195 paginas
Creado hace 7a (23/10/2017)
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
23 de octubre de 2017
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
6. Tipos Compuestos
6.3. Registros o Estructuras
55
55
6.1. Paso de Parámetros de Tipos Compuestos . . . . . . . . . . . . . . . . . . . . . . .
56
6.2. Cadenas de Caracteres en C++: el Tipo string . . . . . . . . . . . . . . . . . . .
56
6.2.1. Entrada y Salida de Cadenas de Caracteres . . . . . . . . . . . . . . . . . .
59
6.2.2. Operaciones predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
6.2.3. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
6.3.1. Operaciones con registros completos . . . . . . . . . . . . . . . . . . . . . .
66
6.3.2. Entrada/Salida de valores de tipo registro . . . . . . . . . . . . . . . . . . .
66
6.3.3. Ejemplo. Uso de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
6.4. Agregados: el Tipo Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
6.4.1. Operaciones predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.2. Ejemplos
71
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4.3. Listas o Secuencias con Número Variable de Elementos. Agregados Incompletos 73
75
6.4.4. Agregados Multidimensionales
78
. . . . . . . . . . . . . . . . . . . . . . . . .
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
II Programación Intermedia
85
85
86
88
89
89
90
90
92
97
101
9. Almacenamiento en Memoria Secundaria: Ficheros
103
9.1. Flujos de Entrada y Salida Asociados a Ficheros
. . . . . . . . . . . . . . . . . . . 105
9.2. Entrada de Datos desde Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . 106
9.3. Salida de Datos a Ficheros de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.4. Ejemplos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
10.Módulos y Bibliotecas
119
10.1. Interfaz e Implementación del Módulo . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.2. Compilación Separada y Enlazado . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.3. Espacios de Nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
11.Tipos Abstractos de Datos
131
11.1. Tipos Abstractos de Datos en C++: Clases . . . . . . . . . . . . . . . . . . . . . . 132
11.1.1. Métodos y Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1.2. Definición de Clases
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.1.3. Utilización de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
11.1.4. Implementación de Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.1.5. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.2. Tipos Abstractos de Datos en C++: Más sobre Clases . . . . . . . . . . . . . . . . 142
11.2.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Dpto. Lenguajes y Ciencias de la Computación
Universidad de Málaga
CONTENIDO
5
12.Memoria Dinámica. Punteros
155
12.1. Punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
12.2. Gestión de Memoria Dinámica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
12.3. Operaciones con Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . . . . . 158
12.4. Paso de Parámetros de Variables de Tipo Puntero . . . . . . . . . . . . . . . . . . 160
12.5. Listas Enlazadas Lineales
. . . . . . . . . . . . . .
Comentarios de: Fundamentos de Programación con el Lenguaje de Programación C++ (0)
No hay comentarios