top of page

Índice

1. Introducción al Lenguaje C. 1

1.1. ORIGEN.. 1

1.2. VENTAJAS. 1

1.3. EL C COMO LENGUAJE DE NIVEL MEDIO.. 2

1.4. EL C COMO LENGUAJE DE ALTO NIVEL. 3

1.5. EL C COMO LENGUAJE ESTRUCTURADO.. 3

1.6. ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C. 4

1.7. BIBLIOTECA DEL LENGUAJE C. 5

1.8. ENLAZADOR. 6

1.9. COMPILACIÓN SEPARADA.. 6

1.10. COMPILACIÓN DE UN PROGRAMA EN LENGUAJE C. 6

1.11. MAPA DE MEMORIA DEL LENGUAJE C. 7

1.12. PROGRAMAS LEGIBLES. 8

 

2. Tipos de Datos. 9

2.1. INTRODUCCIÓN.. 9

2.2. TIPOS DE DATOS. 9

2.2.1. Tipo char. 10

2.2.2. Tipo int. 10

2.2.3. Tipo float. 11

2.2.4. Tipo double. 12

2.2.5. Tipo void. 12

2.3. CONSTANTES. 13

2.3.1. Constantes Carácter. 14

2.3.2. Constantes Enteras. 15

2.3.3. Constantes de Punto Flotante. 16

2.3.4. Constantes Cadena. 16

2.4. IDENTIFICADORES. 17

2.5. DECLARACIÓN DE VARIABLES. 17

2.6. VARIABLES CADENAS DE CARACTERES. 20

2.7. INICIALIZACIÓN DE VARIABLES. 21

2.8. CONSTANTES SIMBÓLICAS. 21

2.9. MODIFICADORES DE ACCESO.. 22

2.9.1. El modificador const. 22

2.9.2. El modificador volatile. 23

2.10. COMENTARIOS. 23

2.11. OPERADORES. 23

2.11.1. Operador de Asignación. 24

2.11.2. Operadores Aritméticos. 25

2.11.3. Operadores Relacionales. 27

2.11.4. Operadores Lógicos. 28

2.11.5. Operadores a Nivel de Bits. 29

2.11.6. Otros operadores. 32

2.11.7. Precedencia de operadores. 36

2.12. EXPRESIONES. EVALUACIÓN DE EXPRESIONES. 37

2.13. CONVERSIONES DE TIPOS. 38

2.13.1. Automática. 39

2.13.2. Moldes (Casting). 41

PROBLEMAS PROPUESTOS. 43

 

3. Entrada/Salida por Consola. 51

3.1. INTRODUCCIÓN.. 51

3.2. ENTRADA/SALIDA POR CONSOLA CON FORMATO.. 51

3.2.1. Salida: printf(). 52

3.2.1.1. Salida con Formato. 52

3.2.1.2. Modificadores de Formato. 55

3.2.2. Entrada: scanf(). 58

3.2.2.1. Entrada con Formato. 58

3.2.2.2. Paso de Direcciones a scanf(). 64

3.2.2.3. Modificadores de Formato. 64

3.2.2.4. Eliminación de Entradas. 65

3.3. ENTRADA/SALIDA DE CARACTERES POR CONSOLA.. 66

3.3.1. Entrada. 66

3.3.2. Salida. 67

3.4. ENTRADA/SALIDA DE CADENAS DE CARACTERES POR CONSOLA.. 67

3.4.1. Entrada: gets(). 67

3.4.2. Salida: puts(). 68

PROBLEMAS PROPUESTOS. 71

 

4. Sentencias de Control 87

4.1. INTRODUCCIÓN.. 87

4.2. TIPOS DE SENTENCIAS. 87

4.3. SENTENCIAS DE CONTROL. 88

4.4. SENTENCIAS DE DECISIÓN.. 88

4.4.1. Decisión Binaria. 88

4.4.1.1. Sentencia if. 88

4.4.1.2. Sentencia if-else. 89

4.4.1.3. Sentencia else-if. 90

4.4.2. Decisión Múltiple: Sentencia switch. 93

4.5. SENTENCIAS DE REPETICIÓN.. 97

4.5.1. Sentencia while. 97

4.5.2. Sentencia for. 100

4.5.3. Sentencia do-while. 106

4.5.4. Lazos Anidados. 108

4.6. SENTENCIAS DE SALTO INCONDICIONAL. 109

4.6.1. La Sentencia return. 110

4.6.2. La Sentencia break. 110

4.6.3. La Sentencia continue. 111

4.6.4. La Sentencia goto. 112

