La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Arreglos Otoño 2014.  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La.

Presentaciones similares


Presentación del tema: "Arreglos Otoño 2014.  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La."— Transcripción de la presentación:

1 Arreglos Otoño 2014

2  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La propiedad indexado significa que el elemento primero, segundo, hasta el n-ésimo de un arreglo pueden ser identificados por su posición ordinal.  Un arreglo es una colección finita, homogénea y ordenada de elementos del mismo tipo. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez57

3  De manera formal se define un arreglo de tamaño n de los elementos de tipo A, es un elemento del espacio n-dimensional del conjunto A, es decir, X es arreglo de tamaño n del tipo A si y solo si X  A n. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez58

4  Ambas definiciones reconocen los siguientes conceptos: ◦ Finita: Todo arreglo tiene un límite, es decir, debe determinarse cual será el número máximo de elementos que podrán formar parte de él. ◦ Homogénea: Todos los elementos de un arreglo son del mismo tipo o naturaleza (todos enteros, booleanos, etc,), pero nunca una combinación de distintos tipos. ◦ Ordenada: Se debe determinar cuál es el 1er. elemento, el 2º, el 3º... y el n-ésimo elemento. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez59

5  Tienen un único nombre de variable, que representa todos los elementos.  Contienen un índice, los cuales diferencian a cada elemento del arreglo.  Se pueden realizar ciertas operaciones como son: recorridos, ordenaciones y búsquedas de elementos.  El número total de elementos del arreglo (NTE) es igual al límite superior (LS), menos límite inferior NTE = LS - LI + 1. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez60

6  El tipo de índice puede ser cualquier tipo ordinal.  El tipo de los componentes puede ser cualquiera.  Se utilizan [ ] para indicar el índice de un arreglo. Entre los [ ] se debe escribir un valor ordinal (puede ser una variable, una constante o una expresión que dé como resultado un valor ordinal).  Si un arreglo tiene n componentes, la última localidad está dada por n. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez61

7  Los arreglos pueden contener un mínimo de cero elementos hasta un máximo de n elementos. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez62 1n n elementos

8  A continuación se muestra un arreglo llamado EDADES, que contiene las edades de la clase de natación en la BUAP. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez63 21 17 19 18 20 21 20 25 21 23 EDADES[2] EDADES[1] EDADES[3] EDADES[4] EDADES[5] EDADES[6] EDADES[8] EDADES[7] EDADES[9] EDADES[10] EDADES Límite inferior Límite superior

9  Los arreglos se clasifican en: ◦ Unidimensionales (Vectores): un sólo índice ◦ Bidimensionales (Tablas o Matrices): dos índices ◦ Multidimensionales: más de dos índices FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez64

10 Arreglos unidimensionales Otoño 2014

11  Los arreglos unidimensionales deben cumplir lo siguiente: ◦ Compuesto por un número de elementos finito. ◦ Tamaño fijo: el tamaño debe ser conocido en tiempo de compilación. ◦ Homogéneo: todos los elementos son del mismo tipo. ◦ Son almacenados en posiciones contiguas de memoria, cada uno de los cuales se les puede acceder directamente. ◦ Cada elemento se puede procesar como si fuese una variable simple ocupando una posición de memoria. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez66

12  Dado un arreglo unidimensional denominado PRECIO cada uno de sus elementos se designará por ese mismo nombre diferenciándose únicamente por su correspondiente subíndice. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez67 15.4 12.5 14.8 9.7 6.5 4.5 PRECIO[1] PRECIO[2] PRECIO[3] PRECIO[4] PRECIO[5] PRECIO[6] Longitud = 6 PRECIONombre del arreglo Índices

13  Asignación ◦ En general no es posible asignar directamente un valor a todo el arreglo, sino que se debe asignar el valor deseado a cada elemento. ◦ Para asignar un valor en cada elemento del arreglo se efectúa con un subíndice que indica la posición, se puede utilizar la siguiente forma: [subíndice]   Ejemplo: ◦ A[1]  10 ◦ PAIS[2]  “Francia” ◦ PRECIO[3]  PRECIO[2]+10.5 FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez68

14  Lectura: Consiste en leer un valor de cada elemento del arreglo y asignarlo a una variable. Para i  1 hasta N paso 1 hacer leer(ARREGLO[i]) Finpara  Escritura: Consiste en asignarle un valor a cada elemento del arreglo. Para i  1 hasta N paso 1 hacer escribir(ARREGLO[i]) Finpara FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez69

15  Leer un arreglo de N precios y obtener el promedio: 1.Inicio 2.Leer(n) 3.prom  0 4.Para i  1 hasta n paso 1 hacer leer(precio[i]) prom  prom+precio[i] 5.Finpara 6.prom  prom/n 7.Escribir(“El promedio es:”,prom) 8.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez70

16 Cadenas Otoño 2014

