Vous êtes sur la page 1sur 6

Fundamentos de la Programación

Universidad de Sevilla

1ª Edición

G. Madinabeitia Luque
F.J. Fernández Jiménez
J.A. Gómez Argudo
Ingeniería Telemática
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla

VISTA PREVIA
Mostrando 6 páginas de un total de 228
VISTA PREVIA
Mostrando 6 páginas de un total de 228
Índice

1. Introducción a la Programación 1
Arquitectura Básica de los computadores 3
Introducción a los Sistemas Operativos 6
Introducción a los Lenguajes de Programación 9
2. Programación Estructurada 17
Resolución de Problemas y Algoritmos 17
Introducción al Lenguaje C 26
3. Codificación de la Información 37
3.1. Introducción 37
3.1.1. Los Sistemas Posicionales 37
3.2. Codificación de Enteros sin Signo 38
3.2.1. La aritmética binaria 38
3.2.2. Otras Bases de Numeración 38
El Sistema de Numeración Octal 38
El Sistema de Numeración Hexadecimal 39
3.2.3. El Desbordamiento en los Enteros sin Signo 41
3.3. Codificación de los Enteros con Signo 41
3.3.1. Codificación en Complemento a Dos 41
3.3.2. El Desbordamiento en los Enteros con Signo 42
3.4. Codificación de Números con Decimales 43
4. Tipos, Constantes y Variables 45
4.1. Tipos de Datos VISTA PREVIA 45
4.1.1. Los Tipos de Datos en C 45
Mostrando 6 páginas de un total de 228
4.1.2. Tipos Enteros sin Signo 45
4.1.3. Tipos Enteros con Signo 46
4.1.4. Tipos con Decimales 47
4.1.5. Tipo Lógico 47
4.1.6. Tipo Carácter 47
4.2. Constantes 48
4.2.1. Constantes enteras 48
4.2.2. Constantes en coma flotante 49
4.2.3. Constantes de carácter 49
4.2.4. Cadenas de caracteres 50
4.3. Variables 50
4.3.1. Declaración de Variables 51
4.3.2. Utilización del Valor de una Variable 52
4.3.3. Asignación de Valores a Variables 52
4.3.4. Tiempo de Vida de las Variables 52

I
II Índice

La Especificación static 53
Variables Globales 53
4.3.5. Visibilidad de las variables 53
Las Variables Estáticas 54
Las Variables Globales 54
5. Expresiones 55
5.1. Introducción 55
5.2. Operadores Aritméticos 56
5.2.1. Operaciones con valores de tipo char 56
5.3. Operadores Relacionales 57
5.3.1. Precisión de los Números con Decimales 57
5.4. Operadores Lógicos 58
5.5. Operadores de Manejo de Bits 58
5.6. Asignación 59
5.7. Asignación Compacta 60
5.8. Conversión Forzada 61
5.9. Operadores de Autoincremento y Autodecremento 62
5.9.1. Efectos secundarios de ++ y -- 63
5.10. Operador Condicional 63
5.11. Operador sizeof 63
5.12. Reglas de Prioridad 64
6. Estructuras de Control 67
6.1. Introducción 67
6.2. Estructuras Secuenciales 67
6.3. Estructuras Selectivas 68
6.3.1. Estructura Selectiva Simple: if else 68
6.3.2. Sentencias Selectivas Simples Anidadas 70
6.3.3. Estructura Selectiva Múltiple: switch 71
6.4. Estructuras Repetitivas 73
6.4.1. Sentencia while 74
Valores Extremos en la Condición 75
6.4.2. Sentencia do while 76
6.4.3. Sentencia for 76
Estructuras Repetitivas Anidadas 78
6.5. Ejemplos de Uso 79
VISTA PREVIA
6.5.1. Lectura del teclado
6.5.2. Solución de una ecuación de primer grado
79
79
7. FuncionesMostrando 6 páginas de un total de 228 81
7.1. Funciones: Introducción 81
7.1.1. La función main 82
7.2. Definición de una Función 82
7.2.1. El identificador 82
7.2.2. Los parámetros 82
7.2.3. El Cuerpo de la Función 83
7.2.4. El Tipo de la Función 83
7.3. Declaración de una Función 83
7.4. Utilización de una Función 84
7.4.1. Correspondencia de parámetros 84
7.5. Recursividad 86
7.6. Compilación Separada y Descomposición en Ficheros 87
7.6.1. Funciones y ficheros de cabecera 87
7.7. El preprocesador de C. 88
Índice III

7.7.1. La directiva include 88


