Algoritmia y Estructura de Datos

ALGORÍTMIA Y ESTRUCTURA DE DATOS Carol Roxana Rojas Moreno Cada autor es responsable del contenido de su propio texto

Views 98 Downloads 2 File size 5MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ALGORÍTMIA Y ESTRUCTURA DE DATOS

Carol Roxana Rojas Moreno

Cada autor es responsable del contenido de su propio texto. De esta edición: © Universidad Continental S.A.C 2012 Jr. Junin 355, Miraflores, Lima-18 Teléfono: 213 2760 Derechos reservados Primera Edición: Noviembre 2013 Tiraje: 500 ejemplares Autor: Carol Roxana Rojas Moreno Oficina de Producción de Contenidos y Recursos Impreso en el Perú - Rebelars S.A.C Jr. Los Bosques 555 - El Tambo - Huancayo Fondo Editorial de la Universidad Continental

Todos los derechos reservados. Esta publicación no puede ser reproducida, en todo ni en parte, ni registrada en o trasmitida por un sistema de recuperación de información, en ninguna forma ni por ningún medio sea mecánico, fotoquímico, electrónico, magnético, electroóptico, por fotocopia, o cualquier otro sin el permiso previo por escrito de la Universidad.

INTRODUCCIÓN

9

DIAGRAMA DE PRESENTACIÓN DE LA ASIGNATURA

11

UNIDAD I: ALGORITMOS Y PROGRAMACIÓN ESTRUCTURADA

13

DIAGRAMA DE PRESENTACIÓN DE LA UNIDAD i Tema N° 1: Algoritmo 1 Definición del algoritmo

14

2 Características de un algoritmo

17

3 Instrucciones algorítmicas básicas

17

4 Representación del algoritmo

18

Tema N° 2: Programación Estructurada  1 Programa

26

2 Lenguaje de programación

27

3 Programas traductores

28

4 Definición programación estructurada

29

Tema N° 3: Sentencias Básicas de Programación 1 Estructura básica secuencial

31

2 Estructura básica selectiva

31

3 Estructura básica repetitiva

32

ACTIVIDAD N°1

34

Tema N° 4: Modularización de Programas 1 Definición de módulos de programa

34

2 Paso de Parámetros

34

3 Procedimientos

35

4 Funciones

36

5 Librerías de programación creadas por el usuario

40

Tema N° 5: Funciones Recursivas  1 Definición de recursividad

42

2 Recursividad de factorial

43

3 Recursividad de la multiplicación

43

4 Recursividad de torres de hanoi

43

ACTIVIDAD N°2

44

Lectura seleccionada N°1

45

GLOSARIO de la unidad i

46

BIBLIOGRAFÍA DE LA UNIDAD I

47

Autoevaluación DE LA UNIDAD i

47

UNIDAD II: ESTRUCTURA DE DATOS ESTÁTICAS

51

DIAGRAMA DE PRESENTACIÓN DE LA UNIDAD ii TEMA 1: Estructuras de Datos 1 Definición de estructura de datos

52

2 Clasificación de estructura de datos

52

Tema N° 2: Arreglos Unidimensionales 1 Definición de arreglos unidimensionales

53

2 Algoritmos de actualización

54

3 Búsqueda de arreglos unidimensionales

57

4

59

Ordenación de arreglos unidimensionales

ACTIVIDAD N°1

60

Tema N° 3: Arreglos Bidimensionales 1 Definición de arreglos bidimensionales

61

2

63

Algoritmos de actualización de arreglos bidimensionales

ACTIVIDAD N°2

65

Lectura seleccionada n° 1

65

GLOSARIO de la unidad ii

67

Bibliografía de la unidad ii

67

Autoevaluación de la unidad ii

67

UNIDAD III: ESTRUCTURAS DE DATOS DINÁMICA LINEAL

71

DIAGRAMA DE PRESENTACIÓN DE LA UNIDAD iii Tema N° 1: Registro (Estructura) y Unión 1 Definición de registro (estructura)

72

2 Módulos y estructuras

74

3 Invocación de una estructura en otra

75

4 Definición de unión: ejemplo práctico

76

Tema N° 2: Tipos de Datos Abstractos (TDA)  1 Definición de TDA 2 Clases y programación orientada a objetos

