Documente Academic
Documente Profesional
Documente Cultură
ESTRUCTURAS DE DATOS
Hasta ahora se han usado datos que representan valores de tipo simple como un número
entero, real ó carácter.
Sin embargo, en muchas situaciones se necesita procesar un conjunto de valores que están
relacionados entre sí por algún método, por ejemplo, una lista de calificaciones, una serie
de temperaturas.
En este caso, el procesamiento con datos simples se hace muy difícil, por lo que la
mayoría de los lenguajes de programación incluyen características de estructuras de
datos.
Una selección cuidadosa de la estructura permitirá usar un algoritmo más eficiente. Una
estructura bien diseñada permitirá efectuar una variedad de operaciones, usando un
mínimo de tiempo de ejecución y espacio de memoria.
Entero
Real
Datos SIMPLES
Carácter
Lógico
Arreglos
Datos ESTRUCTURADOS Registros
Archivos
Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria
se define antes de que el programa se ejecute y no puede modificarse dicho tamaño
durante la ejecución del programa.
DIMENSIÓN. - Es el tamaño del arreglo que separa en memoria para almacenar datos
del mismo tipo.
UNIDIMENSIONALES:
X[ 8 ]
Elemento de un Vector Identificador o Posición del Vector
Algoritmo sin_titulo
Definir X como (Tipo de Dato);
Dimension X[8];
Instrucciones…..
FinAlgoritmo
BIDIMENSIONALES (TABLA, MATRIZ):
A [ 8,8 ]
Elemento de la Matriz Identificador o Posición de la Matriz
[Filas, Columnas]
Algoritmo sin_titulo
Definir A como (Tipo de Dato);
Dimension A[8,8];
Instrucciones…..
FinAlgoritmo
1 2 3 4 5 6 7 8 9
A[1,1] A[1,2] A[1,3] A[1,4] A[2,1] A[2,2] A[2,3] A[2,4] A[3,1] ……
Así la posición dentro del arreglo del elemento A[2,3] del ejemplo anterior sería:
m = 3, n = 4, i = 2, j = 3 Posición = 4 * (2 - 1) + 3 = 7
Las operaciones que se pueden realizar con arreglos durante el proceso de resolución de
un problema son:
Asignación
Lectura / Escritura
Recorrido
Búsqueda
Ordenamiento.
ASIGNACIÓN:
Ventas [2,2] = 1500 asigna el valor 1500 al elemento 2,2 de la Matriz Ventas
Algoritmo sin_titulo
Definir A,i como entero;
Dimension A[5];
Algoritmo sin_titulo
Definir M,i,j como entero;
Dimension M[5,5];
LECTURA / ESCRITURA :
Leer(Nombre_del_arreglo [Indentificador])
Escribir(Nombre_del_arreglo [Indentificador])
Ej :
Leer(X[3]) Lee el elemento 3 del vector X
RECORRIDO:
A la operación de efectuar alguna acción sobre todos los elementos del vector se le
llama recorrido. Estas operaciones se realizan usando estructuras de repetición,
cuyas variables de control se usan como indentificador del vector. Se puede realizar
esta operación para introducir datos al vector (leer) o para ver su contenido (escribir).
Caso Unidimensional:
Algoritmo sin_titulo
Definir P,i como entero;
Dimension P[10];
FinAlgoritmo
Caso Bidimensional:
Dado que es una matriz de dos dimensiones, se necesitan dos bucles anidados
para recorrer todos sus elementos.
Algoritmo sin_titulo
Definir A,i como entero;
Dimension A[10,10];
FinAlgoritmo
BÚSQUEDA:
Búsqueda secuencial:
Se usa además una variable tipo interruptor (sw), la cual se inicializa en cero antes
de comenzar el ciclo de búsqueda y se cambia a uno cuando se encuentra el nombre
buscado.
Caso Unidimensional:
Algoritmo sin_titulo
Definir i,sw,n como entero;
Definir V,buscar como cadena;
Dimension V[10];
// Imprimir resultado
Si sw=1 Entonces
Escribir “Nombre Encontrado”;
Sino
Escribir “Nombre no existe”;
FinSi
FinAlgoritmo
Caso Bidimensional:
Algoritmo sin_titulo
Definir i,j,sw,n como entero;
Definir M,buscar como cadena;
Dimension M[10,10];
// Imprimir resultado
Si sw=1 Entonces
Escribir “Nombre Encontrado”;
Sino
Escribir “Nombre no existe”;
FinSi
FinAlgoritmo
ORDENAMIENTO
aux = A[i]
A[i] = A[i+1]
A[i+1] = aux
o Caso Unidimensional:
Algoritmo sin_titulo
Definir i,j,n como entero;
Definir V, aux como cadena;
Dimension V[10];
o Caso Bidimensional:
Algoritmo sin_titulo
Definir i,j,k,n como entero;
Definir M, aux como cadena;
Dimension M[10,10];
Los arreglos o arrays en PseInt son estructuras que almacenan valores del mismo tipo
como números o cadenas. Tiene una longitud determinada. Lo primero es declarar su
dimensión, indicando el nombre del arreglo o array y su longitud dentro de [ ].
1. Algoritmo Prueba
2. Definir num como entero;
3. Dimension num[5];
4. FinAlgoritmo
Debemos definir num con el tipo de dato que queramos que sea, en este caso numérico,
ya que si no al recorrer nos saltará un error.
En los arrays o arreglos empiezan desde 1 y acaban en la longitud que hayamos definido.
1. Algoritmo Prueba
2. Definir num como entero;
3. Dimension num[5];
4. num[1]=5;
5. num[2]=10;
6. num[3]=15;
7. num[4]=20;
8. num[5]=25;
9. FinAlgoritmo
Como vemos, simplemente debemos indicar el nombre del array, el indice y su valor.
Deben estar dentro de la longitud creada, es decir, que en este caso no podríamos asignar
un valor al indice 6.
Para recorrer un array, deberemos usar una estructura repetitiva, lo más recomendable es
un Para o Desde donde la variable que declaremos, se insertara en el índice haciendo que
en cada repetición varié.
Veamos un ejemplo:
1. Algoritmo Prueba
2. Definir num como entero;
3. Dimension num[5];
4. num[1]=5;
5. num[2]=10;
6. num[3]=15;
7. num[4]=20;
8. num[5]=25;
9. Para i<-1 Hasta 5 Con Paso 1 Hacer
10. escribir num[i];
11. FinPara
12. Fin Algoritmo
Además de mostrar los valores, también podemos introducirlos por teclado con leer
nombre_array [indice] si queremos introducir valores en todos los índices, para ello
usaremos un bucle.
Veamos un ejemplo:
1. Algoritmo Prueba
2. Definir num como entero;
3. Dimension num[5];
4. num[1]=5;
5. num[2]=10;
6. num[3]=15;
7. num[4]=20;
8. num[5]=25;
9. Para i<-1 Hasta 5 Con Paso 1 Hacer
10. leer num[i];
11. FinPara
12. Para i<-1 Hasta 5 Con Paso 1 Hacer
13. escribir num[i];
14. FinPara
15. FinAlgoritmo
Recuerda que podemos hacer lo que queramos con lo valores del array o arreglo, como
sumar sus valores, hacer una media, etc.
Por último, si has probado otros lenguajes de programación sabrás que se puede saber el
tamaño de un array o arreglo, con un método. En pseudocódigo esto no existe, pero si
podemos hacer para ello, podemos usar una constante para indicar el tamaño. La mayor
ventaja es que si cambiamos el tamaño de un array o arreglo, solo deberemos cambiar en
un lugar y no en todos.
Veamos un ejemplo:
1. Algoritmo Prueba
2. Definir num como entero;
3. TAMANIO=5;
4. Dimension num[TAMANIO];
5. num[1]=5;
6. num[2]=10;
7. num[3]=15;
8. num[4]=20;
9. num[5]=25;
10. Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
11. Escribir "Escribe un valor para el indice ",i;
12. leer num[i];
13. FinPara
14. Para i<-1 Hasta TAMANIO Con Paso 1 Hacer
15. escribir num[i];
16. FinPara
17. FinAlgoritmo
TALLER GRUPAL
2. Escribir un programa que lea una matriz de 3 filas y 3 columnas de valores enteros.
A continuación, el programa debe pedir el número de una fila. El programa deberá
devolver el máximo de esa fila.
4. Escribir un programa que lea una matriz de números enteros y que devuelva la
suma de los elementos positivos de la matriz y la suma de los elementos negativos.
6. Escribir un programa que lea una matriz de 4 filas y 3 columnas, la visualice por
pantalla y a continuación encuentre el mayor y el menor elemento de la matriz y
sus posiciones.
TALLER PARA REALIZAR EN CASA
EJERCICIOS PROPUESTOS
Matriz A:
[02][02][07][09]
[06][17][26][15]
[10][10][14][03]
Matriz B:
[10][20][13][04]
[02][03][20][17]
[10][10][20][01]
Matriz A:
[20][20][07][09]
[06][17][26][15]
[10][10][14][03]
Matriz B:
[10][02][13][04]
[02][03][02][17]
[10][10][02][01]
Matriz A:
[02][02][07][09]
[06][17][26][15]
[10][10][14][03]
[07][10][09][01]
[01][02][07][09]
[06][14][26][15]
[10][10][17][03]
[07][10][09][02]
Matriz A:
[02][02][07][09]
[06][17][26][15]
[10][10][14][03]
[07][10][09][01]
[01][02][07][07]
[06][14][10][15]
[10][26][17][03]
[09][10][09][02]
9. Generar una matriz cuadrada de números pares, dicha generación debe ser de
forma espiral en el sentido de las manecillas del reloj.
10. Generar una matriz cuadrada de número impares, dicha generación debe ser de
forma espiral en el sentido contrario al de las manecillas del reloj.
11. Determinar los números primos hasta el N, según la Criba de Eratóstenes, que
consiste en poner todos los números del 2 al N en una tabla (matriz) e ir tachando
los múltiplos de cada número.
12. Ingresar una matriz cuadrada de caracteres, controlando que los elementos de la
diagonal principal sean solo vocales y los elementos de la diagonal secundaria
sean solo consonantes, excepto el elemento central (en el caso de las matrices con
dimensión impar), el cual podrá ser cualquier letra.
13. Ingresar una matriz de m x n y almacenar los elementos de sus bordes en un vector.
14. Generar una matriz binaria (0s y 1s), de n filas y 8 columnas, donde los elementos
de las 7 primeras columnas se generen aleatoriamente y los elementos de la octava
columna se asignen de la siguiente manera: si en la fila existe un número par de
1s el octavo elemento será 0, caso contrario será 1. (matriz con paridad).
15. Ingresar una vocal y dibujar la vocal en mayúscula con unos, en una matriz
cuadrada de dimensión 5x5.
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1
1 1 1 1 1 1 1 1 1 1 1
1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1 1 1 1 1 1 1
a) Las notas
b) La nota mayor,
c) La nota menor
d) El promedio de las notas,
e) El número de notas que superaron el promedio son,
f) La cantidad de alumnos aprobados son,
g) La cantidad de alumnos reprobados son,
2. Dados
A: 3568478531 y B: 3468912309
MATRICES
5. Realizar un programa que cree una matriz de 3×3 que me pida los números, que
sume la fila y la columna del medio y que al final sume el resultado de estos.
6. Realizar un programa que cree una matriz de longitud n y que el usuario llene la
matriz, además que ingrese un numero para restar los datos la diagonal1 por el
numero ingresado.
7. Realizar un programa que cree una matriz de longitud n y que el usuario llene la
matriz, además que ingrese un numero para multiplicar las columnas impares por
el numero ingresado.
8. Realizar un programa que cree una matriz de longitud n y que el usuario llene la
matriz, además que la matriz sume todos sus datos ingresados por el usuario y que
imprima el resultado.
9. Realizar un programa que cree una matriz de longitud n y que el usuario llene la
matriz, y por último que multiplique por el mismo número los datos de la primera
fila.
10. Dada una matriz Z almacenar en un vector A la suma por sus columnas y en un
vector B la suma por sus filas.
Matriz Z:
[02][02][07][09] = 20
[06][17][26][15] = 64
[10][10][14][03] = 37
= = = =
18 29 47 27
Vector A: [20][64][37]
Vector B: [18][29][47][27]
BIBLIOGRAFIA