17  Una cadena es un conjunto de caracteres incluido el espacio en blanco.  Por ejemplo: ◦ “Hola” ◦ “123vb” ◦ “v bg%.”  Generalmente una cadena va encerrada entre comillas. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez72

18  La longitud de una cadena es el número de caracteres que contiene.  La cadena vacía es la que no tiene ningún carácter y se representa como “”.  Una constante de tipo cadena es un conjunto de caracteres válidos encerrados entre comillas, por ejemplo: ◦ “numero1” ◦ “&/ #$%” FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez73

19  Una variable de cadena es aquella cuyo contenido es una cadena de caracteres, por ejemplo: ◦ cadena=“una cadena” ◦ str=“-23.56”.  El último carácter de la cadena marca el fin de la cadena, en este caso utilizaremos el carácter ‘\0’ para denotar fin de cadena. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez74

20 Asignación. – Apellido  ”Juarez” Entrada/ Salida – Leer (nombre, estado_civil) – Escribir (nombre, apellido) Para el cálculo de la longitud de una cadena se da el número de caracteres que hay en una. Para la comparación de cadenas se comparan caracteres o para ver si son iguales o no. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez75

21  La concatenación se define como la unión de varias cadenas de caracteres en una sola, conservando el orden.  La extracción de subcadenas es una subcadena que es una porción de la cadena original.  La búsqueda de información, consiste en buscar una subcadena o cadena dentro de otra mayor. Devuelve el número de la posición donde inicia la subcadena buscada, o -1 si no la encuentra. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez76

22  Encontrar el punto medio, este nos devuelve la mitad de la posición de la cadena.  Truncar cadenas, se pretende quedarse con los primeros n caracteres de la cadena.  Convertir cadenas a números o viceversa, si los caracteres son dígitos.  Insertar una cadena dentro de otra.  Borrar cadenas.  Sustituir una cadena por otra.  Invertir el orden de una cadena. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez77

23  El siguiente algoritmo sustituye las ‘e’ por ‘*’. 1.Inicio 2.Escribir (“Escriba una palabra”) 3.Leer (str) 4.Para i  1 hasta len(str) paso 1 hacer 4.1 Si (str[i] = ‘e’) entonces str[i]  ‘*’ 4.2 Finsi 5.Finpara 6.Escribir (str) 7.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez78

24  El siguiente algoritmo imprime una cadena de manera invertida: 1.Inicio 2.Leer (str) 3.Para i  len(str) hasta 1 paso -1 hacer 3.1 Escribir (str[i]) 4.Finpara 5.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez79

25  El siguiente algoritmo realiza lo siguiente, dada una cadena en minúsculas, la convierte en mayúsculas 1.Inicio 2.Leer (str) 3.Para i  1 hasta len(str) paso 1 hacer 4.1 Si (‘a’<=str[i]<=‘z’) entonces Valor(str[i])  Valor(str[i])-32 4.2 Finsi 4.Finpara 5.Escribir (“La cadena es:”,str) 6.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez80

26 Ordenamiento Otoño 2014

27  Uno de los métodos de clasificación más simples que puede haber es el llamado “clasificación de burbuja” (bubblesort).  La idea básica de este algoritmo es imaginar que los elementos están como burbujas en un tanque de agua con pesos correspondientes a sus claves, cada pase sobre el arreglo produce el ascenso de una burbuja hasta su nivel adecuado de peso. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez82

28 Procedimiento burbuja 1.Inicio 2.Para i  1 a n-1 paso 1 hacer 2.1Para j  n a i+1 paso -1 hacer Si (A[j] < A[j-1]) entonces temp  A[j] // intercambio A[j]  A[j-1] A[j-1]  temp Finsi 2.2 Finpara 3.Finpara 4.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez83

29  Este algoritmo admite un poco de mejoramiento.  El algoritmo por vibración es una variante del algoritmo burbuja pero mejorado.  Este algoritmo consiste en “recordar” cuál fue el último intercambio realizado y en qué momento. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez84

30 Procedimiento shakeSort 1.Inicio 2.l  2 r  n k  n 3.Repetir 3.1 Para j  r a l paso -1 hacer Si (A[j-1] > A[j]) entonces temp  A[j] A[j]  A[j-1] A[j-1]  temp k  j Finsi 3.2Finpara 3.3 l  k+1 FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez85 3.4 Para j  l a r paso 1hacer Si (A[j-1]>A[j]) entonces temp  A[j] A[j]  A[j-1] A[j-1]  temp k  j Finsi 3.5 Finpara 3.6 r  k-1 4.Hasta (l > r) 5.Fin

31  Este método consiste en reubicar en el lugar correcto cada uno de los elementos a ordenar, es decir, en el i-ésimo recorrido se “inserta” el i- ésimo elemento A[i] en el lugar correcto, entre A[1], A[2],..., A[i-1], los cuales fueron ordenados previamente.  Existen dos condiciones distintas que podrían dar terminado el proceso de clasificación: 1.Se encuentra un elemento A[j] que tiene una llave menor que la de A[i]. 2.El extremo izquierdo de la secuencia destino es alcanzado. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez86