77 78

Tema N° 3: Puntero a Dirección de Memoria  1 Definición de puntero a dirección de memoria

80

2 Creación y eliminación de variables dinámicas

82

ACTIVIDAD N°1

83

Tema N° 4: Estructuras de Datos Dinámicas Lineal 1 Listas enlazadas: simple, doble, circular

84

2 Colas y pilas

90

ACTIVIDAD N°2

95

Lecturas seleccionada n° 1

95

GLOSARIO de la unidad iii

97

Bibliografía de la unidad iii

97

Autoevaluación de la unidad iii

97

UNIDAD IV: ESTRUCTURAS DE DATOS DINÁMICA NO LINEAL

101

DIAGRAMA DE PRESENTACIÓN DE LA UNIDAD iv Tema N° 1: Árbol y Grafo 1 Árbol General: Conceptos básicos y algoritmos de manipulación

102

2 Árbol binario: recorridos: preorden, inorden, postorden

106

3 Árboles binarios de búsqueda ( abb )

107

4 Grafos: Conceptos y algoritmos de manipulación

111

ACTIVIDAD N°1

118

Tema N° 2: Archivo (Fichero) 1 Archivo: conceptos y algoritmos de manipulación

119

ACTIVIDAD N°2

121

Lecturas seleccionada n° 1

122

GLOSARIO de la unidad iv

123

Bibliografía Y DIRECCIONES ELECTRÓNICAS

123

Autoevaluación de la unidad iv

124

ANEXO Clave de respuesta de Autoevaluaciones

127

INTRODUCCIÓN

A

lgoritmia y Estructura de Datos es una asignatura que

cas: Sentencias Básicas de Programación: Secuenciales, Selecti-

se desarrolla con una modalidad de educación virtual,

vas y Repetitivas y la Modularización en la Programación Estruc-

y el presente manual autoformativo es su material di-

turada, es decir, se puede dividir a un programa complejo, en

dáctico más importante.

segmentos de programa mas simples (Modularización), y poder ser reutilizados en otros programas, a través del uso de funcio-

Esta asignatura tiene como finalidad proporcionar al estudiante, los conocimientos necesarios en las técnicas y estructuras de datos para iniciarse en la programación asistida por un computador y basado en el enfoque estructurado, requeridos en su formación básica para poder desarrollar programas en otros niveles más avanzados.

nes y procedimientos, y en algunos casos usando el concepto de recursividad. Unidad II: Estructuras de Datos Estáticas, presentando los algoritmos de creación y actualización de Arreglos Unidimensionales y Bidimensionales, Unidad III: Estructuras de Datos Dinámica Lineal, donde se expone las formas de almacenamiento temporal de datos a través estructuras listas, pilas, cola. Unidad IV: Estructuras de Datos Dinámica No Lineal, en esta última unidad, se exponen otras formas de almacenamien-

La competencia a desarrollar es: Construye algoritmos en un

to de datos como árboles, grafos, archivos.

lenguaje de programación, utilizando las sentencias básicas de programación, diferenciando su uso para la propuesta de solución de un problema, y con ello construye programas computacionales utilizando módulos de programa (funciones y procedi-

Para el estudio del manual y la ejecución de las actividades, se recomienda para cada unidad:

mientos), valorando la reutilización de los módulo, y utilizando

• Realizar el estudio de los contenidos. Esta lectura será ana-

las diferentes estructuras de datos: estáticas y dinámicas para

lítica y reflexiva subrayando, resumiendo y asimilando la in-

almacenar datos temporalmente, diferenciando el uso de las

formación.

estructuras con respecto al uso de los archivos como almacenamiento de datos permanente, promoviendo el interés por otras técnicas de almacenamiento.

• Pasar al estudio de las lecturas seleccionadas, que son de estudio de profundización o ampliación. • Desarrollar las actividades programadas para cada semana en el aula virtual y asistidas por un lenguaje de programa-

El presente material consta de cuatro unidades: Unidad I: Algoritmos y Programación Estructurada, que presenta conceptos, representaciones y programación del algoritmo, con sus técni-

ción, con la asesoría del Profesor Tutor. • Desarrollar la auto evaluación, que es una preparación para la prueba final de la asignatura. .

8

Desarrollo de contenidos