4.6.5. La Función exit(). 113

PROBLEMAS PROPUESTOS. 115

 

5. Punteros. 131

5.1. VARIABLE PUNTERO.. 131

5.2. DECLARACIÓN DE LA VARIABLE PUNTERO.. 131

5.3. OPERADORES DE PUNTEROS. 132

5.3.1. El operador de Dirección (&). 132

5.3.2. El operador de Indirección (*). 133

5.4. OPERACIONES CON PUNTEROS. 135

5.4.1. Asignación de Punteros. 135

5.4.2. Aritmética de Punteros. 136

5.4.3. Comparación de Punteros. 138

5.5. INICIALIZACIÓN DE PUNTEROS. 138

5.6. INDIRECCIÓN MÚLTIPLE (PUNTERO A PUNTERO). 140

5.7. PROBLEMAS CON PUNTEROS. 142

PROBLEMAS PROPUESTOS. 145

 

6. Funciones. 149

6.1. INTRODUCCIÓN.. 149

6.2. TIPOS DE FUNCIONES. 150

6.3. ARGUMENTOS Y PARÁMETROS DE FUNCIONES. 151

6.3.1. Argumentos. 151

6.3.2. Parámetros Formales. 152

6.4. LLAMADA POR VALOR. 152

6.5. LLAMADA POR DIRECCIÓN.. 153

6.6. PROTOTIPOS DE FUNCIONES. 155

6.7. DEVOLUCIÓN DE UN VALOR POR LA FUNCIÓN: SENTENCIA return. 157

6.8. DEVOLUCIÓN DE UN PUNTERO POR LA FUNCIÓN.. 160

6.9. PUNTEROS A FUNCIONES. 163

6.10. FUNCIONES RECURSIVAS. 167

6.10.1. Definición. 167

6.10.2. Condiciones para crear las Funciones Recursivas. 173

6.10.3. Diferencias entre Funciones Recursivas e Iterativas. 175

6.11. LISTA DE PARÁMETROS VARIABLES. 176

6.11.1. Paso de Argumentos de Longitud Variable a Funciones. 177

6.11.2. Función vprintf(). 179

6.12. DECLARACIÓN DE PARÁMETROS DE FUNCIONES CLÁSICAS   FRENTE A LAS MODERNAS  181

6.13. BIBLIOTECAS Y ARCHIVOS. 181

PROBLEMAS PROPUESTOS. 183

 

7. Modos de almacenamiento. 201

7.1. VARIABLES AUTOMÁTICAS: auto. 202

7.2. VARIABLES EXTERNAS: extern. 203

7.3. VARIABLES ESTÁTICAS LOCALES: static. 205

7.4. VARIABLES ESTÁTICAS EXTERNAS. 207

7.5. VARIABLES REGISTRO: register. 209

7.6. EL MODO DE ALMACENAMIENTO A EMPLEARSE. 210

PROBLEMAS PROPUESTOS. 215

 

8. Arreglos. 231

8.1. ARREGLOS UNIDIMENSIONALES. 231

8.1.1. Inicialización de Arreglos. 235

8.1.2. Inicialización de Arreglos Indeterminados. 239

8.1.3. Punteros a Arreglos Unidimensionales. 240

8.1.4. Indexación de Punteros. 243

8.1.5. Paso de Arreglos Unidimensionales a Funciones. 243

8.2. ARREGLOS BIDIMENSIONALES. 250

8.2.1. Inicialización de un Arreglo Bidimensional 253

8.2.2. Inicialización de Arreglos Indeterminados Bidimensionales. 256

8.2.3. Punteros a Arreglos Bidimensionales. 256

8.2.4. Indexación de Punteros en Arreglos Bidimensionales. 259

8.2.5. Paso de Arreglos Bidimensionales a Funciones. 261

8.3. ARREGLOS DE PUNTEROS. 266

8.3.1. Paso de un Arreglo de Punteros a una Función. 267

8.4. ARREGLOS ASIGNADOS DINÁMICAMENTE. 268

8.5. ARREGLOS MULTIDIMENSIONALES. 275

PROBLEMAS PROPUESTOS. 277

 

9. Cadena de Caracteres. 303

9.1. VALORES DE CADENAS CONSTANTES. 303

9.2. DEFINICIÓN DE CADENAS DENTRO DE UN PROGRAMA.. 304

9.2.1. Cadenas Constantes Simbólicas. 304

9.2.2. Inicialización de Cadenas Implementadas con Arreglos. 305

9.2.3. Punteros de Tipo char como Cadenas. 307

9.2.4. Arreglo de Cadenas de Caracteres. 310

9.3. FUNCIONES ESTÁNDARES DE CADENAS DE CARACTERES. 319

9.4. ARGUMENTOS DE LA LÍNEA DE COMANDOS. 325

PROBLEMAS PROPUESTOS. 331

 

10. Estructuras. 345

10.1. ESTRUCTURAS. 345

10.1.1. Introducción. 345

10.1.2. Asignación de Estructuras. 349

10.1.3. Inicialización de una Estructura. 349

10.1.4. Arreglo de Estructuras. 349

10.1.5. Arreglos dentro de Estructuras. 353

10.1.6. Estructuras Anidadas. 354

10.1.7. Punteros a Estructuras. 355

10.1.8. Paso de Estructuras a Funciones. 360

10.1.8.1. Paso de Miembros de una Estructura a Funciones. 360

10.1.8.2. Paso de Estructuras Completas a Funciones. 361

10.1.8.3. Paso de la Dirección de la Estructura a Funciones. 363

10.1.8.4. Paso de un Arreglo de Estructuras a Funciones. 364

10.1.9. Nuevos formatos de datos. 370

10.2. CAMPOS DE BITS. 370

10.3. UNIONES. 377

10.4. ENUMERACIONES. 381

10.5. TIPOS DEFINIDOS POR EL USUARIO: typedef. 387

PROBLEMAS PROPUESTOS. 395

 

1.1 E/S por Archivos. 409

11.1. INTRODUCCIÓN.. 409

11.2. FLUJOS Y ARCHIVOS. 409

11.2.1. Flujos. 410

11.2.2. Archivos. 411

11.3. PUNTERO A ARCHIVO.. 412

11.4. APERTURA DE UN ARCHIVO: fopen(). 413

11.5. CIERRE DE UN ARCHIVO: ƒclose(). 414

11.6. ESCRITURA DE UN CARACTER: putc(). 415

11.7. LECTURA DE UN CARACTER: getc(). 416

11.8. FIN DE ARCHIVO: feof(). 419

11.9.   INICIALIZAR EL INDICADOR DE POSICIÓN: rewind(). 421

11.10. ESCRITURA Y LECTURA DE CADENAS: fputs() y fgets(). 421

11.11. ELIMINACIÓN DE ARCHIVOS: remove(). 423

11.12. VACIAR EL CONTENIDO DE UN FLUJO: fflush(). 425

11.13. DETERMINACIÓN DE ERRORES: ferror(). 425

11.14. FLUJO DE DATOS BINARIOS. 428

11.14.1. Lectura y Escritura: fread() y ƒwrite( ). 428

11.14.2. E/S de Acceso Directo: fseek(). 432

11.14.3. Valor del Indicador de Posición del Archivo: ftell(). 436

11.15. ESCRITURA Y LECTURA DE CUALQUIER TIPO DE DATOS:        fprintf() y fscanf()  437

11.16. CONEXIÓN ENTRE LA CONSOLA Y LA E/S DE ARCHIVOS. 441

11.16.1. Utilización de las Funciones de Archivos para Consola. 441

11.16.2. Utilización de las Funciones de Consola para Archivos. 441

PROBLEMAS PROPUESTOS. 451

 

12. El Preprocesador. 467

12.1. DIRECTIVA: #define. 467

12.2. DIRECTIVA: #error. 471

12.3. DIRECTIVA: #include. 472

12.4. DIRECTIVAS DE COMPILACIÓN CONDICIONAL. 473

12.4.1. Directivas: #if y #endif. 474

12.4.2. Directiva: #else. 474

12.4.3. Directiva: #elif. 475

12.4.4. Directivas: #ifdef e ifndef. 477

12.5. DIRECTIVA: #undef. 479

12.6. DIRECTIVA: #line. 479

12.7. DIRECTIVA: #pragma. 480

12.7.1. Directiva inline. 481

12.7.2. Directiva saveregs. 481

12.7.3. Directiva warn. 481

12.7.4. Directiva argsused. 482

12.7.5. Directiva exit. 482

12.7.6. Directiva startup. 482

12.7.7. Directiva option. 483

12.8. LOS OPERADORES DEL PREPROCESADOR # Y ##. 484

12.9. NOMBRES DE MACROS PREDEFINIDAS. 486

PROBLEMAS PROPUESTOS. 489

Apéndices. 493

A.Código ASCII para el PC. 495

B.Prototipos de las Funciones de Biblioteca del Lenguaje C más utilizados. 499

C.Índice de Programas. 517

 

Referencias Bibliográficas. 523

bottom of page