7.7.2. La directiva define 89
Macros con argumentos 89
Anulación de macros 90
7.7.3. Directivas condicionales 90
7.8. Resultado final 91
8. Punteros 93
8.1. Introducción 93
8.1.1. Declaración de Punteros 93
8.1.2. El valor NULL en los Punteros 94
8.2. Operadores Específicos de Punteros 95
8.2.1. Prioridades de los Operadores de Punteros 96
8.3. Aritmética de punteros 96
8.3.1. Operaciones entre punteros y enteros 96
8.3.2. Resta de dos Punteros 97
8.3.3. Comparaciones de Punteros 97
8.4. Punteros a Punteros 98
8.5. Uso de Punteros para Devolver más de un Valor 98
9. Tablas 101
9.1. Introducción 101
9.2. Declaración de las Tablas 101
9.2.1. Inicialización de Tablas de Caracteres 102
9.3. Acceso a los Elementos de una Tabla 102
9.4. Recorrer los Elementos de una Tabla 103
9.5. Utilización de Constantes Simbólicas 103
9.6. Punteros y Tablas 104
9.6.1. Diferencias y Usos 106
9.7. Tablas como Resultado de una Función 106
9.8. Tablas Multidimensionales 107
9.8.1. Inicialización de Tablas Multidimensionales 107
9.9. Tablas de punteros 108
9.9.1. Tablas de punteros y tablas multidimensionales 108
9.10. Tablas como Parámetros de Funciones 109
9.10.1. Tablas Multidimensionales como Parámetros 110
9.10.2. Tablas de Punteros como Parámetros 111
9.10.3. Argumentos en la Línea de comandos 111
10.Tipos Agregados
VISTA PREVIA 113
10.1. Estructuras 113
Mostrando 6 páginas de un total de 228
10.1.1. Declaración de Estructuras y Variables 113
Declaración de las Estructuras 113
Declaración de Variables de Tipo Estructura 114
Declaración simultánea de Estructuras y Variables 114
10.1.2. Inicialización de Estructuras 114
10.1.3. Punteros a Estructuras 115
10.1.4. Acceso a los campos de una estructura 115
10.1.5. Estructuras como Campos de Estructuras 116
10.1.6. El Operador de Asignación en las Estructuras 117
10.1.7. Tablas de Estructuras 118
10.1.8. Estructuras como Argumentos de Funciones 119
10.1.9. Estructuras como Resultado de una Función 119
10.2. Uniones 119
10.2.1. Declaración de Uniones 119
10.2.2. Inicialización de una Unión 119
IV Índice

10.2.3. Acceso a los campos de una unión 120


10.3. Campos de bits 120
10.4. El tipo Enumerado 121
10.4.1. Declaración de Enumerados 121
10.4.2. Declaración de Variables de Tipo Enumerado 122
10.5. La Definición de Nuevos Tipos 123
10.5.1. Uso del typedef 123
11.Funciones de Biblioteca 125
11.1. Introducción 125
11.2. Reserva dinámica de memoria 125
11.2.1. Función de reserva malloc 125
11.2.2. Función de reserva calloc 126
11.2.3. Función de liberación free 126
11.2.4. La reserva dinámica y las tablas multidimensionales 127
11.3. Entrada y Salida en C. 128
11.3.1. Funciones de apertura y cierre 129
Función fopen 129
Función fclose 129
11.3.2. Funciones de entrada y salida 129
Función fgetc 129
Función fgets 129
Función fputc 130
Función fputs 130
Copia de un fichero de texto 130
11.3.3. Salida con formato: función fprintf 130
11.3.4. Entrada con formato: función fscanf 131
11.3.5. Funciones de lectura/escritura binaria 132
Lectura binaria: función fread 132
Escritura binaria: función fwrite 132
11.3.6. Funciones especiales 133
Detección de fin de fichero: función feof 133
Detección de error: función ferror 133
11.3.7. Flujos estándar: stdin, stdout y stderr 133
11.3.8. Errores frecuentes en el uso de las funciones de E/S 133
scanf no es perfecto 133
scanf y los espacios en blanco 134
scanf y fgets VISTA PREVIA
scanf y los formatos numéricos
135
136
Mostrando 6 páginas de un total de 228
Lecturas de cadenas de caracteres 136
11.4. Funciones de Cadenas de Caracteres 136
11.4.1. Funciones de copia 136
11.4.2. Funciones de encadenamiento 136
11.4.3. Funciones de comparación 136
11.4.4. Funciones de búsqueda 137
11.4.5. Otras funciones 137
12.Listas 139
12.1. Introducción 139
12.1.1. Las listas 139
12.1.2. Comparación con las tablas 140
12.1.3. Funciones para manejar una lista 141
12.2. Listas simplemente enlazadas 141
12.2.1. Definición de los elementos de una lista 141
12.2.2. Crear un nodo 141