PRESENTACIÓN DE LA ASIGNATURA Diagrama

Objetivos

Lecturas seleccionadas

Glosario

Recordatorio

Anotaciones

Inicio

COMPETENCIA DE LA ASIGNATURA

Desarrollo Construye de contenidos

Actividades enAutoevaluación algoritmos un lenguaje de programación, utilizando las sentencias básicas de programación, diferenciando su uso para la propuesta de solución de un problema, y con ello construye programas computacionales utilizando módulos de programa (funciones y procedimientos), valorando la reutilización de los módulo, y utilizando las diferentes estructuras de datos: estáticas y dinámicas para almacenar datos temporalmente, diferenciando el uso de las estructuras con respecto al uso de los archivos como almacenamiento Lecturas Glosario Bibliografía de datos permanente, promoviendo el interés seleccionadas por otras técnicas de almacenamiento.

UNIDADES Recordatorio DIDÁCTICAS Anotaciones UNIDAD I

UNIDAD II

UNIDAD III

UNIDAD IV

“Algoritmos y Programación Estructurada”

“Estructuras de Datos Estáticas”

“Estructuras de Datos Dinámica Lineal”

“Estructuras de Datos Dinámica No Lineal”

UNIDAD III

UNIDAD IV

TIEMPO MÍNIMO DE ESTUDIO UNIDAD I

UNIDAD II

1ª y 2ª semana

3ª y 4ª semana

5ª y 6ª semana

7ª y 8ª semana

16 horas

16 horas

16 horas

16 horas

ALGORÍTMIA Y ESTRUCTURA DE DATOS Actividades Autoevaluación MANUAL AUTOFORMATIVO

Bibliografía

9

10

Desarrollo de contenidos

Diagrama

Desarrollo de contenidos

Diagrama Lecturas seleccionadas

Objetivos

Inicio

Actividades

Glosario

Recordatorio

Anotaciones

Autoevaluación

DIAGRAMA DE PRESENTACIÓN DE LA UNIDAD Objetivos Glosario

Inicio Bibliografía

LECTURAS SELECCIONADAS

Actividades

ACTIVIDADES

Autoevaluación

Anotaciones

AUTOEVALUACIÓN Lecturas seleccionadas

Lecturas seleccionadas

UNIDAD I: ALGORITMOS Y PROGRAMACIÓN ESTRUCTURADA

CONTENIDOS Desarrollo de contenidos Recordatorio

Glosario

BIBLIOGRAFÍA

Bibliografía

ORGANIZACIÒN DE LOS APRENDIZAJES Recordatorio

ALGORÍTMIA Y ESTRUCTURA DE DATOS Actividades Autoevaluación MANUAL AUTOFORMATIVO

Anotaciones

CONOCIMIENTOS

PROCEDIMIENTOS

ACTITUDES

Tema N° 1: Algoritmo 1. Definición del Algoritmo 2. Características de un algoritmo 3. Instrucciones Algorítmicas Básicas 4. Representación del Algoritmo

1. Analiza diferentes situaciones problema para proponer un algoritmo computacional como solución

1. Asume con responsabilidad sus actividades académicas asignadas

2. Aplica el flujo de trabajo de la sentencia de programación secuencial

2. Realiza con honestidad las evaluaciones asignadas

Tema N° 2: Programación Estructurada 1. Programa 2. Lenguaje de Programación 3. Programas Traductores 4. Definición Programación Estructurada Tema Nº 3: Sentencias Básicas de Programación 1. Estructura Básica Simple o Secuencial 2. Estructura Básica Selectiva 3. Estructura Básica Repetitiva Tema Nº 4: Modularización de Programas 1. Definición de Módulos de Programa 2. Paso de Parámetros 3. Procedimientos 4. Funciones 5. Librerías de Programación creadas por el usuario Lectura seleccionada N° 1 Introducción a los Subalgoritmos o Subprogramas – Luis Joyanes Aguilar Tema Nº 5: Funciones Recursivas 1. Definición de Recursividad 2. Recursividad del Factorial 3. Recursividad de la Multiplicación 4. Recursividad de Torres de Hanoi Autoevaluación de la Unidad I

