Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
MATRIZ DE CHEQUEO DE PARIDAD
SQL Server Integration Services SSIS
Estructuras de Datos (ARRAYS)
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
PROGRAMACION DE ESTRUCTURAS DE DATOS
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Tema: Funciones en Excel (II) Funciones de Texto
3. INTRODUCCIÓN A LA PROGRAMACIÓN
Arreglos Ing. Nahiby Castillo.
Unidad 3 Punteros.
Objetivos Específicos de la Unidad
Arreglos Prof. CÉSAR MOLINA.
ESTRUCTURAS DE CONTROL
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
GRAFOS HUGO ARAYA CARRASCO.
Fundamentos de Programación
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
M.C. Yalu Galicia Hdez. (FCC/BUAP)
FUNDAMENTOS DE PROGRAMACIÓN
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
ARREGLOS BIDIMENSIONALES
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Estructuras de Datos Arreglos.
Clase 10: Estructuras de datos y arreglos.
Tablas de Hash.
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Fundamentos de Programación
COMPONENTES DE UN ALGORITMOS
Aplicación de estructuras de datos
Ordenación y Búsqueda.
Arreglos Programación I MC Beatriz Beltrán Martínez.
Unidad 4. Arreglos y Cadenas. Definición de Arreglo:  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Fundamentos de Programación
FUNDAMENTOS DE PROGRAMACIÓN Unidad II. Elaborar programas en pseudolenguaje, de acuerdo a requerimientos. Unidad II.
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Algoritmo Ing. Maria Rosana Heredia
Introducción a la programación
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Algoritmos de Ordenamiento y Complejidad
Arreglos Otoño  Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La.
Tipos de Datos abstractos
Matrices Prof. Flor Narciso Departamento de Computación
Algoritmos y Estructura de Datos Tema: Vectores 2
Vectores y Matrices.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Términos algoritmo diseñar algoritmo implementar algoritmo
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Ordenamiento en lenguaje c
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Estructura de datos I CIS - UABJB.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Arreglos Vectores y Matrices.
Fundamentos de Programación
Presente un cuestionario con los aspectos mas importantes sobre los
Computación I. CI-2125 Tema VII
Lic. Carla Aguirre Montalvo

ARREGLOS BIDIMENSIONALES MATRICES Son un espacio de almacenamiento continuo, que contiene una serie de elementos del mismo tipo de datos. Desde el punto.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Programación I MC Beatriz Beltrán Martínez
Transcripción de la presentación:

Metodología de la Programación Arreglos

Definición 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.

Definición 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An.

Definición 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 del arreglo. Homogénea: Todos los elementos de un arreglo son del mismo tipo o naturaleza (todos enteros, todos booleanos, etc,), pero nunca una combinación de distintos tipos. Ordenada: Se debe determinar cuál es el primer elemento, el segundo, el tercero..... y el n-ésimo elemento.

Características 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.

Características 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.

Representación 1 n n elementos Los arreglos pueden contener un mínimo de cero elementos hasta un máximo de n elementos.

Ejemplo A continuación se muestra un arreglo llamado EDADES, que contiene las edades de la clase de natación en la BUAP. Límite superior Límite inferior EDADES 16 17 18 19 20 21 22 23 24 25 EDADES[1] EDADES[3] EDADES[5] EDADES[7] EDADES[9] EDADES[2] EDADES[4] EDADES[6] EDADES[8] EDADES[10]

Clasificación Los arreglos se clasifican en: Unidimensionales (Vectores): un sólo índice Bidimensionales (Tablas o Matrices): dos índices Multidimensionales: más de dos índices

Metodología de la Programación Arreglos unidimensionales Otoño 2013

Características Los arreglos unidimensionales deben cumplir lo siguiente: Compuesto por un número de elementos finito. Tamaño fijo: el tamaño del arreglo 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.

Ejemplo 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. PRECIO Nombre del arreglo 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 Índices

<NombreVector>[subíndice]  <Valor> Operaciones Asignación En general no es posible asignar directa un valor a todo el arreglo, sino que se debe asignar el valor deseado a cada elemento. La manera de asignar (insertar) un valor en cada elemento del arreglo unidimensional es mediante el subíndice que indica la posición, se puede utilizar la siguiente forma: <NombreVector>[subíndice]  <Valor> Ejemplo: A[1] 10 PAIS[2]  ‘Francia’ PRECIO[3]  PRECIO[2]+10.5

Operaciones Lectura Escritura Este proceso de lectura de un arreglo consiste en leer un valor de cada elemento del arreglo y asignarlo a una variable. La lectura se realiza de la siguiente manera: Para i  1 hasta N hacer leer(ARREGLO[i]) Fin_Para Escritura Consiste en asignarle un valor a cada elemento del arreglo. Para i 1 hasta N hacer  escribir(ARREGLO[i])

Ejemplo Leer un arreglo de N precios y obtener el promedio: Inicio Leer(n) prom 0 Para i1 hasta n hacer leer(precio[i]) promprom+precio[i] Fin_para promprom/n Escribir(«El promedio es:»,prom) Fin

