Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructura Datos Introducción Conceptos Tipos
Estructura Datos Introducción Conceptos Tipos
FACULTAD DE CIENCIAS
Escuela Profesional de Matemática e Informática
MONOGRÁFIA
ESTRUCTURA DE DATOS
Introducción, Conceptos, tipos de datos, clasificación general,
Arrays, listas enlazadas, Pilas, Colas, Inicialización y
asignación de valores.
PRESENTADA POR:
Roger Edgar YARLEQUE FERRER
Para optar al Título Profesional de Licenciado en Educación
Especialidad: Matemática e Informática
Lima, Perú
2018
ii
iii
Dedicatoria:
Tabla de Contenidos
Portada i
Designación de jurado ii
Dedicatoria iii
Tabla de contenido iv
Índice de Figura vi
Índice de Tabla viii
Introducción ix
Capítulo I: Conceptos y tipos de datos
1.1 Datos 10
1.2 Información 12
1.3. Estructura de Datos 13
1.4. Tipos de datos 13
1.4.1. Datos simples 17
1.4.2. Datos compuestos 18
1.4.3. Estructuras 20
1.4.4. Punteros 21
1.5. Código ASCII 21
1.6. Código EBCDIC 23
1.7. Cadena de caracteres 23
1.8. Identificadores 32
1.9 Variables, constantes y operadores 32
1.9.1 Variables 32
1.9.2. Constantes 34
1.9.3 Operadores 34
1.10 Operación de asignación 37
Aplicación didáctica 86
Síntesis 93
Apreciación crítica y sugerencias 95
Referencias 96
vi
Índice de figura
Índice de Tabla
Introducción
lapso de mínimo tiempo. Pero la mayoría de las aplicaciones de este fantástico invento del
pueden ser simples o estructurados. Los datos simples son aquellos que ocupan sólo una
Debido a que, por lo general, tenemos que tratar con conjuntos de datos y no con datos
simples (enteros, reales, booleanos, etcétera) 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.
que la forman. La manera en que se colocan los elementos dentro de la estructura afectará
encapsuladas.
10
Capítulo I
1.1. Datos
hipótesis o teoría se puede apreciar la información contenida en dichos datos. Los datos
Los datos indican condiciones o situaciones que por sí solos no aportan ninguna
puede tomar cierto valor instruccional. También se dice que los datos son atributos
pertenecientes a cualquier ente, pues una utilidad muy significativa de los datos es que se
significar un número, una letra, un signo ortográfico o cualquier símbolo que represente
para convertirse en información. Por si mismos los datos no tienen capacidad de comunicar
un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para
12
ser útiles, los datos deben convertirse en información para ofrecer un significado,
registros y archivos. Para hacer estos términos más precisos, introduciremos algunas
terminologías adicionales. Una entidad es algo que posee ciertos atributos o propiedades a
las cuales se les pueden asignar valores. Estos valores pueden ser numéricos o no. Por
ejemplo, los siguientes son posibles atributos de la entidad empleando de la empresa con
Entidades con atributos iguales (por ejemplo, todos los empleados de la empresa)
de valores, que es el conjunto de valores posibles que pueden asignársele a ese atributo.
1.2 Información
que sirven para construir un mensaje basado en un cierto fenómeno o ente. La información
base del conocimiento, que constituyen un mensaje sobre un determinado ente o fenómeno.
conocimiento que es el que finalmente permite tomar decisiones para realizar las acciones
conocimiento explícito extraído por seres vivos o sistemas expertos como resultado de
13
información, a diferencia de los datos o las percepciones sensibles, tienen estructura útil
que modificará las sucesivas interacciones del ente que posee dicha información con su
entorno.
Elaboración: Propia
Una estructura de datos es una colección de datos que pueden ser caracterizados por
Los tipos de datos más frecuentes, utilizados en los diferentes lenguajes de programación,
son:
El tipo de dato informático es un atributo de una parte de los datos que indica al
computador (y/o al programador) algo sobre la clase de datos sobre los que se va a
procesar. Esto incluye imponer restricciones en los datos, como qué valores pueden tomar
y qué operaciones se pueden realizar. Los tipos de datos comunes son: enteros, números de
Por ejemplo, por lo general el tipo "int" representa un conjunto de enteros de 32 bits
cuyo rango va desde el -2.147.483.648 al 2.147.483.647, así como las operaciones que se
14
pueden realizar con los enteros, como son la suma, la resta, y la multiplicación. Los
colores, por su parte, se representan como tres bytes denotando la cantidad de rojo, verde y
azul, y una cadena de caracteres representando el nombre del color; las operaciones
matemática y la lógica.
operaciones sobre estos valores. Casi todos los lenguajes de programación explícitamente
incluyen la notación del tipo de datos, aunque lenguajes diferentes pueden usar
elementos de otros tipos y definiendo las operaciones del nuevo tipo de dato. Por ejemplo,
un programador puede crear un nuevo tipo de dato llamado "Persona" que específica que el
dato interpretado como Persona incluirá, por ejemplo, un nombre y una fecha de
nacimiento.
Un tipo de dato puede ser también visto como una limitación impuesta en la
ordenador. El sistema de tipificación usa información de los tipos de datos para comprobar
1. En primer lugar, determinar el conjunto de objetos que puede representar dichos datos.
Por ejemplo, un tipo días del mes puede representar números naturales desde el 1 hasta
el 31.
15
2. En segundo lugar, conocer qué operaciones se pueden hacer sobre ese dato. ¿Se pueden
sumar días del mes? Cada lenguaje de programación tiene unos tipos de datos definidos
3. En tercer lugar, detectar errores en las operaciones. Dado que cada tipo de datos tiene
4. Por último, los tipos de datos permiten determinar cómo ejecutar estas operaciones. Por
clasificaciones para los tipos de datos. Una muy sencilla es aquélla que se hace teniendo
Un tipo de datos estático es aquél que ocupa un tamaño fijo en memoria; es decir su
Esto supone que una vez declarada una variable de un tipo determinado, a ésta se le asigna
que puede representar. Normalmente, casi todos los tipos de datos son estáticos; la
simples y complejos.
a) Los tipos simples más básicos son: entero, carácter y real. La mayoría de los lenguajes
colección de elementos que pueden ser muy variados, pero que siempre están
constituidos por tipos simples o por otros tipos complejos definidos previamente.
Ejemplos de estos tipos complejos son los vectores, conjuntos o las estructuras de datos. La
figura muestra un conjunto de comedor como un tipo complejo, así como los tipos simples
Tipos numéricos
Enteros: es un subconjunto finito de los números enteros. Los enteros son números
Ejemplo:
5 6
-15 4
20 17
1340 26
Los enteros se denominan en ocasiones números de punto y coma fija, los números
enteros máximos y mínimos de una computadora suelen ser -32768 a + 32767. Los
números enteros fuera de este rango no se suelen representar como entero, sino como
reales.
Reales: el tipo real consiste en un subconjunto de los números reales. Los números reales
siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real
Ejemplo:
0.08 3739.41
3.7452 -52.321
-8.12 3.0
18
Tipo carácter
dato tipo carácter contiene un solo carácter. Los caracteres que reconocen las diferentes
computadoras no son estándar; sin embargo, la mayoría reconoce los siguientes caracteres
alfabéticos y numéricos.
Tipo lógico
El tipo lógico también llamado booleano es aquel dato que solo puede tomar uno de
dos valores.
Este tipo de datos es utilizado para representar las diferentes alternativas (sí /no) a
determinadas condiciones
A partir de los tipos básicos descritos, se definen tipos avanzados compuestos por
colecciones o agrupaciones de elementos de tipos básicos. Los tipos avanzados son los
Arrays
Un array es un conjunto de datos del mismo tipo, a los que se da un nombre común
array se accede mediante un índice, que siempre empieza en el elemento 0 (cero), que
19
indica la posición más baja. La dirección más alta indica el último elemento y su índice es
número de elementos menos uno. Los arrays pueden tener una o varias dimensiones, sin
Cadenas de caracteres
formado por una secuencia de caracteres. La forma de definir una cadena caracteres en C
es la siguiente:
representan mediante un único carácter encerrado entre comillas simples. Las cadenas de
comillas («”»). Para que un array de caracteres sea considerado como un string, es
necesario que finalice con el carácter nulo de C (‘ \0 ’), por ello en C se reserva una
función especial al carácter cuyo valor ASCII es 0 (cero) en cadenas de caracteres, ya que
ese carácter indicará con su presencia que la cadena finaliza allí. Forma parte de la cadena,
si se imprime. De una cadena como “hola” se dice que tiene 4 caracteres, aunque en
memoria luego de ‘a’ se encuentre el ‘0’ que forma parte de ella y tenga efectivamente 5
caracteres. Por tanto, al declarar una cadena, siempre hay que contar con ese carácter extra
declaración anterior.
Observe que “a” es distinto a ‘a’. La primera representa una cadena de caracteres
compuesta por un único carácter (el carácter ‘a’), mientras que la segunda representa el
1.4.3. Estructuras
Una estructura está compuesta por elementos individuales que pueden ser de
distinto tipo. A cada uno de los elementos de una estructura se le denomina miembro. En
struct nombre_estructura
tipo_dato_1 miembro_1;
tipo_dato_2 miembro_2;
tipo_dato_N miembro_N;
};
nombre para el miembro situado en la posición i. Una vez definida una estructura se
La principal diferencia que existe entre un array y una estructura es que un array agrupa
datos del mismo tipo y una estructura agrupa datos de distinto tipo.
1.4.4. Punteros
almacena datos en sí, como pueden ser números enteros, estructuras, etcetera sino
tipo_de_dato * variable_puntero ;
de la variable de tipo puntero. Con una definición de este tipo, se está indicando que
de tipo tipo_de_dato.
LP avance de línea
VP avance de página
CR retorno de carro
Este código es muy similar al ASCII, incluyendo también, además de los caracteres
Una cadena de caracteres es una secuencia de cero o más símbolos, que incluye
Así podemos considerar las cadenas de caracteres como vectores de tipo carácter
(char) que reciben un tratamiento especial para simular el tipo de datos “string”, presente
Para que un vector de caracteres pueda ser considerado como una cadena de
caracteres, el último de los elemento ´útiles del vector debe ser el carácter nulo (código
24
ASCII 0). Según esto, si se quiere declarar una cadena formada por N caracteres, deberá
declararse un vector con N + 1 elementos de tipo carácter. Por ejemplo, la declaración char
cadena [6]; reserva suficiente espacio en memoria para almacenar una cadena de 5
comillas simples empleadas con las constantes de tipo carácter. Por ejemplo, la cadena
constante "H" tiene muy poco que ver con el carácter constante ’H’, si observamos la
Figura 7: Cadena constante "H" tiene muy poco que ver con el carácter constante ’H’
variedad de funciones y/o métodos que permiten realizar operaciones con cadenas.
Cálculo de la longitud
Comparación
Concatenación
25
Extracción de subcadena
Búsqueda de información
Longitud (cadena)
La función longitud tiene como argumento una cadena, pero su resultado es un valor
numérico entero:
Mancha’)
Comparación
Igualdad
Así:
son iguales.
Desigualdad
Los criterios para comprobar la desigualdad de cadena son utilizados por los
operadores de relación <, <=, >= , <> y se ajustan a una comparación sucesiva de
G-A-R-C-I-A G = G, A < O, ……
G-O-M-E-Z
Una vez que se encuentra una desigualdad, no es preciso continuar; como se observa, las
cadenas no tienen por qué tener la misma longitud para ser comparadas.
27
Concatenación
El símbolo que representa la concatenación varía de unos lenguajes a otros. Los más
utilizados son:
+ / / & o
Utilizaremos & y en ocasiones +. El símbolo & evita confusiones con el operador suma.
Puede comprobar que las cadenas, en realidad, se «pegan» unas al lado de las otras; por
ello, si al concatenar frases desea dejar blancos entre ellas, deberá indicarlos expresamente
‘ROGER EDGAR’
Ejemplo
var cadena : A, B
A ← ‘FUNDAMENTOS’
B ← ‘DE PROGRAMACION’
C ←A+’ ’+B
28
C = ‘FUNDAMENTOS DE PROGRAMACIÓN’
Subcadenas
de la subcadena.
Longitud = 5 caracteres
Posicion 4
29
Búsqueda
cadena forma parte de otra cadena más grande o buscar la posición en que aparece un
Su formato es:
O bien
La función índice (posición) al tomar también un valor numérico entero se puede, utilizar
Insertar cadenas
Borrar cadenas
Cambiar cadenas
Insertar
Si se desea insertar una cadena C dentro de un texto o cadena más grande, se debe
insertar ( t, p, s)
Borrar
borrar ( t, p, 1)
Cambiar
subcadena S1 por otra S2. Este es el caso frecuente en los programas de tratamiento de
textos, donde á veces es necesario sustituir una palabra cualquiera por otra, acomodando
las posibles longitudes diferentes. La función que realiza la operación de insertar tiene el
formato.
cambiar ( t, S1 , S2)
S1 subcadena a sustituir
32
S2 subcadena nueva
1.8. Identificadores
constantes, funciones, objetos entre otros y no pueden coincidir con las palabras reservadas
mayúsculas y minúsculas, así como los diez dígitos decimales (del O al 9) y el subrayado
(_), aunque no pueden empezar por un número. Por ejemplo, as_DE_23 es un identificador
válido, pero as%DE no lo es. Los distintos identificadores de una misma sentencia se
Tabla 3: Identificadores
1.9.1. Variables
Una variable representa un espacio de memoria RAM que guarda un valor que
servirá para algún proceso en particular, dicho valor puede ser modificado en cualquier
momento.
Una variable es una representación alfanumérica de una posición de memoria. Como tal, se
caracteriza por tres propiedades: posición de memoria que almacena el valor, tipo de datos
almacenado y nombre que se refiere a esa posición de memoria. Una variable debe estar
Por ejemplo, int a = 3; declara una variable a de tipo int cuyo valor inicial es 3. El
tamaño de la zona de memoria, en bytes. Dependerá del tipo de datos que se almacene en
siguiendo las reglas vistas anteriormente para construir los identificadores. Todas las
variables en C deben definirse antes de su uso. Además, en una misma línea se pueden
1.9.2. Constantes
servirá en algún proceso en particular, dicho valor permanece fijo es decir no puede
Las constantes tienen igual que las variables un identificador (nombre) y un tipo de
dato.
determinado, que no cambia a lo largo del programa. Se definen mediante macros a través
valor su valor. La palabra reservada define indica que la constante tiene un valor que se fija
Por ejemplo. #define PI 3.141516 define una constante PI que representa al número
3. 141516.
1.9.3. Operadores
Los operadores son los que permiten realizar cálculos entre los valores fijos y
Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
\ División Entera
^ Exponenciación
Mod Módulo(resto de una división)
8 x 3 equivale a 8*3= 24
8\3= 2
82 equivale a 8^2=64
Operador Descripción
= Igualdad
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
<> Diferente a
Así, tenemos las siguientes expresiones aritméticas:
9=5 Falso
10 > 7 Verdadero
15<>15 Falso
36
Operador Descripción
Y Y Lógico
O O Lógico
No No Lógico
Y Lógico: Si p y q son valores lógicos, ambos deben ser verdaderos para que Y devuelva
verdadero.
O Lógico: Si p y q son valores lógicos, uno de ellos debe ser verdadero para que O
devuelva verdadero.
con cadenas, por lo general permiten unir cadena llamado también concatenar.
Operador Descripción
+ Unir cadenas
& Unir cadenas
ejemplo, los operadores aritméticos permiten realizar operaciones matemáticas básicas con
resultado =numero * 5 / 4 + 3;
es una expresión aritmética compuesta por operadores aritméticos y operandos, donde los
operandos deben ser de tipo entero. La Tabla muestra los operadores que se pueden aplicar
a cada tipo, ordenados de mayor a menor precedencia. El orden de precedencia indica qué
operador se aplica en primer lugar cuando hay varios presentes en una expresión
1. resultado = numero * 5 / 4
2. resultado = resultado + 3;
flecha en la redacción del algoritmo para evitar ambigüedades, dejando el uso del símbolo
La operación de asignación:
A←5
operaciones.
A ← 25
A ← 134
A ← 55
Cuando estas se ejecutan, el valor último que toma A será 5 (los valores 25 y 134
han desaparecido.
X←Y +2
Es posible utilizar el mismo nombre de una variable a ambos lados del operador de
asignación .Por ello acciones como N ← N + 1 tienen sentido; se determina el valor actual
caracteres
Asignación aritmética
TER1 ← 14.5 + 8
COCIENTE ← TER1/TER2
los resultados de cada expresión y se asigna a la variable COCIENTE es decir las tres
Otro ejemplo con el que se pueden comprender las modificaciones de los valores
El ejemplo anterior se puede modificar para considerar la misma variable en ambos lados
N←2
Asignación lógica
M←8<5
N ← M o (7 <= 12)
P ← 7>6
Tras evaluar las operaciones anteriores, las variables M, N Y P tomaran los valores: falso
verdadero.
La acción de asignación anterior asigna la cadena de caracteres ’03 de julio del 2018’ a la
Capítulo II
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el
programa.
característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple
hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentran:
2.- Compuestas
a) entero
a) Arreglos
c) real
c) Strings
b) carácter
e) Archivos
42
d) lógico
b) Conjuntos
d) Registros
Los tipos de datos simples o primitivos significan que no están compuestos de otras
estructuras de datos; los más frecuentes y utilizados por casi todos los lenguajes son:
enteros, reales y carácter (char), siendo los tipos lógicos, subrango y enumerativos propios
de lenguajes estructurados como pascal. Los tipos de datos compuestos están construidos
caracteres.
construir estructuras de datos dinámicas que no son soportadas por la mayoría de los
lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones
que con un nombre se hace referencia a un grupo de casillas de memoria. Es decir un dato
1.- Lineales
43
2.- No lineales
Pila
Árboles
Lista
Grafos
Cola
|Una estructura es un tipo de dato que permite agrupar bajo un mismo nombre
elementos del mismo o de distinto tipo de datos, que se encuentran muy relacionados entre
sí.
Por ejemplo, para la gestión de los libros en una pequeña biblioteca es preciso
conocer el título del libro (titulo), su autor (autor), el ISBN (ISBN), el estante donde se
prestado (cliente).
FichaLibro libroA =
{
44
“título”,
“autor”,
“estante”,
0,
“cliente”,
};
FichaLibro libroB =
“titulo”,
“autor”,
‘’ISBN’’,
“estante”,
};
Siempre se asignan los valores a los primeros miembros de la estructura, desde el primer
miembro en adelante.
FichaLibro libroA =
.1SBN =
“ISBN”,
.autor = “autor”,
.prestado = O
.titulo = “titulo”,
};
Se utiliza la expresión para indicar a qué miembro hay que asignar el valor indicado.
.miembro = Valor
45
3. Es posible asignar a una variable de un tipo estructura el valor de otra del mismo tipo.
También es posible pasar una estructura como parámetro a una función y que una
Por suerte, hoy es muy difícil (pero no imposible) encontrarse con este problema.
Por ejemplo, para acceder al miembro título del libroA se utiliza la siguiente
expresión:
Libro A. Titulo
A la izquierda del operador (.) está la variable de tipo estructura y a la derecha está
Los datos que contiene una estructura se procesan por medio de determinadas
1. Recorrido: Implica el acceder a cada registro una única vez aunque uno o más ítems del
clave o también el acceso a todos los registros que cumplen una o más condiciones.
Por ejemplo, cuando queremos eliminar un registro con una clave determinada. Para ello
circunstancias:
social o de inventario).
Por Ejemplo, Una asociación posee un archivo de miembros en el cual cada registro
recorrer todo el archivo para obtener el nombre y dirección de todos los miembros.
b) Supongamos que lo que se desea es encontrar los nombres de todos los miembros que
viven en una determinada zona. De nuevo deberemos recorrer todo el archivo para
campo correspondiente.
e) Imaginemos que se desea dar de alta a un nuevo asociado. Tendremos que insertar un
archivo.
Ejemplo
Algoritmo: Promedio_Nota
Variables
Real Nota1, Nota2, Promedio
Inicio
Escribir (“Ingrese Nota1”)
Escribir (“Ingrese Nota2”)
Leer (Nota1, Nota2)
Promedio=Nota1+Nota2/2
Si (Promedio≥10.5) entonces
Escribir (“El promedio es:”+promedio)
Sino
Escribir (“Usted está desaprobado el curso)
Fin de si
Fin
49
Capítulo III
Arrays
Los arrays (matriz o vector) son un caso concreto de tipo estructurado, básicamente son
variables capaces de almacenar una colección de valores que sean del mismo tipo.
Los arrays pueden tener una o más dimensiones. Cuando tienen una sola dimensión se les
suele llamar vectores, y cuando tienen dos dimensiones se les conoce como matrices (lo
dimensiones no tiene por qué estar limitado a dos como máximo, sino que en general
El caso más sencillo de arrays son los unidimensionales, que no son otra cosa que
vectores, es decir, una fila de valores. En la figura de abajo puedes ver un ejemplo de una
variable de ese tipo que por ahora llamaremos vector (luego veremos cómo se llama en
Pascal). A esa variable la hemos llamado números, y almacena en este caso diez valores de
tipo entero. Para acceder a cada valor concreto utilizamos su índice o posición, que va en
este caso desde 1 hasta 10. Así, el primer elemento del vector será números [1], el segundo
Cada uno de estos elementos se trata como si fuera una variable individual; es
decir, cuando escribimos números [1] es como si tuviéramos nuestra variable num1 de tipo
entero, por lo que podemos asignarle cualquier valor entero a la variable utilizando el
operador de asignación o hacer cualquier operación que se nos ocurra con ella.
De esta forma tendremos una variable cuyo identificador es números y que es de tipo array
de enteros, cuyos índices van desde el 1 hasta el 10, por lo que tendremos diez enteros.
El valor mínimo permitido de un vector se denomina límite inferior del vector (L) y el
Ejemplo de un vector pueden ser los nombres de los alumnos de una clase. El vector se
adyacente.
Antes de pasar a tratar las diversas operaciones que se pueden efectuar con
I←4
Asignación.
Lectura/Escritura,
a. Asignación
asignación:
leer (A [ i ] )
A [1] 4
A [2] 7
A [3] 10
A [4] 13
A [5] 18
realizan con estructuras repetitivas. Aunque puede también hacerse con estructuras
A la operación de efectuar una acción general sobre todos los elementos de un vector se la
denomina recorrido del vector. Para realizar un recorrido por cada elemento del array
d. Actualización de un vector
elementales:
- Añadir elementos.
- Insertar elementos.
- Borrar elementos.
Se denomina añadir datos a un vector la operación de añadir nuevo elemento al final del
espacio de memoria suficiente para el nuevo vector; dicho de otro modo, que el vector no
contenga todos los elementos con que fue definido al principio del programa.
elementos se pueden referenciar por dos, tres o más subíndices. Los arrays no
especificar dos subíndices para poder identificar cada elemento del array.
…………..
Notas[i,0] Notas[i,1] ………….. Notas[i,j]
Fila i
Columna j
Columna 1 Columna 2
qué tipo van a ser sus componentes. Este tipo puede ser otro array, de forma que cada
elemento del primer vector es a su vez otro vector. Así podemos definir arrays
llamada números de tipo array de cuatro elementos, en el que cada elemento es a su vez un
números será por tanto una matriz de 4 filas por 3 columnas en la que cada elemento será
Tabla 7: 4 filas por 3 columnas en la que cada elemento será un número entero
Números es un array de cuatro elementos que contiene en cada posición un array de tres
manera:
Por ejemplo, mediante números [1,1] accederíamos a la primera variable entera, que en
este caso contiene el valor 4, números [1,2] devolvería un -10, y así sucesivamente.
55
Los arrays multidimensionales no son más que una generalización de los vectores y
matrices.
ampliar directamente desde arrays de una y dos dimensiones a estos arrays de orden más
alto. En general, un array de n-dimensiones requiere que los valores de los n subíndices
Ejemplo:
Un array de tres dimensiones puede ser uno que contenga los datos relativos al
sexo (varón/hembra)
diez facultades
facultad K. Para ser válido I debe ser 1, 2, 3, 4 o 5; J debe ser 1 o 2; K debe estar
de alto nivel proporcionan medios eficaces para almacenar y acceder a los elementos de los
arrays, de modo que el programador no tenga que preocuparse sobre los detalles
dispuesto fundamentalmente en secuencia contigua, de modo que cada acceso a una matriz
o tabla la máquina debe realizar la tarea de convertir la posición dentro del array en una
Almacenamiento de un vector
Si cada elemento del array ocupa S bytes (1 byte = 8 bits) y B es la dirección inicial de la
B+(I–1)*S
programación pueden almacenar los arrays en memoria de dos formas: orden de fila mayor
El medio más natural en que se leen y almacenan los arrays en la mayoría de los
FORTRAN emplea el orden de columna mayor en el que las entradas de la primera fila
vienen primero.
De modo general, El compilador del lenguaje de alto nivel debe ser capaz de calcular con
En un array en orden de fila mayor, cuyos subíndices máximos sean m y n (m, filas; n,
p = n ( i - 1) + j
Para calcular la dirección real del elemento [i, j] se añade p a la posición del primer
o en orden de fila mayor, es necesario conocer en qué orden se referencian los elementos
del array. De hecho, los lenguajes de programación no le dan opción al programador para
Capítulo IV
puede modificarse durante la ejecución del programa. Una estructura dinámica de datos es
Las estructuras de datos dinámicas se clasifican en dos grupos: lineales (listas, pilas y
añadir nueva información creando un nuevo nodo e insertándolo entre nodos existentes. Es
4.2. Listas
Una lista es una colección de elementos organizados en secuencia que puede crecer y
en cualquier posición.
sucesivas de memoria.
Las líneas así definidas se denominan listas contiguas. Los elementos de la lista se
lista.
Las opferaciones que se pueden realizar con listas lineales contiguas son:
Copiar la lista
Borrar la lista
Enlazado o encadenado
circulares
doblemente enlazadas
Son mucho más flexibles que las listas contiguas, la inserción o borrado del
por lo que cada elemento necesita almacenar la posición o dirección del siguiente elemento
de la lista.
Las listas encadenadas tienen una terminología propia que se suele utilizar
de dato o valor y un enlace (indicador o puntero) con el siguiente campo. El campo enlace
63
apunta (proporciona la dirección de) al siguiente nodo de la lista. El último nodo de la lista
encadenada, por convenio, se suele representar por un enlace con la palabra nil (nulo), una
apuntadores. Además, no tiene un tamaño fijo, sino que puede crecer y decrecer durante la
En las listas enlazadas no es necesario que los elementos en la lista sean almacenados en
Una lista enlazada sin ningún elemento se llama lista vacía. Su puntero inicial o de
Las listas circulares corresponden al tipo de listas que poseen el campo siguiente
De esta manera es posible acceder desde un elemento a cualquiera de los elementos que le
preceden.
Hay que tener en cuenta que se pueden producir lazos o bucles infinitos. Para evitar
esto siempre hay que contar con un nodo que identifique el principio o el final de la lista.
Contar con un nodo cabecera con un tipo de dato que permita identificar su condición (tipo
Las listas circulares presentan las siguientes ventajas respecto de las listas enlazadas
simples:
Cada nodo de una lista circulas es accesible desde cualquier otro nodo de ella. Es
decir, dado un nodo se puede recorrer toda la lista completa. En una lista enlazada de
forma simple sólo es posible recorrerla por completo si se parte de su primer nodo.
Las operaciones de concatenación y división de listas son más eficaces con listas
circulares.
Se pueden producir lazos o bucles infinitos. Una forma de evitar estos bucles infinitos
El nodo cabecera puede diferenciarse de los otros nodos en una de las dos formas
siguientes:
Puede tener un valor especial en su campo INFO que no es válido como datos de otros
elementos.
Puede tener un indicador o bandera (flag) que señale cuando es nodo cabecera.
Las listas doblemente enlazadas corresponden al tipo de listas en las cuales el recorrido
En este tipo de listas además de utilizarse el puntero SGTE se utiliza un puntero llamado
ANT.
66
Cada elemento tiene dos punteros y por consiguiente una lista enlazada ocupa más
4.6. Pilas
Una Pila (stack) es un tipo especial de lista lineal en la que la inserción y borrado
de nuevos elementos se realiza sólo por un extremo, el cual es denominado cima o tope.
Dado que las operaciones de insertar y eliminar se realizan por un solo extremo (el
superior), los elementos sólo pueden eliminarse en orden inverso al que se insertan en la
pila.
La pila es una estructura con numerosas analogías en la vida real: una pila de platos, una
pila de monedas, una pila de cajas de zapatos, una pila de camisas, una pila de bandejas,
etc.
poner o meter.
POP (pila): Elimina un elemento de la pila. También se le conoce como sacar o quitar.
VACIA (pila): Función booleana que indica si la pila está vacía o no.
Las pilas se pueden implementar por arreglos o bien por punteros siempre y cuando se
longitud máxima es demasiado grande, se gasta mucha memoria, mientras que un valor
Las pilas son utilizadas ampliamente para solucionar una amplia variedad de
control de una parte de un programa a otra. Como ejemplo de uso de la pila, considérese un
argumento cuya raíz ha de calcularse y retoma la raíz ya calculada. Este argumento se saca
de la pila para utilizarlo y una vez calculada la raíz, cuando la función termina mete el
resultado en la pila. El último dato entrado, argumento, es el primer dato sacado e igual
ocurre con el resultado de la función quien es el primer dato utilizado, cuando el control
retorna al programa.
4.7. Colas
En las colas el elemento que entró primero sale primero, y el que entra último sale último,
Así pues la diferencia con las pilas es solamente el modo de entrada y salida de datos.
cine, etcetera. En todas ellas el primer elemento que llega es el primero que sale.
sistema de tiempo compartido suele haber un procesador central y una serie de periféricos
compartidos: discos, impresoras, etc. Los recursos se comparten por los diferentes usuarios
y se utiliza una cola para almacenar los programas o peticiones de los usuarios que esperan
su turno de ejecución. El procesador central atiende por riguroso orden de llamada del
Figura 20: En las colas el elemento que entró primero sale primero, y el que entra último
sale último
(LONGMAX)
Vaciar la cola
Representación do una cola: (a) mediante un array. (b) mediante una lista enlazada.
Una Doble Cola o Bicola es un tipo especial de cola en la que las eliminaciones y
Capítulo V
5.1. Árboles
Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o
varios nodos.
compuesta por un dato y varios árboles. Estas son definiciones simples. Pero las
El árbol es una estructura de datos fundamental en informática, muy utilizada en todos sus
Las estructuras tipo árbol se usan principalmente para representar datos con una relación
jerárquica entre sus elementos, como son árboles genealógicos, tablas, etc.
denominado 𝐴2 , . … , 𝐴𝑚 cada uno de los cuales es, a su vez, un árbol. Estos árboles se
de las relaciones familiares en los árboles genealógicos: padre, hijo, hermano, ascendente,
descendiente, etcetera.
Raíz del árbol. Todos los árboles que no están vacíos tienen un único nodo raíz. Todos
los demás elementos o nodos se derivan o descienden de él. El nodo raíz no tiene padre,
Nodo terminal u hoja (leaf node) es aquel nodo que no contiene ningún subárbol (los
A cada nodo que no es hoja se asocia uno o varios subárboles llamados descendientes
(offspring) o hijos. De igual forma, cada nodo tiene asociado un antecesor o ascendiente
llamado padre.
Los nodos con uno o dos subárboles —no son hojas ni raíz— se llaman nodo. interiores
o internos.
Todos los nodos tienen un sólo padre —excepto el raíz— que no tiene padre.
Se denomina camino el enlace entre dos nodos consecutivos y rama es un camino que
Cada nodo tiene asociado un número de nivel que se determina por la longitud del
camino desde la raíz al nodo específico. Por ejemplo, en la figura (Árbol general)
Nivel O A
Nivel 1 B, C.D
Nivel 2 E, F, O, H, 1, J
Nivel 3 K, L
Equivale al nivel más alto de los nodos más uno. El peso de un árbol es el número de
nodos terminales.
derecho.
Se dice que dos árboles binarios son similares si tienen la misma estructura.
Se dice que dos árboles binarios son equivalentes si tienen la misma estructura y además la
misma información.
Se dice que un árbol binario es equilibrado si las alturas de los dos subárboles de cada
Árboles binarios de diferentes alturas: (a) altura 3, (b) árbol vacío, altura 0, (c) altura 6.
76
Vinculando nodos, objetos con miembros que referencian otros objetos del mismo tipo
Cada nodo de un árbol será un registro que contiene al menos tres campos:
Existen diferentes métodos; uno de los más fáciles es mediante tres arrays lineales
subárboles. Así, por ejemplo, el nodo raíz RAMÓN tendrá des punteros IZQ: (9) —
Recorrido in-orden el raíz está en el medio del recorrido, en el pre-orden el raíz esta
Recorrido pre-orden
1. Visitar la raíz
2. Visitar la raíz
3. Visitar el raíz.
80
Árbol 1 Pre-orden + * c d e
In-orden c * d + e
Post-orden c d * e +
In-orden a+b*c/d+e^f/g
Post-orden a b + c d / * e f ^ + g /
In-orden abdelmnptvz
Post-orden adblentzvpm
81
5.3. Grafos
cada una de las cuales une un punto llamado nodo o vértice con otro.
En una red de carreteras los nudos de la red representan los vértices del grafo y las
carreteras de unión de dos ciudades los arcos, de modo que a cada arco se asocia una
VG = {a,b,c,d,e}
AG = {1, 2, 3, 4, 5, 6,7}
82
Grato G
de orden cero.
Una arista se representa por los vértices que conecta. La arista 3 conecta los vértices b y c
y se representa por V (b, c). Algunos vértices pueden conectar un nodo consigo mismo; por
ejemplo, la arista 8 tiene el formato V(a, a). Estas aristas se denominan bucles o lazos.
• No existe más que un arco para unir dos nodos, es decir; no existe más que un arco
En la Figura
Un camino es una secuencia de uno o más arcos que conectan dos nodos. Representaremos
Dos vértices se dice que son adyacentes si hay un arco que los une. Así 𝑉𝑖 𝑦 𝑉𝑗 , son
adyacentes si existe un camino que los une. Esta definición es muy general y normalmente
1. Dirigidos los vértices apuntan unos a otros; los arcos están dirigidos o tienen dirección.
dirección no es importante.
Grafo conectado existe siempre un camino que une dos vértices cualesquiera
Un grafo completo es aquel en que cada vértice está conectado con todos y cada
Habrá n(n -1) aristas en un grafo completo y dirigido, y n(n - 1)1/2 aristas en un
Representación de gratos
Matriz de adyacencia
Las columnas y las filas de la matriz representan los vértices del grafo.
Lista de adyacencia
La lista de adyacencia es útil cuando un grafo tiene muchos vértices y pocas aristas.
Esta lista está compuesta por dos partes: un directorio y un conjunto de listas enlazadas.
Hay una entrada en el directorio por cada nodo del grafo. La entrada en el directorio del
nodo i apunta a una lista enlazada que representa los nodos que son conectados al nodo i.
Aplicación Didáctica
87
SESIÓN DE APRENDIZAJE
FUNCIONES DE TEXTOS Y NUMEROS EN VISUAL BASIC
I. DATOS GENERALES
a) UGEL : 09
b) Institución Educativa : I.E. 100 Agropecuaria
c) Área : Educación para el Trabajo
d) Grado : 4to A
e) Profesor : Roger Edgar Yarleque Ferrer
f) Turno : Mañana
g) Fecha : 03 de julio del 2018
II. DESARROLLO
Aprendizajes
Estrategias Recursos Tiempo
Esperados
Se les sensibiliza en valores a los alumnos
estableciendo las normas de convivencia en el
aula.
Utilizando los saberes previos de los alumnos Plumones
Utilizar las 10’
se plantean preguntas: ¿A qué se llama estructura Pizarra
funciones de
de datos?, ¿Qué son los datos numéricos y de
cadena de
textos? Para que a través de la lluvia de ideas los
caracteres y
alumnos participen con sus opiniones.
datos
El docente afianza el tema explicando la
numéricos
utilización de dichos datos a partir de su
mediante la
utilización mediante funciones.
creación de
Los alumnos comentan sus opiniones a través
aplicaciones
de una lluvia de ideas.
sencillas Guía de
El docente presenta el tema a tratar: “Matrices
utilizando el laboratorio 40’
en Visual Basic” y se les pide a los alumnos
Visual Basic. Computadoras
comparen sus opiniones con la información de su
guía de laboratorio.
Luego hacen el reconocimiento del
computador y programa donde se va a trabajar la
aplicación.
88
V. REFERENCIAS BIBLIOGRÁFICAS:
Donde:
Sintaxis: Sqr(número)
Sintaxis: Int(número)
Fix(número)
Ejemplo:
Int(-8.4) devuelve –9
Fix(-8.4) devuelve –8
__________________________________
__________________________________
Abs: Devuelve el valor absoluto de un
número.
92
GUÍA DE OBSERVACIÓN
Grado : 4° A Fecha:
Docente :
Tema : Tipo de datos en Visual Basic
APRENDIZAJE Utilizar las funciones de Visual Basic que nos permitan la creación de tipos
PROMEDIO
INDICADORES desarrollo y
clasificándolas en cadena adecuadamente los
ejecución de
de caracteres y datos tipos de datos.
matrices.
numéricos.
Nombres y ( 0 -20) ( 0 -20) ( 0 -20)
Apellidos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
93
Síntesis
Una estructura de datos es una colección de datos que pueden ser caracterizados por
estáticas son aquellas en las que el tamaño ocupado en memoria se define antes que el
Una característica importante que diferencia a los tipos de dato es que los tipos de datos
simples tienen como característica común que cada variable representa a un elemento; los
(nombre) puede representar múltiples datos individuales, pudiendo cada uno de estos ser
referenciado independientemente
Los datos simples pueden ser de tipo numérico, carácter y lógicos y los tipos de
datos compuestos pueden ser: arrays, cadena de caracteres, estructuras y punteros. Los
arrays (matriz o vector) son un caso concreto de tipo estructurado, básicamente son
variables capaces de almacenar una colección de valores que sean del mismo tipo.
Los arrays pueden tener una o más dimensiones. Cuando tienen una sola dimensión se les
suele llamar vectores. Cuando tienen dos dimensiones se les conoce como bidimensionales
Cálculo de la longitud
Comparación
94
Concatenación
Extracción de subcadena
Búsqueda de información
95
modifican dicho conjunto. Es muy importante conocer las estructuras de datos más
La estructura de datos es muy importante, ya que es uno de los puntos básicos para
quien empieza a programar. Por ello es necesario adoptar desde el principio un buen estilo
de programación; esto es, escribir las construcciones del lenguaje de una forma clara y
consistente.
por lo mismo, es necesario conocer el tema con la suficiente profundidad para hacer un uso
inteligente de ellas. Por eso que es importantísimo involucrar las estructuras de datos ya
que un buen programador debe de saber comprobar rigurosamente sus ideas o darse cuenta
Referencias
Páginas WEB:
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap7/f_cap71.htm
http://www.monografias.com/trabajo14/estruct-datos/estruct-datos.shtml.
http://www.wikipedia.org/wiki/estruct-datos
http://www.programacionfacil.com/estruct-datos.