3. Aplica las sentencias de programación selectiva en la construcción de un algoritmo como solución de un problema 4. Aplica las sentencias de programación repetitiva en la construcción de un algoritmo como solución de un problema 5. Aplica los conceptos de la modularización a través de las Funciones, Procedimientos 6. Construye Librerías de Programación, para la reutilización de módulos en los programas 7. Aplica algoritmos recursivos en la construcción de programas Actividad N° 1 Elaboración de Algoritmos y programas usando las sentencias básicas de programación Actividad N° 2 Elaboración de programas usando módulos y librerías de programas, y elaboración de algoritmos recursivos Control de Lectura Nº 1 Sentencias de Programación en los Algoritmos y Módulos de Programa

Bibliografía

11

12

ollo nidos

Actividades

Autoevaluación

as nadas

Glosario

Bibliografía

torio

Anotaciones

UNIDAD I: ALGORITMOS Y PROGRAMACIÓN ESTRUCTURADA

TEMA N° 1: ALGORITMO 1 DEFINICIÓN DE ALGORITMO ¿En su quehacer diario, realiza sus actividades generalmente en un orden, organizado, finaliza y realiza otro conjunto de actividades de similar manera? Entonces quiere decir que está realizando un algoritmo, y en este caso, al desarrollarlo sin ayuda de un computador, se trata de un algoritmo no computacional. La definición de “Algoritmo” es precisamente como Ud. pensó que desarrolla sus actividades diarias, es decir: “Un algoritmo es un conjunto ordenado y finito de actividades, que generalmente, conducen a la solución de un problema”.

La palabra algoritmo se deriva de la traducción al latín del nombre árabe Al-Khuwarizmi, matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. (Angela Carrasco Loli. Principios de Programación)

Tenemos algunos ejemplos de algoritmo: - Al instalar un equipo de sonido, ejecutamos las instrucciones (algoritmo) contenidas en el manual del equipo. - El algoritmo matemático de Euclides para la obtención del máximo común divisor de dos números. Algunos algoritmos pueden ser ejecutados con ayuda de una computadora, a esto le llamamos algoritmo computacional, donde las actividades desarrolladas se llaman instrucciones y se expresan en un lenguaje de programación. (Términos que se explican mas adelante). Todo algoritmo puede ser descompuesto en tres partes, como se muestra en la siguiente figura: E: Entrada de datos. P: Proceso. S: Salida de resultados. Figura Nro 1: Partes de un algoritmo 2 CARACTERÍSTICAS DE UN ALGORITMO

• Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. • Un algoritmo debe ser definido. El algoritmo dos veces, se debe obtener el mismo resultado cada vez. • Un algoritmo debe ser finito: Si se sigue use debe terminar en algún momento, o sea, debe tener un número finito de pasos. (Luis Joyanes Aguilar. Fundamentos de Programación.)

Para que pueda escribir las instrucciones algorítmicas, necesita conocer lo que es una Variable: Es una localización o casillero en la memoria principal que almacena un valor que puede cambiar en el transcurso de la ejecución del programa. Tiene un nombre, un tipo de dato y un valor. Antes de poder utilizar una variable es necesario declararla especificando su nombre y su tipo de dato.

Desarrollo UNIDAD I: ALGORITMOS Y PROGRAMACIÓN ESTRUCTURADA de contenidos

Ejemplo 1: Entero edad

ALGORÍTMIA Y ESTRUCTURA DE DATOS Actividades Autoevaluación MANUAL AUTOFORMATIVO

Lecturas seleccionadas

Glosario

Recordatorio

Anotaciones

Ejemplo 2: Real peso, talla 3 INSTRUCCIONES ALGORÍTMICAS BÁSICAS a. Entrada: Consiste en obtener un dato de un dispositivo de entrada, como el teclado el lector óptico, etc., y almacenarlo en una variable, y se expresa en el pseudocódigo mediante la palabra LEER, de la siguiente forma: Ejemplo: LEER variable LEER edad • En lenguaje C/C++: cin>>edad; b. Salida: Consiste en mostrar el valor de una variable en un dispositivo de salida, como la pantalla del computador, se expresa en el pseudocódigo mediante la palabra ESCRIBIR,de la siguiente forma: Ejemplo: ESCRIBIR variable ESCRIBIR TotalCompra • En lenguaje C/C++: cout