Metodología de la Programación Cadenas Otoño 2013

Conceptos Básicos 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.

Conceptos Básicos 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” “&/ #$%”

Conceptos Básicos 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.

Operaciones Básicas Asignación. Entrada/ Salida 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.

Operaciones Básicas 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.

Operaciones Básicas 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.

Problema El siguiente algoritmo sustituye las ‘e’ por ‘*’. Inicio Escribir (“Escriba una palabra") Leer (str) Para i=1 hasta len(str) hacer 4.1 Si str[i] = `e´ entonces str[i]  `*´ 4.2 Fin_si Fin_para Escribir (str) Fin

Problema El siguiente algoritmo imprime una cadena de manera invertida:   Inicio Escribir (“Escriba una palabra") Leer (str) Para i=len(str) hasta 1, con decrementos hacer 4.1 Escribir (str[i]) Fin_para Fin

Problema El siguiente algoritmo realiza lo siguiente, dada una cadena en minúsculas, la convierte en mayúsculas Inicio Escribir ("Escriba una palabra") Leer (str) Para i=1 hasta len(str) hacer 4.1 Si ‘a’>=str[i]<=’z’ entonces Valor(str[i]) Valor(str[i])-32 4.2 Fin_si Fin_para Escribir ("La cadena es:",str) Fin

Metodología de la Programación Ordenamiento Otoño 2013

Clasificación por intercambio directo 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.

Clasificación por intercambio directo Procedimiento burbuja Inicio Para i 1 a n-1 hacer Para j  n a i+1 con decrementos de 1 hacer Si A[j] < A[j-1] entonces temp  A[j] A[j]  A[j-1] A[j-1]  temp Fin_si Fin_para Fin

Clasificación por intercambio directo 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.

Clasificación por intercambio directo Procedimiento shakeSort Inicio l2 r  n k n Repetir Para jr a l decrementos 1 hacer Si A[j-1] > A[j] entonces temp  A[j] A[j]  A[j-1] A[j-1]  temp k  j Fin_si Fin_para l  k+1 Para j l a r hacer Si A[j-1] > A[j] entonces temp  A[j] A[j]  A[j-1] A[j-1]  temp k  j Fin_si Fin_para r  k-1 Hasta l > r Fin

Clasificación por inserción 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: Se encuentra un elemento A[j] que tiene una llave menor que la de A[i]. El extremo izquierdo de la secuencia destino es alcanzado.

Clasificación por inserción Procedimiento insercionDirecta Inicio Para i 2 a n hacer A[0]A[i] j i Mientras A[j] < A[j-1] hacer temp  A[j] A[j]  A[j-1] A[j-1]  temp j  j-1 Fin_mientras Fin_para Fin

Clasificación por inserción 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.

Clasificación por inserción Procedimiento insercionBinaria Inicio Para i 2 a n hacer x A[i] L1 Ri Mientras L < R hacer m  (L+R) div 2 Si A[m] <= x entonces L  L+1 Sino R  m Fin_si Fin_mientras Para ji a R+1 (decremento en 1) hacer A[j]  A[j-1] Fin_para A[R]  x Fin

Clasificación por selección directa Este método se basa en los siguientes principios: Seleccionar el elemento que tenga la llave menor. Intercambiarlo con el primer elemento 1. 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).

Clasificación por selección directa Procedimiento selecciónDirecta Inicio Para i1 a n-1 hacer k i xA[i] Para j  i+1 a n hacer Si A[j] < x entonces k j x A[k] fin_si fin_para A[k]  A[i] A[i]  x Fin

Métodos de clasificación avanzados Inserción por decremento decreciente Un refinamiento de la inserción directa fue propuesto por D.L. Shell en 1959.

Métodos de clasificación avanzados Procedimiento shellSort Inicio h[1]9 h[2]5 h[3] 3 h[4] 1 Para m 1 a t hacer // t es el tamaño del arreglo h k h[m] sk Para i  k+1 a n hacer xA[i] ji-k Si s=0 entonces sk fin_si ss+1 A[s]x Mientras x<A[j] hacer A[j+k]A[j] jj-k fin_mientras A[j+k]x fin_para Fin

Metodología de la Programación Búsqueda Otoño 2013

Búsqueda Lineal 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.

Búsqueda Lineal 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.

Búsqueda Lineal Procedimiento busquedaLineal (elemento) Inicio i1 Mientras (i <= N) y (A[i] <> elemento) hacer ii+1 Fin_mientras 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.

Búsqueda Binaria Para utilizar este algoritmo es necesario que la colección este ordenada. La idea clave consiste en inspeccionar el elemento medio 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.

Búsqueda Binaria Procedimiento busquedaBinaria(x) Inicio L 0 RN found  false Mientras L< R y not (found) hacer m(L+R) div 2 Si A[m]=x entonces foundtrue Sino Si A[m] < x entonces L  m+1 Sino R m fin_si fin_mientras Fin