Estructura de Datos Arreglos.pages

Anuncio
Estructura de Datos
Arreglos
Experiencia Educativa de Algorítmica
ESTRUCTURA DE DATOS - ARREGLOS
1
Introducción
Una estructura de datos es una colección de datos que pueden ser caracterizados por su
organización y las operaciones que se definen en ella. Son muy importantes en todos los
sistemas que realizamos. Como vimos anteriormente teníamos los Datos Simples:
Estándar (entero, real, carácter, lógico) y los definidos por el programador. Ahora
agregamos los datos estructurados, estos son de tipo estáticos y dinámicos
Los estáticos son:
•
Arreglos (Vectores y Matrices)
•
Registros
•
Ficheros (Archivos)
•
Conjuntos
•
Cadenas
Dinámicos:
•
Listas (Pilas y Colas)
•
Listas enlazadas
•
Árboles
•
Grafos
Las estructuras de datos estáticas se les define el tamaño ocupado en memoria antes de
que el programa se ejecute y no puede modificarse durante su ejecución.
Las estructuras de datos dinámicas, por otro lado no tienen limitaciones o restricciones, su
tamaño puede crecer o disminución en el tiempo de ejecución.
ARREGLOS
Un array o arreglo (matriz o vector) es un conjunto finito, ordenado y homogéneo de
elementos. Cuando decimos que ordenado no referimos a que los elementos van del
primero, segundo, tercero, etc…
Es homogéneo porque son del mismo tipo de datos, esto es si es un arreglo de números
todos serán números, si es de carácter, todos serán carácter.
ESTRUCTURA DE DATOS - ARREGLOS
2
El tipo más simple de un arreglo es aquel que denominamos por unidimencional, es decir
una matriz de una dimensión
Comando usado en pseint es Dimension seguido del nombre del arreglo y su tamaño
entre corchetes [ ]
Hay que recordar que un arreglo antes de ser utilizado debe de ser definido, en caso de
ser de tipo numérico, ya sea entero o real, se define como “Numeros”, si es de Carácter
como “Caracter”.
Dimension variable [ ]
Ejemplo
Proceso Arreglo1
Definir arreglo Como Entero;
Definir x, num como Entero;
Dimension arreglo[5];
Para x<-0 Hasta 4 Hacer
Escribir "Introduce un numero";
Leer num;
arreglo[x] <- num;
FinPara
Escribir "El arreglo contiene los elementos: ";
Para x<-0 Hasta 4 Hacer
Escribir arreglo[x] ;
FinPara
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
3
Práctica 6
Nota: En todos los ejercicios deben leer los elementos desde pantalla y posteriormente
imprimirlos en pantalla.
1.- Capturar 5 nombres desde pantalla
2.- Llenar un arreglo numérico de tamaño 5
3.- Llenar un arreglo de números reales de tamaño 10
4.- Llenar un arreglo numérico de tamaño 10 e imprimir en orden inverso
5.- Obtener el tamaño del arreglo y llenarlo
6.- Hacer la suma de los elementos de un arreglo de tamaño definido por el usuario.
7.- Obtener el promedio de los elementos de un arreglo de tamaño definido por el usuario
8.- Manejar dos arreglos paralelamente, en donde un arreglo corresponda a la matricula y
otro al nombre del alumno.
9.- Hacer la suma de dos arreglos y obtener un arreglo resultado
10.- Hacer la suma de tres arreglos
11.- Llenar un arreglo estático
ESTRUCTURA DE DATOS - ARREGLOS
4
Respuesta:
Proceso Ejercicio1
Definir nombres como Caracter;
Definir x como Entero;
Dimension nombres[5];
Para x<-0 Hasta 4 Hacer
Escribir "Introduce un nombre";
Leer nombres[x];
FinPara
Para x<-0 Hasta 4 Hacer
Escribir nombres[x];
FinPara
FinProceso
Proceso Ejercicio2
Definir x, num como Entero;
Dimension num[5];
Para x<-0 Hasta 4 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-0 Hasta 4 Hacer
Escribir num[x];
FinPara
FinProceso
Proceso Ejercicio3
Definir x como Entero;
Definir num como Real;
Dimension num[5];
Para x<-0 Hasta 4 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-0 Hasta 4 Hacer
Escribir num[x];
FinPara
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
5
Proceso Ejercicio4
Definir x, num como Entero;
Dimension num[10];
Para x<-0 Hasta 4 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-4 Hasta 0 Con Paso -1 Hacer
Escribir num[x];
FinPara
FinProceso
Proceso Ejercicio5
Definir x, num, tam como Entero;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension num[tam];
Para x<-0 Hasta tam-1 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
Escribir num[x];
FinPara
FinProceso
Proceso Ejercicio6
Definir x, num, tam, suma como Entero;
suma<- 0;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension num[tam];
Para x<-0 Hasta tam-1 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
suma<- suma + num[x];
FinPara
Escribir "Suma = " , suma;
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
6
Proceso Ejercicio7
Definir x, num, tam como Entero;
Definir promedio como Real;
promedio<- 0;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension num[tam];
Para x<-0 Hasta tam-1 Hacer
Escribir "Introduce un numero";
Leer num[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
promedio<- promedio + num[x];
FinPara
promedio <- promedio / tam;
Escribir "Promedio = " , promedio;
FinProceso
Proceso Ejercicio8
Definir x, tam como Entero;
Definir matricula, nombre como Caracter;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension matricula[tam], nombre[tam];
Para x<-0 Hasta tam-1 Hacer
Escribir "Introduce la matricula";
Leer matricula[x];
Escribir "Indroduce el nombre";
Leer nombre[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
Escribir matricula[x], " - ", nombre[x];
FinPara
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
7
Proceso Ejercicio9
Definir x, tam, num1, num2, total como Entero;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension num1[tam], num2[tam], total[tam];
Escribir "llenando arreglo 1";
Para x<-0 Hasta tam-1 Hacer
Leer num1[x];
FinPara
Escribir "llenando arreglo 2";
Para x<-0 Hasta tam-1 Hacer
Leer num2[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
total[x] <- num1[x] + num2[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
Escribir total[x];
FinPara
FinProceso
Proceso Ejercicio10
Definir x, tam, num1, num2, total como Entero;
Escribir "Define el tamaño del arreglo: ";
Leer tam;
Dimension num1[tam], num2[tam], total[tam];
Escribir "llenando arreglo 1";
Para x<-0 Hasta tam-1 Hacer
Leer num1[x];
FinPara
Escribir "llenando arreglo 2";
Para x<-0 Hasta tam-1 Hacer
Leer num2[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
total[x] <- num1[x] + num2[x];
FinPara
Para x<-0 Hasta tam-1 Hacer
Escribir total[x];
FinPara
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
8
Proceso Ejercicio11
Definir x, tam, num1 como Entero;
Dimension num1[5];
num1[0] <- 1;
num1[1] <- 2;
num1[2] <- 3;
num1[3] <- 4;
num1[4] <- 5;
Para x<-0 Hasta 4 Hacer
Escribir num1[x];
FinPara
FinProceso
ESTRUCTURA DE DATOS - ARREGLOS
9
Práctica 7: Realizar los siguientes ejercicios
1.- Llenar una pila de tamaño 10 dinámicamente a través de la secuencia numérica de 2, 4,
8, 16, 32, …. e imprimir sus elementos
2.- Llenar una cola de tamaño 20 dinámicamente a través de la secuencia numérica de 2, 4,
6, 12, 14, 16,…. e imprimir sus elementos
3.- Llenar una cola de procesos de acuerdo a la metodología de First-come, first-served
(FCFS) y determinar el Tiempo de Finalización (TF) y el Tiempo de Retorno (TR) de los
procesos enlistados a continuación:
Proceso Tiempo de Servicio
(TS)
•
1
4
2
2
3
3
4
6
TF = Tiempo de Servicio del proceso Actual + Tiempo de Espera de los procesos
anteriores.
•
El Tiempo de Espera (TE) lo calculas con la suma de los tiempos de espera de los
procesos anteriores
•
El Tiempo de Retorno (TR), es el tiempo transcurrido entre el Tiempo de Llegada del
proceso y el Tiempo de Finalización (TR = TF – Llegada)
4.- Hacer la simulación de sistema de turnos para pasar a una ventanilla a hacer un
movimiento o consulta. Para esto se sabe que el sistema de turnos tiene una cola de
tamaño máximo de 20 por día, cuando llega un cliente se le asigna un turno, si la cola esta
llena se le manda el mensaje de regresar otro día. Para avanzar la cola, el empleado de la
ventanilla va solicitando los turnos hasta que la cola queda vacía.
ESTRUCTURA DE DATOS - ARREGLOS
10
Matrices
También conocidos como arreglos bidimensionales
son el inicio de una base de datos, ya que contienen filas y columnas
Es un conjunto de elementos, todos del mismo tipo.
una matriz tiene al menos dos dimensiones y por cada una de ellas un subíndice.
para el caso de una matriz de dos dimensiones el subíndice de la izquierda se refiere a las
filas y el de la derecha a las columnas [Filas, Columnas]
Una matriz es muy utilizada para calificaciones de una clase, datos estadísticos, datos
financieros, calendarios, juegos como ajedrez o gato etc..
Proceso Ejercicio1
Definir matriz, x, y como Entero;
Dimension matriz[2,2];
matriz[0,0] <- 0;
matriz[0,1] <- 1;
matriz[1,0] <- 2;
matriz[1,1] <- 3;
Para x<-0 Hasta 1 Hacer
Para y<-0 Hasta 1 Hacer
Escribir matriz[x,y];
FinPara
FinPara
FinProceso
ESTRUCTURA DE DATOS - MATRICES
11
Práctica 8: Realizar los siguientes ejercicios
1.- Crear una matriz de enteros, llenarla estáticamente e imprimirla en pantalla.
2.- Crear una matriz de números reales, llenarla estáticamente e imprimirla en pantalla.
3.- Crear una matriz de enteros de tamaño, llenarla dinámicamente e imprimirla en
pantalla.
4.- Crear una matriz de caracteres, llenarla dinámicamente e imprimirla en pantalla.
5.- crear una tabla que contenga el nombre de 5 atletas de salto de longitud y almacene los
resultados correspondientes a la longitud de sus saltos en sus 5 pruebas realizadas.
6.- En una escuela se desea controlar los resultados de los alumnos en las distintas
asignaturas. El programa debe permitir ingresar las calificaciones de los alumnos y
visualizar en pantalla el promedio de las notas por alumno y el promedio de notas por
asignatura. Se tienen 5 materias y están inscritos 10 alumnos (las calificaciones las pueden
introducir de forma dinámica o estática)
7.- En un complejo habitacional se cuenta con 7 edificios de departamentos de 10 pisos
cada uno de ellos y cada piso tiene 2 departamentos. Debes almacenar de forma estática el número de habitantes por departamento.
Se desea saber:
a) Cantidad total de habitantes del complejo
b) Cantidad promedio de habitantes por piso de cada edificio
c) Cantidad promedio de habitantes por edificio
ESTRUCTURA DE DATOS - MATRICES
12
Funciones
Una función no es más que un bloque de código con un determinado fin o propósito,
podemos definir más de una y nos permiten ahorrar líneas código si nuestros programas
son muy extensos o hay codificación redundante.
En PseInt las Funciones o Subprocesos comienzan con la palabra reservada Función y
terminan con FinFuncion o también se puede usar SubProceso - FinSubProceso.
Siempre se declaran afuera del proceso principal para ser llamados o invocados en éste.
También pueden o no retornar un valor o recibir cierta cantidad de argumentos.
El ejemplo base del uso de funciones es:
Funcion mensaje()
Escribir "Usando funciones";
FinFuncion
Proceso Ejercicio1
mensaje();
FinProceso
En el caso de SubProcesos:
SubProceso mensaje()
Escribir "Usando sub procesos";
FinSubProceso
Proceso ejercicio2
mensaje();
FinProceso
Ahora como se hace el envío de variables sin retornar:
SubProceso Operación (num1, num2)
Definir suma Como Entero;
suma <- num1 + num2;
ESTRUCTURA DE DATOS - FUNCIONES
13
Escribir suma;
FinSubProceso
Proceso Ejercicio3
Operacion(10, 5);
FinProceso
Envio de variables y retornando un valor:
SubProceso suma <- Operacion (num1, num2)
Definir suma Como Entero;
suma <- num1 + num2;
FinSubProceso
Proceso Ejercicio3
Escribir Operacion(10, 5);
FinProceso
ESTRUCTURA DE DATOS - FUNCIONES
14
Descargar