32 Procedimiento insercionDirecta 1.Inicio 2.Para i  2 a n paso 1 hacer 2.1 A[0]  A[i]j  i 2.2 Mientras (A[j] < A[j-1]) hacer temp  A[j] A[j]  A[j-1] A[j-1]  temp j  j-1 2.3 Finmientras 3.Finpara 4.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez87

33  Si notamos que la secuencia destino A[2]...A[i-1] donde se debe insertar el elemento, ya está ordenada.  Este algoritmo puede ser mejorado determinando rápidamente el punto de inserción.  La elección es una búsqueda binaria que prueba la secuencia destino en la mitad y continúa buscando hasta encontrar el punto de inserción. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez88

34 Procedimiento insercionBinaria 1.Inicio 2.Para i  2 a n paso 1 hacer 2.1 x  A[i]L  1R  i 2.2 Mientras (L < R) hacer m  (L+R) div 2 Si (A[m] <= x) entonces L  L+1 SinoR  m Finsi 2.3 Finmientras 2.4 Para j  i a R+1 paso -1 hacer A[j]  A[j-1] 2.5 Finpara 2.6 A[R]  x 3.Finpara 4.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez89

35  Este método se basa en los siguientes principios: 1.Seleccionar el elemento que tenga la llave menor. 2.Intercambiarlo con el primer elemento 1. 3.Repetir después estas operaciones con los n- 1 elementos restantes, luego con n-2 elementos hasta que no quede más que un elemento (el más grande). FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez90

36 Procedimiento selecciónDirecta 1.Inicio 2.Para i  1 a n-1 paso 1 hacer 2.1 k  ix  A[i] 2.2 Para j  i+1 a n paso 1hacer Si (A[j] < x) entonces k  jx  A[k] finsi 2.3 finpara 2.4 A[k]  A[i]A[i]  x 3.finpara 4.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez91

37  Inserción por decremento decreciente ◦ Un refinamiento de la inserción directa fue propuesto por D.L. Shell en 1959. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez92

38 Procedimiento shellSort 1.Inicio 2.h[1]  9h[2]  5h[3]  3h[4]  1 3.Para m  1 a t paso 1 hacer // t es el tamaño del arreglo h 3.1 k  h[m]s  k 3.2 Para i  k+1 a n paso 1hacer x  A[i] j  i-k Si (s=0) entoncess  k finsi s  s+1A[s]  x Mientras (x<A[j]) hacer A[j+k]  A[j]j  j-k finmientras A[j+k]  x 3.3 finpara 4.Fin_para 5.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez93

39 Búsqueda Otoño 2014

40  La tarea de búsqueda es una de las más frecuentes en programación.  Para los siguientes algoritmos vamos a suponer que la colección de los datos en donde vamos a buscar, es fija, y que es de tamaño n.  La tarea consiste en hallar un elemento cuya clave sea igual al argumento de búsqueda. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez95

41  Cuando los elementos no llevan un orden y no existe información sobre ellos se utiliza la búsqueda lineal, es decir, comparar uno a uno los elementos hasta encontrar el deseado.  Existen dos condiciones que ponen fin a la búsqueda. ◦ Se encuentra el elemento. ◦ Se ha rastreado toda la colección y no se encuentra el elemento. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez96

42 Procedimiento busquedaLineal (elemento) 1.Inicio 2.i  1 3.Mientras (i elemento) hacer 3. 1 i  i+1 4.Finmientras 5.Fin  Si i al final es N entonces el elemento no fue encontrado, pero sino entonces quiere decir que el elemento esta en la posición i-ésima del arreglo. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez97

43  Para utilizar este algoritmo es necesario que la colección este ordenada.  La idea clave consiste en inspeccionar el elemento medio (m) y compararlo con el elemento de búsqueda x. ◦ Si es igual a x, la búsqueda termina; si es menor que x, inferimos que todos los elementos con índices menores que o iguales a m pueden ser eliminados, y nuestra búsqueda ahora se centra en los demás elementos. ◦ Esto se repite mientras el índice inicial sea menor o igual que el final y el elemento no sea encontrado. FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez98

44 Procedimiento busquedaBinaria(x) 1.Inicio 2.L  0 3.R  N 4.found  false 5.Mientras (L< R) y not (found) hacer 5.1 m  (L+R) div 2 5.2 Si (A[m]=x) entoncesfound  true 5.3 Sino Si (A[m] < x entonces)L  m+1 SinoR  m finsi 5.4 fin_si 6.Finmientras 7.Fin FCC - BUAP Otoño 2014MC Beatriz Beltrán Martínez99


Descargar ppt "Arreglos Otoño 2014.  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La."

Presentaciones similares


Anuncios Google