




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Fundamentos de informática, Profesor: Adolfo Muñoz Orbañanos, Carrera: Ingeniería de Tecnologías Industriales, Universidad: UniZar
Tipo: Apuntes
1 / 555
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Presentaci´on
Este libro trata sobre m´etodos de resoluci´on de problemas mediante el desa- rrollo de algoritmos y estructuras de datos, desde el principio y paso a paso, y su materializaci´on en programas de computador. Desde luego, no es el primer libro sobre este tema; de hecho, ha habido en los ´ultimos quince a˜nos un gran aluvi´on de textos sobre algoritmos y sobre programaci´on. La raz´on para ello ha sido sin lugar a dudas doble: por un lado, la difusi´on que estos temas han tenido y siguen teniendo, integr´andose en los estudios m´as diversos; por otro, la evoluci´on que est´a experimentando el desarrollo de algoritmos y programas, pasando de ser un arte (reinventado por cada programador a base de t´ecnicas personales, estrechamente vinculadas con su lenguaje de programaci´on) a una actividad m´as cient´ıfica, metodol´ogica y disciplinada. Por consiguiente, resulta necesario aclarar cu´al es el enfoque adoptado en este libro. Examinando la bibliograf´ıa existente actualmente sobre programaci´on a un nivel introductorio permite afirmar las siguientes conclusiones:
Presentaci´on xxi
En resumidas cuentas, este libro va dirigido a aqu´ellos que desean introdu- cirse en la programaci´on, con una base s´olida, con una buena metodog´ıa de dise˜no y desarrollo de programas correctos y con h´abitos disciplinados desde una perspectiva realista y pragm´atica. Se presentan las t´ecnicas con un cierto ni- vel de abstracci´on para identificar los conceptos esenciales e independientes del lenguaje de programaci´on empleado, y al mismo tiempo se aterriza expresando estas t´ecnicas en un lenguaje concreto. El lenguaje escogido para estas implementaciones ha sido Pascal. Esta elec- ci´on se debe a que este lenguaje es simple y tiene una sintaxis sencilla, que hace que sea f´acil de aprender, y al mismo tiempo es lo bastante completo como para plasmar las diferentes t´ecnicas y m´etodos necesarios en programas de com- plejidad media-alta. Esto lo hace una herramienta pedag´ogica id´onea para el aprendizaje de la programaci´on. A todo esto hay que sumar las numerosas im- plementaciones existentes y su accesibilidad, as´ı como su evoluci´on y continua puesta al d´ıa para permitir t´ecnicas de programaci´on actuales (por ejemplo, mo- dular u orientada a los objetos) y su gran difusi´on y aceptaci´on en el ´ambito acad´emico.
Organizaci´on del libro
El libro est´a estructurado en siete partes. En cada una de ellas se estudian las t´ecnicas y mecanismos nuevos, conceptualmente primero, detallando luego su tratamiento en Pascal y, finalmente, compaginando ambas facetas con el as- pecto metodol´ogico. Cada tema se ha dividido en varios cap´ıtulos para evitar una excesiva fragmentaci´on. En cada cap´ıtulo se ha incluido una lista de ejerci- cios propuestos de dificultad aproximadamente creciente. Al final de cada tema se desarrolla un ejemplo completo pensado para mostrar a la vez los aspectos m´as destacados del mismo, as´ı como unas pocas referencias comentadas que se sugieren como lecturas complementarias o de consulta.
Contenido
El contenido se ha seleccionado partiendo de las directrices se˜naladas en [DCG+89] y [Tur91]. Incluye los contenidos cursos CS1 y CS2 [GT86, KSW85] salvo los aspectos de organizaci´on de computadores, que se estudian en [PAO94], de los mismos autores que este libro. En el primer tema se presentan, entre otros, los conceptos esenciales de algo- ritmo, dato y programa. Se introduce el lenguaje Pascal y la estructura de los programas escritos en ´el, as´ı como los elementos b´asicos del lenguaje. Se incluyen
xxii Presentaci´on
algunos programas sencillos, y se adelantan la t´ecnica descendente de dise˜no de programas y algunos apuntes sobre la correcci´on. El segundo tema se dedica a la programaci´on estructurada. Se pone espe- cial ´enfasis en el dise˜no descendente o por refinamientos sucesivos partiendo de especificaciones escritas en pseudoc´odigo, y se muestra c´omo compaginar esta t´ecnica con la derivaci´on de programas correctos. En el tercer tema se estudian los subprogramas. Al igual que en el tema anterior, se detalla c´omo enfocar la correcci´on en el uso de esta t´ecnica. Se concluye con un cap´ıtulo de introducci´on a la recursi´on. En la mayor´ıa de los programas no basta con los tipos de datos b´asicos, sino que es necesario que el programador defina otros m´as complejos. A ello se dedica el cuarto tema. El quinto tema estudia las t´ecnicas propias de la gesti´on de memoria din´amica. Se justifica su necesidad, y se presenta su principal aplicaci´on, que es la definici´on de estructuras de datos recursivas. El sexto tema introduce tres aspectos avanzados: la programaci´on con tipos abstractos de datos, el coste de los algoritmos y los principales esquemas de dise˜no de algoritmos. Aunque, ciertamente, su estudio en profundidad rebasa un primer curso, es frecuente introducir –o siquiera mencionar– sus ideas b´asicas. Por supuesto, siempre es altamente recomendable consultar otras referencias (nosotros mismos las seleccionamos para cada tema), pero tambi´en es cierto que el alumno se ve obligado con frecuencia a usar varios textos b´asicos para cubrir diferentes partes de la materia. Justamente, estos ´ultimos cap´ıtulos se incluyen para que el lector interesado se pueda asomar a ellos sin verse obligado a consultar los cap´ıtulos introductorios de otros libros. Finalmente se incluyen tres ap´endices: en el primero se introducen un par de aspectos complementarios para un primer curso de programaci´on (el paso de subprogramas como par´ametros y el uso de variables aleatorias); el segundo es un prontuario de uso del entorno integrado de desarrollo Turbo Pascal; y el tercero indica algunos detalles de Turbo Pascal en que se separa del est´andar, pero que son de uso frecuente.
En la lectura de este texto se encontrar´an fragmentos escritos en distintos lenguajes: