Diseño de algoritmos y su codificación en lenguaje C PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd ii 22//1188//1111 99::4444 AAMM PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd iiii 22//1188//1111 99::4444 AAMM Diseño de algoritmos y su codificación en lenguaje C María Adriana Corona Nakamura Universidad de Guadalajara María de los Ángeles Ancona Valdez Universidad de Guadalajara Revisión técnica Miguel Orozco Malo Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Ciudad de México Carlos Villegas Quezada Universidad Iberoamericana, Ciudad de México MÉXICO • BOGOTÁ • BUENOS AIRES • CARACAS • GUATEMALA LISBOA • MADRID • NUEVA YORK • SAN JUAN • SANTIAGO • AUCKLAND LONDRES • MILÁN • MONTREAL • NUEVA DELHI • SAN FRANCISCO SÃO PAULO • SINGAPUR • ST. LOUIS • SIDNEY • TORONTO PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd iiiiii 22//1188//1111 99::4444 AAMM Director Higher Education: Miguel Ángel Toledo Castellanos Editor sponsor: Pablo E. Roig Vázquez Coordinadora editorial: Marcela I. Rocha Martínez Editora de desarrollo: Ana L. Delgado Rodríguez Supervisor de producción: Zeferino García García DISEÑO DE ALGORITMOS Y SU CODIFICACIÓN EN LENGUAJE C Prohibida la reproducción total o parcial de esta obra, por cualquier medio, sin la autorización escrita del editor. DERECHOS RESERVADOS © 2011, respecto a la primera edición por McGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V. A Subsidiary of Th e McGraw-Hill Companies, Inc. Edifi cio Punta Santa Fe Prolongación Paseo de la Reforma 1015, Torre A Piso 17, Colonia Desarrollo Santa Fe, Delegación Álvaro Obregón C.P. 01376, México, D.F. Miembro de la Cámara Nacional de la Industria Editorial Mexicana, Reg. Núm. 736 ISBN: 978-607-15-0571-2 1234567890 1098765432101 Impreso en México Printed in Mexico PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd iivv 22//1188//1111 99::4444 AAMM Contenido Prefacio ........................................................................................................................................................... xi Capítulo 1. Conceptos básicos ............................................................................................................ 1 1.1 Definición de lenguaje de programación ................................................................................ 2 1.2 Definición de algoritmo ................................................................................................................. 2 1.3 Definición de programa de computadora .............................................................................. 3 1.4 Etapas o pasos en la creación de un programa ..................................................................... 4 1.4.1 Definición del problema ................................................................................................................................ 4 1.4.2 Análisis del problema ...................................................................................................................................... 4 1.4.3 Diseño y técnicas para la formulación de un algoritmo ..................................................................... 4 1.4.4 Codificación ........................................................................................................................................................ 5 1.4.5 Prueba y depuración ....................................................................................................................................... 6 1.4.6 Documentación ................................................................................................................................................ 6 1.4.7 Mantenimiento .................................................................................................................................................. 6 Capítulo 2. Los datos y las operaciones básicas .......................................................................... 7 2.1 Identificador ...................................................................................................................................... 8 2.2 Tipos de datos ................................................................................................................................... 8 2.2.1 Datos numéricos .............................................................................................................................................. 9 2.2.2 Datos lógicos o booleanos ............................................................................................................................ 9 2.2.3 Caracteres ............................................................................................................................................................ 10 2.2.4 Tipo void .............................................................................................................................................................. 10 PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd vv 22//1188//1111 99::4444 AAMM vi Contenido 2.3 Variables .............................................................................................................................................. 10 2.3.1 Declaración de variables ................................................................................................................................ 10 2.3.2 Reserva de memoria ........................................................................................................................................ 11 2.4 Constantes .......................................................................................................................................... 11 2.4.1 Uso de #define: creación de macros .......................................................................................................... 12 2.4.2 Uso de const ....................................................................................................................................................... 12 2.5 Operadores ......................................................................................................................................... 13 2.5.1 Operadores aritméticos .................................................................................................................................. 13 2.5.2 Incremento y decremento ............................................................................................................................. 14 2.5.3 Operadores relacionales ................................................................................................................................ 15 2.5.4 Operadores lógicos .......................................................................................................................................... 15 2.5.5 Operadores de asignación ............................................................................................................................ 16 2.5.6 Operador condicional (?:) .............................................................................................................................. 17 2.6 Prioridad de los operadores ......................................................................................................... 18 2.6.1 Prioridad de operadores aritméticos ......................................................................................................... 18 2.6.2 Regla asociativa ................................................................................................................................................. 18 2.7 Expresiones ......................................................................................................................................... 19 2.8 Palabras reservadas ......................................................................................................................... 20 2.9 Comentarios ....................................................................................................................................... 21 2.10 Conversión de tipos ......................................................................................................................... 21 2.10.1 Conversión forzada de tipos de datos .................................................................................................... 22 2.10.2 El operador sizeof .......................................................................................................................................... 22 Capítulo 3. Programación estructurada .......................................................................................... 27 3.1 Definición ............................................................................................................................................ 28 3.2 Estructuras de control y su clasificación .................................................................................. 28 3.3 Estructura de un algoritmo y de un programa ...................................................................... 29 3.3.1 Comentarios ........................................................................................................................................................ 29 3.3.2 Declaración archivos de cabecera o encabezado (librerías o bibliotecas) .................................. 29 3.3.3 Prototipos de funciones ................................................................................................................................. 30 3.3.4 Declaración de variables globales y constantes .................................................................................... 30 3.3.5 El programa principal o función principal main() ................................................................................. 30 3.3.6 Declaración de funciones .............................................................................................................................. 30 3.4 Estructura de control secuencial ................................................................................................. 32 3.4.1 Ejercicios resueltos de la estructura de control secuencial ............................................................... 32 3.5 Estructura de control selectiva o alternativa .......................................................................... 49 3.5.1 Estructura de control selectiva simple si (if) ........................................................................................... 50 3.5.2 Estructura de control selectiva doble si/si-no (if/else) ........................................................................ 51 PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd vvii 22//1188//1111 99::4444 AAMM Contenido vii 3.5.3 Anidamiento o escalonamiento si-si no-si (if-else-if) .......................................................................... 52 3.5.4 Ejercicios resueltos de la estructura de control selectiva simple si (if) y doble si/si-no (if/else) ......................................................................................................... 53 3.5.5 Estructura de control selectiva múltiple segun_sea (switch) ........................................................... 67 3.5.6 Estructura de control selectiva segun_sea (switch) anidada ........................................................... 68 3.5.7 Ejercicios resueltos de la estructura de control selectiva múltiple segun_sea (switch) ......................................................................................................................... 68 3.6 Estructura de control repetitiva o de iteración condicional ............................................. 79 3.6.1 Contadores, acumuladores, centinelas y banderas .............................................................................. 79 3.6.2 Estructura de control repetitiva mientras (while) ................................................................................. 81 3.6.3 Ejercicios resueltos de la estructura de control repetitiva mientras (while) .............................. 82 3.6.4 Estructura de control repetitiva hacer_mientras (do while) ............................................................. 94 3.6.5 Ejercicios resueltos de la estructura de control repetitiva hacer_mientras (do_while) ............................................................................................................................ 94 3.6.6 Estructura de control repetitiva desde (for) ............................................................................................ 107 3.6.7 Ejercicios resueltos de la estructura de control repetitiva desde (for) .......................................... 109 3.6.8 Casos especiales del for .................................................................................................................................. 118 3.6.9 Ejercicios resueltos de la estructura de control repetitiva en casos especiales desde (for) ......................................................................................................................... 119 3.6.10 Ciclos anidados ................................................................................................................................................. 126 3.6.11 Ejercicios resueltos utilizando ciclos anidados ...................................................................................... 127 Capítulo 4. Arreglos .................................................................................................................................135 4.1 Definición ............................................................................................................................................ 136 4.2 Arreglos unidimensionales (vectores o listas) ........................................................................ 137 4.2.1 Inicialización de arreglos unidimensionales ........................................................................................... 138 4.2.2 Lectura e impresión de un arreglo unidimensional ............................................................................. 139 4.2.3 Modificación de un elemento del arreglo unidimensional ............................................................... 141 4.2.4 Arreglos de caracteres .................................................................................................................................... 141 4.2.5 Ejercicios resueltos de arreglos unidimensionales ............................................................................... 142 4.3 Arreglos bidimensionales (matrices o tablas) ........................................................................ 155 4.3.1 Inicialización de arreglos bidimensionales ............................................................................................. 156 4.3.2 Lectura e impresión de unos arreglos bidimensionales .........................................................................156 4.3.3 Modificación de un elemento de una matriz ......................................................................................... 157 4.3.4 Ejercicios resueltos de arreglos bidimensionales ................................................................................. 157 Capítulo 5. Programación modular ...................................................................................................171 5.1 Definición ............................................................................................................................................ 172 5.2 Programa principal y funciones .................................................................................................. 173 5.2.1 Programa principal o función main() ......................................................................................................... 173 5.2.2 Función ................................................................................................................................................................. 173 5.2.3 Ámbito de las variables .................................................................................................................................. 173 PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd vviiii 22//1188//1111 99::4444 AAMM viii Contenido 5.2.4 Llamada o invocación de una función ...................................................................................................... 173 5.2.5 Cómo se ejecuta un programa que contiene funciones .................................................................... 173 5.2.6 Ubicación de una función en un programa ............................................................................................ 173 5.3 Prototipo de una función .............................................................................................................. 174 5.4 Funciones sin paso de parámetros ............................................................................................ 174 5.5 Ejercicios resueltos de funciones sin paso de parámetros ................................................ 176 5.6 Funciones con paso de parámetros .......................................................................................... 189 5.6.1 Parámetros de una función ........................................................................................................................... 189 5.6.2 Paso de parámetros en una función .......................................................................................................... 189 5.6.3 Paso de parámetros en funciones con vectores y matrices .............................................................. 193 5.7 Ejercicios resueltos de funciones con paso de parámetros .............................................. 193 5.8 Recursividad ...................................................................................................................................... 213 5.9 Funciones predefinidas de lenguaje C ..................................................................................... 223 5.10 Ejercicios resueltos de funciones predefinidas de lenguaje C ......................................... 223 5.10.1 Funciones para manejo de caracteres y cadenas ............................................................................... 224 5.10.2 Funciones de pantalla .................................................................................................................................. 231 5.11 Creación de librerías en lenguaje C ........................................................................................ 237 Capítulo 6. Registros o estructuras ................................................................................................... 239 6.1 Definición de una estructura ........................................................................................................ 240 6.2 Tipos de datos definidos por el usuario typedef .................................................................... 242 6.3 Asignación de valores a los campos de una estructura ...................................................... 243 6.4 Acceso a los campos de un registro o estructura (struct ) ................................................... 244 6.5 Arreglos de estructuras .................................................................................................................. 246 6.6 Estructuras anidadas ....................................................................................................................... 247 6.7 Ejercicios resueltos de registros o estructuras (struct ) ........................................................ 248 Capítulo 7. Algoritmos de ordenamiento y búsqueda. Apuntadores ................................ 265 7.1 Ordenación ......................................................................................................................................... 266 7.1.1 Ordenación interna .......................................................................................................................................... 266 7.2 Búsquedas ........................................................................................................................................... 274 7.2.1 Búsqueda secuencial ....................................................................................................................................... 274 7.2.2 Búsqueda binaria .............................................................................................................................................. 276 7.3 Apuntadores ....................................................................................................................................... 278 7.3.1 Dirección de una variable .............................................................................................................................. 278 7.3.2 Declaración de apuntadores ........................................................................................................................ 278 PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd vviiiiii 22//1188//1111 99::4444 AAMM Contenido ix 7.3.3 Asignación de apuntadores .......................................................................................................................... 278 7.3.4 El operador 2. ................................................................................................................................................ 279 7.3.5 Errores usuales ................................................................................................................................................... 280 7.3.6 Apuntadores a apuntadores ......................................................................................................................... 280 7.3.7 Apuntadores para paso de parámetros por referencia ....................................................................... 280 Anexo A. Entrada y salida (e/s) en lenguaje C .............................................................................. 285 A.1 Entrada y salida formateada ........................................................................................................ 286 A.1.1 Entrada de datos: función scanf() ............................................................................................................... 286 A.1.2 Salida de datos: función printf() .................................................................................................................. 288 A.2 Entrada y salida sin formato ......................................................................................................... 290 Anexo B. Diferencias entre Turbo C, Dev-Cpp y Code::Blocks ............................................... 292 Anexo C. Aplicaciones ............................................................................................................................ 295 Anexo D. Código ASCII ............................................................................................................................ 309 Anexo E. Glosario ...................................................................................................................................... 311 Glosario de funciones en lenguaje C .................................................................................................................. 315 Entrada y salida formateada (vea el anexo A) ....................................................................................................... 316 Entrada y salida sin formato (vea el anexo A) ....................................................................................................... 316 Funciones matemáticas (librería math.h) ............................................................................................................... 317 Funciones para manejo de caracteres y cadenas ................................................................................................ 317 Operaciones con cadenas de caracteres, string.h y stdlib.h ............................................................................. 318 Funciones para la conversión de tipos, librería stdlib.h ..................................................................................... 318 Manejo de consola, librerías conio.h y conio2.h (Dev-C11 y Code::Blocks) ............................................. 318 Bibliografía y recursos de programación ......................................................................................... 320 Índice analítico ............................................................................................................................................ 323 PPrreelliimmiinnaarreess__CCoorroonnaa__II00440066..iinndddd iixx 22//1188//1111 99::4444 AAMM
Description: