Agregar a favoritos      Ayuda      Português      Ingles     

Estructura de datos

Enviado por vodd69



Partes: 1, 2

  1. Introducción
  2. Objetivos
  3. Arreglos
  4. Arreglos de tipo carácter
  5. Arreglos bidimensionales (matrices)
  6. Modularidad
  7. Metodología descendente: (top – down)
  8. Variables
  9. Procedimientos
  10. Funciones
  11. Uso de los parámetros: formales – normales o argumentos
  12. Arquitectura modular
  13. Recursividad
  14. Registros
  15. Conclusiones y recomendaciones
  16. Bibliografía
  17. Anexos
  1. PRESENTACIÓN

El presente trabajo es simplemente un camino para empezar y ver cristalizado nuestro sueño de ser un profesional altamente competitivo en el mercado, y esto como es bien sabido por todos nosotros los que formamos este núcleo estudiantil se lo debemos en gran parte a la enseñanza, ideas impartidas por el profesor de la asignatura en mención.

El curso de Estructura de Datos es una asignatura más que teórica diríamos es un 85% práctico, por que mediante este método aprendemos la lógica y el método a seguir para llegar a la solución del problema planteado.

El presente simplemente es una base para los compañeros que nos preceden, ya que en la ciudad no se cuenta con la biografía necesaria, y esperamos que sirva de guía práctica.

II. INTRODUCCIÓN

Como ya sabemos, las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de cálculo complicadas en un lapso de mínimo tiempo. Pero la mayoría de las aplicaciones de este fantástico invento del hombre, son las de almacenamiento y acceso de grandes cantidades de información.

La información que se procesa en la computadora es un conjunto de datos, que pueden ser simples o estructurados. Los datos simples son aquellos que ocupan sólo una localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador único.

Debido a que por lo general tenemos que tratar con conjuntos de datos y no con datos simples (enteros, reales, booleanos, etc.) que por sí solos no nos dicen nada, ni nos sirven de mucho, es necesario tratar con estructuras de datos adecuadas a cada necesidad.

Las estructuras de datos son una colección de datos cuya organización se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos.

Una estructura de datos se caracteriza por lo siguiente:

  • Pueden descomponerse en los elementos que la forman.
  • La manera en que se colocan los elementos dentro de la estructura afectará la forma en que se realicen los accesos a cada elemento.
  • La colocación de los elementos y la manera en que se accede a ellos puede ser encapsulada.

Ejemplo: Supongamos que nos enfrentamos a un problema como este: Una empresa que cuenta con 150 empleados, desea establecer una estadística sobre los salarios de sus empleados, y quiere saber cual es el salario promedio, y también cuantos de sus empleados gana entre $1250.00 y $2500.00.

Si tomamos la decisión de tratar este tipo de problemas con datos simples, pronto nos percataríamos del enorme desperdicio de tiempo, almacenamiento y velocidad. Es por eso que para situaciones de este tipo la mejor solución son los datos estructurados.

V. OBJETIVOS:

El objetivo por el cual fue el presente trabajo de Estructura de Datos, es el establecer un material de apoyo y consulta para ti que eres alumno de Ingeniería Informática y de Sistemas o de cualquier otra área afín en la cual se imparta la materia de Estructura de Datos. Una vez que hayas terminado de revisar detenidamente este material, serás capaz de establecer estructuras lógicas de datos que te permitan hacer un uso más eficiente del espacio de memoria, de minimizar los tiempos de acceso, así como de lograr formas más efectivas de inserción y eliminación de datos en estructuras de almacenamiento. Ahora que ya sabes en lo que te puede ayudar este tutorial, puedes empezar a hacer uso de él, consultando todas tu tareas y dudas que tengas acerca de la materia.

Acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.

  • CONTENIDOS

ARREGLOS

CONCEPTO :

Es un conjunto de datos o una estructura de datos homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM ( sirve para almacenar datos en forma temporal).

Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos:

  • De una dimensión.
  • De dos dimensiones.
  • De tres o más dimensiones

1. ARREGLOS UNIDIMENSIONALES

Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.

Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior.

Ejemplos

1. Diseñar un algoritmo que ingrese 30 notas aprobados y que me muestre la nota mayor y el promedio de todas (Nota>=10.5 y Nota<=20)

Solución :

Inicio

nota[30], s, may, p : real

i : entero

s←0

para (i=1; i<=30; i++)

repetir

Ingresar nota [i]

hasta (nota[i]>=10.5) y (nota[i]<=20)

s ← s + nota[i]

si (i=1) entonces

may ← nota[i]

sino

si (nota[i]>may) entonces

may ← nota[i]

fin _ si

fin _ si

fin _ para

p ← s/30

mostrar "PROMEDIO TOTAL ES",p

mostrar "LA NOTA MAYOR ES",may

Fin

2. Ingresar 30 valores cualesquiera y determinar cuantos de estos valores son iguales al promedio de los 30 valores ingresados anteriormente.

Solución :

Inicio

num[30], i, s ß 0, c ß 0 : entero

p : real

para(i=1;i<=30;i++)

Ingresar num[i]

S ß s + num[i]

fin_para

p ß s/30

para(i=1;i<=30;i++)

si (p=num[i]) entonces

cß c+1

fin_si

fin_para

mostrar "Números Iguales al promedio",c

Fin

  1. Controlar el siguiente menú :
  1. Ingresar .- En esta opción usted deberá ingresar 20 números positivos que no sean mayores que 100.
  2. Mostrar .- En esta opción usted deberá calcular y mostrar el promedio solo de los números cuyo primer digito de su izquierda sea el 2 y el 3.

Solucion :

Inicio

num[20], i, opc, indß 0, c, s : entero

p : real

repetir

mostrar "1 : INGRESAR"

mostrar "2 : MOSTRAR"

mostrar "3 : SALIR"

repetir

ingresar opc

hasta (opc>=1) y (opc<=3)

según_sea opc hacer

1 : Inicio

para (i=1; i<=20; I++)

repetir

ingresar num [i]

hasta (num[1]>0) y (num[i]<=100)

fin_para

Fin

2 : Inicio

si (ind=1) entonces

cß 0

sß 0

para(i=1; i<=20; i++)

si (num[i]>=20 y num[i]<40) entonces

sß s+num[i]

cß c+1

fin_si

fin_para

si (c=0) entonces

mostrar "NO EXISTE NUMERO CON DIGITOS 2 Y 3"

sino

pß s/c

mostrar "promedio",p

fin_si

sino

mostrar "INGRESE DATOS"

fin_si

fin

fin_según sea

Hasta (opc=3)

fin

4. Diseñar un algoritmo que ingrese 15 números cualesquiera.

Solución :

Inicio

num[15]: entero

i: entero

para (i=1; i<=15; i++)

Ingresar num[i]

Fin _ para

Fin

5. Utilizando arreglos, ingresar 15 números y calcular cual es el número menor.

Solución :

Inicio

i, men, Num[15]: entero

para (i=1; i<=15; i++)

Ingresar Num[i]

si (i=1) entonces

men ← num[i]

sino

si (Num[i]< men) entonces

menor ← Num[i]

Fin _ si

Fin _ si

Fin _ para

Fin

Con Alternativas Múltiples

6. Diseñar un algoritmo que controle las siguientes opciones del menú:

1. Ingresar : En esta opción Ud. deberá ingresar 30 números positivos cualesquiera.

2. Mostrar : En esta opción Ud. deberá mostrar el promedio y tambien cuantos números superan dicho promedio.

3. Salir.

Solución :

Inicio

opc: caracter

num[30]: entero

i, s ← 0, c ← 0, sw: entero

p : real

sw ← 0

repetir

Mostrar "1.- Ingresar"

Mostrar "2.- Mostrar"

Mostrar "3.- Salir"

repetir

pedir opc

hasta (opc>=1 y opc <=3)

1: Inicio

sw ← 1

para (i=1; i<=30; i++)

repetir

pedir num[i]

hasta (num[i]>0)

Fin _ para

Fin

2: Inicio

si (sw = 1) entonces

s ← 0

para (i=1; i<=30; i++)

s ← s+ num[i]

fin _ para

p ← s/30

c ← 0

para (i=1; i<=30; i++)

si (num[i]>0) entonces

c ← c + 1

fin _ si

fin _ para

si (c = 0) entonces

mostrar "NÚMEROS IGUALES"

sino

mostrar p,c

fin _ si

sino

Mostrar "Aún no ingresar datos"

Fin _ si

hasta opc = 3

Fin

7. Almacenar en un arreglo los 5 primeros números primos positivos.

Solución:

Inicio

primo[5]: entero

i, n, d, c: entero

c ← 0

n ← 0

repetir

n ← n+1; d ← 0

para (i=1; i<=n; i++)

si (n mod i=0) entonces

d ← d+1

fin _ si

fin _ para

si (d=2) entonces

c ← c+1

primo[c] ← N

Fin_si

hasta (c=5)

Fin

8. Ingresar 2 números y mostrar cual es el mayor de ellos.

Solución:

Inicio

a, b : entero

pedir a

si (a>b) entonces

mostrar "a mayor", a

sino

si (b>a) entonces

mostrar "b mayor"

sino

si (a=b) entonces

son iguales

Fin _ si

Fin _ si

Fin _ si

Fin

9. Ingresar un número positivo y mostrar cual es su mitad.

Solucion :

Inicio

Ingresar N

repetir

pedir N hasta que N>0

N=N/2

Mostrar "La mitad es" N/2

Fin _ repetir

Fin

10 Ingresar un número par y mostrar sus divisores; el número par debe ser positivo.

Solución :

Inicio

n, i, c ← 0: entero

repetir

Ingresar n

hasta (n>0) y (n mod 2=0)

para (i=1; i<=n; i++)

si (n mod i=0) entonces

c ← c+1

Mostrar i

Fin _ si

Fin _ para

Mostrar "Cantidad de divisores"

Fin

11. Ingresar 5 números negativos y calcular su media aritmética.

Solución :

Inicio

repetir

Ingresar n

hasta (n<0 y n mod 2=0)

para (i=0; i<=5; i++)

si (n mod i=0) entonces

c ← c+1

mostrar i

fin _ si

fin _ para

escribir "MEDIA ARITMÉTICA ES ", C

Fin

12. Ingresar 5 números en un arreglo.

Solución :

Inicio

num[5]:entero

i: entero

para (i=1; i<=5; i++)

ingresar num[5]

Fin _ para

Fin

13. Ingresar 5 números positivos. No utilizar la estructura repetir desde.

Solución :

Inicio

i, num[5]: entero

i ← 1

mientras (i<=5)

repetir

Ingresar num[i]

hasta (num[i]>0)

i ← i+1

Fin _ mientras

Fin

14. Ingresar un número mayor que 50 y calcular la suma y el promedio de sus 5 primeros divisores. Almacenar los divisores en un arreglo.

Solución :

Inicio

x ← 0, s ← 0, c ← 0

repetir

Ingresar n

hasta (n>50)

repetir

x ← x+1

si (n mod x=0) entonces

c ← c+1

divisor[c] ← x

fin _ si

hasta (c=s)

para (i=1; i<=5; i++)

s ← s + divisor[i]

fin _ para

mostrar "EL PROMEDIO ES", p

mostrar "LA SUMA ES", s

Fin

15. Almacenar en un arreglo todos los números primos que se encuentren entre 1 y 40.

Solución :

Inicio

para (i=2; i<=39; i++)

d ← 0

para (j=1; j<=i; j++)

si (i mod j=0) entonces

d ← d+1

fin _ si

fin _ para

si (d=2) entonces

c ← c+1

primo[c]+ i

fin _ si

fin _ para

fin

16. Controlar el siguiente menú:

1. Pares: ingresar 35 números pares negativos y mostrar el valor absoluto del promedio.

2. Impares: Ingresar 10 números impares positivos que sean dígitos para luego determinar el promedio de los mismos.

3 Salir: En esta opción Ud. deberá confirmar si desea abandonar la ejecución del algoritmo.

Solución :

Inicio

num[35], opc, i : entero

s, p : entero

res : caracter

repetir

Mostrar "1.Pares"

Mostrar "2.Impares"

Mostrar "3. Salir"

repetir

Ingresar opc

hasta(opc>=1) y (opc<=3)

según _ sea opc hacer

1. Inicio

para(i=1; i<=35; i++)

repetir

Ingresar num[i]

hasta(num[i] mod 2=0) y (num[i]<0)

s ← s+num[i]

fin _ para

p ← (s/35)*-1

Mostrar "Valor absoluto", p

Fin

2º Inicio

para(i=1; i<=10; i++)

repetir

Ingresar num[i]

hasta(num[i] mod 2=1) y (num[i]>0) y (num[i]<10)

s ← s+num[i]

fin _ para

p ← s/10

Mostrar "promedio", p

Fin

3º Inicio

repetir

Ingresar "Desea salir (S/N)" Res

hasta(res=’S’) o (res=’N’)

si (res=’N’) entonces

opc ← 0

Fin _ si

Fin

Fin _ según _ sea

hasta opc=3

Fin

17. Controlar las siguientes opciones del menú:

a.- Pares – Impares : En esta opción Ud. Deberá ingresar 30 números pares e impares en forma consecutiva, donde necesariamente el primer número deberá ser un numero par luego un impar y así intercaladamente.

b.- ImparesPares : Ingresar 30 números impares – pares en forma intercalada empezando con un impar.

c.- Mostrar : En esta opción Ud. deberá mostrar la suma de los números pares ingresados en la opción A o B, también deberá el algoritmo indicar cual de las dos opciones está mostrando Ud. Ya sea A o B.

d.- Salir.

NOTA: Ud. deberá trabajar solamente con un arreglo de 30 números.

Solución :

Inicio

num[30]: entero

i, ind, s: entero

opc: caracter

repetir

Mostrar "A : Pares – Impares"

Mostrar "B : Impares – Pares"

Mostrar "C : Mostrar"

Mostrar "D : Salir"

repetir

Ingresar opc

hasta (opc="A") o (opc="B") o (opc="C") o (opc="D")

según _ sea opc hacer

A : Inicio

ind ← 1

para (i=1; i<=30; i++)

si (i mod 2=0) entonces

repetir

Ingresar num[i]

hasta (num[i] mod 2<>0)

sino

repetir

Ingresar num[i]

hasta (num[i] mod 2=0) y (num[i]<>0)

Fin _ si

Fin _ para

Fin

  1. Inicio

B : Inicio

Ind ← 2

para (i=1; i<=30; i++)

si (i mod 2=0) entonces

repetir

ingresar Num[i]

hasta (Num[i] mod 2=0) y (Num[i]<>0)

sino

repetir

Ingresar Num[i]

hasta (Num[i] mod 2<>0)

Fin _ si

Fin _ para

Fin

C : Inicio

si (ind =0) entonces

Mostrar "Aún no ingresar datos"

sino

si (ind =1) entonces

Mostrar "Resultado opción 1"

sino

Mostrar "Resultado opción 2"

Fin _ si

S ← 0

para (i=1; i<=30; i++)

si (Num[i] mod 2=0) entonces

S ← S+Num[i]

Fin _ si

Fin _ para

Mostrar "S"

Fin _ si

fin

fin _ según _ sea

hasta (opc=’D’)

fin

18. Ingresar un número que tenga 10 dígitos, donde cada dígito debe de ser almacenado en una posición del arreglo.

Solución :

Inicio

N[10] : entero

i : entero

para (i = 1; i <= 10; i ++)

si (i=1) entonces

repetir

ingresar N[i]

hasta (N[i]>0) y (N[i]<10)

sino

repetir

ingresar N[i]

hasta (N[i]>=0) y (N[i]<10)

fin_si

fin_para

Fin

19. Almacenar en un arreglo los 5 primeros números primos positivos, para luego mostrar cual es el tercer número primo calculado.

Solución :

Inicio

p[5] : entero

c ß 0, cpß 0, d, i : entero

repetir

c = c + 1

d = 0

para (i = 1; i <= c; i ++)

si (c mod i = 0) entonces

d = d + 1

fin_si

fin_para

si (d=2) entonces

cp=cp+1

p[cp]=c

fin_si

hasta (cp=5)

mostrar p[3]

fin

ARREGLOS DE TIPO CARACTER

20. Diseñar un algoritmo que ingrese una cadena de carácter cualesquiera, para luego mostrar cuantos caracteres tiene dicha cadena.

Solución :

Inicio

cad[25]: carácter

L: entero

Ingresar cad

L ← Longitud (cad)

Mostrar " Número caracter", L

Fin

21. Escribir un algoritmo que determine si una cadena de caracteres es un palíndromo ( una palabra que al revés dice lo mismo ejm: RADAR)

Solución :

Inicio

cad[30]: carácter

L, i, j, C ← 0: entero

Ingresar cad

L ← Longitud (cad)

j ← L

para (i=0; i <= L-1; i++)

j ← j -1

si (cad[i]= cad[j] ) entonces

C ← C+1

Fin _ si

Fin _ para

si (C = L) entonces

Mostrar "Palíndromo"

sino

Mostrar "No es palíndromo"

Fin _ si

Fin

22. Ingresar una cadena y mostrar cuantos vocales existen en la cadena.

Solución :

Inicio

cad[25]: caracter

L, C ← 0: entero

Ingresar cad

L ← Longitud cad

para (i=0; i<=L-1; i++)

según _ sea cad[i] hacer

‘a’ : C ← C+1

‘e’ : C ← C+1

‘i’ : C ← C+1

‘o’ : C ← C+1

‘u’ : C ← C+1

fin _ según _ sea

fin_para

Mostrar "Cantidad vocales", C

Fin

Escribir un algoritmo que permita ingresar una frase y luego la descomponga en sus palabras imprimiéndolas en líneas diferentes ejm : Estructura De Datos Estructura

De

Datos

Solución :

Inicio

cad[20] : carácter

i, L : entero

ingresar cad [i]

L ß longitud (cad)

Para ( i = 0; i <= L-1; i++)

mostrar cad [i]

si (cad [i] = ‘ ‘) entonces

saltar línea

fin_si

fin_para

fin

ARREGLOS BIDIMENSIONALES (Matrices) :

Unidimensional:

Nombre [10]: tipo

Num [10]: entero

Ingresar

Para (i =1; i £ 10; i ++)

Ingresar Num [i]

Fin_para

Fin

Bidimensional:

Nombre [fila] [columna] : tipo

Num [10] [10] : entero

Ingresar

Para (i = 1; i £ 10; i ++ )

Para (j = 1; j £ 10; j ++)

Ingresar Num [i] [j]

Fin_para

Fin_para

Fin

Ejercicios:

  1. Inicio

    Num [8] [8]: entero

    i, j, N :entero

    Repetir

    Ingresar N

    Hasta (N > 1 y N £ 8)

    Para (i = 1; i £ N; i ++)

    Para (j = 1; j £ N; j ++)

    Repetir

    Ingresar Num [i] [j]

    Hasta (Num [i] [j] ³ 0)

    Fin_para

    Fin_para

    Fin

  2. Diseñar un algoritmo que permita ingresar una matriz de orden n donde todos los elementos de dicha matriz sean números naturales.
  3. Diseñar un algoritmo que permita ingresar 35 números impares en una matriz de orden n x m.

Inicio

Num [35] [35]: entero

i, j, N, M: entero

Repetir

Ingresar N, M

Hasta (M x N = 35 y M > 0)

Para (i = 1; i £ M; i ++)

Para (j = 1; j £ N; j ++)

Repetir

Ingresar Num [i] [j]

Hasta (Num [i ] [j] mod 2 < > 0)

Fin_para

Fin_para

Fin.

3._ Ingresar 15 números negativos en una matriz de orden mxn.

Inicio

M[15][15]: entero

i, j, m, n: entero

repetir

Ingresar m, n

hasta (m + n =15) y (m>0)

para (i=1; i<=m; i++)

para (j=1; j<=n; j++)

repetir

Ingresar M[i][j]

hasta (M[i][j]>0)

Fin _ para

Fin _ para

Fin

4._ Diseñar un algoritmo que ingrese una matriz cuadrada, para luego calcular su diagonal principal.

Inicio

Num[35][35]: entero

i, j, N, S ← 0: entero

repetir

Ingresar N

hasta (N>1; y N<=35)

para (i=1; i<=N; i++)

para (j=1; j<=N; j++)

Ingresar Num[i][j]

Fin _ para

Fin _ para

para (i=1; i<=N; i++)

para (j=1; j<=N; j++)

si i=j entonces

S ← S+Num[i][j]

Fin _ si

Fin _ para

Fin _ para

Mostrar "Diagonal P:", S

Fin

5._ Diseñar un algoritmo que ingrese una matriz cuadrada, para luego calcular su diagonal secundaria.

Inicio

Num[35][35]: entero

i, j, N, S ← 0: entero

repetir

Ingresar N

hasta (N>1; y N<=35)

para (i=1; i<=N; i++)

para (j=1; j<=N; j++)

Ingresar Num[i][j]

Fin _ para

Fin _ para

para (i=1; i<=N; i++)

para (j=1; j<=N; j++)

si i+j=N+1 entonces

S ← S+Num[i][j]

Fin _ si

Fin _ para

Fin _ para

Mostrar "Diagonal S", S

Fin

6._ Diseñar un algoritmo que permita almacenar en un arreglo los impares que sean dígitos cuando i + j sea par, para el caso que i + j no sea par usted deberá ingresar cualquier número negativo.

Inicio

M: entero

i, j, N: entero

para i=1 hasta N

para j=1 hasta N

si (i + j mod 2=0)

repetir

Leer "Ingresar número", N

hasta que N>0

M[i][j] =N

sino

repetir

Leer "Ingresar número", N

hasta que N<0

M[i][j] =N

Fin _ si

Fin _ para

Fin _ para

Fin

Rellenar una matriz de la siguiente manera:

*

0

*

0

*

0

*

0

*

0

*

*

0

*

0

*

0

*

*

0

*

0

*

0

0

*

0

*

0

*

0

*

0

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

*

0

*

0

*

0

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

0

*

*

0

*

0

*

0

N=5

N=6

*

0

*

0

*

0

*

*

0

*

0

0

*

0

*

0

*

0

*

0

*

*

0

*

0

N=4 N=3

Inicio

char Num[20][20];

int n, i, j, C=0;

repetir

Mostrar "Ingresar N:";

Mostrar "N";

hasta (N<=0 | | N>=20)

para (i=0; i<=N-1; i++)

para (j=0; j<=N-1; j++)

si (C=0) entonces

Num[i][j]=’*’

C=1;

sino

Num[i][j]=’0’

C=0;

Fin _ si

Fin _ para

Fin _ para

para (i=0; i<=N-1; i++)

para (j=0; j<=N-1; j++)

Mostrar "Num[i][j]

Fin _ para

Fin _ para

Fin

Partes: 1, 2

Página siguiente 

Comentarios


Trabajos relacionados

Ver mas trabajos de General

 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Iniciar sesión

Ingrese el e-mail y contraseña con el que está registrado en Monografias.com

   
 

Regístrese gratis

¿Olvidó su contraseña?

Ayuda